Segelparade / www / symfonyproject / public / assets / js / backend / backend.js
backend.js
Raw
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()
        }
    }


}