Tische
Verwendung von Tabellen und Abrufen von Daten in Webanwendungen
Der erste Datensatz ist in der Datenbank erschienen! Aber wir sehen ihn nicht, und er muss korrigiert werden. Dazu brauchen Sie die Table Komponente (eine Tabelle, die die erforderlichen Daten anzeigt). Unmittelbar nach dem Hinzufügen werden Sie aufgefordert, zu entscheiden, welche Daten darin enthalten sein sollen, und ein Modell und einen Endpunkt auszuwählen.
Einstellungen der Tabelle
Die erstellte Tabelle sollte sofort entsprechend Ihren Anforderungen ausgegeben werden. Begrenzen Sie z. B. die Anzahl der Datensätze auf einer Seite (die Tabelle kann sehr lang und mehrseitig sein), entfernen Sie Felder, die nicht von Interesse sind, oder richten Sie das gewünschte Feld für die Ausgabe aus Bezugstabellen ein.
Gleichzeitig sei daran erinnert, dass das bloße Hinzufügen einer Komponente noch nicht bedeutet, dass sie vollständig einsatzbereit ist. Sie müssen entsprechende Geschäftsprozesse erstellen. Bei Tabellen wird vieles automatisch erstellt, aber im Rahmen der Schulung werden wir alles von Grund auf neu erstellen, um das Material besser zu verinnerlichen.
Tabellenauslöser
Es gibt drei Auslöser, die für Tabellen am interessantesten sind - onDataUpdate, onShowund onFilter. Beginnen wir mit onShow und definieren, was passieren soll, wenn die Tabelle auf dem Bildschirm angezeigt wird. Dazu sind drei Blöcke erforderlich:
1) Table Update Properties. Legen Sie die gewünschten Eigenschaften der Tabelle fest. Hier können Sie zum Beispiel die Anzahl der Datensätze auf einer Seite begrenzen (setzen Sie den Parameter Records per page = 10) und auch anzeigen, dass sich die Seite im Datenlademodus befindet (Loading = true)
2) Server request GET /country/. Damit die Daten angezeigt werden können, müssen sie irgendwo abgeholt werden. Zu diesem Zweck stellen Sie eine Anfrage an die Datenbank für den entsprechenden Endpunkt. Achten Sie dabei auf die Anzahl der Eingabeparameter dieses Endpunkts. Sie bieten mehr Flexibilität bei der Abfrage und liefern nur die Daten, die wirklich benötigt werden.
In unserem Fall werden wir _limit = 10 weil die Anzahl der Einträge pro Seite 10 beträgt und es keinen Sinn macht, mehr zu laden. Außerdem stellen wir die richtige Ausgabereihenfolge ein, sortieren alles nach Namen (_sort_by = name), und legen auch die Sortierreihenfolge fest. Der _sort_order Parameter kann den Wert ASC (aus dem Wort Ascending, für direkte Sortierung, vom kleinsten zum größten Wert) oder DESC (Descending, umgekehrte Reihenfolge). Die direkte alphabetische Sortierung ist für uns in Ordnung, also _sort_order = ASC.
Der _with Parameter verdient besondere Aufmerksamkeit. Wenn wir die Abfrage ohne ihn ausführen würden, könnten wir nur Daten über Länder erhalten. Das Ländermodell ist jedoch mit Städten verknüpft, und obwohl diese Daten nicht zur abgefragten Tabelle gehören, wollen wir sie dennoch sehen. Um dies zu tun, setzen Sie _with = citys und erhalten sofort Daten darüber, welche Städte sich in diesem Land befinden.
3) Table Update Data. Die Daten werden empfangen, aber sie müssen in eine Tabelle übertragen werden, um auf dem Bildschirm angezeigt zu werden. Zu diesem Zweck werden alle Informationen (data), die wir im vorherigen Block erhalten haben, sowie die Gesamtzahl der Datensätze (count - Total Records), um zu verstehen, wie viele Seiten die Tabelle enthalten soll.
Der nächste Auslöser ist onDataUpdate. Die Daten in der Tabelle können als Ergebnis verschiedener Geschäftsprozesse aktualisiert werden. Und wenn dies geschieht, ist es am besten, einmal festzulegen, was geschehen soll, und nicht in jedem Geschäftsprozess dieselben Blöcke zu verwenden. In unserem Fall wird es richtig sein, den Table Update Properties Block erneut zu verwenden, aber dieses Mal, um den zuvor eingestellten Lademodus (Loading = false), der zuvor gesetzt wurde, zu entfernen und zu zeigen, dass die Tabelle einsatzbereit ist.
Der letzte Trigger, den wir brauchen, ist onFilter. Er definiert, was im Moment des Übergangs zu anderen Seiten der Tabelle geschehen soll. Zu diesem Zweck hat er den _offset Parameter, der in Abhängigkeit von der Seitennummer angibt, welcher Offset beim Laden der Daten erforderlich ist.
Wenn zum Beispiel in unserem Fall auf jeder Seite 10 Einträge vorhanden sind, dann werden auf der dritten Seite die Einträge von 21 bis 30 benötigt. Diese Daten werden von _offset bezogen und können an den Server request GET /country/ Block übergeben werden. Andernfalls deckt sich der Geschäftsprozess vollständig mit dem Prozess des TableOnShow Auslöser. In solchen Situationen wäre es sinnvoll, dass zwei verschiedene Auslöser denselben Geschäftsprozess starten.
Aber in unserem Fall liegt der wichtige Unterschied in dem _offset Parameter. Wenn Sie alles so belassen wie in der Abbildung unten, dann startet der Prozess gemäß dem onShow Auslöser, aber er stoppt bei dem Server request GET /country/ Block, da er den Wert _offset Wert nicht erhalten kann (er wird von einem anderen Auslöser übergeben).
Diese Situation wird am besten mit Variablen gelöst. Schauen wir uns ein konkretes Beispiel an. Wir brauchen eine Variable vom Typ Integer, um den _offset Wert. Daher verwenden wir einen Integer Block, um diese Variable zu deklarieren, aber zwei verschiedene Set Variable Blöcke, um ihren Wert zu schreiben, die jeweils mit einem anderen Auslöser verbunden sind.
Je nach Table onShow Trigger brauchen wir keinen Offset, die Daten in der Tabelle werden von Anfang an angezeigt und _offset = 0gesetzt, also setzen wir Value = 0 in dem Set Variable Block.
Wenn der Table onFilter Trigger gestartet wird, erhalten wir bereits den _offset Wert und wollen ihn verwenden, also übergeben wir den _offset Wert des Auslösers als Value an den Set Variable Block.
In den nächsten Schritten unterscheiden sich die Geschäftsprozesse von Triggern nicht voneinander, also werden zwei Geschäftsprozesse zu einem zusammengefasst, jeder mit seinem eigenen Wert der Integer-Variable für den _offset Parameter.