
import API from "../../api";
import TableMixinPage from "../mixin_table";
import DOM from "../../dom";
import TableBasePage from "../base_table";
import Utils from "../../lib/utils";

export default class PageUsers extends TableBasePage {
    static hash = hashPageUserAccounts;
    static attrIdRowObject = attrUserId;
    callSaveTableContent = API.saveUsers;

    constructor(router) {
        super(router);
        this.mixin = new TableMixinPage(this);
    }

    initialize() {
        this.sharedInitialize();
    }

    hookupFilters() {
        this.sharedHookupFilters();
        this.hookupFilterActive();
    }

    loadRowTable(rowJson) {
        if (rowJson == null) return;
        if (_verbose) { Utils.consoleLogIfNotProductionEnvironment("applying data row: ", rowJson); }
    }
    getJsonRow(row) {
        if (row == null) return;
        let inputFirstname = row.querySelector('td.' + flagFirstname + ' .' + flagFirstname);
        let inputSurname = row.querySelector('td.' + flagSurname + ' .' + flagSurname);
        let inputNotes = row.querySelector('td.' + flagNotes + ' .' + flagNotes);
        let buttonActive = row.querySelector('td.' + flagActive + ' .' + flagActive);

        let jsonRow = {
            [attrUserAuth0Id]: null
            , [flagEmail]: null
            , [flagIsEmailVerified]: null
            , [flagIsSuperUser]: null
            , [flagCanAdminUser]: null
        };
        jsonRow[attrUserId] = row.getAttribute(attrUserId);
        jsonRow[flagFirstname] = DOM.getElementAttributeValueCurrent(inputFirstname);
        jsonRow[flagSurname] = DOM.getElementAttributeValueCurrent(inputSurname);
        jsonRow[flagNotes] = DOM.getElementAttributeValueCurrent(inputNotes);
        jsonRow[flagActive] = buttonActive.classList.contains(flagDelete);

        console.log("jsonRow");
        console.log(jsonRow);

        return jsonRow;
    }
    
    initialiseRowNew(tbody, row) {
        
    }
    postInitialiseRowNewCallback(tbody) {
        let newRows = tbody.querySelectorAll('tr.' + flagRowNew);
        let newestRow = newRows[0];
        let clickableElementsSelector = [].join('');
        newestRow.querySelectorAll(clickableElementsSelector).forEach((clickableElement) => {
            clickableElement.click();
        });
    }

    hookupTableMain() {
        super.hookupTableMain();
        this.hookupFieldsFirstname();
        this.hookupFieldsSurname();
        this.hookupFieldsNotesTable();
        this.hookupFieldsActive();
    }
    hookupFieldsFirstname() {
        this.hookupChangeHandlerTableCells(flagFirstname);
    }
    hookupFieldsSurname() {
        this.hookupChangeHandlerTableCells(flagSurname);
    }

    leave() {
        super.leave();
    }
}
