Untitled

 avatar
unknown
javascript
a month ago
2.9 kB
11
Indexable
class ux {
    static display = {};
    static displayOptions;
    static displayActive;
    static addTask;
    static tasks;
    static idRoot;
    static decorateTask(task, msg, id) {
        console.log('decorateTask');
        if (id === null) {
            task.firstElementChild.removeAttribute('id');
            task.firstElementChild.nextElementSibling.removeAttribute('for', id);
        }
        else {
        task.firstElementChild.setAttribute('id', id);
        task.firstElementChild.nextElementSibling.setAttribute('for', id);
        }
        task.firstElementChild.nextElementSibling.setAttribute.innerHTML=msg;
    }
    static addTask(task, rank) {
        const newTask = ux.taskTemplate.cloneNode(true);
        if (ux.displayOptionActive != ux.displayOptions.done) {
            ux.decorateTask(newTask, task.msg, ux.idRoot + rank.toString());
            ux.tasks.appendChild(newTask);
        }
    }
    static {
        ux.idRoot = "todo-";
        ux.displayOptions = { all: 1, todo: 2, done: 3 };
        for (let option in ux.displayOptions) {
            ux.display[option] = document.querySelector(`[data-filter="${option}"]`);
        }
        ux.displayOptionActive = 'all';
        ux.taskMsg = document.querySelector('form input');
        ux.addTask = document.querySelector('form button');
        ux.tasks = document.querySelector('.list-group');
        ux.taskTemplate = ux.tasks.firstElementChild.cloneNode(true);
        console.log(ux.taskTemplate); // ??
        console.log('Avant décoration.')
        ux.decorateTask(ux.taskTemplate, '', null);
        console.log(ux.taskTemplate); // ??
    }
    static changeActiveDisplay(option) {
        ux.display[ux.displayOptionActive].classList.remove('active');
        ux.display[option].classList.add('active');
        ux.displayOptionActive = option;
    }

    static getTaskMsg() {
        return ux.taskMsg.value;
    }
}

class ToDoListApp {
    static addTask(e) {
        console.log('add Task : ');
        task = {};
        task[msg] = ux.getTaskMsg();
        task[checked] = false;
        ToDoListApp.tasks.push(task);
        ux.addtask(task, ToDoListApp.tasks.length);
    }
    static {
        ToDoListApp.display = {}
        for (let option in ux.displayOptions) {
            ToDoListApp.display[option] = (e) => {
                console.log('Display' + option);
                if (option != ux.displayOptionActive) {
                    ux.changeActiveDisplay(option);
                }
            }
        }
        ToDoListApp.tasks = [];
    }

    constructor() {
        for (let option in ux.displayOptions) {
            ux.display[option].addEventListener('click', ToDoListApp.display[option]);
        }
        ux.addTask.addEventListener('click', ToDoListApp.addTask);
    }
}

const app = new ToDoListApp();




Editor is loading...
Leave a Comment