Mit LUA Vorverarbeitung für eine Spalte programmieren
Erstellt: 15.02.2023, letzte Änderung: 16.02.2023
LUA kann mittlerweile an vielen Stellen innerhalb von EasyCatalog eingesetzt werden und löst manchmal Anforderungen, die mit den regulären Bordmitteln nicht behandelbar sind. Bspw. kann LUA an folgenden Stellen eingesetzt werden (Liste ist nicht vollständig):
- Innerhalb eines Skriptetiketts für einen Text- oder Grafikrahmen (siehe bspw. LUA in Skriptetiketten)
- Als "Präprozessor" für die Vorverarbeitung der kompletten Paletteninhalte, bevor diese innerhalb der Palette sichtbar werden (createformattedcontent.lua)
- Für die Vorverarbeitung von Inhalten einer Spalte (dieses Beispiel)
- Für die nachträgliche Bearbeitung / Manipulation von im ID-Dokument platzierten Formatierungsregeln
- Für die Manipulation des Aussehens einer Spalte / Zelle, bspw. in Abhängig der in einer Spalte / Zelle und / oder der Palette enthaltenen Daten
- Für die komplette Verarbeitung von Zusatzfeldern des Typs "Erweitert"
In diesem Beispiel befassen wir uns mit der Vorverarbeitung von Daten einer Palettenspalte und erklären, welches Verhalten mit diesem Vorgehen in der Palette erreicht werden kann.
Zusatzfeld referenziert auf ein Originalfeld der EasyCatalog-Palette / -Datenquelle
Im Zusatzfeld wird zunächst auf das Feld referenziert, das in der Spalte erscheinen soll. Natürlich kann der mit diesem Beispiel veranschaulichte Zweck auch mit der Kombination anderer EasyCatalog-Funktionen erreicht werden. In diesem Beispiel geht es aber lediglich darum, Funktionsweise und die Möglichkeiten, die die Vorverarbeitung für die Inhalte einer Spalte mit LUA bietet, zu zeigen.
Ein kleiner Exkurs noch an dieser Stelle:
Mit
FIELDSTR(meinFeldname)
kann der formatierte Wert eines EasyCatalog-Feldes referenziert werden.
Mit
FIELDVAL(meinFeldname)
wird immer der unformatierte Wert eines EasyCatalog-Feldes referenziert. Also so, wie er von der der Palette zugrundeliegenden Datenquelle an die Palette geliefert wird.
LUA-Code zum Zusammenfügen von Feldern in der Vorverarbeitung
Im Feld "Vorverarbeitung" können mittels LUA und einfache oder auch sehr komplexe "Programmierungen" eingetragen werden, umd den Feldinhalt vor der regulären Weiterverarbeitung in der Spalte, bspw. durch die Anwendung von Reinigungsoptionen, zu manipulieren.
In unserem Beispiel verwenden wir dafür die Befehle
- content und
- FIELD.get('Teaser'):content()
wobei
content
den Feldinhalt der Spalte bereitstellt und mit dem Befehl
FIELD.get('Teaser'):content()
bspw. der Feldinhalt jeder anderen, beliebigen Zelle aus der gleichen Datenzeile geholt werden kann. "Teaser" stellt in diesem Beispiel den Wert der gleichnamigen Spalte zur Verfügung, der in unserem Beispiel "Neu" hat.
Feldinhalt mit Reinigungsoptionen nach Vorverarbeitung umformen
Zum Schluß wird der in der Vorverarbeitung aus den Inhalten von zwei unterschiedlichen Spalten zusammengesetzte Wert über die Reinigungsoptionen des Feldes "_LUA-Vorverarbeitung) noch umgewandelt.
Das ist nur ein sehr einfaches Beispiel dafür, was mit der Vorverarbeitung von Inhalten einer Spalte bewerkstelligt werden kann. Natürlich können mti LUA auch komplexe Funktionen geschrieben und an dieser Stelle eingebunden werden, bevor die manipulierten Inhalte an die Palette zurückgegeben werden.
Dafür kann man bspw. mit dem Befehl
require("meineFunktionen");
eine Datei, die im Scripts-Verzeichnis einer EasyCatalog-Palette liegt und die die eigentlichen Funktionen enthält, einbinden. Achtung: Die Datei wird im genannten Verzeichnis als "meineFunktionen.lua" gespeichert, über require aber ohne die Endung eingebunden.