Skip to content

Commit f100f46

Browse files
committed
Start mit aggregierter Anzeige (RVK) verbessert
Da die RVK-Benennungen asynchron geladen werden, konnte es vorkommen, dass die Funktion aggregateRVK mit noch unvollständigen Daten arbeiten musste, was dann zu merkwürdigen Ergebnissen geführt hat. Jetzt ist der Aufruf direkt bei den Abfragen der RVK-API vorschoben, so dass dieses Problem nicht mehr auftauchen kann. Zudem ist die Funktion selbst in die separate JS-Datei verschoben worden.
1 parent cccc26b commit f100f46

File tree

2 files changed

+74
-71
lines changed

2 files changed

+74
-71
lines changed

isbn/rendering.js

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,74 @@ function addBenennung(index, element)
8282
$('.'+className).addClass("rvkError");
8383
}
8484
$('.'+className).attr("data-json", JSON.stringify(json));
85+
aggregateRVK();
8586
});
8687
}
8788

89+
function aggregateRVK() {
90+
var rvkNodes = $(".rvk a");
91+
var frequencies = {};
92+
var rvkExample = {};
93+
for (let rvkNode of rvkNodes) {
94+
let rvk = rvkNode.textContent;
95+
frequencies[rvk] = frequencies[rvk] ? frequencies[rvk] + 1 : 1;
96+
rvkExample[rvk] = rvkNode;
97+
}
98+
var rvkSorted = Object.keys(frequencies);
99+
rvkSorted.sort();
100+
$("#rvkaggregiert").html("");
101+
var parent;
102+
for (let rvk of rvkSorted) {
103+
104+
let jsonstring = $(rvkExample[rvk]).attr("data-json");
105+
if (jsonstring) {
106+
let jsondata = JSON.parse(jsonstring);
107+
let treeconcepts = [];
108+
let treenotations = [];
109+
let currentjson = jsondata;
110+
while (currentjson) {
111+
if ("node" in currentjson) {
112+
if ("benennung" in currentjson.node) {
113+
treeconcepts.unshift(currentjson.node.benennung);
114+
treenotations.unshift(currentjson.node.notation);
115+
}
116+
if ("ancestor" in currentjson.node) {
117+
currentjson = currentjson.node.ancestor;
118+
} else {
119+
currentjson = null;
120+
}
121+
} else {
122+
currentjson = null;
123+
}
124+
}
125+
parent = $("#rvkaggregiert");
126+
for (let i=0; i<treeconcepts.length; i++) {
127+
let node = treeconcepts[i];
128+
let notation = treenotations[i];
129+
let check = $("#rvkaggregiert *[title='" + notation + "']");
130+
if (check.length == 0) {
131+
let inner = $("<li>").attr("title", notation).text(node);
132+
let line = $("<ul>").append(inner);
133+
parent.append(line);
134+
}
135+
parent = $("#rvkaggregiert *[title='" + notation + "']");
136+
}
137+
}
138+
if (rvkExample[rvk].classList.contains("rvkError")) {
139+
parent = $("#rvkaggregiert");
140+
parent.append("<br/>[Error]<br/>");
141+
} else {
142+
if (!parent) {
143+
parent = $("#rvkaggregiert");
144+
}
145+
parent.append(": ");
146+
}
147+
parent.append("<b>" + frequencies[rvk] + " x </b>");
148+
$(rvkExample[rvk]).clone().appendTo(parent);
149+
}
150+
$("#rvkaggregiert").append("<br/><br/><small><img src='../img/flash.svg' height='15px' /> powered by <a href='https://rvk.uni-regensburg.de/api/'>RVK API</a></small>");
151+
}
152+
88153
function renderDDC(ddcArray)
89154
{
90155
if (typeof ddcArray === 'string') {

isbn/suche.html

Lines changed: 9 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
alert("jQuery wurde nicht gefunden");
3131
}
3232
</script>
33-
<script src="rendering.js?20250104"></script>
33+
<script src="rendering.js?20250922"></script>
3434
<script type="text/javascript">
3535
function toggleHidden() {
3636
$('.hidden').slideToggle();
@@ -40,69 +40,8 @@
4040
<script type="text/javascript">
4141

4242

43-
function aggregateRVK() {
44-
var rvkNodes = $(".rvk a");
45-
var frequencies = {};
46-
var rvkExample = {};
47-
for (let rvkNode of rvkNodes) {
48-
let rvk = rvkNode.textContent;
49-
frequencies[rvk] = frequencies[rvk] ? frequencies[rvk] + 1 : 1;
50-
rvkExample[rvk] = rvkNode;
51-
}
52-
var rvkSorted = Object.keys(frequencies);
53-
rvkSorted.sort();
54-
$("#rvkaggregiert").html("");
55-
var parent;
56-
for (let rvk of rvkSorted) {
57-
58-
let jsonstring = $(rvkExample[rvk]).attr("data-json");
59-
if (jsonstring) {
60-
let jsondata = JSON.parse(jsonstring);
61-
let treeconcepts = [];
62-
let treenotations = [];
63-
let currentjson = jsondata;
64-
while (currentjson) {
65-
if ("node" in currentjson) {
66-
if ("benennung" in currentjson.node) {
67-
treeconcepts.unshift(currentjson.node.benennung);
68-
treenotations.unshift(currentjson.node.notation);
69-
}
70-
if ("ancestor" in currentjson.node) {
71-
currentjson = currentjson.node.ancestor;
72-
} else {
73-
currentjson = null;
74-
}
75-
} else {
76-
currentjson = null;
77-
}
78-
}
79-
parent = $("#rvkaggregiert");
80-
for (let i=0; i<treeconcepts.length; i++) {
81-
let node = treeconcepts[i];
82-
let notation = treenotations[i];
83-
let check = $("#rvkaggregiert *[title='" + notation + "']");
84-
if (check.length == 0) {
85-
let inner = $("<li>").attr("title", notation).text(node);
86-
let line = $("<ul>").append(inner);
87-
parent.append(line);
88-
}
89-
parent = $("#rvkaggregiert *[title='" + notation + "']");
90-
}
91-
}
92-
if (rvkExample[rvk].classList.contains("rvkError")) {
93-
parent = $("#rvkaggregiert");
94-
parent.append("<br/>[Error]<br/>");
95-
} else {
96-
if (!parent) {
97-
parent = $("#rvkaggregiert");
98-
}
99-
parent.append(": ");
100-
}
101-
parent.append("<b>" + frequencies[rvk] + " x </b>");
102-
$(rvkExample[rvk]).clone().appendTo(parent);
103-
}
104-
$("#rvkaggregiert").append("<br/><br/><small><img src='../img/flash.svg' height='15px' /> powered by <a href='https://rvk.uni-regensburg.de/api/'>RVK API</a></small>");
105-
43+
function showRVKAggregation() {
44+
aggregateRVK();
10645
$(".rvk").attr("style", "display: none");
10746
$(".rvkaggregiert").removeAttr("style");
10847
}
@@ -113,7 +52,6 @@
11352
}
11453

11554

116-
11755
function aggregateDDC() {
11856
var ddcNodes = $(".ddc a");
11957
var frequencies = {};
@@ -224,6 +162,11 @@
224162

225163
updateLinks();
226164

165+
if (localStorage.getItem("aggregationPrefered") === 'true') {
166+
// start immediately with the aggregated view and recompute it after the
167+
// data for each verbund is ready
168+
showRVKAggregation();
169+
}
227170

228171
var meinVerbund = getParameterByName("verbund").toLowerCase() || "k10plus";
229172
document.querySelector("#selectPpn").value = meinVerbund;
@@ -472,11 +415,6 @@
472415
$('#relationen').html(relationenText.trim());
473416
}
474417
$('#links').append( renderLinks(data.links) );
475-
if (localStorage.getItem("aggregationPrefered") === 'true') {
476-
// start immediately with the aggregated view and recompute it after the
477-
// data for each verbund is ready
478-
aggregateRVK();
479-
}
480418
updateLinks();
481419
});
482420
});
@@ -557,7 +495,7 @@ <h1>Unterstützungstool für Fachreferatsarbeit</h1>
557495
</colgroup>
558496
<tr class="verbuendeUeber">
559497
<th>&nbsp;</th>
560-
<th class="rvk">RVK-Notation <button onclick="aggregateRVK()"></button></th>
498+
<th class="rvk">RVK-Notation <button onclick="showRVKAggregation()"></button></th>
561499
<th class="rvkaggregiert" style="display: none"><button onclick="hideRVKAggregation()"></button> RVK aggregiert</th>
562500
<th class="ddc">DDC-Notation <button onclick="aggregateDDC()"></button></th>
563501
<th class="ddcaggregiert" style="display: none"><button onclick="hideDDCAggregation()"></button> DDC aggregiert</th>

0 commit comments

Comments
 (0)