Passed
Push — master ( 844492...7c39ee )
by
unknown
09:45 queued 11s
created

myems-admin/app/controllers/settings/combinedequipment/combinedequipment.controller.js   B

Complexity

Total Complexity 50
Complexity/F 1.32

Size

Lines of Code 308
Function Count 38

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 50
eloc 218
dl 0
loc 308
rs 8.4
c 0
b 0
f 0
mnd 12
bc 12
fnc 38
bpm 0.3157
cpm 1.3157
noi 0

How to fix   Complexity   

Complexity

Complex classes like myems-admin/app/controllers/settings/combinedequipment/combinedequipment.controller.js often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.

Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.

1
'use strict';
2
3
app.controller('CombinedEquipmentController', function (
4
    $scope,
5
    $rootScope,
6
    $window,
7
    $translate,
8
    $uibModal,
9
    CombinedEquipmentService,
10
    CostCenterService,
11
    SVGService,
12
    toaster,
13
    SweetAlert) {
14
	$scope.cur_user = JSON.parse($window.localStorage.getItem("myems_admin_ui_current_user"));
15
	$scope.exportdata = '';
16
	$scope.importdata = '';
17
    $scope.searchKeyword = '';
18
	$scope.getAllCombinedEquipments = function () {
19
		let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token };
20
		CombinedEquipmentService.getAllCombinedEquipments(headers, function (response) {
21
			if (angular.isDefined(response.status) && response.status === 200) {
22
				$scope.combinedequipments = response.data;
23
			} else {
24
				$scope.combinedequipments = [];
25
			}
26
		});
27
	};
28
29
	$scope.getAllCostCenters = function () {
30
		let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token };
31
		CostCenterService.getAllCostCenters(headers, function (response) {
32
			if (angular.isDefined(response.status) && response.status === 200) {
33
				$scope.costcenters = response.data;
34
			} else {
35
				$scope.costcenters = [];
36
			}
37
		});
38
	};
39
40
	$scope.getAllSVGs = function() {
41
		let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token, "Quickmode": 'true'  };
42
		SVGService.getAllSVGs(headers, function (response) {
43
			if (angular.isDefined(response.status) && response.status === 200) {
44
				$scope.svgs = response.data;
45
			} else {
46
				$scope.svgs = [];
47
			}
48
		});
49
	};
50
	$scope.addCombinedEquipment = function () {
51
		var modalInstance = $uibModal.open({
52
			templateUrl: 'views/settings/combinedequipment/combinedequipment.model.html',
53
			controller: 'ModalAddCombinedEquipmentCtrl',
54
			windowClass: "animated fadeIn",
55
			resolve: {
56
				params: function () {
57
					return {
58
						costcenters: angular.copy($scope.costcenters),
59
						svgs: angular.copy($scope.svgs),
60
					};
61
				}
62
			}
63
		});
64
		modalInstance.result.then(function (combinedequipment) {
65
			combinedequipment.cost_center_id = combinedequipment.cost_center.id;
66
			if (angular.isDefined(combinedequipment.svg) && angular.isDefined(combinedequipment.svg.id)) {
67
				combinedequipment.svg_id = combinedequipment.svg.id;
68
			}
69
			let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token };
70
			CombinedEquipmentService.addCombinedEquipment(combinedequipment, headers,function (response) {
71
				if (angular.isDefined(response.status) && response.status === 201) {
72
					toaster.pop({
73
						type: "success",
74
						title: $translate.instant("TOASTER.SUCCESS_TITLE"),
75
						body: $translate.instant("TOASTER.SUCCESS_ADD_BODY", { template: $translate.instant("COMMON.COMBINED_EQUIPMENT") }),
76
						showCloseButton: true,
77
					});
78
					$scope.getAllCombinedEquipments();
79
					$scope.$emit('handleEmitCombinedEquipmentChanged');
80
				} else {
81
					toaster.pop({
82
						type: "error",
83
						title: $translate.instant("TOASTER.ERROR_ADD_BODY", { template: $translate.instant("COMMON.COMBINED_EQUIPMENT") }),
84
						body: $translate.instant(response.data.description),
85
						showCloseButton: true,
86
					});
87
				}
88
			});
89
		}, function () {
90
91
		});
92
		$rootScope.modalInstance = modalInstance;
93
	};
94
95
	$scope.editCombinedEquipment = function (combinedequipment) {
96
		var modalInstance = $uibModal.open({
97
			windowClass: "animated fadeIn",
98
			templateUrl: 'views/settings/combinedequipment/combinedequipment.model.html',
99
			controller: 'ModalEditCombinedEquipmentCtrl',
100
			resolve: {
101
				params: function () {
102
					return {
103
						combinedequipment: angular.copy(combinedequipment),
104
						costcenters: angular.copy($scope.costcenters),
105
						svgs: angular.copy($scope.svgs),
106
					};
107
				}
108
			}
109
		});
110
111
		modalInstance.result.then(function (modifiedCombinedEquipment) {
112
			let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token };
113
			modifiedCombinedEquipment.cost_center_id = modifiedCombinedEquipment.cost_center.id;
114
			if (angular.isDefined(modifiedCombinedEquipment.svg) && modifiedCombinedEquipment.svg != null && angular.isDefined(modifiedCombinedEquipment.svg.id)) {
115
				modifiedCombinedEquipment.svg_id = modifiedCombinedEquipment.svg.id;
116
			}
117
			CombinedEquipmentService.editCombinedEquipment(modifiedCombinedEquipment, headers, function (response) {
118
				if (angular.isDefined(response.status) && response.status === 200) {
119
					toaster.pop({
120
						type: "success",
121
						title: $translate.instant("TOASTER.SUCCESS_TITLE"),
122
						body: $translate.instant("TOASTER.SUCCESS_UPDATE_BODY", { template: $translate.instant("COMMON.COMBINED_EQUIPMENT") }),
123
						showCloseButton: true,
124
					});
125
					$scope.getAllCombinedEquipments();
126
					$scope.$emit('handleEmitCombinedEquipmentChanged');
127
				} else {
128
					toaster.pop({
129
						type: "error",
130
						title: $translate.instant("TOASTER.ERROR_UPDATE_BODY", { template: $translate.instant("COMMON.COMBINED_EQUIPMENT") }),
131
						body: $translate.instant(response.data.description),
132
						showCloseButton: true,
133
					});
134
				}
135
			});
136
		}, function () {
137
			//do nothing;
138
		});
139
		$rootScope.modalInstance = modalInstance;
140
	};
141
142
	$scope.deleteCombinedEquipment = function (combinedequipment) {
143
		SweetAlert.swal({
144
			title: $translate.instant("SWEET.TITLE"),
145
			text: $translate.instant("SWEET.TEXT"),
146
			type: "warning",
147
			showCancelButton: true,
148
			confirmButtonColor: "#DD6B55",
149
			confirmButtonText: $translate.instant("SWEET.CONFIRM_BUTTON_TEXT"),
150
			cancelButtonText: $translate.instant("SWEET.CANCEL_BUTTON_TEXT"),
151
			closeOnConfirm: true,
152
			closeOnCancel: true
153
		},
154
			function (isConfirm) {
155
				if (isConfirm) {
156
					let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token };
157
					CombinedEquipmentService.deleteCombinedEquipment(combinedequipment, headers, function (response) {
158
						if (angular.isDefined(response.status) && response.status === 204) {
159
							toaster.pop({
160
								type: "success",
161
								title: $translate.instant("TOASTER.SUCCESS_TITLE"),
162
								body: $translate.instant("TOASTER.SUCCESS_DELETE_BODY", { template: $translate.instant("COMMON.COMBINED_EQUIPMENT") }),
163
								showCloseButton: true,
164
							});
165
							$scope.getAllCombinedEquipments();
166
							$scope.$emit('handleEmitCombinedEquipmentChanged');
167
						} else {
168
							toaster.pop({
169
								type: "error",
170
								title: $translate.instant("TOASTER.ERROR_DELETE_BODY", { template: $translate.instant("COMMON.COMBINED_EQUIPMENT") }),
171
								body: $translate.instant(response.data.description),
172
								showCloseButton: true,
173
							});
174
						}
175
					});
176
				}
177
			});
178
	};
179
180
	$scope.exportCombinedEquipment = function(combinedequipment) {
181
		let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token };
182
		CombinedEquipmentService.exportCombinedEquipment(combinedequipment, headers, function(response) {
183
			if (angular.isDefined(response.status) && response.status === 200) {
184
				$scope.exportdata = JSON.stringify(response.data);
185
				var modalInstance = $uibModal.open({
186
					windowClass: "animated fadeIn",
187
					templateUrl: 'views/common/export.html',
188
					controller: 'ModalExportCtrl',
189
					resolve: {
190
						params: function() {
191
							return {
192
								exportdata: angular.copy($scope.exportdata)
193
							};
194
						}
195
					}
196
				});
197
				modalInstance.result.then(function() {
198
					//do nothing;
199
				}, function() {
200
					//do nothing;
201
				});
202
				$rootScope.modalInstance = modalInstance;
203
			} else {
204
				$scope.exportdata = null;
205
			}
206
		});
207
	};
208
209
	$scope.cloneCombinedEquipment = function(combinedequipment){
210
		let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token };
211
		CombinedEquipmentService.cloneCombinedEquipment(combinedequipment, headers, function(response) {
212
			if (angular.isDefined(response.status) && response.status === 201) {
213
				toaster.pop({
214
					type: "success",
215
					title: $translate.instant("TOASTER.SUCCESS_TITLE"),
216
					body: $translate.instant("TOASTER.SUCCESS_ADD_BODY", {template: $translate.instant("COMMON.COMBINED_EQUIPMENT")}),
217
					showCloseButton: true,
218
				});
219
				$scope.getAllCombinedEquipments();
220
				$scope.$emit('handleEmitCombinedEquipmentChanged');
221
			}else {
222
				toaster.pop({
223
					type: "error",
224
					title: $translate.instant("TOASTER.ERROR_ADD_BODY", {template: $translate.instant("COMMON.COMBINED_EQUIPMENT")}),
225
					body: $translate.instant(response.data.description),
226
					showCloseButton: true,
227
				});
228
			}
229
		});
230
	};
231
232
	$scope.importCombinedEquipment = function() {
233
		var modalInstance = $uibModal.open({
234
			templateUrl: 'views/common/import.html',
235
			controller: 'ModalImportCtrl',
236
			windowClass: "animated fadeIn",
237
			resolve: {
238
				params: function() {
239
					return {
240
					};
241
				}
242
			}
243
		});
244
		modalInstance.result.then(function(importdata) {
245
			let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token };
246
			CombinedEquipmentService.importCombinedEquipment(importdata, headers, function(response) {
247
				if (angular.isDefined(response.status) && response.status === 201) {
248
					toaster.pop({
249
						type: "success",
250
						title: $translate.instant("TOASTER.SUCCESS_TITLE"),
251
						body: $translate.instant("TOASTER.SUCCESS_ADD_BODY", {template: $translate.instant("COMMON.COMBINED_EQUIPMENT")}),
252
						showCloseButton: true,
253
					});
254
					$scope.getAllCombinedEquipments();
255
					$scope.$emit('handleEmitCombinedEquipmentChanged');
256
				} else {
257
					toaster.pop({
258
						type: "error",
259
						title: $translate.instant("TOASTER.ERROR_ADD_BODY", { template: $translate.instant("COMMAND.COMBINED_EQUIPMENT") }),
260
						body: $translate.instant(response.data.description),
261
						showCloseButton: true,
262
					});
263
				}
264
			});
265
		}, function() {
266
267
		});
268
		$rootScope.modalInstance = modalInstance;
269
	};
270
271
	let searchDebounceTimer = null;
272
	function safeApply(scope) {
273
		if (!scope.$$phase && !scope.$root.$$phase) {
274
			scope.$apply();
275
		}
276
	}
277
	$scope.searchCombinedEquipments = function() {
278
		const headers = {
279
			"User-UUID": $scope.cur_user?.uuid,
280
			"Token": $scope.cur_user?.token
281
		};
282
283
		const rawKeyword = $scope.searchKeyword || "";
284
		const trimmedKeyword = rawKeyword.trim();
285
286
		if (searchDebounceTimer) {
287
			clearTimeout(searchDebounceTimer);
288
		}
289
290
		searchDebounceTimer = setTimeout(() => {
291
			if (!trimmedKeyword) {
292
				$scope.getAllCombinedEquipments();
293
				safeApply($scope);
294
				return;
295
			}
296
297
			CombinedEquipmentService.searchCombinedEquipments(trimmedKeyword, headers, (response) => {
298
				$scope.combinedequipments = (response.status === 200) ? response.data : [];
299
				$scope.parentmeters = [...$scope.combinedequipments];
300
			});
301
		}, 300);
302
	};
303
304
	$scope.getAllCostCenters();
305
	$scope.getAllSVGs();
306
	$scope.getAllCombinedEquipments();
307
});
308
309
app.controller("ModalAddCombinedEquipmentCtrl", function ($scope, $uibModalInstance, params) {
310
	$scope.operation = "COMBINED_EQUIPMENT.ADD_COMBINED_EQUIPMENT";
311
	$scope.costcenters = params.costcenters;
312
	$scope.svgs=params.svgs;
313
	$scope.disabled = false;
314
	$scope.combinedequipment = {
315
		is_input_counted: false,
316
		is_output_counted: false,
317
	};
318
	$scope.ok = function () {
319
		$uibModalInstance.close($scope.combinedequipment);
320
	};
321
322
	$scope.cancel = function () {
323
		$uibModalInstance.dismiss("cancel");
324
	};
325
});
326
327
app.controller("ModalEditCombinedEquipmentCtrl", function ($scope, $uibModalInstance, params) {
328
	$scope.operation = "COMBINED_EQUIPMENT.EDIT_COMBINED_EQUIPMENT";
329
	$scope.costcenters = params.costcenters;
330
	$scope.svgs=params.svgs;
331
	$scope.disabled = true;
332
	$scope.combinedequipment = params.combinedequipment;
333
334
	$scope.ok = function () {
335
		$uibModalInstance.close($scope.combinedequipment);
336
	};
337
338
	$scope.cancel = function () {
339
		$uibModalInstance.dismiss("cancel");
340
	};
341
});
342