
import API from "../../api.js";
import TableMixinPage from "../mixin_table.js";
import DOM from "../../dom.js";
import TableBasePage from "../base_table.js";

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

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

    initialize() {
        this.sharedInitialize();
        this.hookupTableMain();
    }


    hookupFilters() {
    }

    loadRowTable(rowJson) {
        if (rowJson == null) return;
        if (_verbose) { Utils.consoleLogIfNotProductionEnvironment("applying data row: ", rowJson); }
    }
    getTableRecords(dirtyOnly = false) {
        dirtyOnly = true;
        let container = document.querySelector('.' + flagCard + '.' + flagUser);
        return [this.getJsonRow(container)];
    }
    getJsonRow(container) {
        console.log("getJsonRow: ", container);
        if (container == null) return;
        let inputFirstname = container.querySelector(' #' + flagFirstname);
        let inputSurname = container.querySelector(' #' + flagSurname);
        let inputEmail = container.querySelector(' #' + flagEmail);

        let idUser = container.getAttribute(attrUserId);
        
        let jsonRow = {
            [attrUserAuth0Id]: null
            , [flagEmail]: null
            , [flagIsEmailVerified]: null
            , [flagIsSuperUser]: null
            , [flagCanAdminUser]: null
        };

        jsonRow[attrUserId] = idUser;
        jsonRow[flagFirstname] = DOM.getElementAttributeValueCurrent(inputFirstname);
        jsonRow[flagSurname] = DOM.getElementAttributeValueCurrent(inputSurname);
        jsonRow[flagEmail] = DOM.getElementAttributeValueCurrent(inputEmail);
        return jsonRow;
    }
    
    initialiseRowNew(tbody, row) {
    }
    postInitialiseRowNewCallback(tbody) {
    }

    hookupTableMain() {
        super.hookupTableMain();
        this.hookupFieldsFirstname();
        this.hookupFieldsSurname();
        this.hookupFieldsEmail();
    }
    hookupFieldsFirstname() {
        this.hookupChangeHandlerTableCells('.' + flagCard + '.' + flagUser + ' #' + flagFirstname);
    }
    hookupFieldsSurname() {
        this.hookupChangeHandlerTableCells('.' + flagCard + '.' + flagUser + ' #' + flagSurname);
    }
    hookupFieldsEmail() {
        this.hookupChangeHandlerTableCells('.' + flagCard + '.' + flagUser + ' #' + flagEmail);
    }

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