This repo is archived. You can view files and clone it, but cannot push or open issues or pull requests.
SXS20240115/SRC/iMES_PAD/config/menu.js
2024-01-24 16:47:50 +08:00

310 lines
14 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//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 = '<div id="sub-menu-content" class="sub-menu-content" ng-class="[$root.sideSubMenuMode]">' + response;
$RouterExtendProvider.addExtendSideMenu(
SideSubMenuController($rootScope.$new(true))
, response
, function (scope, sideMenuTemp) {
subMenuScope = scope;
sideMenuTemp += '<div class="sub-menu-background" ng-click="hideSideSubMenu();"></div></div>';
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;
}
}]);
});