Passed
Push — master ( b2499a...646676 )
by
unknown
10:58 queued 01:05
created

myems-admin/app/controllers/settings/energystoragecontainer/energystoragecontainerload.controller.js   F

Complexity

Total Complexity 66
Complexity/F 1.38

Size

Lines of Code 396
Function Count 48

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 66
eloc 281
mnd 18
bc 18
fnc 48
dl 0
loc 396
rs 3.12
bpm 0.375
cpm 1.375
noi 2
c 0
b 0
f 0

How to fix   Complexity   

Complexity

Complex classes like myems-admin/app/controllers/settings/energystoragecontainer/energystoragecontainerload.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('EnergyStorageContainerLoadController', function(
4
	$scope,
5
	$rootScope,
6
	$window,
7
	$translate,
8
	$uibModal,
9
	EnergyStorageContainerService,
10
	EnergyStorageContainerLoadService,
11
	DataSourceService,
12
	PointService,
13
	MeterService,
14
	toaster,
15
	SweetAlert) {
16
      $scope.energystoragecontainers = [];
17
      $scope.energystoragecontainerloads = [];
18
	  $scope.points = [];
19
	  $scope.meters = [];
20
      $scope.currentEnergyStorageContainer = null;
21
	  $scope.cur_user = JSON.parse($window.localStorage.getItem("myems_admin_ui_current_user"));
22
      $scope.getAllEnergyStorageContainers = function() {
23
		let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token };
24
  		EnergyStorageContainerService.getAllEnergyStorageContainers(headers, function (response) {
25
  			if (angular.isDefined(response.status) && response.status === 200) {
26
  				$scope.energystoragecontainers = response.data;
27
  			} else {
28
  				$scope.energystoragecontainers = [];
29
  			}
30
  		});
31
  	};
32
33
	$scope.getAllDataSources = function() {
34
		let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token };
35
		DataSourceService.getAllDataSources(headers, function (response) {
36
			if (angular.isDefined(response.status) && response.status === 200) {
37
				$scope.datasources = response.data;
38
				if ($scope.datasources.length > 0) {
39
					$scope.currentDataSource = $scope.datasources[0].id;
40
					$scope.getPointsByDataSourceID($scope.currentDataSource);
41
				}
42
			} else {
43
				$scope.datasources = [];
44
			}
45
		});
46
	};
47
48
	$scope.getAllPoints = function() {
49
		let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token };
50
		PointService.getAllPoints(headers, function (response) {
51
			if (angular.isDefined(response.status) && response.status === 200) {
52
				$scope.points = response.data;
53
			} else {
54
				$scope.points = [];
55
			}
56
		});
57
	};
58
59
	$scope.getPointsByDataSourceID = function(id) {
60
		let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token };
61
		PointService.getPointsByDataSourceID(id, headers, function (response) {
62
			if (angular.isDefined(response.status) && response.status === 200) {
63
				$scope.points = response.data;
64
			} else {
65
				$scope.points = [];
66
			}
67
		});
68
	};
69
70
	$scope.getAllMeters = function() {
71
		let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token };
72
		MeterService.getAllMeters(headers, function (response) {
73
			if (angular.isDefined(response.status) && response.status === 200) {
74
				$scope.meters = response.data;
75
			} else {
76
				$scope.meters = [];
77
			}
78
		});
79
	};
80
  	$scope.getEnergyStorageContainerLoadsByEnergyStorageContainerID = function(id) {
81
		let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token };
82
  		EnergyStorageContainerLoadService.getEnergyStorageContainerLoadsByEnergyStorageContainerID(id, headers, function (response) {
83
			if (angular.isDefined(response.status) && response.status === 200) {
84
				$scope.energystoragecontainerloads = response.data;
85
			} else {
86
          	$scope.energystoragecontainerloads=[];
87
        }
88
			});
89
  	};
90
91
  	$scope.changeEnergyStorageContainer=function(item,model){
92
    	$scope.currentEnergyStorageContainer=item;
93
    	$scope.currentEnergyStorageContainer.selected=model;
94
        $scope.is_show_add_energystoragecontainer_load = true;
95
    	$scope.getEnergyStorageContainerLoadsByEnergyStorageContainerID($scope.currentEnergyStorageContainer.id);
96
  	};
97
98
  	$scope.addEnergyStorageContainerLoad = function() {
99
  		var modalInstance = $uibModal.open({
100
  			templateUrl: 'views/settings/energystoragecontainer/energystoragecontainerload.model.html',
101
  			controller: 'ModalAddEnergyStorageContainerLoadCtrl',
102
  			windowClass: "animated fadeIn",
103
  			resolve: {
104
  				params: function() {
105
  					return {
106
						meters: angular.copy($scope.meters),
107
						points: angular.copy($scope.points),
108
  					};
109
  				}
110
  			}
111
  		});
112
  		modalInstance.result.then(function(energystoragecontainerload) {
113
			energystoragecontainerload.power_point_id = energystoragecontainerload.power_point.id;
114
			energystoragecontainerload.meter_id = energystoragecontainerload.meter.id;
115
116
			let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token };
117
  			EnergyStorageContainerLoadService.addEnergyStorageContainerLoad($scope.currentEnergyStorageContainer.id, energystoragecontainerload, headers, function (response) {
118
  				if (angular.isDefined(response.status) && response.status === 201) {
119
  					toaster.pop({
120
  						type: "success",
121
  						title: $translate.instant("TOASTER.SUCCESS_TITLE"),
122
  						body: $translate.instant("TOASTER.SUCCESS_ADD_BODY", {template: $translate.instant("ENERGY_STORAGE_CONTAINER.ENERGY_STORAGE_CONTAINER_LOAD")}),
123
  						showCloseButton: true,
124
  					});
125
  					$scope.getEnergyStorageContainerLoadsByEnergyStorageContainerID($scope.currentEnergyStorageContainer.id);
126
            		$scope.$emit('handleEmitEnergyStorageContainerLoadChanged');
127
  				} else {
128
  					toaster.pop({
129
  						type: "error",
130
  						title: $translate.instant("TOASTER.ERROR_ADD_BODY", {template: $translate.instant("ENERGY_STORAGE_CONTAINER.ENERGY_STORAGE_CONTAINER_LOAD")}),
131
  						body: $translate.instant(response.data.description),
132
  						showCloseButton: true,
133
  					});
134
  				}
135
  			});
136
  		}, function() {
137
138
  		});
139
		$rootScope.modalInstance = modalInstance;
140
  	};
141
142
  	$scope.editEnergyStorageContainerLoad = function(energystoragecontainerload) {
143
  		var modalInstance = $uibModal.open({
144
  			templateUrl: 'views/settings/energystoragecontainer/energystoragecontainerload.model.html',
145
  			controller: 'ModalEditEnergyStorageContainerLoadCtrl',
146
    		windowClass: "animated fadeIn",
147
  			resolve: {
148
  				params: function() {
149
  					return {
150
  						energystoragecontainerload: angular.copy(energystoragecontainerload),
151
						meters: angular.copy($scope.meters),
152
						points: angular.copy($scope.points),
153
  					};
154
  				}
155
  			}
156
  		});
157
158
  		modalInstance.result.then(function(modifiedEnergyStorageContainerLoad) {
159
			modifiedEnergyStorageContainerLoad.power_point_id = modifiedEnergyStorageContainerLoad.power_point.id;
160
			modifiedEnergyStorageContainerLoad.meter_id = modifiedEnergyStorageContainerLoad.meter.id;
161
162
			let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token };
163
  			EnergyStorageContainerLoadService.editEnergyStorageContainerLoad($scope.currentEnergyStorageContainer.id, modifiedEnergyStorageContainerLoad, headers, function (response) {
164
  				if (angular.isDefined(response.status) && response.status === 200) {
165
  					toaster.pop({
166
  						type: "success",
167
  						title: $translate.instant("TOASTER.SUCCESS_TITLE"),
168
  						body: $translate.instant("TOASTER.SUCCESS_UPDATE_BODY", {template: $translate.instant("ENERGY_STORAGE_CONTAINER.ENERGY_STORAGE_CONTAINER_LOAD")}),
169
  						showCloseButton: true,
170
  					});
171
  					$scope.getEnergyStorageContainerLoadsByEnergyStorageContainerID($scope.currentEnergyStorageContainer.id);
172
            		$scope.$emit('handleEmitEnergyStorageContainerLoadChanged');
173
  				} else {
174
  					toaster.pop({
175
  						type: "error",
176
  						title: $translate.instant("TOASTER.ERROR_UPDATE_BODY", {template: $translate.instant("ENERGY_STORAGE_CONTAINER.ENERGY_STORAGE_CONTAINER_LOAD")}),
177
  						body: $translate.instant(response.data.description),
178
  						showCloseButton: true,
179
  					});
180
  				}
181
  			});
182
  		}, function() {
183
  			//do nothing;
184
  		});
185
		$rootScope.modalInstance = modalInstance;
186
  	};
187
188
	$scope.bindEnergyStorageContainerLoadPoint = function(energystoragecontainerload) {
189
	var modalInstance = $uibModal.open({
190
		templateUrl: 'views/settings/energystoragecontainer/energystoragecontainerloadpoint.model.html',
191
		controller: 'ModalBindEnergyStorageContainerLoadCtrl',
192
		windowClass: "animated fadeIn",
193
			resolve: {
194
				params: function() {
195
					return {
196
						user_uuid: $scope.cur_user.uuid,
197
						token: $scope.cur_user.token,
198
						energystoragecontainerid: $scope.currentEnergyStorageContainer.id,
199
						energystoragecontainerload: angular.copy(energystoragecontainerload),
200
						meters: angular.copy($scope.meters),
201
						datasources: angular.copy($scope.datasources),
202
						points: angular.copy($scope.points),
203
					};
204
				}
205
			}
206
		});
207
		$rootScope.modalInstance = modalInstance;
208
	};
209
  	$scope.deleteEnergyStorageContainerLoad = function(energystoragecontainerload) {
210
  		SweetAlert.swal({
211
  				title: $translate.instant("SWEET.TITLE"),
212
  				text: $translate.instant("SWEET.TEXT"),
213
  				type: "warning",
214
  				showCancelButton: true,
215
  				confirmButtonColor: "#DD6B55",
216
  				confirmButtonText: $translate.instant("SWEET.CONFIRM_BUTTON_TEXT"),
217
  				cancelButtonText: $translate.instant("SWEET.CANCEL_BUTTON_TEXT"),
218
  				closeOnConfirm: true,
219
  				closeOnCancel: true
220
  			},
221
  			function(isConfirm) {
222
  				if (isConfirm) {
223
					let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token };
224
  					EnergyStorageContainerLoadService.deleteEnergyStorageContainerLoad($scope.currentEnergyStorageContainer.id, energystoragecontainerload.id, headers, function (response) {
225
  						if (angular.isDefined(response.status) && response.status === 204) {
226
							toaster.pop({
227
								type: "success",
228
								title: $translate.instant("TOASTER.SUCCESS_TITLE"),
229
								body: $translate.instant("TOASTER.SUCCESS_DELETE_BODY", {template: $translate.instant("ENERGY_STORAGE_CONTAINER.ENERGY_STORAGE_CONTAINER_LOAD")}),
230
								showCloseButton: true,
231
							});
232
							$scope.getEnergyStorageContainerLoadsByEnergyStorageContainerID($scope.currentEnergyStorageContainer.id);
233
							$scope.$emit('handleEmitEnergyStorageContainerLoadChanged');
234
  						} else {
235
							toaster.pop({
236
								type: "error",
237
								title: $translate.instant("TOASTER.ERROR_DELETE_BODY", {template: $translate.instant("ENERGY_STORAGE_CONTAINER.ENERGY_STORAGE_CONTAINER_LOAD")}),
238
								body: $translate.instant(response.data.description),
239
								showCloseButton: true,
240
							});
241
  				   		}
242
  					});
243
  				}
244
  			});
245
  	};
246
247
  	$scope.getAllEnergyStorageContainers();
248
	$scope.getAllDataSources();
249
	$scope.getAllPoints();
250
	$scope.getAllMeters();
251
    $scope.$on('handleBroadcastEnergyStorageContainerChanged', function(event) {
252
      $scope.getAllEnergyStorageContainers();
253
  	});
254
255
  });
256
257
258
  app.controller('ModalAddEnergyStorageContainerLoadCtrl', function($scope, $uibModalInstance, params) {
259
260
  	$scope.operation = "ENERGY_STORAGE_CONTAINER.ADD_ENERGY_STORAGE_CONTAINER_LOAD";
261
	$scope.points=params.points;
262
	$scope.meters=params.meters;
263
  	$scope.ok = function() {
264
  		$uibModalInstance.close($scope.energystoragecontainerload);
265
  	};
266
267
  	$scope.cancel = function() {
268
  		$uibModalInstance.dismiss('cancel');
269
  	};
270
  });
271
272
  app.controller('ModalEditEnergyStorageContainerLoadCtrl', function($scope, $uibModalInstance, params) {
273
  	$scope.operation = "ENERGY_STORAGE_CONTAINER.EDIT_ENERGY_STORAGE_CONTAINER_LOAD";
274
  	$scope.energystoragecontainerload = params.energystoragecontainerload;
275
	$scope.points=params.points;
276
	$scope.meters=params.meters;
277
  	$scope.ok = function() {
278
  		$uibModalInstance.close($scope.energystoragecontainerload);
279
  	};
280
281
  	$scope.cancel = function() {
282
  		$uibModalInstance.dismiss('cancel');
283
  	};
284
  });
285
286
  app.controller('ModalBindEnergyStorageContainerLoadCtrl', function(
287
	$scope,
288
	$uibModalInstance,
289
	toaster,
290
	$translate,
291
	EnergyStorageContainerLoadService,
292
	PointService,
293
	params) {
294
	$scope.operation = "ENERGY_STORAGE_CONTAINER.EDIT_ENERGY_STORAGE_CONTAINER_LOAD";
295
	$scope.energystoragecontainerid = params.energystoragecontainerid;
296
	$scope.energystoragecontainerload = params.energystoragecontainerload;
297
	$scope.datasources=params.datasources;
298
	$scope.boundpoints=params.boundpoints;
299
300
	let headers = { "User-UUID": params.user_uuid, "Token": params.token };
301
	EnergyStorageContainerLoadService.getPointsByLoadID($scope.energystoragecontainerid, $scope.energystoragecontainerload.id, headers, function (response) {
302
		if (angular.isDefined(response.status) && response.status === 200) {
303
			$scope.boundpoints = response.data;
304
		} else {
305
			$scope.boundpoints = [];
306
		}
307
	});
308
309
	$scope.cancel = function() {
310
		$uibModalInstance.dismiss('cancel');
311
	};
312
313
    $scope.changeDataSource = function (item, model) {
314
		console.log('changeDataSource');
0 ignored issues
show
Debugging Code introduced by
console.log looks like debug code. Are you sure you do not want to remove it?
Loading history...
315
        $scope.currentDataSource = model;
316
		console.log($scope.currentDataSource);
317
        $scope.getPointsByDataSourceID($scope.currentDataSource);
318
    };
319
320
    $scope.getPointsByDataSourceID = function(id) {
321
		console.log('getPointsByDataSourceID');
0 ignored issues
show
Debugging Code introduced by
console.log looks like debug code. Are you sure you do not want to remove it?
Loading history...
322
		let headers = { "User-UUID": params.user_uuid, "Token": params.token };
323
        PointService.getPointsByDataSourceID(id, headers, function (response) {
324
            if (angular.isDefined(response.status) && response.status === 200) {
325
                $scope.points = response.data;
326
            } else {
327
                $scope.points = [];
328
            }
329
        });
330
    };
331
332
    $scope.pairPoint = function (dragEl, dropEl) {
333
        var pointid = angular.element('#' + dragEl).scope().point.id;
334
		let headers = { "User-UUID": params.user_uuid, "Token": params.token };
335
        EnergyStorageContainerLoadService.addPair(params.energystoragecontainerid, params.energystoragecontainerload.id, pointid, headers, function (response) {
336
            if (angular.isDefined(response.status) && response.status === 201) {
337
                toaster.pop({
338
                    type: "success",
339
                    title: $translate.instant("TOASTER.SUCCESS_TITLE"),
340
                    body: $translate.instant("TOASTER.BIND_POINT_SUCCESS"),
341
                    showCloseButton: true,
342
                });
343
                let headers = { "User-UUID": params.user_uuid, "Token": params.token };
344
				EnergyStorageContainerLoadService.getPointsByLoadID(params.energystoragecontainerid, params.energystoragecontainerload.id, headers, function (response) {
345
					if (angular.isDefined(response.status) && response.status === 200) {
346
						$scope.boundpoints = response.data;
347
					} else {
348
						$scope.boundpoints = [];
349
					}
350
				});
351
            } else {
352
                toaster.pop({
353
                    type: "error",
354
                    title: $translate.instant(response.data.title),
355
                    body: $translate.instant(response.data.description),
356
                    showCloseButton: true,
357
                });
358
            }
359
        });
360
    };
361
362
    $scope.deletePointPair = function (dragEl, dropEl) {
363
        if (angular.element('#' + dragEl).hasClass('source')) {
364
            return;
365
        }
366
367
		var pointid  = angular.element('#' + dragEl).scope().boundpoint.id;
368
		let headers = { "User-UUID": params.user_uuid, "Token": params.token };
369
        EnergyStorageContainerLoadService.deletePair(params.energystoragecontainerid, params.energystoragecontainerload.id, pointid, headers, function (response) {
370
            if (angular.isDefined(response.status) && response.status === 204) {
371
                toaster.pop({
372
                    type: "success",
373
                    title: $translate.instant("TOASTER.SUCCESS_TITLE"),
374
                    body: $translate.instant("TOASTER.UNBIND_POINT_SUCCESS"),
375
                    showCloseButton: true,
376
                });
377
                let headers = { "User-UUID": params.user_uuid, "Token": params.token };
378
				EnergyStorageContainerLoadService.getPointsByLoadID(params.energystoragecontainerid, params.energystoragecontainerload.id, headers, function (response) {
379
					if (angular.isDefined(response.status) && response.status === 200) {
380
						$scope.boundpoints = response.data;
381
					} else {
382
						$scope.boundpoints = [];
383
					}
384
				});
385
            } else {
386
                toaster.pop({
387
                    type: "error",
388
                    title: $translate.instant(response.data.title),
389
                    body: $translate.instant(response.data.description),
390
                    showCloseButton: true,
391
                });
392
            }
393
        });
394
    };
395
396
  });