Table of Contents

Filter

In pit - Mobile kommen zwei Arten von Filtern zum Einsatz. Zum einen werden Filterdateien aus pit - FM verwendet, um die Datenmenge bei der Synchronisation einzuschränken. Diese Art der Filterung wird hier näher beschrieben.

Da pit - Mobile eine eigene Datenbank besitzt und zwischen zwei Synchronisationen unabhängig von pit - FM verwendet werden kann, müssen während dieser Zeit auch Filter auf dem Gerät ausgeführt werden können.

Dies wird deutlich, wenn man beispielsweise Aufträge betrachtet, die auf dem mobilen Gerät gefiltert nach Auftragsstatus anzuzeigen sind. Der pit - FM Filter, den man an der Vertragsklasse hinterlegt, kann diese Unterteilung noch nicht enthalten, da zunächst alle Auftragsdatensätze auf das Gerät synchronisiert werden müssen. Die Filterung ist erst danach in der App durchführbar, nämlich dann, wenn der Benutzer auf den entsprechenden Button, also z.B. auf offene Aufträge, getippt hat.

Für diesen Anwendungsfall gibt es mobile Filter, die in der Bibliothek im Tab Filter erstellt und an Aktivatoren hinterlegt werden können.

Eigenschaften

Eigenschaft Typ Erklärung
Name Text Der eindeutige Name des Filters.
JavaScript ausführen Code Skript, das die Filterbedingung als SQLite-WHERE-Klausel zurückgibt.

Filterbedingung

Am Filter muss ein Skript hinterlegt werden, das die WHERE-Klausel für die Gerätedatenbank zurückgibt. Die App wertet diesen Filter dann zur Laufzeit aus, sobald der Aktivator, an dem der Filter hinterlegt ist, betreten wurde. Hier wird die WHERE-Klausel in die vollständige Datenbankabfrage integriert und im Anschluss die resultierenden Datensätze angezeigt.

Ein häufig auftretendes Anwendungsszenario für Filter ist das Vermeiden von inkonsistenten Zuständen, wenn mehrere Attribute voneinander abhängen. Möchte man beispielsweise von einer Detailansicht auf einen Raum und eine Etage verweisen, ergeben sich folgende kontextuelle Anforderungen:

  1. Wenn der Raum ausgewählt wurde, soll die Etage automatisch auf die Etage des Raums gesetzt werden.
  2. Wenn die Etage ausgewählt wurde, soll der Raum geleert werden, falls der bestehende Raum nicht zur neuen Etage gehört.
  3. Bei der Auswahl des Raums dürfen nur Räume der hinterlegten Etage angezeigt werden, falls vorhanden.

Für den dritten Punkt wird ein mobiler Filter benötigt, der folgendermaßen aussehen könnte:

// Nur Räume zulassen, die zur hinterlegten Etage gehören.
// 'model' ist ein Datensatz mit den zwei Referenzen 'ref_level' und 'ref_room' (z.B. ein Auftrag).
// Die Abfrage selbst bezieht sich auf Räume, für die das Filterkriterium angewendet wird.
return "ref_level=' + model.attributes.ref_level.getVal() + "'";

Siehe auch

Klassen
Abhängigkeiten