[Inhalt] [Zurück] [Weiter] [Thema] [Index]

Tabulator()


Syntax:

Tabulator (Report rep, GeoPoint lo, Real yo, Real yu, Baum strukt, ZRList zrl) : GeoPoint
rep:
lo: Linker, oberer Punkt der Tabelle inkl. Überschrift in cm
yo: maximaler Y-Wert für die Platzierung auf einer neuen Page
yu: minimale Y-Wert, bei dessen Unterschreitung eine neue Page erzeugt wird
strukt: Strukturbeschreibung der Tabelle
zrl: Zeitreihenliste mit Daten zum Füllen der Tabelle

Beispiel:

ru := Tabulator (rep, {2,3}, 3, 27, strukt, zrl)

Beschreibung:

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&#xE4;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&#xB3;)</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()).



toposoft 28.10.2024