From 39ea49edce74ae063ca0afd9b2966f861e256a3e Mon Sep 17 00:00:00 2001
From: fengxiang <110431245@qq.com>
Date: Tue, 17 Apr 2018 13:18:36 +0800
Subject: [PATCH] ts fix,组织报警间隔时间设置

---
 src/app/routes/systems/organization/organization-config/organization-config.component.ts |  199 ++++++++++++++++++++++++++++---------------------
 1 files changed, 114 insertions(+), 85 deletions(-)

diff --git a/src/app/routes/systems/organization/organization-config/organization-config.component.ts b/src/app/routes/systems/organization/organization-config/organization-config.component.ts
index 3d385de..607f51d 100644
--- a/src/app/routes/systems/organization/organization-config/organization-config.component.ts
+++ b/src/app/routes/systems/organization/organization-config/organization-config.component.ts
@@ -1,8 +1,7 @@
 import { NzMessageService } from 'ng-zorro-antd';
 import { filter } from 'rxjs/operators';
 import { HttpClient } from '@angular/common/http';
-import { FormGroup, FormBuilder, FormControl, Validators, FormArray } from '@angular/forms';
-import { SensorsService } from '@business/services/http/sensors.service';
+import { FormGroup, FormBuilder, FormControl, Validators, FormArray, AbstractControl } from '@angular/forms';
 import { Grid, PageBean } from '@business/entity/grid';
 import { Organization, AlarmConfig, AlarmSensorLevel, AlarmConfigValue } from '@business/entity/data';
 import { Component, OnInit, OnDestroy } from '@angular/core';
@@ -11,6 +10,7 @@
 import { AlarmConfigService } from '@business/services/http/alarm-config.service';
 import { AlarmStyle } from '@business/enum/types.enum';
 import { patterns } from '@business/enum/patterns.enum';
+import { ToolsService } from '@business/services/util/tools.service';
 
 @Component({
   selector: 'app-organization-config',
@@ -22,12 +22,11 @@
   ngOnDestroy(): void {
     this.backToList();
   }
-  private organization: Organization;
+  public organization: Organization;
   grid: Grid<object> = new Grid<object>(null);
   validateForm: FormGroup;
   constructor(
     private organizationService: OrganizationService,
-    private sensorsService: SensorsService,
     private alarmConfigService: AlarmConfigService,
     private formBuilder: FormBuilder,
     private http: _HttpClient,
@@ -48,7 +47,7 @@
     setTimeout(() => {
       this.grid.loading = true;
      }, 1);
-    let pageBean = this.organizationService.config.pageBean;
+    const pageBean = this.organizationService.config.pageBean;
     let resultBean = this.organizationService.config.resultBean;
     resultBean = resultBean == null ? {} : resultBean;
     if (pageBean != null && pageBean.data != null) {
@@ -63,26 +62,30 @@
       const alarmConfigValue = alarmConfig.value;
 
       const alarmLevels = alarmConfigValue.alarmLevels;
-      let alarmLevelsGroupsConfig = {};
+      const alarmLevelsGroupsConfig = {};
       Object.keys(alarmLevels).forEach(key => {
 
         let increment = alarmLevels[key].increment;
-        increment = increment == null || increment.length != 3 ? [0, 0, 0] : increment;
+        increment = increment == null || increment.length !== 3 ? [0, 0, 0] : increment;
         const incrementArray = this.formBuilder.array([
-          [increment[0], Validators.pattern(patterns.num)],
-          [increment[1], Validators.pattern(patterns.num)],
-          [increment[2], Validators.pattern(patterns.num)]
+          [increment[0]],
+          [increment[1]],
+          [increment[2]]
         ]);
         let degression = alarmLevels[key].degression;
-        degression = degression == null || degression.length != 3 ? [0, 0, 0] : degression;
+        degression = degression == null || degression.length !== 3 ? [0, 0, 0] : degression;
         const degressionArray =
           this.formBuilder.array([
-            [degression[0], Validators.pattern(patterns.num)],
-            [degression[1], Validators.pattern(patterns.num)],
-            [degression[2], Validators.pattern(patterns.num)]
+            [degression[0]],
+            [degression[1]],
+            [degression[2]]
           ]);
+        // ������������������������
+        // let _degressionEnable = degression[0] != 0 || degression[1] != 0 || degression[2] != 0;
+
         const alarmSensorGroup = this.formBuilder.group(
           {
+            degressEnable: [alarmLevels[key].degressEnable],
             enable: [alarmLevels[key].enable],
             increment: incrementArray,
             degression: degressionArray,
@@ -111,21 +114,23 @@
         alarmMode: this.formBuilder.group(
           {
             enable: [alarmMode.enable],
+            interval: [alarmMode.interval],
             level1: [alarmMode.level1],
             level2: [alarmMode.level2],
             level3: [alarmMode.level3]
           }
         ),
-        '_id':alarmConfig.id,
+        '_id': alarmConfig.id,
         '_allChecked': []
       });
       this.validateForm.statusChanges.subscribe(
          item => {
              this.setErrorMessage();
          }
-      )
+      );
       this.refreshIndeterminate();      
     }
+      this.refreshHasDegression(false);
         // ������������������ExpressionChangedAfterItHasBeenCheckedError
         setTimeout(() => {
           this.grid.loading = false;
@@ -140,7 +145,7 @@
   checkAll(param) {
     const keys = this.grid.data.map(
       item => {
-        return item['key'];
+        return item['sensorKey'];
       }
     );
     this._allCheckTriggers = 0;
@@ -152,29 +157,32 @@
     );
     this.refreshIndeterminate();
   }
-  private _allCheckTriggers: number = 0;
+  private _allCheckTriggers = 0;
   refreshIndeterminate() {
     const keys = this.grid.data.map(
       item => {
-        return item['key'];
+        return item['sensorKey'];
       }
     );
     const allChecked = keys.every(key => this.validateForm.get('alarmLevels.' + key + '.enable').value);
     const allUnChecked = keys.every(key => !this.validateForm.get('alarmLevels.' + key + '.enable').value);
     this.indeterminate = (!allChecked) && (!allUnChecked);
   }
+  isSaving = false;
   save($event, value, valid) {
     $event.preventDefault();
     if (valid) {
-       const data:AlarmConfig = {
-         id:value._id,
-         organizationId:this.organization.id,
-         value:value
-       }
+       this.isSaving = true;
+       const data: AlarmConfig = {
+         id: value._id,
+         organizationId: this.organization.id,
+         value: value
+       };
+      //  ToolsService.removePrivate(data.value);
        this.alarmConfigService.save(data).subscribe(
            result => {
-              if(result!=null&&result.code==1){
-                 this.msgSrv.success(this.organization.name+' ���������������');
+              if (result != null && result.code === 1) {
+                 this.msgSrv.success(this.organization.name + ' ���������������');
                  this.backToList();
               }
            }
@@ -182,84 +190,105 @@
     }
   }    
   
-  setErrorMessage(){
+  setErrorMessage() {
     this.errorMessage = '';
     const errObj = this.getLastError(this.validateForm);
-    if(errObj!=null&&Object.keys(errObj).length>0){
-     if(errObj['increment']){
+    if (errObj != null && Object.keys(errObj).length > 0) {
+     if (errObj['increment']) {
       this.errorMessage = '������ ������ ������ ������������';
-     } else if(errObj['degression']){
+     } else if (errObj['degression']) {
       this.errorMessage = '������������ ������������ ������������ ������������';
-     } else if(errObj['pattern']!=null&&errObj['pattern']['requiredPattern'] == '^'+patterns.num.toString()+'$'){
+     } else if (errObj['pattern'] != null && errObj['pattern']['requiredPattern'] === '^' + patterns.num.toString() + '$') {
       this.errorMessage = '���������������������';
      }
     }
 }
-  errorMessage:string = '';
+  errorMessage = '';
+  private removeError(error: 'increment'|'degression', ...controls: AbstractControl[]) {
+    controls.forEach(
+      item => {
+         if (item.hasError(error) && Object.keys(item.errors).length === 1) {
+           item.setErrors(null);
+         }
+      }
+   ); 
+  }
+  private addError(error: 'increment'|'degression', ...controls: AbstractControl[]) {
+    controls.forEach(
+      item => {
+        const errs = {};
+        errs[error] = true;
+        item.setErrors(errs);
+        item.markAsDirty();
+      }
+   ); 
+  }
   private alarmLevelValidator = (control: FormControl): { [s: string]: boolean } => {
-    let result = {};
-      const i0 = control.get("increment.0");
-      const i1 = control.get("increment.1");
-      const i2 = control.get("increment.2");
-      if ((i0.value != 0 || i1.value != 0 || i2.value != 0)&&(i0.value >= i1.value||i1.value >= i2.value)) {
-        i0.setErrors({ increment: true });
-        i0.markAsDirty();
-        i1.setErrors({ increment: true });
-        i1.markAsDirty();
-        i2.setErrors({ increment: true });
-        i2.markAsDirty();
-        result["increment"] = true;
-      }else{
-        if(i0.hasError('increment')&&Object.keys(i0.errors).length==1){
-          i0.setErrors(null);
+        const enable = control.get('enable').value;
+        const degressEnable = control.get('degressEnable').value;       
+        const i0 = control.get('increment.0');
+        const i1 = control.get('increment.1');
+        const i2 = control.get('increment.2');
+        const d0 = control.get('degression.0');
+        const d1 = control.get('degression.1');
+        const d2 = control.get('degression.2');
+        // ��������������� ������������������������������
+        if (!enable) {
+          this.removeError('increment', i0, i1, i2);
+          this.removeError('degression', d0, d1, d2);
+          return null;
         }
-        if(i1.hasError('increment')&&Object.keys(i1.errors).length==1){
-          i1.setErrors(null);
-        }
-        if(i2.hasError('increment')&&Object.keys(i2.errors).length==1){
-          i2.setErrors(null);
-        }
-      }
-      const d0 = control.get("degression.0");
-      const d1 = control.get("degression.1");
-      const d2 = control.get("degression.2");
-      if ((d0.value != 0 || d1.value != 0 || d2.value != 0)&&(d1.value >= d0.value||d2.value >= d1.value)) {
-        d0.setErrors({ degression: true });
-        d0.markAsDirty();
-        d1.setErrors({ degression: true });
-        d1.markAsDirty();
-        d2.setErrors({ degression: true });
-        d2.markAsDirty();
-        result["degression"] = true;
-      }else{
-        if(d0.hasError('degression')&&Object.keys(d0.errors).length==1){
-          d0.setErrors(null);
-        }
-        if(d1.hasError('degression')&&Object.keys(d1.errors).length==1){
-          d1.setErrors(null);
-        }
-        if(d2.hasError('degression')&&Object.keys(d2.errors).length==1){
-          d2.setErrors(null);
-        }
-      }
-      return Object.keys(result).length == 0?null:result;
-  };
-   getLastError(control:FormGroup|FormArray){
-         if(control.errors!=null){
+        const result = {};
+        const i0_value = parseInt(i0.value, 10);
+        const i1_value = parseInt(i1.value, 10);
+        const i2_value = parseInt(i2.value, 10);
+        if ((i0_value !== 0 || i1_value !== 0 || i2_value !== 0) && (i0_value >= i1_value || i1_value >= i2_value)) {
+          this.addError('increment', i0, i1, i2);
+          result['increment'] = true;
+        } else {
+          this.removeError('increment', i0, i1, i2);
+        } 
+        const d0_value = parseInt(d0.value, 10);
+        const d1_value = parseInt(d1.value, 10);
+        const d2_value = parseInt(d2.value, 10);
+          if (degressEnable && (d0_value !== 0 || d1_value !== 0 || d2_value !== 0) && (d1_value >= d0_value || d2_value >= d1_value)) {
+            this.addError('degression', d0, d1, d2);
+            result['degression'] = true;
+          } else {
+            this.removeError('degression', d0, d1, d2);
+          }
+        return Object.keys(result).length === 0 ? null : result;
+  }
+   getLastError(control: FormGroup|FormArray) {
+         if (control.errors != null) {
              return control.errors;
-         }else{
+         } else {
            const controls =   Object.values(control.controls);
-           for(let i = controls.length-1;i>=0;i--){
+           for (let i = controls.length - 1; i >= 0; i--) {
                 const c = controls[i];
-                if(c.errors!=null){
+                if (c.errors != null) {
                   return c.errors;
-                }else if(c instanceof FormArray||c instanceof FormGroup){
+                } else if (c instanceof FormArray || c instanceof FormGroup) {
                       const result = this.getLastError(c);
-                      if(result != null) {
+                      if (result != null) {
                          return result;
                       }
                 }
            }
          }
    }
+   public hasDegression = false;
+   public refreshHasDegression(value) {
+       if (value) {
+         this.hasDegression = true;
+       } else {
+        this.hasDegression = Object.values(this.validateForm.value['alarmLevels']).some(
+             ( item: any) => {
+                return item['degressEnable'];
+             }
+          );
+       }
+   }
+   // ���������
+   parserInt = (value) => parseInt(value , 10);
 }

--
Gitblit v1.8.0