aboutsummaryrefslogtreecommitdiff
path: root/content/sworldcat_library_holdings/library_holdings.js
diff options
context:
space:
mode:
Diffstat (limited to 'content/sworldcat_library_holdings/library_holdings.js')
-rw-r--r--content/sworldcat_library_holdings/library_holdings.js65
1 files changed, 65 insertions, 0 deletions
diff --git a/content/sworldcat_library_holdings/library_holdings.js b/content/sworldcat_library_holdings/library_holdings.js
new file mode 100644
index 0000000..3a30b2b
--- /dev/null
+++ b/content/sworldcat_library_holdings/library_holdings.js
@@ -0,0 +1,65 @@
+/*
+ Copyright © 2021 jahoti (jahoti@tilde.team)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+var pathParts = location.pathname.split('/'), itemRef = pathParts[pathParts.length - 1];
+
+// Generate a function which, when invoked, loads the catalog holdings starting at i (one-indexed) focused on loc
+function generateGoTo(i, set_loc) {
+ return function () {
+ ; // If this is a new search, "set_loc" won't be set; set it
+ var xhr = new content.XMLHttpRequest(), loc = set_loc || encodeURIComponent(locInput.value);
+ xhr.onreadystatechange = function () {
+ if (this.readyState === 4) {
+ if (this.status === 200) {
+ retrieved.innerHTML = this.responseText;
+
+ var i, node = document.getElementById('libslocator');
+ node.parentNode.removeChild(node);
+ for (node of retrieved.querySelectorAll('a[href^="javascript:findLibs(\'\', "]')) {
+ i = parseInt(node.href.split(',', 2)[1]);
+ node.onclick = generateGoTo(i, loc);
+ }
+ }
+ else alert('Search failed: response code ' + this.status);
+ }
+ }
+
+ xhr.open('GET', 'https://www.worldcat.org/wcpa/servlet/org.oclc.lac.ui.ajax.ServiceServlet?wcoclcnum=' + itemRef + '&start_holding='
+ + i + '&serviceCommand=holdingsdata&loc=' + loc, true);
+ xhr.send();
+ return false; // Make sure the browser doesn't try to submit any holding form
+ };
+}
+
+
+var retriever = document.querySelector('.retrieving'), retrieved = document.getElementById('donelocator');
+
+var locForm = document.createElement('form'), locLabel = document.createElement('label'), locInput = document.createElement('input'),
+ locSubmit = document.createElement('input');
+
+locForm.appendChild(locLabel);
+locForm.appendChild(locInput);
+locForm.appendChild(locSubmit);
+
+locInput.name = locLabel.htmlFor = 'cat_location';
+locInput.type = 'text';
+locInput.required = 'yes';
+locLabel.innerText = 'Find copies closest to: ';
+locSubmit.value = 'Go';
+locSubmit.type = 'submit';
+locForm.onsubmit = generateGoTo(1);
+
+retriever.parentNode.replaceChild(locForm, retriever); \ No newline at end of file