Personal Video Database
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

58 lines
1.4 KiB

function logError(s) {
console.log(s);
let error_box = document.querySelector('#js_errors');
let p = document.createElement('p');
p.appendChild(document.createTextNode(s));
error_box.appendChild(p);
error_box.style.display = 'block';
}
function fetchJSON(url, responseFunc, event) {
fetch(url)
.then(function(response) {
console.log('Response.url: ', response.url)
if (!response.ok)
throw Error(response.statusText);
return response.json();
})
.then(function(json) {
responseFunc(json, event);
})
.catch(function(error) {
logError('fetch error: ' + error);
return null;
});
}
function parseResponse(json, event) {
if (json.errors.length > 0) {
for (let err of json.errors)
logError(err);
} else {
for (let path of json.paths) {
console.log(event);
}
}
}
window.onload = function() {
document.querySelector('#noscript').style.display = 'none';
let error_box = document.querySelector('#js_errors');
error_box.style.display = 'none';
if (!('fetch' in window)) {
logError('Unsupported Browser, No fetch API');
return;
}
// replace top level links with event listeners that fetch json directory listings
for (let link of document.querySelectorAll('#videolist > li > a')) {
let href = link.getAttribute('href')
link.addEventListener('click', function(e) {
e.preventDefault();
fetchJSON(window.location + href, parseResponse, e);
});
}
}