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