Udo Bösch präsentierte eine Lösung zur einfachen Eingabe und Verarbeitung von hierarchischen Checklisten in FileMaker. Anlass für die Erstellung seines Ansatzes war die Anforderung, dass für ein Kundenprojekt eine Vielzahl von wechselnden Checklisten in einer FileMaker Lösung integriert werden sollte. Daher sollte die Erfassung und Änderung der Checklisten mit möglichst wenig Aufwand realisierbar sein. Auch sollten beliebig viele Templates für die Checklisten abrufbar sein.

Herkömmliche Ansätze dafür verwenden oft eine verschachtelte Datenstruktur, die ein aufwändiges GUI zur Steuerung erforderlich machen und für den Benutzer oft kompliziert zu bedienen sind.

Udo war auf der Suche nach einem anderen Ansatz. Was könnte besser geeignet sein, als die ohnehin vorhandene Möglichkeit, Text in einem Feld zu editieren? Gesagt, getan! Seine Lösung für diese Aufgabe besteht aus drei Teilen. Erstens ein Parser in Form einer ausgefeilten CustomFunction, welche den eingegebenen Text auf Plausibilität prüft und ungültige Einrückungen entsprechend korrigiert. Zweitens ein Übersetzungs-Script, das aus dem Text mit Einrückungen ein JSON-Objekt erzeugt und dieses mit weiteren Elementen für die Darstellung der Liste und zur Speicherung des Checklisten-Status jedes Elements in der Liste ergänzt. Und drittens eine GUI, welche die Checkliste anhand der JSON-Eingabe mit Hilfe der VirtualList-Technik in einem Portal darstellt. Für die Darstellung der GUI hat sich Udo von der App TaskPaper inspirieren lassen. Das Ergebnis überzeugt durch schlichte Eleganz und ein sehr einfach zu bedienendes Konzept.

Vorteil dieser Aufteilung ist zudem die einfache Implementierbarkeit in eine vorhandene FileMaker Lösung. Für jedes Modul, das mit einer hierarchischen Checkliste ausgestattet werden soll, braucht man nur 2 Text-Felder zu ergänzen. Eines für die Eingabe der Liste in Textform und ein zweites zur Speicherung des JSON-Objekts. Die GUI für die Darstellung der Checkliste braucht nur einmal implementiert zu werden, sie erhält das jeweilige JSON-Objekt als Eingabe-Parameter und liefert das aktualisierte JSON mit dem Checklisten-Status als Ergebnis zurück.

Ein ScreenShot von der Beispiel-Lösung ist auf den Stammtisch Folien zu sehen.

TaskPaper
https://www.taskpaper.com