/** * Application main view. Acts as a container and manager for regular views * * @category MyEic * @subcategory Views * * @extends WindozDialogContent */ class EICAppTemplate extends WindozDomContent { DOMContentLoaded() { ui.init({ariaEnabled: true}); ui.eicfy(this.el); window.addEventListener('resize', this.onGlobalResize.bind(this), true); this.menu = new Menu(this.find('menu.app-menu')); // todo : replace with something more dynamic this.loadAppMenu('global/app-menu-map.json'); new app.LoadedClasses.HelperBot('.helperBotCanvas') } onGlobalResize() { WindozController.resize(); } loadAppMenu(source) { app.Assets.loadJson({ name: source}) .then(this.setupAppMenu.bind(this)); } setupAppMenu(data) { let menu = []; for(let section of data) { let apps = section.items.filter(item => { if(item.access.includes("*")) return(true) let intersect = app.User.roles.filter(r => (item.access.includes(r)) || (item.access.includes("*")) ) return(intersect.length > 0) }); if(apps.length > 0) { let entry = Object.assign({}, section); entry.items = apps; menu.push(entry) } } this.menu.clear(); this.menu.parse(menu); const button = new Button(this.find('button.app-menu')); button.click = this.toggleAppMenu.bind(this); this.menu.collapsed = app.User.getPreference('global.menu.collapsed'); } /** * Enables/disables collapsable app menu * @param {*} event */ toggleAppMenu() { this.menu.collapsed = ! this.menu.collapsed ; app.User.setPreference('global.menu.collapsed', this.menu.collapsed); } initSession() { this.session = ui.create(`