Zeichnet eine Tabelle mit Zeitreihendaten auf eine Page.
strukt legt die Gestaltung der Tabelle fest und steuert, welche Zeitreihe
aus zrl Daten in welche Felder (Spalten) füllt. strukt kann z.B. ein
Teil einer Reportstruktur sein, die als xml-Format vorliegt (siehe XMLBaum()).
Der linke, obere Punkt der Tabelle wird mit lo festgelegt. Der rechte,
untere Punkt ergibt sich durch deren Struktur. Er wird als Funktionsergebnis
zurückgegeben.
Passt die Tabelle nicht mehr auf die aktuelle Page (d.h. yu wird
unterschritten), so wird eine neue Page angehängt und die Tabelle auf dieser
an der durch yo vorgegebenen Höhe erzeugt.
Das Design (Farben, Fonts, Schriftgrößen, Liniendicken usw.) hat
Standardwerte, die ein ansprechendes Ergebnis produzieren. Diese Werte
können in strukt übersteuert werden.
Aus zrl werden die Zeitreihen ausgewählt, die zur Struktur passen.
zrl legt also nicht fest, welche Zeitreihendaten dargestellt werden,
sondern stellt nur den Vorrat möglicher Daten dar. Wenn zrl demnach
keine Zeitreihen enthielte, deren Art (z.B. deren Parameter) in der Struktur
erwähnt werden, würde eine leere Tabelle erzeugt.
Tabellen definieren
-
Eine Tabelle besteht aus einer Kopf-Zeile und Datenzeilen. Sie ist in
ein TBL-XML-Element eingefasst. Dieses hat zwei Attribute: den
Titel (ttl) und ein Gruppierungs-Attribut. Beispiel:
<TBL ttl="Gewässerpegel" grp="Ort">
Diese Tabelle hat den Titel Gewässerpegel und gruppiert die
Zeitreihen nach ihrem Ort. Zeitreihen mit demselben Ort werden
zusammengefasst, wenn mehrere Zeitreihen angefordert werden, die z.B.
verschiedene Parameter und verschiedene Orte haben, werden die gleichen
Ortes untereinander bzw. nebeneinander dargstellt (siehe Beispiel unten).
Das TBL-Element hat die Unterelemente KOPF, ZRS und
ein oder mehrere ZEILE. ZEILE beschreibt eine Datenzeile, von
denen mehrere eine Gruppe bilden können. Der KOPF beschreibt die
Kopfzeile und ZRS die gewünschten Zeitreihen-Muster.
Tabellenkopf
-
Der KOPF hat die Attribute box, mit der eine Füllfarbe
für die Kopfzeile gesetzt werden kann, ymaxcm, das die Höhe der
Kopfzeile in cm setzt und ymaxcmdat, das die Höhe der
Datenzeilen in cm setzt.
Der KOPF hat FLD-Unterelemente, die die Anzahl der Felder
und ihre Kopfbeschriftung enthalten. Die Kopfbeschriftung kann ein
freier Text oder die Funktion Param() sein. Param() wird
ersetzt durch den oder die Parameter der Zeitreihen, die zu dieser
Spalte beitragen. Beispiel:
<KOPF box="Hellgrau" ymaxcm="1.0" ymaxcmdat="0.75">
<FLD>Station</FLD>
<FLD>Aussage</FLD>
<FLD>Datum</FLD>
<FLD>Param()</FLD>
<FLD>Param()</FLD>
</KOPF>
Zeitreihenmuster
-
Die Unterlemente ZRS des TBL-Elements definieren eine oder
mehrere Zeitreihen-Muster und jeweils ihre ID. Dies geschieht in
ELE-Unterlementen, die das Attribut ID haben und wahlweise
alle Identifikationsattribute einer Zeitreihe, die zusammen das Muster
ergeben. Beispiel:
<ZRS><ELE ID="ZR1" Parameter="Wasserstand" />
<ELE ID="ZR2" Parameter="Abfluss" />
</ZRS>
Dies legt fest, dass aus der Zeitreihen-Liste zrl die Zeitreihen
ausgewählt werden, die den Parameter Wasserstand haben, und diesen
die ID ZR1 zugewiesen wird. Die Zeitreihen mit Parameter Abfluss
erhalten die ID ZR2. Da die Zeitreihen im Beispiel nach Ort gruppiert
sind, enthält eine Datenzeile jeweils Wasserstand und Abfluss eines Ortes.
Tabellenzeilen
-
Das Unterlement ZEILE des TBL-Elements enthält, wie die
Kopfzeile, FLD-Unterelemente. Es gibt für diese jedoch mehr
Funktionen. Dies sind:
- Attr(), mit Parameter, Attribute der Zeitreihe, z.B.
Attr(SubOrt)
- Bez(): die Bezeichnung zum Ort anhand der Stammdaten
- Ort(): der Ort der Zeitreihe
- Name(): der Name zum Ort anhand der Stammdaten
- DB(), mit Parameter: ein Feld aus den Stammdaten. Beispiel:
<FLD>DB("LAGEBESCHR")</FLD>
- AktZP(), inkl. Zeitpunktformat: der neueste Zeitpunkt der ZR
- Focus(), inkl. 2 Zeitpunktformat: der in zrl übergebene Fokus
- FocusAkt(), inkl. 2 Zeitpunktformat und optional einer
Tagesstart-Uhrzeit: Fokus aus dem Anfang des Tages des zrl-Fokus
und dem Endes der zrl-Fokus bzw. dem Ende des Datenbereichs der
Zeitreihe (je nachdem welches kleiner ist). Beispiel:
<FLD>FocusAkt("#d.#m. #H:#M bis", "#d.#m. #H:#M")</FLD>
- FocusRund(): so wie FocusAkt(), jedoch wird auch die
rechte Seite auf den Tageswechsel gerundet. Beispiel:
<FLD>FocusRund("#d.#m. #H:#M bis", "#d.#m. #H:#M")</FLD>
- Akt(), AktE(), AktRund() oder AktRundE():
1. Form: der aktuelle Wert der Zeitreihe. 2. Form: der aktuelle
Wert mit Einheit, die mit einem optionalen dritten Parmeter
übersteuert werden kann. 3. Form: der Wert des aktuellen
Tagesanfangs, dessen Uhrzeit optional gesetzt werden kann. 4. Form:
eine Kombination aus Runden und Einheit. Der optionale, zweite
Parameter ist bei allen Formen das Format des Wertes, Voreinstellung
ist dafür #.4g, also vier signifikante Gesamtstellen.
Beispiele:
<FLD>AktE(ZR1, "#10.3f")</FLD>
<FLD>AktE(ZR2,,Mio. m³)</FLD>
- Sum() usw.: wie Akt() usw.: Summe über Focus oder FocusRund.
- Mit() usw.: wie Akt() usw.: Mittelwert über Focus oder
FocusRund.
Die Zeitreihe, auf die sich eine Funktion bezieht, wird entweder direkt
über ihre ID angegeben (wie z.B. bei Akt()) oder ergibt sich implizit aus
der ersten Zeitreihe der Gruppe, die für diese Zeile zusammen gestellt
wurden, wie z.B. bei FocusAkt() oder Ort()).