Java Script API
Zuletzt geändert: 12.03.2026 16:19

JavaScript-API (forms.js) #

Die zentrale Bibliothek forms.js stellt Hilfsfunktionen für alle internen Webseiten bereit. Sie wird per SSI automatisch eingebunden oder manuell geladen:

<script src="eulanda://./forms.js" charset="ISO-8859-1"></script>

Beim Laden initialisiert die Bibliothek automatisch die Host-Objekte und liest die URL-Parameter aus.

Host-Objekte #

Nach dem Laden stehen folgende globale Objekte zur Verfügung:

ObjektQuelleBeschreibung
clientcontext.clientHauptschnittstelle zu EULANDA (SQL, Objekte, Registry)
connclient.connectionADO-Connection zur Datenbank
ellibcontext.ellibBibliothek für Datums-, Datei- und String-Funktionen
internlibellib.internlib()Systemfunktionen (ProcessMessages, RecordsetToJSON)
reslibconsts.reslibUI-Texte und Übersetzungen
weblibcontext.weblibWeb-spezifische Funktionen (callURL, getAdminCommand)
modulescontext.modulesModul-Konfiguration
userlibcontext.userlibBenutzerbezogene Bibliothek

Alle Objekte sind undefined, wenn die Seite außerhalb von EULANDA geöffnet wird.

Konfigurationsvariablen #

Diese Variablen müssen bei Bedarf von der jeweiligen Seite gesetzt werden:

VariableTypStandardBeschreibung
designLanguagestring"DE"Quellsprache der Seite für patchMsgUI. Auf "EN" setzen, wenn die Seite nativ englisch ist
currentDOCstring""Aktueller Dokumenttyp (z.B. "Eulanda.Artikel")
currentIdnumber0Aktuelle Datensatz-ID

URL-Parameter #

Beim Laden werden automatisch die folgenden Query-Parameter ausgelesen:

VariableTypParameter
urlPageNamestringpagename
urlTitlestringtitle
urlIdnumberid

SQL-Zugriff #

executeSql(sql) #

Führt ein SQL-Statement aus und liefert das Ergebnis als Array von JavaScript-Objekten. Jede Zeile wird ein Objekt, dessen Properties die Spaltennamen sind.

var kunden = executeSql("select top 10 Match, Name1, Ort from Adresse");
for (var i = 0; i < kunden.length; i++) {
  debugOut(kunden[i].Match + " - " + kunden[i].Name1);
}

Der Name ist analog zu Client.ExecuteSql aus der iScript-API, die ein ADO-Recordset zurückgibt. Die JavaScript-Variante liefert stattdessen direkt ein Array.

sqlString(val) #

Erzeugt ein SQL-String-Literal mit korrektem Escaping. Einfache Anführungszeichen werden verdoppelt, null wird zu ''.

var sql = "select * from Adresse where Match = " + sqlString(suchbegriff);
// Bei suchbegriff = "O'Brien" → "select * from Adresse where Match = 'O''Brien'"

Wichtig: Verwenden Sie immer sqlString() für Benutzereingaben, um SQL-Injection zu vermeiden.

sqlFloat(val) #

Wandelt einen Zahlenwert oder einen Text im lokalen Format in ein SQL-Float-Literal um. Erkennt das Dezimaltrennzeichen automatisch.

sqlFloat(1234.56)      // → "1234.56"
sqlFloat("1.234,56")   // → "1234.56" (deutsches Format)

Übersetzung #

patchMsgUI(msg) #

Übersetzt einen UI-Text über die ResLib-Schnittstelle. Verwendet designLanguage als Quellsprache.

var titel = patchMsgUI(":578@1047");
var label = patchMsgUI("Artikel");

Wenn die Seite außerhalb von EULANDA läuft, wird msg unverändert zurückgegeben.

Datumsfunktionen #

FunktionBeschreibung
formatDate(date)Formatiert ein Date-Objekt als DD.MM.YYYY
formatVbDate(d)Wandelt ein OLE-Datum (von COM) in einen formatierten String
setDateRange(Von, Bis, Range)Setzt zwei Datumsfelder auf einen Bereich (z.B. "thismonth")
initDateRange(fieldIdFrom, fieldIdTo)Initialisiert Datumsbereichs-Felder mit automatischer Bereichserkennung
// Datumsbereich-Felder initialisieren
initDateRange("datumVon", "datumBis");
// Benutzer tippt "thismonth" → Von = 01.03.2026, Bis = 31.03.2026

Formular-Handling #

FunktionBeschreibung
initForm(form)Enter-Taste springt zum nächsten Feld statt das Formular abzusenden
initFormField(fl)Registriert Change-Event, das den Host-Dialog über Änderungen informiert
formChange()Meldet dem Host-Dialog eine Änderung (external.Dialog.Modify())
DialogData()Gibt external.Dialog.Data zurück (oder null außerhalb eines Dialogs)
selectDirectory(el)Öffnet einen Verzeichnisauswahl-Dialog
initNumericField(fieldId)Beschränkt die Eingabe auf Ziffern (0–9)
// Formular initialisieren
initForm(g("meinFormular"));
initFormField("feld1");
initFormField("feld2");
initNumericField("menge");

DOM-Helfer #

g(name) #

Kurzform für document.getElementById(name).

g("meinElement").style.display = "block";

toggleElement(id) #

Blendet ein Element ein/aus und aktualisiert optional ein zugehöriges Toggle-Icon.

URL-Helfer #

makeUrlReport(DOC, ReportName, id, target) #

Baut eine eulanda://-URL für den Berichtsaufruf zusammen.

ParameterTypBeschreibung
DOCstringDokumenttyp (z.B. "Eulanda.Auftrag")
ReportNamestringName des Berichts
idnumberDatensatz-ID
targetstring"preview" oder "print"
var url = makeUrlReport("Eulanda.Auftrag", "cnsoft.Auftrag.Standard", 1544, "preview");
// → "eulanda://./DOC/Eulanda.Auftrag/1544?print&Reportname=cnsoft.Auftrag.Standard&Target=preview"

Debug und Logging #

debugOut("Seite geladen");
debugOut("meinModul", "Wert:", x, "von", y);
errorOut("Fehler bei Initialisierung");

Bei einem Argument wird "javascript" als Topic verwendet. Bei mehreren Argumenten ist das erste das Topic. Die Ausgabe erscheint im EULANDA-Debug-Log.