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

310 lines
14 KiB
JavaScript
Raw Permalink Normal View History

2024-01-24 16:47:50 +08:00
//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;
}
}]);
});