Passed
Push — master ( 8e7a04...f78861 )
by
unknown
11:43 queued 16s
created

myems-admin/app/controllers/settings/hybridpowerstation/hybridpowerstationload.controller.js   F

Complexity

Total Complexity 66
Complexity/F 1.38

Size

Lines of Code 394
Function Count 48

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

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

How to fix   Complexity   

Complexity

Complex classes like myems-admin/app/controllers/settings/hybridpowerstation/hybridpowerstationload.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('HybridPowerStationLoadController', function(
4
	$scope,
5
	$rootScope,
6
	$window,
7
	$translate,
8
	$uibModal,
9
	HybridPowerStationService,
10
	HybridPowerStationLoadService,
11
	DataSourceService,
12
	PointService,
13
	MeterService,
14
	toaster,
15
	SweetAlert) {
16
      $scope.hybridpowerstations = [];
17
      $scope.hybridpowerstationloads = [];
18
	  $scope.points = [];
19
	  $scope.meters = [];
20
      $scope.currentHybridPowerStation = null;
21
	  $scope.cur_user = JSON.parse($window.localStorage.getItem("myems_admin_ui_current_user"));
22
      $scope.getAllHybridPowerStations = function() {
23
		let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token };
24
  		HybridPowerStationService.getAllHybridPowerStations(headers, function (response) {
25
  			if (angular.isDefined(response.status) && response.status === 200) {
26
  				$scope.hybridpowerstations = response.data;
27
  			} else {
28
  				$scope.hybridpowerstations = [];
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.getHybridPowerStationLoadsByHybridPowerStationID = function(id) {
81
		let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token };
82
  		HybridPowerStationLoadService.getHybridPowerStationLoadsByHybridPowerStationID(id, headers, function (response) {
83
			if (angular.isDefined(response.status) && response.status === 200) {
84
				$scope.hybridpowerstationloads = response.data;
85
			} else {
86
          	$scope.hybridpowerstationloads=[];
87
        }
88
			});
89
  	};
90
91
  	$scope.changeHybridPowerStation=function(item,model){
92
    	$scope.currentHybridPowerStation=item;
93
    	$scope.currentHybridPowerStation.selected=model;
94
        $scope.is_show_add_hybridpowerstation_load = true;
95
    	$scope.getHybridPowerStationLoadsByHybridPowerStationID($scope.currentHybridPowerStation.id);
96
  	};
97
98
  	$scope.addHybridPowerStationLoad = function() {
99
  		var modalInstance = $uibModal.open({
100
  			templateUrl: 'views/settings/hybridpowerstation/hybridpowerstationload.model.html',
101
  			controller: 'ModalAddHybridPowerStationLoadCtrl',
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(hybridpowerstationload) {
113
			hybridpowerstationload.meter_id = hybridpowerstationload.meter.id;
114
115
			let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token };
116
  			HybridPowerStationLoadService.addHybridPowerStationLoad($scope.currentHybridPowerStation.id, hybridpowerstationload, headers, function (response) {
117
  				if (angular.isDefined(response.status) && response.status === 201) {
118
  					toaster.pop({
119
  						type: "success",
120
  						title: $translate.instant("TOASTER.SUCCESS_TITLE"),
121
  						body: $translate.instant("TOASTER.SUCCESS_ADD_BODY", {template: $translate.instant("HYBRID_POWER_STATION.HYBRID_POWER_STATION_LOAD")}),
122
  						showCloseButton: true,
123
  					});
124
  					$scope.getHybridPowerStationLoadsByHybridPowerStationID($scope.currentHybridPowerStation.id);
125
            		$scope.$emit('handleEmitHybridPowerStationLoadChanged');
126
  				} else {
127
  					toaster.pop({
128
  						type: "error",
129
  						title: $translate.instant("TOASTER.ERROR_ADD_BODY", {template: $translate.instant("HYBRID_POWER_STATION.HYBRID_POWER_STATION_LOAD")}),
130
  						body: $translate.instant(response.data.description),
131
  						showCloseButton: true,
132
  					});
133
  				}
134
  			});
135
  		}, function() {
136
137
  		});
138
		$rootScope.modalInstance = modalInstance;
139
  	};
140
141
  	$scope.editHybridPowerStationLoad = function(hybridpowerstationload) {
142
  		var modalInstance = $uibModal.open({
143
  			templateUrl: 'views/settings/hybridpowerstation/hybridpowerstationload.model.html',
144
  			controller: 'ModalEditHybridPowerStationLoadCtrl',
145
    		windowClass: "animated fadeIn",
146
  			resolve: {
147
  				params: function() {
148
  					return {
149
  						hybridpowerstationload: angular.copy(hybridpowerstationload),
150
						meters: angular.copy($scope.meters),
151
						points: angular.copy($scope.points),
152
  					};
153
  				}
154
  			}
155
  		});
156
157
  		modalInstance.result.then(function(modifiedHybridPowerStationLoad) {
158
			modifiedHybridPowerStationLoad.meter_id = modifiedHybridPowerStationLoad.meter.id;
159
160
			let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token };
161
  			HybridPowerStationLoadService.editHybridPowerStationLoad($scope.currentHybridPowerStation.id, modifiedHybridPowerStationLoad, headers, function (response) {
162
  				if (angular.isDefined(response.status) && response.status === 200) {
163
  					toaster.pop({
164
  						type: "success",
165
  						title: $translate.instant("TOASTER.SUCCESS_TITLE"),
166
  						body: $translate.instant("TOASTER.SUCCESS_UPDATE_BODY", {template: $translate.instant("HYBRID_POWER_STATION.HYBRID_POWER_STATION_LOAD")}),
167
  						showCloseButton: true,
168
  					});
169
  					$scope.getHybridPowerStationLoadsByHybridPowerStationID($scope.currentHybridPowerStation.id);
170
            		$scope.$emit('handleEmitHybridPowerStationLoadChanged');
171
  				} else {
172
  					toaster.pop({
173
  						type: "error",
174
  						title: $translate.instant("TOASTER.ERROR_UPDATE_BODY", {template: $translate.instant("HYBRID_POWER_STATION.HYBRID_POWER_STATION_LOAD")}),
175
  						body: $translate.instant(response.data.description),
176
  						showCloseButton: true,
177
  					});
178
  				}
179
  			});
180
  		}, function() {
181
  			//do nothing;
182
  		});
183
		$rootScope.modalInstance = modalInstance;
184
  	};
185
186
	$scope.bindHybridPowerStationLoadPoint = function(hybridpowerstationload) {
187
	var modalInstance = $uibModal.open({
188
		templateUrl: 'views/settings/hybridpowerstation/hybridpowerstationloadpoint.model.html',
189
		controller: 'ModalBindHybridPowerStationLoadCtrl',
190
		windowClass: "animated fadeIn",
191
			resolve: {
192
				params: function() {
193
					return {
194
						user_uuid: $scope.cur_user.uuid,
195
						token: $scope.cur_user.token,
196
						hybridpowerstationid: $scope.currentHybridPowerStation.id,
197
						hybridpowerstationload: angular.copy(hybridpowerstationload),
198
						meters: angular.copy($scope.meters),
199
						datasources: angular.copy($scope.datasources),
200
						points: angular.copy($scope.points),
201
					};
202
				}
203
			}
204
		});
205
		$rootScope.modalInstance = modalInstance;
206
	};
207
  	$scope.deleteHybridPowerStationLoad = function(hybridpowerstationload) {
208
  		SweetAlert.swal({
209
  				title: $translate.instant("SWEET.TITLE"),
210
  				text: $translate.instant("SWEET.TEXT"),
211
  				type: "warning",
212
  				showCancelButton: true,
213
  				confirmButtonColor: "#DD6B55",
214
  				confirmButtonText: $translate.instant("SWEET.CONFIRM_BUTTON_TEXT"),
215
  				cancelButtonText: $translate.instant("SWEET.CANCEL_BUTTON_TEXT"),
216
  				closeOnConfirm: true,
217
  				closeOnCancel: true
218
  			},
219
  			function(isConfirm) {
220
  				if (isConfirm) {
221
					let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token };
222
  					HybridPowerStationLoadService.deleteHybridPowerStationLoad($scope.currentHybridPowerStation.id, hybridpowerstationload.id, headers, function (response) {
223
  						if (angular.isDefined(response.status) && response.status === 204) {
224
							toaster.pop({
225
								type: "success",
226
								title: $translate.instant("TOASTER.SUCCESS_TITLE"),
227
								body: $translate.instant("TOASTER.SUCCESS_DELETE_BODY", {template: $translate.instant("HYBRID_POWER_STATION.HYBRID_POWER_STATION_LOAD")}),
228
								showCloseButton: true,
229
							});
230
							$scope.getHybridPowerStationLoadsByHybridPowerStationID($scope.currentHybridPowerStation.id);
231
							$scope.$emit('handleEmitHybridPowerStationLoadChanged');
232
  						} else {
233
							toaster.pop({
234
								type: "error",
235
								title: $translate.instant("TOASTER.ERROR_DELETE_BODY", {template: $translate.instant("HYBRID_POWER_STATION.HYBRID_POWER_STATION_LOAD")}),
236
								body: $translate.instant(response.data.description),
237
								showCloseButton: true,
238
							});
239
  				   		}
240
  					});
241
  				}
242
  			});
243
  	};
244
245
  	$scope.getAllHybridPowerStations();
246
	$scope.getAllDataSources();
247
	$scope.getAllPoints();
248
	$scope.getAllMeters();
249
    $scope.$on('handleBroadcastHybridPowerStationChanged', function(event) {
250
      $scope.getAllHybridPowerStations();
251
  	});
252
253
  });
254
255
256
  app.controller('ModalAddHybridPowerStationLoadCtrl', function($scope, $uibModalInstance, params) {
257
258
  	$scope.operation = "HYBRID_POWER_STATION.ADD_HYBRID_POWER_STATION_LOAD";
259
	$scope.points=params.points;
260
	$scope.meters=params.meters;
261
  	$scope.ok = function() {
262
  		$uibModalInstance.close($scope.hybridpowerstationload);
263
  	};
264
265
  	$scope.cancel = function() {
266
  		$uibModalInstance.dismiss('cancel');
267
  	};
268
  });
269
270
  app.controller('ModalEditHybridPowerStationLoadCtrl', function($scope, $uibModalInstance, params) {
271
  	$scope.operation = "HYBRID_POWER_STATION.EDIT_HYBRID_POWER_STATION_LOAD";
272
  	$scope.hybridpowerstationload = params.hybridpowerstationload;
273
	$scope.points=params.points;
274
	$scope.meters=params.meters;
275
  	$scope.ok = function() {
276
  		$uibModalInstance.close($scope.hybridpowerstationload);
277
  	};
278
279
  	$scope.cancel = function() {
280
  		$uibModalInstance.dismiss('cancel');
281
  	};
282
  });
283
284
  app.controller('ModalBindHybridPowerStationLoadCtrl', function(
285
	$scope,
286
	$uibModalInstance,
287
	toaster,
288
	$translate,
289
	HybridPowerStationLoadService,
290
	PointService,
291
	params) {
292
	$scope.operation = "HYBRID_POWER_STATION.EDIT_HYBRID_POWER_STATION_LOAD";
293
	$scope.hybridpowerstationid = params.hybridpowerstationid;
294
	$scope.hybridpowerstationload = params.hybridpowerstationload;
295
	$scope.datasources=params.datasources;
296
	$scope.boundpoints=params.boundpoints;
297
298
	let headers = { "User-UUID": params.user_uuid, "Token": params.token };
299
	HybridPowerStationLoadService.getPointsByLoadID($scope.hybridpowerstationid, $scope.hybridpowerstationload.id, headers, function (response) {
300
		if (angular.isDefined(response.status) && response.status === 200) {
301
			$scope.boundpoints = response.data;
302
		} else {
303
			$scope.boundpoints = [];
304
		}
305
	});
306
307
	$scope.cancel = function() {
308
		$uibModalInstance.dismiss('cancel');
309
	};
310
311
    $scope.changeDataSource = function (item, model) {
312
		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...
313
        $scope.currentDataSource = model;
314
		console.log($scope.currentDataSource);
315
        $scope.getPointsByDataSourceID($scope.currentDataSource);
316
    };
317
318
    $scope.getPointsByDataSourceID = function(id) {
319
		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...
320
		let headers = { "User-UUID": params.user_uuid, "Token": params.token };
321
        PointService.getPointsByDataSourceID(id, headers, function (response) {
322
            if (angular.isDefined(response.status) && response.status === 200) {
323
                $scope.points = response.data;
324
            } else {
325
                $scope.points = [];
326
            }
327
        });
328
    };
329
330
    $scope.pairPoint = function (dragEl, dropEl) {
331
        var pointid = angular.element('#' + dragEl).scope().point.id;
332
		let headers = { "User-UUID": params.user_uuid, "Token": params.token };
333
        HybridPowerStationLoadService.addPair(params.hybridpowerstationid, params.hybridpowerstationload.id, pointid, headers, function (response) {
334
            if (angular.isDefined(response.status) && response.status === 201) {
335
                toaster.pop({
336
                    type: "success",
337
                    title: $translate.instant("TOASTER.SUCCESS_TITLE"),
338
                    body: $translate.instant("TOASTER.BIND_POINT_SUCCESS"),
339
                    showCloseButton: true,
340
                });
341
                let headers = { "User-UUID": params.user_uuid, "Token": params.token };
342
				HybridPowerStationLoadService.getPointsByLoadID(params.hybridpowerstationid, params.hybridpowerstationload.id, headers, function (response) {
343
					if (angular.isDefined(response.status) && response.status === 200) {
344
						$scope.boundpoints = response.data;
345
					} else {
346
						$scope.boundpoints = [];
347
					}
348
				});
349
            } else {
350
                toaster.pop({
351
                    type: "error",
352
                    title: $translate.instant(response.data.title),
353
                    body: $translate.instant(response.data.description),
354
                    showCloseButton: true,
355
                });
356
            }
357
        });
358
    };
359
360
    $scope.deletePointPair = function (dragEl, dropEl) {
361
        if (angular.element('#' + dragEl).hasClass('source')) {
362
            return;
363
        }
364
365
		var pointid  = angular.element('#' + dragEl).scope().boundpoint.id;
366
		let headers = { "User-UUID": params.user_uuid, "Token": params.token };
367
        HybridPowerStationLoadService.deletePair(params.hybridpowerstationid, params.hybridpowerstationload.id, pointid, headers, function (response) {
368
            if (angular.isDefined(response.status) && response.status === 204) {
369
                toaster.pop({
370
                    type: "success",
371
                    title: $translate.instant("TOASTER.SUCCESS_TITLE"),
372
                    body: $translate.instant("TOASTER.UNBIND_POINT_SUCCESS"),
373
                    showCloseButton: true,
374
                });
375
                let headers = { "User-UUID": params.user_uuid, "Token": params.token };
376
				HybridPowerStationLoadService.getPointsByLoadID(params.hybridpowerstationid, params.hybridpowerstationload.id, headers, function (response) {
377
					if (angular.isDefined(response.status) && response.status === 200) {
378
						$scope.boundpoints = response.data;
379
					} else {
380
						$scope.boundpoints = [];
381
					}
382
				});
383
            } else {
384
                toaster.pop({
385
                    type: "error",
386
                    title: $translate.instant(response.data.title),
387
                    body: $translate.instant(response.data.description),
388
                    showCloseButton: true,
389
                });
390
            }
391
        });
392
    };
393
394
  });