Benutzer-Werkzeuge

Webseiten-Werkzeuge


javagraticule3d:report

Report der Ausgleichung

Der Ausgleichungsreport wird durch ein sogenanntes Template-System im HTML-Format erzeugt. HTML (Hypertext Markup Language) ist eine Auszeichnungssprache, die eine strukturierte Ausgabe von Inhalten ermöglicht und vorrangig im World Wide Web eingesetzt wird. Zur Darstellung von HTML-Dokumenten wird i.A. ein Browser verwendet. Die meisten Betriebssysteme liefern mindestens einen Webbrowser von hause aus mit, sodass keine zusätzliche Software zu installieren ist. Bei Linux ist es meist Mozillas Firefox und auf Windowsplattformen ist es Microsofts Internet Explorer.

Allgemeine Struktur eines HTML-Dokuments

Beim Erstellen von HTML-Dokumenten wird häufig versucht, Inhalt, Layout und Interaktionen zu trennen. Die inhaltliche Semantik wird durch die Struktur des HTML-Dokuments vorgegeben. Hierfür stehen Überschriften, Absätze, Tabellen oder Listen zur Verfügung. Zur Darstellung dieser Elemente wird i.d.R. auf CSS (Cascading Style Sheets) zurückgegriffen. CSS definiert somit die Größe, Farbe oder Ausrichtung von Inhalten im Dokument. Da HTML statisch ist, sind keine Interaktionen möglich. Abhilfe schafft hier die clientseitige Programmiersprache JavaScript. Alle drei Techniken kommen im Report zur Anwendung. Anpassungen in diesen Bereichen setzt somit ein gewisses Grundverständnis in diesen webbasierten Techniken voraus.

Template-System

Das Template-System agiert auf der HTML-Ebene und liefert die eigentlichen Inhalte des Dokuments. Hierzu werden in den Template-Dateien Schlüsselwörter als Platzhalter eingefügt, die beim Export durch die entsprechenden Werte vom Programm ersetzt werden. Die Templates sind somit vollwertige HTML-Dateien, denen lediglich der Inhalt fehlt. Zum Bearbeiten der tmpl-Files genügt somit ein einfacher Texteditor. Es existieren fünf Schlüsselwörter, die im Dokument als Platzhalter eingefügt werden können. Diese Schlüsselwörter sind in der nachstehenden Tabelle zusammengefasst. Es handelt sich um spezielle Tags, die u.U. auch geschlossen werden müssen.

Befehl Beschreibung
<tmpl_var> Fügt den Inhalt der Variablen %var im Dokument ein.
<tmpl_if> Um eine bedingte Ausgabe zu formulieren, kann mit <tmpl_if %var> geprüft werden, ob die Variable %var wahr (engl. true) ist. Für Fallunterscheidungen existiert <tmpl_else>.
<tmpl_unless> Analog zu <tmpl_if> erlaubt <tmpl_unless %var> die Prüfung der Variablen %var auf unwahr (engl. false). Für Fallunterscheidungen existiert <tmpl_else>.
<tmpl_loop> Mit <tmpl_loop %list> wird eine Schleife formuliert, um bspw. über die Elemente einer Liste %list zu iterieren. Die Ausgabe der Elemente %el ist über <tmpl_var %el> zu realisieren.
<tmpl_include> Um das Template übersichtlich zu strukturieren, ist eine Aufteilung auf Subtemplates möglich. Diese Subtemplates %sub werden später im Haupttemplate miteinander verknüpft, indem sie über <tmpl_include %sub> eingebunden werden.

Organisation eines Templates

Es können beliebig viele eigene Templates erzeugt werden. Damit die Ausgleichungssoftware die Templates findet, sind diese im Verzeichnis template abzulegen. Jedes Template besteht aus einer Haupttemplatedatei und kann optional beliebig viele Suptemplates besitzen. Sowohl Haupt- als auch Subtemplatedateien haben die Endung *.tmpl. Suptemplates sind in einem Verzeichnis zu hinterlegen, dessen Name mit dem Dateinamen des Haupttemplates korrespondiert.

Codeschnipsel

Für die Bibliothek HTML.Templates existiert eine sehr gute Dokumentation. Im Folgenden werden daher nur einführende Beispiele gezeigt, die den grundsätzlichen Umgang mit dem System demonstrieren.

<tmpl_var>

Um den Namen des Projektes auszugeben, ist die Variable project_name im Template aufzurufen. Das nachgestellte escape codiert Sonderzeichen, die eine spezielle Bedeutung in HTML-Dokumenten haben, wie bspw. spitze Klammern. Die Ausgabe der Variable erfolgt in einer Tabellenzelle.

<table>
  <tr>
    <th>Name des Projektes</th>
    <td>:</td>
    <td><tmpl_var project_name escape></td>
  </tr>
  ...
</table>

<tmpl_if>, <tmpl_unless> und <tmpl_else>

Bedingungen werden mit <tmpl_if> bzw. <tmpl_unless> in einem Block definiert, der abschließend durch </tmpl_if> bzw. </tmpl_unless> zu schließen ist. Fallunterscheidungen können durch ein zusätzliches <tmpl_else> erzeugt werden. Im Folgenden wird in Abhängigkeit der Variablen rank_defect_count eine Fallunterscheidung getroffen.

<tr>
  <th>Art des Netzanschlu&szlig;es</th>
  <td>:</td>
  <td>
    <tmpl_if rank_defect_count>
      freies Netz
    <tmpl_else>
      angeschlo&szlig;enes Netz
    </tmpl_if>
  </td>
</tr>  

<tmpl loop>

Schleifen iterieren über Listen und liefern in jedem Durchlauf ein Element der Liste zurück. Schleifen sind - wie auch die Bedingungsoperatoren - Blockelemente, die mit </tmpl loop> zu schließen sind. Um bspw. die Punktnummer und die 2D-Koordinaten der Punkte in der Liste points auszugeben, wird über die Liste iteriert und mithilfe von <tmpl_var> die Elemente der Liste ausgegeben.

<tmpl_loop points>
<tr>
  <td><tmpl_var point_id escape></td>
  <td><tmpl_var x></td>
  <td><tmpl_var y></td>  
  ...
</tr>
</tmpl_loop>

<tmpl loop>

Das Gesamttemplate kann auf mehrere Subtemplates aufgeteilt werden, um eine übersichtliche Struktur zu erreichen oder um redundanten Code zu vermeiden. Im Subtemplate observation2d.tmpl ist die Ausgabe einer Tabellenzeile einer 2D-Beobachtung definiert. Dieses Template kann somit für Horizontalstrecken und Richtungen verwendet werden. Über eine Schleife aller Beobachtungen (observations) kann so die Ausgabetabelle aufgebaut werden.

<tmpl_loop observations>
  <tmpl_include observation2d.tmpl>
</tmpl_loop>
javagraticule3d/report.txt · Zuletzt geändert: 03.03.2014 09:19 von Michael Loesler