Das Element <pureTable> dient besonders der Darstellung von großen Datenmengen in einer Tabelle. Innerhalb einer Tabellenspalte können nur jeweils die Elemente <label> oder <input> dargestellt werden. Für das Element <input> sind die Typen check, text und combo zulässig.
Das Attribut receiver muss eine Liste zurückgeben, über die in der Tabelle iteriert wird.
Sortieren von Inhalten:
Die Inhalte der Tabelle werden in der Reihenfolge der Iterationen dargestellt, können aber Spaltenweise an- oder absteigend sortiert werden. Mit jedem Mausklick auf den Spaltennamen wechselt die Sortierung zwischen unsortiert, ansteigend und absteigend. Der manuell ausgewählte Wert wird persistent gespeichert.
Filtern von Inhalten:
Um die Menge der anzuzeigenden Inhalte einzuschränken können Filter aktiviert und bei Bedarf vorkonfiguriert werden. Es sind zwei Filtertypen möglich:
- Filter für frei einzugebende Zeichen.
- Filter zur Auswahl eines vorhandenen Zelleninhalts aus einer Dropdown-Liste.
Filter für frei einzugebende Zeichen:
Ist dieser Filter konfiguriert, erscheint nach der Kopfzeile eine Zeile, in der Filtertexte für jede Spalte eingegeben werden können. Vordefinierte Filter werden ebenfalls in der Zeile unterhalb der Kopfzeile angezeigt und können überschrieben werden.
Wird durch einen vordefinierten Filter die Anzahl der anzuzeigenden Inhalte eingeschränkt und anschließend der Filter geändert, um mehr Inhalte anzuzeigen, wird eine Bildlaufleiste am rechten Rand der Tabelle eingeblendet.
Ein manuell eingegebener Filter wird persistent gespeichert.
Filter zur Auswahl eines vorhandenen Zelleninhalts aus einer Dropdown-Liste:
Ist dieser Filter konfiguriert, erscheint nach der Kopfzeile eine Zeile mit je einer Dropdown-Liste für jede Spalte. Die Dropdown-Listen sind mit den Werten der jeweiligen Spalte befüllt. Der gewählte Wert einer Dropdown-Liste schränkt die Anzahl der anzuzeigenden Tabellenzeilen ein.
Ein gewählter Filterwert wird persistent gespeichert.
Spaltenbreiten:
Die Spaltenbreiten sind durch verschiedene Attribute vorzudefinieren, können aber manuell geändert werden. Die manuell geänderten Spaltenbreiten werden persistent gespeichert.
Ändern von Zelleninhalten:
Um in einer änderbaren Zelle den Editor zu starten sind folgende Aktionen möglich:
- Ein Einfachklick öffnet den Editor und der gesamte Zelleninhalt ist markiert.
- Ein Doppelklick öffnet den Editor und platziert die Schreibmarke an der Mauszeigerposition.
- Das Drücken der Eingabetaste oder der Taste [F2] öffnet den Editor und der gesamte Zellinhalt ist markiert.
Markieren und kopieren von Tabelleninhalten:
Der Inhalt einer einzelnen Tabellenzelle (Attribut selectionMode="cell") kann mit Hilfe der Maus markiert und mit der Tastenkombination [Strg] + [C] in die Zwischenablage kopiert werden. Weitere Tabellenzellen können mit gleichzeitig gedrückter [Strg]-Taste und ein Bereich mit gleichzeitig gedrückter [Umschalt]-Taste markiert werden. Eine komplette Tabellenzeile kann ebenso mit der Maus markiert werden, wenn das Attribut selectionMode="row" vorgegeben ist.
Um den Inhalt der Zwischenablage wieder in die Tabellenzellen einzufügen wird die Tastenkombination [Strg] + [V] verwendet. Die Daten in der Zwischenablage sollten dem Format von Excel entsprechen, d.h. Spalten werden durch Tabulatoren getrennt, Zeilen durch Zeilenumbrüche, Zellen können durch Anführungszeichen umschlossen werden. Um ein Anführungszeichen darzustellen, muss es doppelt geschrieben sein.
1.1 2.1 3.1
1.2 2.2 "(""2.3"")"
1.3 2.3 3.3
Es gibt folgende Einfügemodi:
- Einfügen der gesamten Zwischenablage:
Sind in der Zwischenablage gleichviele Werte abgelegt, wie Zellen in der Tabelle markiert sind, werden die markierten Zellen mit diesen Werten befüllt.
Sind in der Zwischenablage weniger Werte abgelegt, wie Zellen in der Tabelle markiert sind, werden nur die Zellen befüllt, die der Anzahl der Werte in der Zwischenablage entsprechen.
- Mehrfaches Einfügen eines einzelnen Wertes:
Ist in der Zwischenablage nur ein einzelner Wert abgelegt, wird dieser in alle markierten Tabellenzellen eingefügt.
Attributname | Verwendung | Attributwerte | Defaultwert | Beschreibung |
---|---|---|---|---|
columnsMax | optional, nur in Verbindung mit freezeLeft und/oder freezeRight | Maximale Anzahl der angezeigten Spalten neben/zwischen fixierten Spalten. | ||
freezeLeft | optional | true, false | false | Anzahl der fixierten Spalten auf der linken Seite der Tabelle. |
freezeRight | optional | true, false | false | Anzahl der fixierten Spalten auf der rechten Seite der Tabelle. |
height | optional | Integer, fillForm | Höhe der gesamten Tabelle. Integer = Höhe der Tabelle in Pixel fillForm = Tabelle nimmt die gesamten Höhe des Form-UIs ein |
|
maxHeight | optional, nur in Verbindung mit height="fillForm" | Die pureTable wird durch Vergrößern des Form-UI-Fensters nicht höher als die maximale Höhe in Pixel. | ||
maxWidth | optional, nur in Verbindung mit width="fitToForm" | Die pureTable wird durch Vergrößern des Form-UI-Fensters nicht breiter als die maximale Breite in Pixel. | ||
minHeight | optional, nur in Verbindung mit height="fillForm" | Das Form-UI-Fenster kann nicht kleiner werden als die minimale Höhe der pureTable in Pixel. | ||
minWidth | optional, nur in Verbindung mit width="fitToForm" | Das Form-UI-Fenster kann nicht kleiner werden als die minimale Breite der pureTable in Pixel. | ||
readonly | optional | true, false | true = pureTable kann nur gelesen werden. false = In der pureTable sind Eingaben möglich. |
|
receiver | benötigt | Es muss eine Liste zurückgegeben werden. In der Tabelle wird über diese Liste iteriert und dadurch die Anzahl der Zeilen unterhalb der Kopfzeile bestimmt. Gibt eine Formel eine Liste von Komponenten zurück kann bei jedem Iterationsvorgang auf die ermittelte Komponente Bezug benommen werden. |
||
selectionMode | optional | cell, row | row | Schaltet die Auswahl zwischen Inhalt der Zelle und Inhalt der Zeile um. |
rows | optional | Anzahl der angezeigten Tabellenzeilen | ||
rowsMax | optional | Maximale Anzahl der angezeigten Tabellenzeilen | ||
rowsMin | optional | Minimale Anzahl der angezeigten Tabellenzeilen. Die minimale Anzahl von 3 Tabellenzeilen kann nicht unterschritten werden. | ||
variable | optional | Name der Variable | ||
visible | optional | true, false | true | true = Tabelle ist sichtbar false = Tabelle ist unsichtbar |
width | optional | Integer, fitToForm | Breite der gesamten Tabelle. Integer = Breite der Tabelle in Pixel fitToForm = Tabelle nimmt die gesamte Breite des Form-UIs ein |
Erlaubte Unterelemente | Anzahl |
---|---|
column | beliebig |
filters | 0..1 |
Tabelle mit zwei Spalten:
Das folgende Beispiel zeigt eine Tabelle, die für alle Komponenten vom Typ Pfuderer_ModularSystem.Mechatronic.SensorsActuators.Base.SensorActuator die Parameter Place und Name auflistet.
<pureTable receiver="=rmos('Pfuderer_ModularSystem.Mechatronic.SensorsActuators.Base.SensorActuator')">
<column heading="Place">
<label text="=$Place"/>
</column>
<column heading="Name">
<label text="=this.name"/>
</column>
</pureTable>
Tabelle mit drei Spalten definierter Breite:
Das folgende Beispiel zeigt eine Tabelle, die den Namen des Ringtaktsystems und von deren Komponenten vom Typ 'Pfuderer_ModularSystem.Mechatronic.SensorsActuators.Base.SensorActuator' die Parameter Place und Name auflistet.
<pureTable variable="x" receiver="=rmos('Pfuderer_ModularSystem.Mechatronic.SensorsActuators.Base.SensorActuator')">
<column hSizeMax="20" heading="Circular Transfer System">
<label text="this.name"/>
</column>
<column hSizeMaxPx="50" heading="Place">
<label text="=x.$Place"/>
</column>
<column hSizeMinPx="150" heading="Name">
<label text="=x.name"/>
</column>
</pureTable>
Tabelle mit vordefiniertem Filter:
Das folgende Beispiel zeigt eine Tabelle, die den Namen des Ringtaktsystems und von deren Komponenten vom Typ 'Pfuderer_ModularSystem.Mechatronic.SensorsActuators.Base.SensorActuator' die Parameter Place und Name auflistet. Dabei soll die Anzahl der anzuzeigenden Elemente auf die Sensoren und Aktoren beschränkt werden, die in der Station St21 eingebaut sind.
<pureTable variable="x" receiver="=rmos('Pfuderer_ModularSystem.Mechatronic.Sensors.
SensorsActuators.Base.SensorActuator ')">
<filters>
<columnfilter />
<columnfilter filter="St21" />
</filters>
<column hSizeMax="20" heading="Circular Transfer System">
<label text="this.name"/>
</column>
<column hSizeMaxPx="50" heading="Place">
<label text="=x.$Place"/>
</column>
<column hSizeMinPx="150" heading="Name">
<label text="=x.name"/>
</column>
</pureTable>
Tabelle mit begrenzter Zeilenanzahl:
Das folgende Beispiel zeigt eine Tabelle, deren maximale Zeilenanzahl mit rowsMax="10" begrenzt ist.
<pureTable variable="x" rowsMax="10" receiver="=rmos('Pfuderer_ModularSystem.Mechatronic.SensorsActuators.Base.SensorActuator')">
<column heading="No">
<label text="=mroot.rmos('Pfuderer_ModularSystem.Mechatronic.SensorsActuators.Base.SensorActuator').indexOf(x)"/>
</column>
<column hSizeMaxPx="50" heading="Place">
<label text="=x.$Place"/>
</column>
<column hSizeMinPx="150" heading="Name">
<label text="=x.name"/>
</column>
</pureTable>
Tabelle mit Mindestanzahl von Zeilen:
Das folgende Beispiel zeigt eine Tabelle, deren minimale Zeilenanzahl mit rowsMin="10" festgelegt ist.
<pureTable variable="x" rowsMin="10" receiver="=mos('Pfuderer_ModularSystem.Mechatronic.Stations.Base.AbstractStation')">
<column heading="No">
<label text="=mos('Pfuderer_ModularSystem.Mechatronic.Stations.Base.AbstractStation').indexOf(x)"/>
</column>
<column hSizeMaxPx="50" heading="Place">
<label text="=x.$Place"/>
</column>
<column hSizeMinPx="150" heading="Name">
<label text="=x.name"/>
</column>
</pureTable>
Doppelklick auf eine Zeile der Tabelle startet eine Aktion
In der folgenden Tabelle kann per Doppelklick auf eine beliebige Zeile eine Aktion gestartet werden.
<pureTable variable="x" receiver="=mos">
<column hSize="20" heading="Name">
<command event="doubleclick" name="Documentation_UI_Configuration.ProjectLibrary.HelpObjects.okAction" arguments="List{x}" />
<label text="x.name" />
</column>
</pureTable>
Tabelle mit fixierten Spalten:
Das folgende Beispiel zeigt eine Tabelle, deren Darstellung auf maximal 5 Zeilen und 7 Spalten begrenzt ist. Von den 7 Spalten ist auf der linken Seite eine und auf der rechten Seite sind 2 Spalten fixiert. Die Spalten und Zeilen dazwischen können mit Hilfe von Bildlaufleisten erreicht werden.
<pureTable receiver="=List{1,2,3,4,5,6,7,8,9}" variable="x" freezeLeft="1" freezeRight="2" columnsMax="7" rowsMax="5">
<column heading="Line">
<label text="x" />
</column>
<column heading="Column 1">
<label text="'Cell 1.'+ x" />
</column>
<column heading="Column 2">
<label text="'Cell 2.'+ x" />
</column>
<column heading="Column 3">
<label text="'Cell 3.'+ x" />
</column>
<column heading="Column 4">
<label text="'Cell 4.'+ x" />
</column>
<column heading="Column 5">
<label text="'Cell 5.'+ x" />
</column>
<column heading="Column 6">
<label text="'Cell 6.'+ x" />
</column>
<column heading="Column 7">
<label text="'Cell 7.'+ x" />
</column>
<column heading="Column 8">
<label text="'Cell 8.'+ x" />
</column>
<column heading="Column 9">
<label text="'Cell 9.'+ x" />
</column>
<column heading="Column 10">
<label text="'Cell 10.'+ x" />
</column>
</pureTable>
Tabelle mit fixierter Höhe:
Das folgende Beispiel zeigt eine Tabelle, deren Höhe auf 150 Pixel fixiert ist.
<pureTable receiver="=List{1,2,3,4}" variable="x" height="150">
<column heading="Col 1">
<label text="='Cell 1.'+ x">
</label>
</column>
<column heading="Col 2">
<label text="='Cell 2.'+ x">
</label>
</column>
<column heading="Col 3">
<label text="='Cell 3.'+ x">
</label>
</column>
</pureTable>
Ergebnis:
Tabelle mit dynamischer Höhe:
Das folgende Beispiel zeigt eine Tabelle, deren Höhe an die Höhe des Form-UIs angepasst ist.
<pureTable receiver="=List{1,2,3,4}" variable="x" height="fillForm">
<column heading="Col 1">
<label style="left" text="='Cell 1.'+ x">
</label>
</column> <column heading="Col 2">
<label style="center" text="='Cell 2.'+ x">
</label>
</column>
<column heading="Col 3">
<label style="right" text="='Cell 3.'+ x">
</label>
</column>
</pureTable>
Ergebnis:
Tabelle mit fixierter Breite:
Das folgende Beispiel zeigt eine Tabelle, deren Breite auf 350 Pixel fixiert ist.
<pureTable receiver="=List{1,2,3,4}" variable="x" width="350">
<column heading="Col 1"> <label style="left" text="='Cell 1.'+ x">
</label>
</column>
<column heading="Col 2">
<label style="center" text="='Cell 2.'+ x">
</label>
</column>
<column heading="Col 3">
<label style="right" text="='Cell 3.'+ x">
</label>
</column>
</pureTable>
Ergebnis:
Tabelle mit dynamischer Breite:
Das folgende Beispiel zeigt eine Tabelle, deren Breite an die Breite des Form-UIs angepasst ist.
<pureTable receiver="=List{1,2,3,4}" variable="x" width="fitToForm">
<column heading="Col 1">
<label style="left" text="='Cell 1.'+ x">
</label>
</column>
<column heading="Col 2">
<label style="center" text="='Cell 2.'+ x">
</label>
</column>
<column heading="Col 3">
<label style="right" text="='Cell 3.'+ x">
</label>
</column>
</pureTable>
Ergebnis: