Search Part - minova-afis/aero.minova.rcp GitHub Wiki
Der SearchPart dient der Filterung und der Suche von Datensätzen. Dieser Bereich zeigt die gleichen Felder an wie der Indexbereich. Verschiedene Kriterien können miteinander kombiniert werden. Dafür ist das erste Feld vorgesehen. Nach dem Laden der Suchkriterien wird das Ergebnis im Indexbereich dargestellt.
Ein Interpreter wird für jede Zelle des Suchbereichs registriert. Er ersetzt visuell den eingetragenen Wert. Bei der Darstellung werden die Felder, welche nicht gerade editiert werden, mit den Werten dargestellt. Das Feld welches gerade editiert wird, trägt noch den Inhalt der Eingabe.
In diesem Beispiel wird sichtbar, dass kein Datum als eingabe erfolgte sondern entsprechende Kürzel order Formeln.
Nach der Eingabe der Suchkriterien erfolgt mit F5
oder dem Laden
Button die Erstellung einer Suchanfrage. Diese Anfrage setzt sich aus den Suchkriterien und den Spalten des Suchbereichs zusammen. Als Basis für die Spalten des Suchbereichs dient die *.XML Datei. Sie beschreibt in dem Tag index-view
den darzustellenden Such- und Indexbereich.
<index-view source="vWorkingTimeIndex2" index-report="auto">
<column name="KeyLong" key="true" text="@WorkingTime.KeyLong" aggregate="COUNT">
<number/>
</column>
<column name="EmployeeText" text="@WorkingTime.EmployeeText">
<text/>
</column>
<column name="CustomerText" text="@WorkingTime.CustomerText">
<text/>
</column>
<column name="ProjectText" text="@WorkingTime.ProjectText">
<text/>
</column>
<column name="ServiceText" text="@WorkingTime.ServiceText">
<text/>
</column>
<column name="BookingDate" text="@WorkingTime.BookingDate">
<short-date/>
</column>
<column name="StartDate" text="@WorkingTime.StartDate">
<short-time/>
</column>
<column name="EndDate" text="@WorkingTime.EndDate">
<short-time/>
</column>
<column name="RenderedQuantity" text="@WorkingTime.RenderedQuantity" total="true">
<number decimals="2"/>
</column>
<column name="ChargedQuantity" text="@WorkingTime.ChargedQuantity" total="true">
<number decimals="2"/>
</column>
<column name="Description" text="@WorkingTime.Description">
<text/>
</column>
<column name="ServiceContractText" text="@WorkingTime.ServiceContractText">
<text/>
</column>
<column name="Assigned" text="@WorkingTime.Assigned">
<boolean/>
</column>
<column name="LastDate" text="@WorkingTime.LastDate">
<date-time/>
</column>
<column name="InvoiceText" text="@WorkingTime.InvoiceText">
<text/>
</column>
</index-view>
Dieser XML-Tag wird in ein Table-Objekt umgewandelt. Dieses Objekt dient als Basis und Datenschicht der NatTable.
Jede column
bildet eine Spalte aus der Tabelle ab. Ihr Datentyp wird durch die Eigenschaft definiert.
XML-Eigenschaft |
Datentyp Java |
text |
String |
short-date |
Instant |
short-time |
Instant |
long-time |
Instant |
datetime |
Instant |
number |
Integer |
number + decimals > 0 |
Double |
boolean |
Boolean |
Bei der Suchanfrage wird das Tabellenobjekt mit allen Spalten erstellt. Danach werden leere Zeilen eingefügt. Die Anzahl der leeren Zeilen entspricht der Anzahl an Zeilen aus den Suchkriterien. Die letzte leere Zeile wird dabei ignoriert. Die zu interpretierenden Werte aus den Feldern werden in die zugehörigen leeren Zeilen geschrieben. Die Operatoren vor den Werten werden ebenfalls mit in die Zelle eingetragen. Sie werden vom CAS verarbeitet. Nachdem die Tabelle vollständig erstellt wurde, wird dieses Objekt als Anfrage mit einem HttpRequest an den CAS versendet. Die asynchrone Antwort enthält ebenfalls ein Table-Objekt. Dieses wird von dem Indexbereich eingelesen und dargestellt.
Für die folgenden Felder wird ein Operator verwendet, der aus einem Feldinhalt einen Wert interpretiert.
Eingabe |
Interpretation |
Darstellung beim Verlassen |
|
|
> 01.12.2020 |
Die Operatoren (mit Ausnahme der Wildcards) müssen als Erstes in dem Feld eingetragen werden und können mit einem Lehrzeichen von der eigentlichen Eingabe getrennt werden. Für die folgenden Felder kann ein Operator eingesetzt werden:
Bei einem Zahlenfeld können folgende Operatoren zum Einsatz kommen: >
, <
, =
, >=
, <=
, <>
, null
, !null
.
Bei einem Datums-, Zeit-, DateTime-Feld können folgende Operatoren zum Einsatz kommen: >
, <
, =
, >=
, <=
, <>
, null
, !null
.
Bei einem Textfeld können folgende Operatoren zum Einsatz kommen: %
, _
, =
, <>
, null
, !null
, ~
, !~
.
-
%
der Wildcard-Operator steht für einen beliebigen Text -
_
steht für eine einzelnes beliebiges Zeichen
Eingabe |
Interpretation |
Darstellung beim Verlassen |
|
|
|
|
|
|
|
|
|
In diesem Beispiel werden alle Einträge gefunden, die mit dem Text burg
enden.
Zusätzlich werden alle Datensätze gesucht, die varo
enthalten.
Es werden alle Datensätze gesucht, deren Wert größer oder gleich dem angegebenen ist.
Es werden alle Datensätze gesucht, deren Wert kleiner oder gleich dem angegebenen ist.
Es werden alle Datensätze gesucht, bei denen in diesem Feld kein Wert eingetragen wurde
Es werden alle Datensätze gesucht, bei denen in diesem Feld ein Wert eingetragen wurde
Es werden alle Datensätze gesucht, bei denen der Wert des Feldes mit dem Muster übereinstimmt.
Das Muster kann die Wildcards %
und ?
enthalten.
Die Eingabe in Datums- und Zeitfelder wird wie beschrieben umgewandelt.
Wenn der Nutzer keinen Operator einträgt, wird in Datums-, Zeit-, DateTime- und Zahlenfeldern automatisch ein =
eingefügt.
In Textfeldern ist der Defaultoperator ~
.
Ist in einem Textfeld zudem kein Wildcard-Operator vorhanden, wird automatisch %
am Ende des Strings hinzugefügt.
Damit wird bei der Eingabe von ja
der Name janiak
gefunden.
Es wird also sichergestellt, dass immer ein Operator vorhanden ist.
Trägt der Nutzer null
oder !null
ein, werden alle weiteren Angaben verworfen.
Wenn ein Nutzer in ein Feld klickt, in das bereits etwas eingetragen wurde, erscheint dort wieder der ursprüngliche Inhalt.
Die Eingabe von 12
in ein Datumsfeld wird als = 01.02.2021
dargestellt.
Wird dieses Feld wieder ausgewählt, erscheint dort wieder 12
.
Daten werden an das CAS in folgendem Format übertragen:
f-=-s-Beispiel
Das f
steht hier für Filter.
Als nächstes folgt der Operator.
Dann kommt der Datentyp der eigentlichen Eingabe.
Diese sind:
-
n
: Integer -
d
: Double -
s
: String -
i
: Instant -
z
: ZonedDateTime -
b
: Boolean
Zuletzt kommen die Daten.
Die Daten von Boolean-Feldern werden ohne Filter übertragen (z.B. b-true
).
Bei Datums und Zeitangaben wir immer der String als SQL-Instant übertragen.
{ts '2020-12-31 12:30:00'}
ist die entsprechende Konstante.
Bei Feldern mit Zeit, wird als Datum immer der 01.01.1900 angegeben.
Als Zeitzone ist UTC einzustellen.
Die Zeitzone der Anwendung kann davon abweichen.