310 lines
14 KiB
JavaScript
310 lines
14 KiB
JavaScript
//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;
|
||
}
|
||
|
||
}]);
|
||
});
|