aboutsummaryrefslogtreecommitdiff
path: root/assets/js/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'assets/js/index.js')
-rw-r--r--assets/js/index.js45
1 files changed, 30 insertions, 15 deletions
diff --git a/assets/js/index.js b/assets/js/index.js
index 5a4fb39..7deaee1 100644
--- a/assets/js/index.js
+++ b/assets/js/index.js
@@ -392,11 +392,27 @@
container.removeAttribute("data-focus");
}
});
- function fetchJson(url, callback) {
+ let data1 = {};
+ function isEmpty(obj) {
+ return Object.keys(obj).length === 0;
+ }
+ function appendItemsTo(local, remote) {
+ const paginated = Object.keys(remote).includes("next_url");
+ if (isEmpty(local)) {
+ local = remote;
+ } else {
+ local.items = local.items.concat(remote.items);
+ }
+ if (paginated) {
+ fetchJson(remote.next_url, local);
+ }
+ data1 = local;
+ }
+ function fetchJson(url, store) {
const httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
if (httpRequest.readyState === 4 && httpRequest.status === 200) {
- if (callback) callback(JSON.parse(httpRequest.responseText));
+ appendItemsTo(store, JSON.parse(httpRequest.responseText));
}
};
httpRequest.open("GET", url);
@@ -420,20 +436,19 @@
if (firstRun) {
loadScript(window.location.origin + "/js/fuzzysort.js").then(()=>{
firstRun = false;
- fetchJson("/index.json", function(data) {
- const options = {
- key: [
- "title"
- ]
- };
- query.addEventListener("keyup", function() {
- search(query.value, data.items, options);
- });
- query.addEventListener("focusin", function() {
- search(query.value, data.items, options);
- });
- search(query.value, data.items, options);
+ fetchJson("/index.json", {});
+ const options = {
+ key: [
+ "title"
+ ]
+ };
+ query.addEventListener("keyup", function() {
+ search(query.value, data1.items, options);
+ });
+ query.addEventListener("focusin", function() {
+ search(query.value, data1.items, options);
});
+ search(query.value, data1.items, options);
}).catch((error)=>{
console.log("Error failed to load fuzzy sort: " + error);
});