Skip to content
Snippets Groups Projects
app.js 2.68 KiB
Newer Older
  • Learn to ignore specific revisions
  • Elisa Giglio's avatar
    Elisa Giglio committed
    'use strict';
    import {createRowDomain} from '../templates/domains-template.js';
    
    Elisa Giglio's avatar
    Elisa Giglio committed
    import { logoutKeycloak, getToken } from './script.js';
    
    Elisa Giglio's avatar
    Elisa Giglio committed
    
    class App {
    
    Elisa Giglio's avatar
    Elisa Giglio committed
        constructor(myDomains, requestsToDomain) {
            // this.myDomains = myDomains;
            this.requestsToDomain = requestsToDomain;
    
    Elisa Giglio's avatar
    Elisa Giglio committed
            this.showAllDomains(myDomains);
    
    Elisa Giglio's avatar
    Elisa Giglio committed
            const buttonLogout = document.getElementById('button-logout');
            buttonLogout.addEventListener('click', async (event) => {
                event.preventDefault();
                await logoutKeycloak();
            });
    
    Elisa Giglio's avatar
    Elisa Giglio committed
        }
    
    
    Elisa Giglio's avatar
    Elisa Giglio committed
        showAllDomains(domainsToShow) {
    
    Elisa Giglio's avatar
    Elisa Giglio committed
            const addHere = document.getElementById('table-row-domains');
    
    Elisa Giglio's avatar
    Elisa Giglio committed
            for(const d of domainsToShow) {
    
    Elisa Giglio's avatar
    Elisa Giglio committed
                const tr = document.createElement('tr');
    
    Elisa Giglio's avatar
    Elisa Giglio committed
                tr.innerHTML = createRowDomain(d);;
                console.log(d);
                console.log(tr);
    
    Elisa Giglio's avatar
    Elisa Giglio committed
                const plusRow = addHere.lastElementChild;
    
    Elisa Giglio's avatar
    Elisa Giglio committed
                addHere.insertBefore(tr, plusRow);
    
    Elisa Giglio's avatar
    Elisa Giglio committed
                if(d.admin) {
    
    Elisa Giglio's avatar
    Elisa Giglio committed
                    const toggle = tr.querySelector('.toggle-button');
                    this.statoDomainToggle(d, toggle, this.requestsToDomain);
                    const deleteDomain = tr.querySelector('.fa-trash');
                    deleteDomain.addEventListener('click', async () => {
                        const resultDelete = await this.requestsToDomain.deleteDomain(d);
                        if(resultDelete) {
                            addHere.removeChild(tr);
    
    Elisa Giglio's avatar
    Elisa Giglio committed
                        }
                        else {
                            throw new Error('Impossibile eliminare il dominio, provare piu\' tardi');
    
    Elisa Giglio's avatar
    Elisa Giglio committed
                        }
    
    Elisa Giglio's avatar
    Elisa Giglio committed
                    });
                }
            }
        }
    
    Elisa Giglio's avatar
    Elisa Giglio committed
    
    
        statoDomainToggle(domain, toggle, requestsToDomain) {
            toggle.addEventListener('click', async (event) => {
                event.preventDefault();
                const token = getToken();
                const stop = toggle.classList.contains('active');
                if(stop) {
                    // toggle attiva. Se clicco richiedo che il dominio sia fermato
                    const resultStop = await requestsToDomain.stopDomain(domain);
                    if(resultStop) {
                        toggle.classList.remove('active');
                    }
                    else {
                        throw new Error('Impossibile fermare il dominio, provare piu\' tardi');
                    }
                }
                else {
                    const resultStart = await requestsToDomain.startDomain(domain);
                    if(resultStart) {
                        toggle.classList.add('active');
                    }
                    else {
                        throw new Error('Impossibile far partire il dominio, provare piu\' tardi');
                    }
                } 
            });
        }
    
    
    Elisa Giglio's avatar
    Elisa Giglio committed
    }
    
    export default App;