Select mit Suche und Baumstruktur – searchareacontrol

searchareacontrol – Mehrfachauswahl mit Suche und Baumstruktur als Modal-Fenster

Scriptcase bietet standardmäßig nur relativ einfache Select-Felder an. Diese müssen außerdem immer an Datenbank-Tabellen gebunden sein.

Mit der jquery Bibliothek searchareacontrol kann man eine erweiterte Auswahl von Daten anzeigen. Dabei

können die Daten beim Aufruf übergeben werden,

kann der Anwender nach Daten suchen

ist eine Mehrfachauswahl möglich

können die gruppiert werden

u.v.m.

Beispiel:

Modale Mehrfachauswahl mit Baumstruktur, Gruppierung

 

Integration in ein Scriptcase Projekt:

1. Die jquery Bibliothek

Die Bibliothek auf den lokalen PC herunterladen: hier

Dann die Bibliothek als externe Bibliothek in das Scriptcase Projekt laden und aktivieren (use library).

externe Bibliothek

Das sieht nach dem Laden (via Edit) folgendermaßen aus:

Bibliothek nach dem hochladen

2. Felder definieren

In unserem Beispiel verwenden wir eine Scriptcase Form in der wir zwei Felder vom Typ ‘Text’ definieren:

my_input   –   Wenn auf dieses Feld geklickt wird erscheint das modale Fenster mit dem neuen Tree

my_result   –  Hier werden die Ergebnisse der Eingabe nach dem Schließen des modalen Fensters angezeigt.

3. In onScriptInit definieren und starten

Dazu fügen wir z.B. den folgenden Code im Ereignis onScriptInit ein.
Keine Angst – das Beispiel ist vor allem wegen der ausführlichen Beispiel-Daten so lang 😉

Dazu einige Anmerkungen:

Es wird kein PHP Code verwendet. Daher muss der PHP-Code von Scriptcase mit  ?>  beendet und anschließend mit  <?php fortgesetzt werden.

Es werden einige benötigte css Dateien von Bootstrap geladen. Bootstrap selbst steht via Scriptcase bereits zur Verfügung.

Dann wird der JS/Jquery Code und die css für die Bibliothek searchareacontrol aus der externen Bibliothek geladen.

In var myData werden anschließend die Demo Daten definiert.
Hier wird man normalerweise die Daten aus dem aktuellen Projekt einfügen.

Mit $(document).ready(function() { var btn = $("input[name='my_input']");  wird das Feld ‘my_input’ an die neue Bibliothek gebunden.

Anschließend wird das Plugin mit // Initialize plugin btn.searchAreaControl({ ...   initialisiert. Dabei werden auch die Parameter gesetzt wie in diesem Beispiel, dass eine Mehrfachauswahl möglich ist multiSelect: true,

4. Abholen des Ergebnisses

Das Plugin schreibt einen Status in das Feld my_input zurück, wenn die Eingabe vom Anwender beendet wurde. Bei uns würde hier cars(xx) erscheinen – xx=Anzahl der ausgewählten Autos.

Nachdem aber bei einer Mehrfachauswahl meist nicht die Anzahl sondern die Inhalte der Auswahl interessant ist, wird eine kleine JavaScript Methode definiert:

Add a JS method

In dieser Routine wird das Ergebnis mit getSelectedNodes abgeholt und in die Variable result als komma-getrennter Text gespeichert.

Wenn man nicht die IDs der Datensätze sondern den angezeigten Text als Ergebnis erhalten will, muß die Zeile

result = result + propVal.attributes['data-id'] + ',';

durch

result = result + propVal.text + ',';

ersetzt werden.

Mit $("input[name='my_result']").val(result).trigger('change');  wird dieses Ergebnis dann in das Scriptcase Feld my_result geschrieben und ein Change-Event ausgelöst (nötig bei an Datenbanken gebundenen Feldern, damit Scriptcase auch das Ergebnis speichert).

Damit die JavaScript Routine auch ausgeführt wird, muß sie in einem Ajax-Event auf my_input aufgerufen werden.

if (strpos({my_input},'None')==0)if (strpos({my_input},'None')==0) { sc_ajax_javascript(get_selected,array('my_result')); }

 

Ausführliche Dokumentation des Plugins:

https://kapantzak.github.io/SearchAreaControl/

 

Viel Erfolg beim Verwenden und Anwenden die vielen weiteren Möglichkeiten mit diesem Plugin.

Veröffentlicht in Scriptcase Sniplets Getagged mit: , , , , ,