//menu function define(["app"], function (app) { app.run(['$state', '$rootScope', '$filter', '$templateRequest', '$compile', 'config', function ($state, $rootScope, $filter, $templateRequest, $compile, config) { $rootScope.menuState = ''; $rootScope.isLoadMenu = false; $rootScope.isShowMenu = false; //20200828 雋辰,$root新增版本變數,供SideMenu抓取 $rootScope.environment = config.setting.environment; //載入menu $rootScope.loadMenu = function (menu) { if (!$rootScope.isLoadMenu) { //20201209 雋辰,修改為使用config.program裡的menu資訊 var menuTempUrl = "module/system/program/menu/menu.html"; for (i in config.program) { if (config.program[i].name == "menu" && config.program[i].templateUrl) { menuTempUrl = config.program[i].templateUrl; break; } } $templateRequest(menuTempUrl).then(function (respose) { var menuDiv = document.getElementById('menu'); var menuScope = menuController($rootScope.$new(true), menu); angular.element(menuDiv).append($compile(respose)(menuScope)).removeClass('menu-hide').css('background', '#eef1f7'); $rootScope.isLoadMenu = true; showMenu(menu); }); } else { showMenu(menu); } }; //開啟menu $rootScope.permissions = []; $rootScope.showMenu = showMenu; $rootScope.menuList = []; function showMenu(menu) { if (menu) { $rootScope.menuList = menu; } if (checkMenu()) { $rootScope.isShowMenu = true; $rootScope.menuState = 'is-menu-showed'; } } function checkMenu() { if ($rootScope.menuList && $rootScope.menuList.length > 0) { var menuItem_count = 0; $rootScope.menuList.forEach(function (menuItem) { if (menuItem.isShow) { menuItem_count++; } }); return menuItem_count >= 1; } else { return false; } } //關閉menu $rootScope.hideMenu = function () { $rootScope.isShowMenu = false; $rootScope.menuState = ''; } function menuController(scope) { scope.menuClick = function (item, event) { var paramets; //if (item.isci == true) { // //2020/05/25 雋辰,區分設備報工、生產批報工的ci頁面 // var pageName = config.cache.ci.toLowerCase(); // if (config.cache.dashboard == 'eqp') // pageName += "|" + config.cache.dashboard; // $rootScope.changeProgram(pageName); //} //else if (item.isco == true) { // //2020/05/25 雋辰,區分設備報工、生產批報工的ci頁面 // var pageName = config.cache.co.toLowerCase(); // if (config.cache.dashboard == 'eqp') // pageName += "|" + config.cache.dashboard; // $rootScope.changeProgram(pageName); //} //else if ($rootScope.menuClick) { $rootScope.menuClick(item.name, item); } else { $rootScope.changeProgram(item.name, paramets); } }; return scope; } $rootScope.currentState = ''; $rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) { $rootScope.currentState = toState.name; }); }]) //sub-menu .run(["$state", "$rootScope", "$filter", "$templateRequest", "$compile", "config", "DashboardService", "RouterExtendProvider", function ($state, $rootScope, $filter, $templateRequest, $compile, config, $DashboardService, $RouterExtendProvider) { //載入側邊欄 var sideMenuTemp = config.program.find(function (p) { return p.name == 'sideMenu'; }).templateUrl, sideMenuScope; $rootScope.loadSideMenu = function () { if (!$rootScope.isLoadSideMenu) { $templateRequest(sideMenuTemp).then(function (response) { var menuDiv = document.getElementById('side-menu'); sideMenuScope = SideMenuController($rootScope.$new(true)); sideMenuScope.sideTools = $RouterExtendProvider.GetSideTools(); $rootScope.sideMenuObj = sideMenuScope angular.element(menuDiv).append($compile(response)(sideMenuScope)); $rootScope.isLoadSideMenu = true; $rootScope.showSideMenu(); }); } else { $rootScope.showSideMenu(); } }; $rootScope.ChangeSideMenuModules = function () { if ($rootScope.sideMenuObj) $rootScope.sideMenuObj.modules = $rootScope.modules } $rootScope.showSideMenu = function () { angular.element(document.getElementById('side-menu')).removeClass('menu-hide'); angular.element(document.getElementById('view-content')).addClass('mode-side'); $rootScope.isShowSideMenu = true; //sideMenuScope.modules = $rootScope.menu; }; $rootScope.hideSideMenu = function () { angular.element(document.getElementById('side-menu')).addClass('menu-hide'); angular.element(document.getElementById('view-content')).removeClass('mode-side'); $rootScope.isShowSideMenu = false; }; $rootScope.showSideProgram = function () { if (sideMenuScope && sideMenuScope.isShowProgram === false) sideMenuScope.isShowProgram = true; }; $rootScope.hideSideProgram = function () { if (sideMenuScope && sideMenuScope.isShowProgram === true) sideMenuScope.isShowProgram = false; }; function SideMenuController(scope) { scope.modules = $rootScope.modules; scope.isShowProgram = true; scope.home = function () { if ($rootScope.lastItem) { // $rootScope.lastItem.show={"display":"none","transition":".5s"} $rootScope.lastItem.bottom_space = { "padding": "0 0 0px 0", "transition": ".5s" } $rootScope.lastItem.marginZero = { "margin": "5px", "transition": ".5s" } } switch (config.setting.postingmode) { case 'lot': $RouterExtendProvider.goToProgram($rootScope.modules[0].childs[1]); //$scope.$root.changeProgram('moduleLot'); break; case 'eqp': $RouterExtendProvider.goToProgram($rootScope.modules[0].childs[0]); //$scope.$root.changeProgram('moduleSTD'); break; } //$RouterExtendProvider.home(); }; scope.showSideSubMenu = function (moduleItem) { let mailbox_style = document.querySelector('.content-panel mailbox'); if (mailbox_style) { mailbox_style.style.display = "none"; document.querySelector('.perfect-scrollbar').style.display = "none"; } if ($rootScope.lastItem) { $rootScope.lastItem.show = { "display": "none", "transition": ".5s" } $rootScope.lastItem.bottom_space = { "padding": "0 0 0px 0", "transition": ".5s" } $rootScope.lastItem.marginZero = { "margin": "5px", "transition": ".5s" } } if ($rootScope.lastItem != moduleItem) {//如果這次的選項和上次不一樣,則展開本次的選單 moduleItem.show = { "display": "block", "transition": ".5s" }; if (Object.keys(moduleItem.childs).length >= 1) { $('.content-panel').css({ "width": "calc(100% - 16px)", "margin": "auto" }); moduleItem.bottom_space = { "padding": "6px 0 20px 0", "transition": ".5s" }; moduleItem.marginZero = { "margin": "0px", "transition": ".5s" }; } else { $('.content-panel').css({ "width": "100% ", }); } $RouterExtendProvider.goToModule(moduleItem, $rootScope.loadSideSubMenu, $rootScope.hideSideSubMenu); $rootScope.lastItem = moduleItem; } else { $rootScope.lastItem = ""; } }; scope.ChangeProgram = function (menuItem) {//因為subsidemenu取消,故把changProgram搬來這裡 $('.content-panel').css({ "width": "100%", }); $rootScope.hideSideSubMenu(); $RouterExtendProvider.goToProgram(menuItem); }; scope.hideSideSubMenu = function () { $('.content-panel').css({ "width": "100%", }); if ($rootScope.lastItem) { $rootScope.lastItem.show = { "display": "none", "transition": ".5s" } $rootScope.lastItem.bottom_space = { "padding": "0 0 0px 0", "transition": ".5s" } $rootScope.lastItem.marginZero = { "margin": "5px", "transition": ".5s" } $rootScope.lastItem = '' } $rootScope.hideSideSubMenu(); }; scope.settings = function () { scope.hideSideSubMenu(); $RouterExtendProvider.triggerSetting(); //$rootScope.changeProgram('setting', { parent: 'menu' }); }; scope.logout = function () { scope.hideSideSubMenu(); scope.$root.logout(function (callback) { if (callback) callback(); $DashboardService.stopSignalR(); //$DashboardService.stopWatch(); }); }; return scope; } // 載入側邊欄清單 var subMenuTemp = config.program.find(function (p) { return p.name == 'sideSubMenu'; }).templateUrl, subMenuScope; $rootScope.loadSideSubMenu = function (moduleItem, options) { if (!$rootScope.isLoadSideSubMenu) { $templateRequest(subMenuTemp).then(function (response) { var menuDiv = document.getElementById('side-sub-menu'); response = '
'; angular.element(menuDiv).append($compile(sideMenuTemp)(scope));//.removeClass('menu-hide'); $rootScope.isLoadSideSubMenu = true; $rootScope.showSideSubMenu(options.mode, moduleItem); $rootScope.full_side_menue = false; } ); }); } else { $rootScope.showSideSubMenu(options.mode, moduleItem); } }; $rootScope.showSideSubMenu = function (mode, moduleItem) { $rootScope.full_side_menue = !$rootScope.full_side_menue; /*只有點擊信箱才出現側側欄*/ if (mode == "mailbox") { angular.element(document.getElementById('side-sub-menu')).removeClass('menu-hide'); } $rootScope.isShowSideSubMenu = true; $rootScope.selectModule = moduleItem; $rootScope.sideSubMenuMode = mode; //subMenuScope.mode = mode; }; $rootScope.hideSideSubMenu = function () { angular.element(document.getElementById('side-sub-menu')).addClass('menu-hide'); $rootScope.isShowSideSubMenu = false; $rootScope.selectModule = {}; $rootScope.sideSubMenuMode = ''; }; function SideSubMenuController(scope) { //scope.mode = ''; scope.config = config; //scope.envInfo = $filter('translate')('Login.env.'+config.setting.environment); scope.hideSideSubMenu = function () { $rootScope.hideSideSubMenu(); }; scope.ChangeProgram = function (menuItem) { $rootScope.hideSideSubMenu(); $RouterExtendProvider.goToProgram(menuItem); }; return scope; } }]); });