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;
|
||
}]);
|
||
});
|