import parseTable from "./parseTable.js"; import parseJobs from "./parseJobs.js"; import parseFlats from "./parseFlats.js"; import { modalNotifier, moveProgressBar } from "./evts.js"; import editConf from "./editConf.js"; function loadTable(table) { document.getElementById("mainTitle").innerHTML = "selected table: "+table.replace(/_/g, " "); activeState.loadedtable = table; document.getElementById("navMob").className = document .getElementById("navMob") .className.replace(" w3-show", ""); var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { let resp; try { resp = JSON.parse(this.responseText); } catch { console.log(this.responseText); } finally { parseTable(resp); } } }; xhttp.open("GET", "php/index.php/dbRead/" + table, true); xhttp.send(); } function loadNewArticles(type = 'jobs') { activeState.loadedtable = 'soup'; if (window.location.href.indexOf('flats') != -1) type = 'flats'; let reqUrl; switch(type) { case 'jobs': reqUrl = "php/index.php/soup/quick"; //document.getElementById("siteTitle").innerHTML = "Jobs"; break; case 'flats': reqUrl = "php/index.php/soup/quick/flats"; //document.getElementById("siteTitle").innerHTML = "Flats"; break; default: reqUrl = "php/index.php/soup/quick"; //document.getElementById("siteTitle").innerHTML = "Jobs"; } document.getElementById("navMob").className = document .getElementById("navMob") .className.replace(" w3-show", ""); //parseArticles('resp'); //return modalNotifier('\ fetching new articles \
\
\
\ ', 0, false); moveProgressBar(35); var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { let resp; try { resp = JSON.parse(this.responseText); } catch (e) { modalNotifier(' Error: Could not get data from crawler', 0, false); return; } window.activeState['articles'] = resp; if (type == 'jobs') parseJobs(resp); if (type == 'flats') pagination(1, resp, parseFlats); } }; xhttp.open("GET", reqUrl, true); xhttp.send(); } function loadNavBar() { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { let res = JSON.parse(this.responseText); let divMob = document.getElementById("navMob"); for (let x in res) { let aMob = document.createElement("a"); aMob.setAttribute("href", "#"); aMob.setAttribute("data-table", res[x][0]); aMob.classList.add("w3-bar-item", "w3-button", "w3-padding-large"); aMob.innerHTML = res[x][0]; divMob.appendChild(aMob); } let createEntry = document.createElement("a"); createEntry.setAttribute("href", "#"); createEntry.setAttribute("data-table", "createNew"); createEntry.classList.add("w3-bar-item", "w3-button", "w3-padding-large"); createEntry.innerHTML = "Edit Configuration"; divMob.appendChild(createEntry); divMob.addEventListener("click", (e) => { if (e.target && e.target.matches("a.w3-bar-item")) { let table = e.target.dataset.table; if (table == "createNew") { editConf(); return; } loadTable(table); } }); loadNewArticles(); } }; xhttp.open("GET", "php/index.php/dbRead/tables", true); xhttp.send(); } function loadArticles(page = 1) { let articles = window.activeState['articles']; window.activeState['currentPage'] = page; if (articles == '') { loadNewArticles(type); } if (window.location.href.indexOf('flats') != -1) pagination(page, articles, parseFlats); if (window.location.href.indexOf('jobs') != -1) pagination(page, articles, parseJobs); } function pagination(currentPage, articles, callBack) { //const queryString = window.location.search; //const urlParams = new URLSearchParams(queryString); //let currentPage = urlParams.get('page'); let articleKeys = Object.keys(articles); if (currentPage == null || currentPage == '') { currentPage = 1; } let itemsAmount = 10; let itemsTotal = articleKeys.length; let pagesTotal = Math.floor(itemsTotal / itemsAmount); let pagedArticles = {}; let loopEnd; let loopStart; if (currentPage == 1) { loopEnd = itemsAmount; loopStart = 0; } else { loopEnd = currentPage*itemsAmount; loopStart = (currentPage-1)*itemsAmount; } for (let i = loopStart; i < loopEnd; i++) { let id = articleKeys[i]; pagedArticles[id] = articles[id]; } //setup page button let pageDiv = document.getElementById('pagination'); pageDiv.innerHTML = ''; //if (screen.width < 993) { if (true) { let pageBtn = document.createElement('span'); pageBtn.id = 'pageButton' pageBtn.classList.add("w3-button", "w3-large", "w3-flat-asbestos"); pageBtn.innerText = 'Next'; pageBtn.addEventListener("click", () => { window.scrollTo(0, 0) loadArticles(currentPage+1) }); pageDiv.appendChild(pageBtn); } else { let div = document.createElement('div'); let pageCount = currentPage+1; let a = document.createElement('a'); a.href = '#'; a.innerHTML = '«'; a.classList.add("w3-button", "w3-large", "w3-hover-grey"); div.appendChild(a); for (let i = 0; i < 4; i++) { let a = document.createElement('a'); a.href = '#'; a.innerText = pageCount; a.classList.add("w3-button", "w3-large", "w3-hover-grey"); div.appendChild(a); pageCount++; } a = document.createElement('a'); a.href = '#'; a.innerHTML = '»'; a.classList.add("w3-button", "w3-large", "w3-hover-grey"); div.appendChild(a); pageDiv.appendChild(div); pageDiv.addEventListener("click", (e) => { if (e.target && e.target.matches("a.w3-button")) { let page = e.target.innerHTML; switch(page) { case '»': loadArticles(window.activeState['currentPage']+1); break; case '«': loadArticles(window.activeState['currentPage']-1); break; default: loadArticles(page); } } }); } callBack(pagedArticles); } export { loadTable, loadNavBar, loadArticles };