Passed
Push — master ( fe1539...291954 )
by Guangyu
17:41 queued 11s
created

admin/app/controllers/settings/menu/menu.controller.js   A

Complexity

Total Complexity 26
Complexity/F 1.53

Size

Lines of Code 181
Function Count 17

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 26
eloc 124
dl 0
loc 181
rs 10
c 0
b 0
f 0
mnd 9
bc 9
fnc 17
bpm 0.5294
cpm 1.5294
noi 0
1
'use strict';
2
3
app.controller('MenuController', function ($scope, $common, $uibModal, MenuService, CostCenterService, ContactService, toaster, $translate, SweetAlert) {
4
	$scope.menus = [];
5
	$scope.currentMenuID = 1;
6
	$scope.currentMenu = {};
7
	$scope.currentMenuChildren = [];
8
9
	$scope.getAllMenus = function () {
10
		MenuService.getAllMenus(function (error, data) {
11
			if (!error) {
12
				$scope.menus = data;
13
			} else {
14
				$scope.menus = [];
15
			}
16
			//create menu tree
17
			var treedata = { 'core': { 'data': [], "multiple": false, }, "plugins": ["wholerow"] };
18
			for (var i = 0; i < $scope.menus.length; i++) {
19
				if ($scope.menus[i].parent_menu_id == null) {
20
					var node = {
21
						"id": $scope.menus[i].id.toString(),
22
						"parent": '#',
23
						"text": $scope.menus[i].name,
24
						"state": { 'opened': true },
25
					};
26
				} else {
27
					var node = {
28
						"id": $scope.menus[i].id.toString(),
29
						"parent": $scope.menus[i].parent_menu_id.toString(),
30
						"text": $scope.menus[i].name,
31
						"state": { 'opened': true },
32
					};
33
				};
34
				treedata['core']['data'].push(node);
35
			}
36
37
			angular.element(menutree).jstree(treedata);
38
			//menu tree selected changed event handler
39
			angular.element(menutree).on("changed.jstree", function (e, data) {
40
				$scope.currentMenuID = parseInt(data.selected[0]);
41
				$scope.getMenuChildren($scope.currentMenuID);
42
			});
43
		});
44
	};
45
46
	$scope.refreshMenuTree = function () {
47
		MenuService.getAllMenus(function (error, data) {
48
			if (!error) {
49
				$scope.menus = data;
50
			} else {
51
				$scope.menus = [];
52
			}
53
			//create menu tree
54
			var treedata = { 'core': { 'data': [], "multiple": false, }, "plugins": ["wholerow"] };
55
			for (var i = 0; i < $scope.menus.length; i++) {
56
				if ($scope.menus[i].parent_menu_id == null) {
57
					var node = {
58
						"id": $scope.menus[i].id.toString(),
59
						"parent": '#',
60
						"text": $scope.menus[i].name,
61
						"state": { 'opened': true},
62
					};
63
				} else {
64
					var node = {
65
						"id": $scope.menus[i].id.toString(),
66
						"parent": $scope.menus[i].parent_menu_id.toString(),
67
						"text": $scope.menus[i].name,
68
						"state": { 'opened': true},
69
					};
70
				};
71
				treedata['core']['data'].push(node);
72
			}
73
			var menutree = document.getElementById("menutree");
74
			angular.element(menutree).jstree(true).settings.core.data = treedata['core']['data'];
75
			angular.element(menutree).jstree(true).refresh();
76
		});
77
	};
78
79
	$scope.getMenuChildren = function (menuid) {
80
		MenuService.getMenuChildren(menuid, function (error, data) {
81
			if (!error) {
82
				$scope.currentMenu = data["current"];
83
				$scope.currentMenuChildren = data["children"];
84
			} else {
85
				$scope.currentMenu = {};
86
				$scope.currentMenuChildren = [];
87
			}
88
		});
89
	};
90
	
91
	$scope.editMenu = function (menu) {
92
		var modalInstance = $uibModal.open({
93
			windowClass: "animated fadeIn",
94
			templateUrl: 'views/settings/menu/menu.model.html',
95
			controller: 'ModalEditMenuCtrl',
96
			resolve: {
97
				params: function () {
98
					return {
99
						menu: angular.copy(menu),
100
						menus: angular.copy($scope.menus),
101
						timezones: angular.copy($scope.timezones),
102
						costcenters: angular.copy($scope.costcenters),
103
						contacts: angular.copy($scope.contacts),
104
					};
105
				}
106
			}
107
		});
108
109
		modalInstance.result.then(function (modifiedMenu) {
110
			if (modifiedMenu.parent_menu != null) {
111
				modifiedMenu.parent_menu_id = modifiedMenu.parent_menu_id;
112
			} else {
113
				modifiedMenu.parent_menu_id = null;
114
			}
115
			
116
			MenuService.editMenu(modifiedMenu, function (error, status) {
117
				if (angular.isDefined(status) && status == 200) {
118
					var templateName = "COMMON.MENU";
119
					templateName = $translate.instant(templateName);
120
121
					var popType = 'TOASTER.SUCCESS';
122
					var popTitle = $common.toaster.success_title;
123
					var popBody = $common.toaster.success_update_body;
124
125
					popType = $translate.instant(popType);
126
					popTitle = $translate.instant(popTitle);
127
					popBody = $translate.instant(popBody, { template: templateName });
128
129
					toaster.pop({
130
						type: popType,
131
						title: popTitle,
132
						body: popBody,
133
						showCloseButton: true,
134
					});
135
					$scope.$emit('handleEmitMenuChanged');
136
				} else {
137
					var templateName = "COMMON.MENU";
138
					templateName = $translate.instant(templateName);
139
140
					var popType = 'TOASTER.ERROR';
141
					var popTitle = $common.toaster.error_title;
142
					var popBody = $common.toaster.error_update_body;
143
144
					popType = $translate.instant(popType);
145
					popTitle = $translate.instant(popTitle);
146
					popBody = $translate.instant(popBody, { template: templateName });
147
148
					toaster.pop({
149
						type: popType,
150
						title: popTitle,
151
						body: popBody,
152
						showCloseButton: true,
153
					});
154
				}
155
			});
156
		}, function () {
157
			//do nothing;
158
		});
159
	};
160
161
	$scope.getAllMenus();
162
163
	$scope.$on('handleBroadcastMenuChanged', function (event) {
164
		$scope.refreshMenuTree();
165
	});
166
167
});
168
169
170
app.controller('ModalEditMenuCtrl', function ($scope, $uibModalInstance, params) {
171
	$scope.operation = "SETTING.EDIT_MENU";
172
	$scope.menu = params.menu;
173
174
	$scope.ok = function () {
175
		$uibModalInstance.close($scope.menu);
176
	};
177
178
	$scope.cancel = function () {
179
		$uibModalInstance.dismiss('cancel');
180
	};
181
});
182