143 lines
5.9 KiB
JavaScript
143 lines
5.9 KiB
JavaScript
![]() |
//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;
|
|||
|
}]);
|
|||
|
});
|