Falls Sie eine eigene Fehlerbehandlungs-Routine implementieren möchten, dann können Sie das Property
errorHandler
bzw. failureHandler
dazu benutzen, um auf eine spezielle Weise mit
Fehlern umzugehen.
Die errorHandler
Funktion wird aufgerufen, falls OXOMI einen Fehler zurückliefert. Die
failureHandler
Funktion wird angewendet, falls während der Verarbeitung der abgerufenen
Daten im Browser ein Fehler auftritt.
Parameter | Beschreibung | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
errorHandler |
Ermöglicht es eine Funktion zu übergeben, welche bei einem serverseitigen Fehler aufgerufen wird. Diese bekommt ein Objekt mit den folgenden Eigenschaften übergeben:
Siehe Öffentliche
API für eine Beschreibung der erzeugten Antwortstruktur. Wenn diese Funktion |
||||||||||||
failureHandler |
Ermöglicht eine Funktion zu übergeben, welche bei einem Ausnahmefehler im Client aufgerufen wird. Diese bekommt ein Objekt mit den folgenden Eigenschaften übergeben:
|
Hinweis: Beide Properties müssen während der Initialisierung definiert werden.
// OXOMI initialisieren und Fehlerbehandlung definieren oxomi.init({portal: 'IHRE PORTAL-ID', accessToken: 'AUTHENTIFIZIERUNGS-TOKEN', errorHandler : function(obj) { // in einem entsprechenden Container ausgeben $('#error').text(obj.json.message); // mit der Fehlerbehandlungs-Routine jetzt stoppen return true; }, failureHandler : function(obj) { // in einem entsprechenden Container ausgeben $('#error').text(obj.error.message); } });
Mithilfe eines Interceptor ist es möglich in das Verhalten der Integration einzugreifen. Nachdem der JavaScript-Code die OXOMI-Schnittstelle abgefragt hat und bevor das Ergebnis in das HTML integriert wird, kann ein Interceptor-Code eingebunden werden.
Der Interceptor kann zum Beispiel dazu dienen Anpassungen an den abgerufenen Daten aus der Schnittstelle an spezielle Anforderungen anzupassen.
Parameter | Beschreibung |
---|---|
interceptor |
Gibt eine JavaScript-Funktion an, die nach dem OXOMI-Aufruf ausgeführt wird. Als Parameter
wird hierbei die Ergebnis-Datenstruktur zur Verfügung gestellt. Wird eine Funktion übergeben,
welche zwei Parameter entgegen nimmt z.B. |
Der Renderer ist dafür verantwortlich, die eingesetzten Templates mit Daten zu befüllen oder kann dazu verwendet werden, eine völlig eigene Template-Strategie umzusetzen.
Eine individuelle Renderer-Funktion kann zum Beispiel dazu verwendet werden, um OXOMI in eine Single-Page-Anwendung zu integrieren. Anstatt die abgerufenen Daten in einem HTML-Template anzuzeigen, könnte mit einer passenden Renderer-Funktion auch ein "DataTable" oder andere dynamische Widgets befüllt werden.
Benutzen Sie das Property renderer
, um eine eigene Renderer-Funktion zu benutzen.
Parameter | Beschreibung |
---|---|
renderer |
Gibt eine JavaScript-Funktion an, welche die abgerufenenen Daten auf eine individuelle Weise ausgeben kann.
Die Funktion muss folgende Signatur haben: |
Der Activator ist dafür gedacht nach der Integration des Template-Schnipsels in die umgebende Anwendung neue Eventlistener auf eventuell neue HTML-Elemente zu legen, um diese mit Funktionen der entsprechenden Anwendung zu verbinden.
Parameter | Beschreibung |
---|---|
templateActivator |
Gibt eine Funktion an, welche nach Ausführen des Template aufgerufen wird. Diese kann dazu verwendet werden, jQuery-Aktionen auf das generierte HTML zu legen.
Die Funktion muss folgende Signatur haben: |
Standardmäßig wird die JavaScript-Integration von OXOMI keine Änderung an der Seite vornehmen, wenn keine
Ergebnisse für eine artikelbezogene Abfrage gefunden wurden. Wenn Sie in diesem Fall aber anders reagieren
möchten (z.B. eine Meldung einblenden) können Sie die folgenden Möglichkeiten verwenden. Grundsätzlich
funktioniert dies bei allen artikelbezogenen Funktionen (itemXXXX(...)
).
Am einfachsten ist es den target
Container standardmäßig ausblenden
(style="display:none"
) und mit einer entsprechenden Meldung vorzubefüllen (z.B. Es wurden leider
keine Bilder gefunden.). Anschließend können Sie bei dem entsprechenden Aufruf, z.B. itemImages
,
den Parameter alwaysShowTarget: true
mitgeben. Dadurch wird der Container auch sichtbar gemacht,
wenn nichts gefunden wurde - so wird Ihre Meldung eingeblendet.
Alternativ können Sie bei dem Aufruf itemXXX(...)
eine Funktion unter dem Name
emptyResultHandler
mitgeben. Diese wird aufgerufen, wenn der Server keine passenden Daten findet.
Als Parameter bekommt diese Funktion eine Map, welche args
(alle Aufrufparameter),
target
(Name des Ziel-Containers) und json
(die Serverantwort) enthält.
Weiterhin können Sie eine globale emptyResultHandler
Funktion (s.o.) bei oxomi.init
definieren, welche bei allen Aufrufen verwendet wird.
// Behandlung auf globaler Ebene... oxomi.init({portal: 'IHRE PORTAL-ID', accessToken: 'AUTHENTIFIZIERUNGS-TOKEN', emptyResultHandler : function(ctx) { $(ctx.target).text('Es wurden keine Ergebnisse gefunden'); } }); // Behandlung pro Aufruf oxomi.itemImages({ supplierNumber: 'L10190', itemNumber: 'A20876', emptyResultHandler : function(ctx) { $(ctx.target).text('Es wurden keine Bilder gefunden'); } });
Mit dem Property completionHandler
haben Sie die Möglichkeit eine Funktion
zu definieren, mit der Sie zum Abschluss der nochmal eingreifen können.
oxomi.itemPages({ supplierNumber: 'L10190', itemNumber: 'A20876', completionHandler : function(ctx) { // Alle OXOMI-Daten besonders hervorheben $('[class^=oxomi]').addClass('highlight'); } });
Das Javascript Objekt, das der completionHandler Funktion übergeben wird hat immer mindestens 3 Properties:
target
ist der jQuery Selektor des Ziel-Containers. args
enthält das Objekt, womit
der OXOMI-Aufruf gestartet wurde, json
enthält die Original-Antwort des Servers, welche alle
relevanten Informationen zum Aufruf enthält.
Die Ablaufreihenfolge des Codes ist die folgende:
Schritt 1 | Schnittstellen-Aufruf |
Schritt 2 | Fehlerbehandlung |
Schritt 3 | Interceptor wird aufgerufen |
Schritt 4 | Renderer wird aufgerufen |
Schritt 5 | Activator wird aufgerufen |
Schritt 6 | auxElements-Elemente werden eingeblendet |
Schritt 7 | classMap-Elemente werden durch entsprechende Klassen ergänzt |
Schritt 8 | Abschlussfunktion wird aufgerufen, falls vorhanden |