//RouterExtendProvider,manage login/logout function define(['angularAMD'], function (angularAMD) { angularAMD.factory('RouterExtendProvider', ['$rootScope', '$filter', '$timeout', 'config', '$mdDialog', 'MMWService', '$state', function ($rootScope, $filter, $timeout, config, $mdDialog, $MMWService, $state) { var RouterExtendProvider = this, prev_state = {}; $MMWService.needLogout = function (callback) { $mdDialog.closeAll(function () { $rootScope.hideMenu(); config.mdssessionno = ''; delete $rootScope.menuClick; //$rootScope.showAlert($filter('translate')('error.sessionTimeout')); $rootScope.changeProgram(RouterExtendProvider.login_page, true); if (callback) { callback(); } }); }; RouterExtendProvider.login_page = 'login'; RouterExtendProvider.home_page = 'home'; RouterExtendProvider.setting_page = 'setting'; RouterExtendProvider.sideTools = []; RouterExtendProvider.extendSideMenus = []; RouterExtendProvider.triggerSetting = function () { if ($rootScope.currentState != RouterExtendProvider.setting_page) { prev_state.name = $rootScope.currentState; prev_state.stateParams = $state.$current.locals.globals.$stateParams; prev_state.showMenu = $rootScope.isShowMenu; $rootScope.changeProgram(RouterExtendProvider.setting_page, { parent: prev_state.name, sideMenu: true }); $rootScope.menu_hidden = true; } else { var parent = prev_state.name; if (parent == undefined) { parent = $state.$current.locals.globals.$stateParams.parent; } $rootScope.changeProgram(parent, prev_state.stateParams, true); if (prev_state.showMenu) { $rootScope.loadMenu(); } prev_state = {}; $rootScope.menu_hidden = false; } }; RouterExtendProvider.home = function () { // $state.$current.locals['@'].$scope.back(); $rootScope.changeProgram(RouterExtendProvider.home_page); }; RouterExtendProvider.goToModule = function (menuItem, callback, failback) { if (menuItem.module) { //判斷是否為外部模組 //關閉sideSubMenu if (typeof failback === 'function') { failback(); } } else if (!menuItem.default && !menuItem.childs) { //沒有設定default、沒有設定子分類 //關閉sideSubMenu if (typeof failback === 'function') { failback(); } $rootScope.subMenu = undefined; $rootScope.changeProgram(menuItem.name); $rootScope.loadMenu(config.menu); } else if (!menuItem.default) { $rootScope.subMenu = menuItem; if (typeof callback === 'function') { callback(menuItem, { mode: 'module' }); } } else { //關閉sideSubMenu if (typeof failback === 'function') { failback(); } $rootScope.subMenu = undefined; $rootScope.changeProgram(menuItem.default); if (!menuItem.hideMenu && menuItem.childs.length > 1) { $rootScope.loadMenu(menuItem.childs); } else { $rootScope.menuList = menuItem.childs; $rootScope.hideMenu(); } } }; RouterExtendProvider.goToProgram = function (menuItem,parameter) { $rootScope.changeProgram(menuItem.default, parameter); if (!menuItem.hideMenu && menuItem.childs.length >= 1) { $rootScope.loadMenu(menuItem.childs); } else { $rootScope.menuList = menuItem.childs; $rootScope.hideMenu(); } $rootScope.menuPick = menuItem.name; }; // 增加左下角的按鈕 RouterExtendProvider.GetSideTools = function () { return RouterExtendProvider.sideTools; }; // 增加側邊欄清單的擴充功能 // 使用遞迴方式載入模板 RouterExtendProvider.addExtendSideMenu = function (scope, sideMenuTemp, callback) { addExtendSideMenu(0, scope, sideMenuTemp, callback); }; function addExtendSideMenu(index, scope, sideMenuTemp, callback) { if (index < RouterExtendProvider.extendSideMenus.length) { try { scope = RouterExtendProvider.extendSideMenus[index].genController(scope); RouterExtendProvider.extendSideMenus[index].genTemplate(sideMenuTemp, function (sideMenuTemp) { addExtendSideMenu(index + 1, scope, sideMenuTemp, callback); }); } catch (e) { console.error(e); addExtendSideMenu(index + 1, scope, sideMenuTemp, callback); } } else if (typeof (callback) === 'function') { callback(scope, sideMenuTemp); } } return RouterExtendProvider; }]); });