class myProfileView extends WindozDomContent {

    DOMContentLoaded() {
        ui.eicfy(this.el)
        
        this.tabs = new Tab();
        this.tabs.addTabs(this.findAll('menu li'), this.findAll('.tab-content'))

        this.gridIdentity = new DataGrid(this.find('.identity [eicdatagrid]'), {
            headers: [ { label: ''}, { label: ''} ]
        });
        this.gridIdentity.addRow('', [ 'First name',app.User.identity.firstname ]);
        this.gridIdentity.addRow('', [ 'Last name',app.User.identity.lastname ]);
        this.gridIdentity.addRow('', [ 'Email',app.User.identity.email ]);
        this.gridIdentity.addRow('', [ 'EU Login',app.User.identity.uuid ]);
        
        this.gridRoles = new DataGrid(this.find('.roles [eicdatagrid]'), {
            headers: [ { label: 'Role name', filter: null, sortable: true} ]
        });
        for(let role of app.User.roles) { this.gridRoles.addRow(role, [ role ]); }
        
        this.gridPreferences = new DataGrid(this.find('.preferences [eicdatagrid]'), {
            headers: [
                { label: 'Key', filter: 'text', sortable: true},
                { label: 'Value', filter: 'text', sortable: false},
            ]
        });
        this.scanPreferences(app.User.preferences, '')

        let resetButton = new Button(this.find('.preferences button.reset'));
        resetButton.click = this.onPreferencesReset.bind(this);
    }

    scanPreferences(tree, path) {
        for(const key in tree) {
            let item = tree[key];
            let newPath = `${path}${ path ? '.': ''}${key}`;

            if(typeof item == 'object') 
                this.scanPreferences(item, newPath)
            else
                this.gridPreferences.addRow(key, [ newPath, item ] );
        }
    }

    async onPreferencesReset() {
        let resetted = await this.openDialog(
            await this.loadContent(
                'common/profile/dialogs/ProfilePreferencesResetDialog',
                { title: 'Reset your preferences' }, {}
            )
        );

        if(resetted) { this.gridPreferences.clear(); }
    }
}
app.registerClass('myProfileView',myProfileView);