Passed
Push — master ( 183c79...49504c )
by
unknown
12:19 queued 13s
created

myems-admin/app/controllers/settings/energystoragecontainer/energystoragecontainerfirecontrol.controller.js   D

Complexity

Total Complexity 59
Complexity/F 1.34

Size

Lines of Code 557
Function Count 44

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 59
eloc 390
dl 0
loc 557
rs 4.08
c 0
b 0
f 0
mnd 15
bc 15
fnc 44
bpm 0.3409
cpm 1.3409
noi 2

How to fix   Complexity   

Complexity

Complex classes like myems-admin/app/controllers/settings/energystoragecontainer/energystoragecontainerfirecontrol.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(
4
  "EnergyStorageContainerFirecontrolController",
5
  function (
6
    $scope,
7
    $rootScope,
8
    $window,
9
    $translate,
10
    $uibModal,
11
    EnergyStorageContainerService,
12
    EnergyStorageContainerFirecontrolService,
13
    EnergyStorageContainerDataSourceService,
14
	PointService,
15
    toaster,
16
    SweetAlert
17
  ) {
18
    $scope.energystoragecontainers = [];
19
    $scope.energystoragecontainerfirecontrols = [];
20
    $scope.points = [];
21
    $scope.currentEnergyStorageContainer = null;
22
    $scope.cur_user = JSON.parse(
23
      $window.localStorage.getItem("myems_admin_ui_current_user")
24
    );
25
    $scope.getAllEnergyStorageContainers = function () {
26
      let headers = {
27
        "User-UUID": $scope.cur_user.uuid,
28
        Token: $scope.cur_user.token,
29
      };
30
      EnergyStorageContainerService.getAllEnergyStorageContainers(
31
        headers,
32
        function (response) {
33
          if (angular.isDefined(response.status) && response.status === 200) {
34
            $scope.energystoragecontainers = response.data;
35
          } else {
36
            $scope.energystoragecontainers = [];
37
          }
38
        }
39
      );
40
    };
41
42
    $scope.getDataSourcesByEnergyStorageContainerID = function (id) {
43
		let headers = {
44
		  "User-UUID": $scope.cur_user.uuid,
45
		  Token: $scope.cur_user.token,
46
		};
47
		EnergyStorageContainerDataSourceService.getDataSourcesByEnergyStorageContainerID(
48
		  id,
49
		  headers,
50
		  function (response) {
51
			if (angular.isDefined(response.status) && response.status === 200) {
52
			  $scope.datasources = response.data;
53
			} else {
54
			  $scope.datasources = [];
55
			}
56
		  }
57
		);
58
	  };
59
60
    $scope.getDataSourcePointsByEnergyStorageContainerID = function (id) {
61
      let headers = {
62
        "User-UUID": $scope.cur_user.uuid,
63
        Token: $scope.cur_user.token,
64
      };
65
      EnergyStorageContainerDataSourceService.getDataSourcePointsByEnergyStorageContainerID(
66
        id,
67
        headers,
68
        function (response) {
69
          if (angular.isDefined(response.status) && response.status === 200) {
70
            $scope.points = response.data;
71
          } else {
72
            $scope.points = [];
73
          }
74
        }
75
      );
76
    };
77
78
    $scope.getEnergyStorageContainerFirecontrolsByEnergyStorageContainerID =
79
      function (id) {
80
        let headers = {
81
          "User-UUID": $scope.cur_user.uuid,
82
          Token: $scope.cur_user.token,
83
        };
84
        EnergyStorageContainerFirecontrolService.getEnergyStorageContainerFirecontrolsByEnergyStorageContainerID(
85
          id,
86
          headers,
87
          function (response) {
88
            if (angular.isDefined(response.status) && response.status === 200) {
89
              $scope.energystoragecontainerfirecontrols = response.data;
90
            } else {
91
              $scope.energystoragecontainerfirecontrols = [];
92
            }
93
          }
94
        );
95
      };
96
97
    $scope.changeEnergyStorageContainer = function (item, model) {
98
      $scope.currentEnergyStorageContainer = item;
99
      $scope.currentEnergyStorageContainer.selected = model;
100
      $scope.is_show_add_energystoragecontainer_firecontrol = true;
101
      $scope.getEnergyStorageContainerFirecontrolsByEnergyStorageContainerID(
102
        $scope.currentEnergyStorageContainer.id
103
      );
104
	  $scope.getDataSourcesByEnergyStorageContainerID(
105
        $scope.currentEnergyStorageContainer.id
106
      );
107
	  $scope.getDataSourcePointsByEnergyStorageContainerID(
108
        $scope.currentEnergyStorageContainer.id
109
      );
110
    };
111
112
    $scope.addEnergyStorageContainerFirecontrol = function () {
113
      var modalInstance = $uibModal.open({
114
        templateUrl:
115
          "views/settings/energystoragecontainer/energystoragecontainerfirecontrol.model.html",
116
        controller: "ModalAddEnergyStorageContainerFirecontrolCtrl",
117
        windowClass: "animated fadeIn",
118
        resolve: {
119
          params: function () {
120
            return {
121
              points: angular.copy($scope.points),
122
            };
123
          },
124
        },
125
      });
126
      modalInstance.result.then(
127
        function (energystoragecontainerfirecontrol) {
128
          let headers = {
129
            "User-UUID": $scope.cur_user.uuid,
130
            Token: $scope.cur_user.token,
131
          };
132
          EnergyStorageContainerFirecontrolService.addEnergyStorageContainerFirecontrol(
133
            $scope.currentEnergyStorageContainer.id,
134
            energystoragecontainerfirecontrol,
135
            headers,
136
            function (response) {
137
              if (
138
                angular.isDefined(response.status) &&
139
                response.status === 201
140
              ) {
141
                toaster.pop({
142
                  type: "success",
143
                  title: $translate.instant("TOASTER.SUCCESS_TITLE"),
144
                  body: $translate.instant("TOASTER.SUCCESS_ADD_BODY", {
145
                    template: $translate.instant(
146
                      "ENERGY_STORAGE_CONTAINER.ENERGY_STORAGE_CONTAINER_FIRECONTROL"
147
                    ),
148
                  }),
149
                  showCloseButton: true,
150
                });
151
                $scope.getEnergyStorageContainerFirecontrolsByEnergyStorageContainerID(
152
                  $scope.currentEnergyStorageContainer.id
153
                );
154
				$scope.getDataSourcesByEnergyStorageContainerID(
155
				  $scope.currentEnergyStorageContainer.id
156
				);
157
				$scope.getDataSourcePointsByEnergyStorageContainerID(
158
				  $scope.currentEnergyStorageContainer.id
159
				);
160
                $scope.$emit(
161
                  "handleEmitEnergyStorageContainerFirecontrolChanged"
162
                );
163
              } else {
164
                toaster.pop({
165
                  type: "error",
166
                  title: $translate.instant("TOASTER.ERROR_ADD_BODY", {
167
                    template: $translate.instant(
168
                      "ENERGY_STORAGE_CONTAINER.ENERGY_STORAGE_CONTAINER_FIRECONTROL"
169
                    ),
170
                  }),
171
                  body: $translate.instant(response.data.description),
172
                  showCloseButton: true,
173
                });
174
              }
175
            }
176
          );
177
        },
178
        function () {}
179
      );
180
      $rootScope.modalInstance = modalInstance;
181
    };
182
183
    $scope.editEnergyStorageContainerFirecontrol = function (
184
      energystoragecontainerfirecontrol
185
    ) {
186
      var modalInstance = $uibModal.open({
187
        templateUrl:
188
          "views/settings/energystoragecontainer/energystoragecontainerfirecontrol.model.html",
189
        controller: "ModalEditEnergyStorageContainerFirecontrolCtrl",
190
        windowClass: "animated fadeIn",
191
        resolve: {
192
          params: function () {
193
            return {
194
              energystoragecontainerfirecontrol: angular.copy(
195
                energystoragecontainerfirecontrol
196
              ),
197
              points: angular.copy($scope.points),
198
            };
199
          },
200
        },
201
      });
202
203
      modalInstance.result.then(
204
        function (modifiedEnergyStorageContainerFirecontrol) {
205
          let headers = {
206
            "User-UUID": $scope.cur_user.uuid,
207
            Token: $scope.cur_user.token,
208
          };
209
          EnergyStorageContainerFirecontrolService.editEnergyStorageContainerFirecontrol(
210
            $scope.currentEnergyStorageContainer.id,
211
            modifiedEnergyStorageContainerFirecontrol,
212
            headers,
213
            function (response) {
214
              if (
215
                angular.isDefined(response.status) &&
216
                response.status === 200
217
              ) {
218
                toaster.pop({
219
                  type: "success",
220
                  title: $translate.instant("TOASTER.SUCCESS_TITLE"),
221
                  body: $translate.instant("TOASTER.SUCCESS_UPDATE_BODY", {
222
                    template: $translate.instant(
223
                      "ENERGY_STORAGE_CONTAINER.ENERGY_STORAGE_CONTAINER_FIRECONTROL"
224
                    ),
225
                  }),
226
                  showCloseButton: true,
227
                });
228
                $scope.getEnergyStorageContainerFirecontrolsByEnergyStorageContainerID(
229
                  $scope.currentEnergyStorageContainer.id
230
                );
231
				$scope.getDataSourcesByEnergyStorageContainerID(
232
				  $scope.currentEnergyStorageContainer.id
233
				);
234
				$scope.getDataSourcePointsByEnergyStorageContainerID(
235
				  $scope.currentEnergyStorageContainer.id
236
				);
237
                $scope.$emit(
238
                  "handleEmitEnergyStorageContainerFirecontrolChanged"
239
                );
240
              } else {
241
                toaster.pop({
242
                  type: "error",
243
                  title: $translate.instant("TOASTER.ERROR_UPDATE_BODY", {
244
                    template: $translate.instant(
245
                      "ENERGY_STORAGE_CONTAINER.ENERGY_STORAGE_CONTAINER_FIRECONTROL"
246
                    ),
247
                  }),
248
                  body: $translate.instant(response.data.description),
249
                  showCloseButton: true,
250
                });
251
              }
252
            }
253
          );
254
        },
255
        function () {
256
          //do nothing;
257
        }
258
      );
259
      $rootScope.modalInstance = modalInstance;
260
    };
261
    $scope.bindEnergyStorageContainerFirecontrolPoint = function (
262
      energystoragecontainerfirecontrol
263
    ) {
264
      var modalInstance = $uibModal.open({
265
        templateUrl:
266
          "views/settings/energystoragecontainer/energystoragecontainerfirecontrolpoint.model.html",
267
        controller: "ModalBindEnergyStorageContainerFirecontrolCtrl",
268
        windowClass: "animated fadeIn",
269
        resolve: {
270
          params: function () {
271
            return {
272
              user_uuid: $scope.cur_user.uuid,
273
              token: $scope.cur_user.token,
274
              energystoragecontainerid: $scope.currentEnergyStorageContainer.id,
275
              energystoragecontainerfirecontrol: angular.copy(
276
                energystoragecontainerfirecontrol
277
              ),
278
              meters: angular.copy($scope.meters),
279
              datasources: angular.copy($scope.datasources),
280
              points: angular.copy($scope.points),
281
            };
282
          },
283
        },
284
      });
285
      $rootScope.modalInstance = modalInstance;
286
    };
287
288
    $scope.deleteEnergyStorageContainerFirecontrol = function (
289
      energystoragecontainerfirecontrol
290
    ) {
291
      SweetAlert.swal(
292
        {
293
          title: $translate.instant("SWEET.TITLE"),
294
          text: $translate.instant("SWEET.TEXT"),
295
          type: "warning",
296
          showCancelButton: true,
297
          confirmButtonColor: "#DD6B55",
298
          confirmButtonText: $translate.instant("SWEET.CONFIRM_BUTTON_TEXT"),
299
          cancelButtonText: $translate.instant("SWEET.CANCEL_BUTTON_TEXT"),
300
          closeOnConfirm: true,
301
          closeOnCancel: true,
302
        },
303
        function (isConfirm) {
304
          if (isConfirm) {
305
            let headers = {
306
              "User-UUID": $scope.cur_user.uuid,
307
              Token: $scope.cur_user.token,
308
            };
309
            EnergyStorageContainerFirecontrolService.deleteEnergyStorageContainerFirecontrol(
310
              $scope.currentEnergyStorageContainer.id,
311
              energystoragecontainerfirecontrol.id,
312
              headers,
313
              function (response) {
314
                if (
315
                  angular.isDefined(response.status) &&
316
                  response.status === 204
317
                ) {
318
                  toaster.pop({
319
                    type: "success",
320
                    title: $translate.instant("TOASTER.SUCCESS_TITLE"),
321
                    body: $translate.instant("TOASTER.SUCCESS_DELETE_BODY", {
322
                      template: $translate.instant(
323
                        "ENERGY_STORAGE_CONTAINER.ENERGY_STORAGE_CONTAINER_FIRECONTROL"
324
                      ),
325
                    }),
326
                    showCloseButton: true,
327
                  });
328
                  $scope.getEnergyStorageContainerFirecontrolsByEnergyStorageContainerID(
329
                    $scope.currentEnergyStorageContainer.id
330
                  );
331
				  $scope.getDataSourcesByEnergyStorageContainerID(
332
					$scope.currentEnergyStorageContainer.id
333
				  );
334
				  $scope.getDataSourcePointsByEnergyStorageContainerID(
335
					$scope.currentEnergyStorageContainer.id
336
				  );
337
                  $scope.$emit(
338
                    "handleEmitEnergyStorageContainerFirecontrolChanged"
339
                  );
340
                } else {
341
                  toaster.pop({
342
                    type: "error",
343
                    title: $translate.instant("TOASTER.ERROR_DELETE_BODY", {
344
                      template: $translate.instant(
345
                        "ENERGY_STORAGE_CONTAINER.ENERGY_STORAGE_CONTAINER_FIRECONTROL"
346
                      ),
347
                    }),
348
                    body: $translate.instant(response.data.description),
349
                    showCloseButton: true,
350
                  });
351
                }
352
              }
353
            );
354
          }
355
        }
356
      );
357
    };
358
359
    $scope.getAllEnergyStorageContainers();
360
    $scope.$on(
361
      "handleBroadcastEnergyStorageContainerChanged",
362
      function (event) {
363
        $scope.getAllEnergyStorageContainers();
364
      }
365
    );
366
  }
367
);
368
369
app.controller(
370
  "ModalAddEnergyStorageContainerFirecontrolCtrl",
371
  function ($scope, $uibModalInstance, params) {
372
    $scope.operation =
373
      "ENERGY_STORAGE_CONTAINER.ADD_ENERGY_STORAGE_CONTAINER_FIRECONTROL";
374
    $scope.points = params.points;
375
    $scope.ok = function () {
376
      $uibModalInstance.close($scope.energystoragecontainerfirecontrol);
377
    };
378
379
    $scope.cancel = function () {
380
      $uibModalInstance.dismiss("cancel");
381
    };
382
  }
383
);
384
385
app.controller(
386
  "ModalEditEnergyStorageContainerFirecontrolCtrl",
387
  function ($scope, $uibModalInstance, params) {
388
    $scope.operation =
389
      "ENERGY_STORAGE_CONTAINER.EDIT_ENERGY_STORAGE_CONTAINER_FIRECONTROL";
390
    $scope.energystoragecontainerfirecontrol =
391
      params.energystoragecontainerfirecontrol;
392
    $scope.points = params.points;
393
    $scope.ok = function () {
394
      $uibModalInstance.close($scope.energystoragecontainerfirecontrol);
395
    };
396
397
    $scope.cancel = function () {
398
      $uibModalInstance.dismiss("cancel");
399
    };
400
  }
401
);
402
403
app.controller(
404
  "ModalBindEnergyStorageContainerFirecontrolCtrl",
405
  function (
406
    $scope,
407
    $uibModalInstance,
408
    toaster,
409
    $translate,
410
    EnergyStorageContainerFirecontrolService,
411
    PointService,
412
    params
413
  ) {
414
    $scope.operation =
415
      "ENERGY_STORAGE_CONTAINER.EDIT_ENERGY_STORAGE_CONTAINER_FIRECONTROL";
416
    $scope.energystoragecontainerid = params.energystoragecontainerid;
417
    $scope.energystoragecontainerfirecontrol =
418
      params.energystoragecontainerfirecontrol;
419
    $scope.datasources = params.datasources;
420
    $scope.boundpoints = params.boundpoints;
421
422
    let headers = { "User-UUID": params.user_uuid, Token: params.token };
423
    EnergyStorageContainerFirecontrolService.getPointsByFirecontrolID(
424
      $scope.energystoragecontainerid,
425
      $scope.energystoragecontainerfirecontrol.id,
426
      headers,
427
      function (response) {
428
        if (angular.isDefined(response.status) && response.status === 200) {
429
          $scope.boundpoints = response.data;
430
        } else {
431
          $scope.boundpoints = [];
432
        }
433
      }
434
    );
435
436
    $scope.cancel = function () {
437
      $uibModalInstance.dismiss("cancel");
438
    };
439
440
    $scope.changeDataSource = function (item, model) {
441
      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...
442
      $scope.currentDataSource = model;
443
      console.log($scope.currentDataSource);
444
      $scope.getPointsByDataSourceID($scope.currentDataSource);
445
    };
446
447
    $scope.getPointsByDataSourceID = function (id) {
448
      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...
449
      let headers = { "User-UUID": params.user_uuid, Token: params.token };
450
      PointService.getPointsByDataSourceID(id, headers, function (response) {
451
        if (angular.isDefined(response.status) && response.status === 200) {
452
          $scope.points = response.data;
453
        } else {
454
          $scope.points = [];
455
        }
456
      });
457
    };
458
459
    $scope.pairPoint = function (dragEl, dropEl) {
460
      var pointid = angular.element("#" + dragEl).scope().point.id;
461
      let headers = { "User-UUID": params.user_uuid, Token: params.token };
462
      EnergyStorageContainerFirecontrolService.addPair(
463
        params.energystoragecontainerid,
464
        params.energystoragecontainerfirecontrol.id,
465
        pointid,
466
        headers,
467
        function (response) {
468
          if (angular.isDefined(response.status) && response.status === 201) {
469
            toaster.pop({
470
              type: "success",
471
              title: $translate.instant("TOASTER.SUCCESS_TITLE"),
472
              body: $translate.instant("TOASTER.BIND_POINT_SUCCESS"),
473
              showCloseButton: true,
474
            });
475
            let headers = {
476
              "User-UUID": params.user_uuid,
477
              Token: params.token,
478
            };
479
            EnergyStorageContainerFirecontrolService.getPointsByFirecontrolID(
480
              params.energystoragecontainerid,
481
              params.energystoragecontainerfirecontrol.id,
482
              headers,
483
              function (response) {
484
                if (
485
                  angular.isDefined(response.status) &&
486
                  response.status === 200
487
                ) {
488
                  $scope.boundpoints = response.data;
489
                } else {
490
                  $scope.boundpoints = [];
491
                }
492
              }
493
            );
494
          } else {
495
            toaster.pop({
496
              type: "error",
497
              title: $translate.instant(response.data.title),
498
              body: $translate.instant(response.data.description),
499
              showCloseButton: true,
500
            });
501
          }
502
        }
503
      );
504
    };
505
506
    $scope.deletePointPair = function (dragEl, dropEl) {
507
      if (angular.element("#" + dragEl).hasClass("source")) {
508
        return;
509
      }
510
511
      var pointid = angular.element("#" + dragEl).scope().boundpoint.id;
512
      let headers = { "User-UUID": params.user_uuid, Token: params.token };
513
      EnergyStorageContainerFirecontrolService.deletePair(
514
        params.energystoragecontainerid,
515
        params.energystoragecontainerfirecontrol.id,
516
        pointid,
517
        headers,
518
        function (response) {
519
          if (angular.isDefined(response.status) && response.status === 204) {
520
            toaster.pop({
521
              type: "success",
522
              title: $translate.instant("TOASTER.SUCCESS_TITLE"),
523
              body: $translate.instant("TOASTER.UNBIND_POINT_SUCCESS"),
524
              showCloseButton: true,
525
            });
526
            let headers = {
527
              "User-UUID": params.user_uuid,
528
              Token: params.token,
529
            };
530
            EnergyStorageContainerFirecontrolService.getPointsByFirecontrolID(
531
              params.energystoragecontainerid,
532
              params.energystoragecontainerfirecontrol.id,
533
              headers,
534
              function (response) {
535
                if (
536
                  angular.isDefined(response.status) &&
537
                  response.status === 200
538
                ) {
539
                  $scope.boundpoints = response.data;
540
                } else {
541
                  $scope.boundpoints = [];
542
                }
543
              }
544
            );
545
          } else {
546
            toaster.pop({
547
              type: "error",
548
              title: $translate.instant(response.data.title),
549
              body: $translate.instant(response.data.description),
550
              showCloseButton: true,
551
            });
552
          }
553
        }
554
      );
555
    };
556
  }
557
);
558