diff --git a/frontend.js b/frontend.js new file mode 100644 index 0000000..ce2a958 --- /dev/null +++ b/frontend.js @@ -0,0 +1,97 @@ +class TPDF { + + static display() { + console.log(TPDF.xhr.responseText); + + if (TPDF.xhr.readyState == 4 && TPDF.xhr.status == 200) { + TPDF.output.removeChild(TPDF.output.childNodes[0]); + 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') + TPDF.xhr.send(null); + + TPDF.output = document.getElementById('tpdfOutput'); + TPDF.output.childNodes[0].textContent = 'Searching...'; + } + +} + +TPDF.xhr = null; +TPDF.output = null; diff --git a/index.html b/index.html index 9b23cd3..edc7bc0 100644 --- a/index.html +++ b/index.html @@ -3,11 +3,12 @@ + TPDF - Tellico Parser anD Finder -
+

TPDF - Tellico Parser anD Finder

@@ -19,9 +20,14 @@
- +
+
+ +
+
+
diff --git a/main.py b/main.py index 946d322..5e83cdf 100755 --- a/main.py +++ b/main.py @@ -45,6 +45,7 @@ if format == 'html': print('Content-Type: text/html; charset=utf-8') else: print('Content-Type: text/json; charset=utf-8') + print('Access-Control-Allow-Origin: *') print() diff --git a/style.css b/style.css index 5807e17..d516dfe 100644 --- a/style.css +++ b/style.css @@ -4,14 +4,15 @@ body { font-family: sans-serif; color: black; - background-color: #DEDEDE; -} - -main { - text-align: center; + background-color: #fff1ca; } /******* Search form *******/ +#tpdfSearchDiv { + padding: 10px; + border: 1px solid green; +} + form label { display: inline-block; width: 10em;