bvb-kobv-allianz / RVK-VISUAL

Contentvisualisierung in Bibliothekskatalogen am Beispiel der RVK-Notation
Other
9 stars 3 forks source link

Integration in Primo #7

Open jhercher opened 9 years ago

jhercher commented 9 years ago

Hallo

Die Primo Integration der Bibliothek funktioniert für mich noch nicht [1]. Mögliche Fehlerquellen:

Hier die Details:

(1) Nicht im <header>-Element eingebunden

Unser Primo Hosting erlaubt keine Änderungen am original Header. Ich habe die Skripte wie folgt zu beginn des <body>-Tag eingebunden :

<link href="rvk-visual.css" type="text/css" rel="stylesheet" />
<script src="rvk-visual.js" type="application/javascript"></script>
<script type="application/javascript">
        // Instanz von RvkVisual anlegen
        // Der erste Parameter ist die CSS-Klasse, die RVK Notationen identifiziert.
        // Der zweite Parameter ist der Name der Variable (Default: 'rvkVisual')
        var rvkVisual = RvkVisual.newInstance('rvklink');

        // Instanz konfigurieren
        rvkVisual.displayHierarchy = true;
        rvkVisual.highlightErrorsEnabled = true;
        rvkVisual.togglePosition = RvkVisual.WRAP;
        rvkVisual.toggleEnabled = true;

        // Beim Laden der Seite prepareLinks aufrufen
        window.addEventListener("load", function () {
            RvkVisual.prepareLinks();
        }, false);
    </script>

(2) DOM Struktur (default Primo)

Die DOM Struktur ist nicht die gleiche wie in den mitgelieferten Beispieldateien.

<li id="RVK-Klassifikation-1">
 <strong>RVK-Klassifikation:</strong>
 <a href="search.do?-langer-get-str" class="EXLLinkedField" title="Finde alle Titel mit" target="_parent" onclick="if(isRemoteSearch()){suggestedPleaseWait('CG 4063');}">CG 4063</a>
;<br>
<a href="#" class="EXLLinkedField" title="Finde alle Titel mit" target="_parent" onclick="if(isRemoteSearch()){suggestedPleaseWait('CG 4077');}">CG 4077</a>
</li>

Damit wir die Notationen besser adressieren können fügen wir mit JS die CSS-Klassen rvklink zum li und a Element hinzu. Eine mögliche Fehlerquelle könnte sein, dass diese Funktion in Primo erst nach dem vollständigen Laden aktiviert wird ($.(document.ready).function(){}....).
In Primo sieht die Struktur dann etwa so aus:

(3) DOM Struktur (erzeugt durch nachgeladenes Javascript)

<li id="RVK-Klassifikation-1">  <strong>RVK-Klassifikation</strong>
  <ul id="RVK-ul-1" class="">
   <li class="rvkLink">
      <a href="langer-get-string" class="EXLLinkedField rvklink" title="Finde alle Titel mit" target="_parent"  onclick="if(isRemoteSearch()){suggestedPleaseWait('CG 4063');}">CG 4063</a>
  </li>
...
 </ul>
</li>

Wenn ich in der Konsole RvkVisual.prepareLinks() aufrufe kommt nur undefined zurück.

Ich hätte gerne die RVK zum aufklappen inkl. Links auf unsere Primodaten integriert. Wie stelle ich das am besten an?

[1] Testdatensatz

Viele Grüße Johannes

j3nsch commented 9 years ago

RvkVisual manipuliert die Darstellung der RVK Notation zum Zeitpunkt des Ladens der Webseite. Bei HTML das später über AJAX nachgeladen wird greift der Mechanismus nicht mehr. Da müssen wir uns mal Gedanken machen.

j3nsch commented 9 years ago

Man könnte probieren, das RvkVisual Objekt am Anfang zu konfigurieren, die Method prepareLinks aber erst als Teil der Verarbeitung des AJAX-Responses aufzurufen, nachdem der neue Block zur Seite hinzugefügt wurde.

Testweise könnte man das vermutlich mit der aktuellen Version von RvkVisual probieren. Es gibt vermutlich Probleme, wenn prepareLinks mehrfach aufgerufen wird, da immer die gesamte Seite betrachtet wird. Man könnte also die Möglichkeit einbauen den Scope einzuschränken. Zusätzlich sollte man dafür sorgen, daß bereits bearbeitete Notationen nicht noch einmal verarbeitet werden. Das sollte die meisten Probleme lösen.

Um wiederholte Anfragen für die selbe Notation zu vermeiden, könnten die Informationen im RvkVisual Objekt gespeichert (gecached) werden und bei Wiederholungen auf der selben Seite, die bereits geladenen Informationen verwendet werden.

Es wäre schön, wenn erst einmal ausprobiert werden könnte, ob sich prepareLinks als Proof-of-Concept an den AJAX Response binden lässt. Die Änderungen an RvkVisual sollten dann relativ zügig umsetzbar sein.