Passed
Push — master ( 0609f7...f69d02 )
by
unknown
10:47
created

myems-admin/app/controllers/settings/microgrid/microgridheatpump.controller.js   F

Complexity

Total Complexity 62
Complexity/F 1.35

Size

Lines of Code 429
Function Count 46

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 62
eloc 310
dl 0
loc 429
rs 3.44
c 0
b 0
f 0
mnd 16
bc 16
fnc 46
bpm 0.3478
cpm 1.3478
noi 0

How to fix   Complexity   

Complexity

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