Page tree
Skip to end of metadata
Go to start of metadata

Das JavaScript-Modul ng-daia bietet eine komfortable Möglichkeit, DAIA-Antworten in eigene HTML-Seiten einzubinden. Das Modul basiert auf AngularJS und kann für die Anzeige auf eigene Bedürfnisse angepasst werden.

Voraussetzungen

ng-daia benötigt die Einbindung von AngularJS in den HTML-Code. AngularJS kann vom eigenen Webserver oder von einem zentralen Dienst eingebunden werden, beispielsweise so:

<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.13/angular.min.js"></script>

Weiterhin muss das Modul selbst eingebunden werden:

<script src="//gbv.github.io/ng-daia/grunt-scripts/ng-daia.js"></script>

Um die Seite als Angular-Modul zu identifizieren, muss im <html>-Tag der Parameter ng-app definiert werden.

<html ng-app="myApp">

Mit diesem Parameter wird auf das Modul und seine Abhängigkeiten ('ngDAIA') verwiesen.

<script>angular.module('myApp', ['ngDAIA']);</script>

Ein Aufruf des Scripts erfolgt durch die Übergabe einer API-Adresse, sowie einer Dokument-ID. Letztere setzt sich aus dem Institutionskürzel (Übersicht der Kürzel) gefolgt von :ppn: und der gesuchten PPN zusammen. Es folgt ein beispielhafter Aufruf.

<div daia-api="http://daia.gbv.de/" daia-id="opac-de-ma9:ppn:0685460711"></div>

Bestandteile

ng-daia stellt verschiedene AngularJS-Direktiven und -Filter bereit, um aus einer Antwort im DAIA-Format eine HTML-Ansicht der in DAIA kodierten Verfügbarkeit zu erzeugen. Die Standard-Templates können bei Bedarf durch eigene Ansichten ersetzt werden. Alle Bestandteile sind unter http://gbv.github.io/ng-daia/ ausführlich dokumentiert.

Direktiven

daiaApi

Direktive zur Abfrage eines DAIA-Servers. Mit der Eingabe einer API-Adresse und einer Dokument-ID (bspw. Datenbankkürzel und PPN) werden die Informationen im DAIA-Format angefragt und gespeichert. Die Rückgabe erfolgt über das Template daia-response.

daiaItem

Direktive zur Anzeige eines Items, bzw des Templates der Verfügbarkeit.

daiaAvailability

Diese Direktive übergibt die aus der DAIA-Antwort entnommene aktuelle Verfügbarkeit für ein Item und bindet sie in einem Template (daia-availability.html)

daiaSimple

Direktive zur Anzeige der vereinfachten Form eines Verfügbarkeitsstatus. Intern wird auf den gleichnamigen AngularJS-Filter zurückgegriffen.

Filter

daiaSimple

Der Filter überprüft die Verfügbarkeiten aller Exemplare einer DAIA-Antwort und bildet aus ihnen einen vereinfachten Verfügbarkeitsstatus. Hierbei werden die verschiedenen Dienste in ein Ranking nach ihrer Zugriffsfreiheit gestellt, und der beste Wert wird als Status ausgewählt. Eventuelle Beschränkungen (limitation) werden in dieser Ansicht nicht ausgewertet. Die entstehenden Ausleihindikatoren sind:

  1. openaccess (Volltext sofort anzeigbar)
  2. loan (ausleihbar)
  3. presentation (vor Ort benutzbar)
  4. expected (temporär nicht verfügbar)
  5. none (nicht verfügbar)

Die Konvertierungslogik ist weiter unten beschrieben.

Templates

Für die jeweiligen Bestandteile der DAIA-Antwort und deren Präsentation greifen die Direktiven des Moduls auf mehrere Templates zurück. Folgende Templates sind standardmäßig implementiert. Mit dem HTML-Attribut template-url kann alternativ auf andere Templates verwiesen werden.

daia-response Das Template beinhaltet die allgemeinen Informationen zu dem angefragten Dokument, etwa die besitzende Einrichtung und ein Link zum Dokument im Ausleihsystem. Zudem wird die Direktive daiaItem aufgerufen, die zur Anzeige von einzelnen Exemplaren dient.

daia-item Das Template wird von der Direktive daiaItem aufgerufen. Es enthält exemplarspezifische Informationen, etwa eine Signatur oder ein der Institution untergeordnetes Department. Außerdem wird auf die Direktive daiaAvailability zugegriffen.

daia-availability Das von der Direktive daiaAvailability verwendete Template beinhaltet die einzelnen Verfügbarkeitsstadien eines Exemplares. Die Anzeige erfolgt standardmäßig mit der Aufteilung in die drei verschiedenen Dienste presentation, loan und interloan, bzw. presentation und openaccess für elektronische Medien.

daia-simple Auch für die einfache DAIA-Antwort ist ein Template implementiert, das die Anzeige abhängig von dem durch den Filter zurückgegebenen Wert modifiziert.

Die Rückgabe einer DAIA-Antwort mit mehreren Titeln unter einer PPN wird unter Benutzung der Templates beispielsweise wie folgt zurückgegeben:

Ngdaia demo DE full.png

DAIA-Rückgabe

Die DAIA-Abfrage erfolgt durch ng-daia im JSON-Format, worauf mit AngularJS sehr leicht zugegriffen werden kann. Die Rückgabe des DAIA-Servers wird einem Objekt mit dem Namen daia gespeichert, in dem sich eine logische Hierarchie von Dokumentinformationen befindet. Die Struktur ist folgende:

Vollständige Antwort

 

  • document [...]
    • href
    • item [...]
      • department [...]
        • content
        • id
        • href
      • href
      • label
      • id
      • available [...]
        • service
        • (limitation)
          • content
      • unavailable [...]
        • expected
        • href
        • service
  • institution
    • href
    • content
    • id

 

Hierbei gibt es sowohl Felder die wegfallen können, als auch wiederholbare. Die Details sind in der DAIA-Spezifikation festgelegt.

Einfache Antwort

Unter Benutzung der Direktive daiaSimple wird eine kürzere Form der Verfügbarkeit erzeugt. Hierbei wird aus allen Exemplaren der Status für den einfachsten Zugriff auf ein Exemplar ausgewählt und ausgegeben. Die Auswahl basiert auf folgender Logik:

presentationloanopenaccessStatus
+/-+/-+openaccess
+/-+-loan
+--presentation
- (exp.)- (exp.)-expected
-- (exp.)-expected
- (exp.)--none
- (delay)- (delay)-none
---none

Im dem Fall, dass der Status expected gewählt wird, und ein Datum im Unterfeld unavailable.expected vorhanden ist, wird dieses ebenfalls zurückgegeben. Somit wird das Objekt daia in der Form daia: {status:Status, expected:Datum} erzeugt.

 

Zugriff auf die Direktiven aus dem HTML-Code

Mit AngularJS kann auf verschiedene Methoden aus den Templates heraus auf die durch die daiaApi-Direktive erlangten DAIA-Daten zugegriffen werden. Ein komfortabler Weg ist die Verwendung der Geschweiften-Klammer-Syntax {{}}, mit der Dateninhalte direkt eingebunden werden können. Bsp.: {{daia.document[0].href}} gibt den OPAC-Link der verwendeten PPN zurück.

CSS

Für die Anzeige bietet es sich an, die Klassen des Stylesheets an die Struktur der Rückgabe anzupassen, um alle durch die Direktiven verwendeten Templates separat modifizieren zu können. Dies ist beispielhaft in der Standard-CSS-Datei ng-daia.css der Fall. Die verwendeten CSS-Klassen sind:

  • daia-result (gesamtes Ergebnis)
  • daia-response (gesamte Anzeige)
  • daia-document (gesamtes Exemplar)
  • daia-label (Feldbeschreibungen)
  • service-label (Beschreibung einzelner Dienste)
  • availability (allgemeine Anzeigeoptionen für Verfügbarkeit)
  • availability-available (Anzeige von verfügbaren Diensten)
  • availability-unavailable (Anzeige von nicht verfügbaren Diensten)
  • availability-expected (Anzeige von temporär nicht verfügbaren Diensten)
  • availability-limitation (Anzeige von Limitationen hinter verfügbaren Diensten)
  • availability-presentation (Kurzanzeige des Status presentation)
  • returning (Nachricht bezüglich erwarteter Exemplare)
  • returning-expected (Datum innerhalb der Nachricht)
  • access (Zugriffslink für elektronische Ressourcen)

Translations

In den Templates von ng-daia ist eine Implementierung für mehrsprachige Darstellungen integriert. Mithilfe des Angular-Moduls angular-translate können für jeden im Template verwendeten Term mehrere Übersetzungen angegeben werden, deren Anzeige dann einfach über den Parameter translate="" gesteuert werden kann. Um diese Funktion in Anspruch zu nehmen, muss das unter dem obigen Link verfügbare Modul in das HTML eingebunden werden. Außerdem müssen die verwendeten Übersetzungen in einer Tabelle definiert werden, beispielsweise wie für die Demo-Applikation in der Datei app.js.

Weitere Informationen

API-Dokumentation von ng-daia

http://gbv.github.io/ng-daia/

Projekt auf Github

https://github.com/gbv/ng-daia/

Homepage von AngularJS

https://angularjs.org/

Features von Bootstrap UI

http://angular-ui.github.io/bootstrap/

Aktuelle Versionen von Bootstrap

http://www.bootstrapcdn.com/



  • Diese Seite wurde zuletzt am 28. September 2015 um 12:02 Uhr geändert.
  • No labels