This repo is archived. You can view files and clone it, but cannot push or open issues or pull requests.
SXS20240115/SRC/iMES_PAD/module/system/program/menu/RouterExtendProvider.js

143 lines
5.9 KiB
JavaScript
Raw Permalink Normal View History

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