class TPDF { static display() { console.log(TPDF.xhr.responseText); if (TPDF.xhr.readyState == 4 && TPDF.xhr.status == 200) { /* Clean up output div */ while (TPDF.output.firstChild) { TPDF.output.removeChild(TPDF.output.firstChild); } /* Take up json */ var results = JSON.parse(TPDF.xhr.responseText); for (var i in results['books']) { var dtAuthors = document.createElement('dt'); dtAuthors.appendChild(document.createTextNode('Authors')); var dtPublisher = document.createElement('dt'); dtPublisher.appendChild(document.createTextNode('Publisher')); var dtYear = document.createElement('dt'); dtYear.appendChild(document.createTextNode('Year')); var dtPages = document.createElement('dt'); dtPages.appendChild(document.createTextNode('Pages')); var dtISBN = document.createElement('dt'); dtISBN.appendChild(document.createTextNode('ISBN')); var dtId = document.createElement('dt'); dtId.appendChild(document.createTextNode('ID')); var ddAuthors = document.createElement('dd'); var authorsString = ''; for (var j in results['books'][i]['authors']) { authorsString += results['books'][i]['authors'][j]; if (j < results['books'][i]['authors'].length - 1) authorsString += ', '; } ddAuthors.appendChild(document.createTextNode(authorsString)); var ddPublisher = document.createElement('dd'); ddPublisher.appendChild(document.createTextNode(results['books'][i]['publisher'])); var ddYear = document.createElement('dd'); ddYear.appendChild(document.createTextNode(results['books'][i]['year'])); var ddPages = document.createElement('dd'); ddPages.appendChild(document.createTextNode(results['books'][i]['page'])); var ddISBN = document.createElement('dd'); ddISBN.appendChild(document.createTextNode(results['books'][i]['isbn'])); var ddId = document.createElement('dd'); ddId.appendChild(document.createTextNode(results['books'][i]['id'])); var bookElement = document.createElement('section'); var titleElement = document.createElement('h2'); var coverElement = document.createElement('img'); var dlElement = document.createElement('dl'); var authorsElement = document.createElement('ul'); dlElement.appendChild(dtAuthors); dlElement.appendChild(ddAuthors); dlElement.appendChild(dtPublisher); dlElement.appendChild(ddPublisher); dlElement.appendChild(dtYear); dlElement.appendChild(ddYear); dlElement.appendChild(dtPages); dlElement.appendChild(ddPages); dlElement.appendChild(dtISBN); dlElement.appendChild(ddISBN); dlElement.appendChild(dtId); dlElement.appendChild(ddId); titleElement.appendChild(document.createTextNode(results['books'][i]['title'])); coverElement.src = 'https://golem.linux.it/cgi/tpdf/output/images/' + results['books'][i]['cover']; coverElement.alt = 'Cover of «' + results['books'][i]['title'] + '»'; bookElement.appendChild(titleElement); bookElement.appendChild(coverElement); bookElement.appendChild(dlElement); TPDF.output.appendChild(bookElement); } } else { TPDF.output.childNodes[0].textContent = 'API Error. Try later.'; } } static submit() { TPDF.xhr = new XMLHttpRequest(); TPDF.xhr.onload = TPDF.display; TPDF.xhr.open('GET', 'https://golem.linux.it/cgi/tpdf/main.py?format=json' + '&author=' + encodeURIComponent(document.querySelector('#tpdfForm input[name="author"]').value) + '&title=' + encodeURIComponent(document.querySelector('#tpdfForm input[name="title"]').value)); TPDF.xhr.send(null); TPDF.output = document.getElementById('tpdfOutput'); while (TPDF.output.firstChild) { TPDF.output.removeChild(TPDF.output.firstChild); } TPDF.output.childNodes[0].textContent = 'Searching...'; } } TPDF.xhr = null; TPDF.output = null;