class Backend extends serverFetch { constructor() { super() this.images = []; this.container = document.querySelector("#entries_container"); this.buttonIni = false; this.status; this.toolbar = new toolBar; this.checkedImages; this.asideCounter = document.querySelector("#asideCounter"); this.getEntries('new'); } async getEntries(status, event = null) { this.status = status; if (!this.buttonIni) { document.querySelector('.nav-link').classList.add('active'); //turns first button ("new") to active this.buttonIni = true; } if (!serverFetch.fetched) { if (event) { // this will be used when clicked on side-nav let allButtons = document.querySelectorAll('.nav-link'); allButtons.forEach(button => { button.classList.remove('active'); if (button.classList.contains("bg-danger")) { button.classList.remove("bg-danger"); button.classList.add("text-danger"); } }); event.target.classList.add('active'); if (backend.status == "deleted") { event.target.classList.add('bg-danger'); event.target.classList.remove('text-danger'); } } this.loadSpinner(); let url = "/backend/entries/" + status; await this.makeFetch(url, this.container); this.loadCounter(); this.removeSpinner(); this.loadImages(); } } //gets cleaned up soon! async getConversations(status, event = null) { this.status = status; if (!this.buttonIni) { document.querySelector('.nav-link').classList.add('active'); this.buttonIni = true; } if (!serverFetch.fetched) { if (event) { let allButtons = document.querySelectorAll('.nav-link'); allButtons.forEach(button => { button.classList.remove('active'); if (button.classList.contains("bg-danger")) { button.classList.remove("bg-danger"); button.classList.add("text-danger"); } }); event.target.classList.add('active'); if (backend.status == "deleted") { event.target.classList.add('bg-danger'); event.target.classList.remove('text-danger'); } } } this.loadSpinner(); let url = "/backend/conversations/status/" + status; await this.makeFetch(url, this.container); this.removeSpinner(); } loadCounter() { let counterContent = document.querySelector("#counter"); //comes with ajax (html with display:none) this.asideCounter.innerHTML = counterContent.innerHTML; } async loadImages() { let entrys = document.querySelectorAll('.custom-thumbnail'); let entryMap = []; entrys.forEach((element) => { let id = element.getAttribute('thumbid'); let image = new imageEntry(id); entryMap.push(image); }); this.images = entryMap; } loadSpinner() { let spinner = document.querySelector("#spinner"); this.container.classList.add("align-items-center"); this.container.innerHTML = spinner.innerHTML; this.asideCounter.innerHTML = spinner.innerHTML; } removeSpinner() { this.container.classList.remove("align-items-center"); } multitool() { this.checkedImages = this.images.filter(image => image.thumbnailcheckbox && image.thumbnailcheckbox.checked); this.toolbar.countdisplay.innerHTML = this.checkedImages.length if (this.checkedImages.length > 0) { this.toolbar.show(); } else { this.toolbar.hide() } } openSingleImage(id, permalink = false) { //this method can be used to open a modal without imageentrys this.pseudImage = { id: id }; new entryModal(this.pseudImage); if(permalink){ this.getEntries() } } }