From 27cd36be226ca2434f06b1ae9e4d43f1fea639ab Mon Sep 17 00:00:00 2001
From: fengxiang <110431245@qq.com>
Date: Mon, 25 Jun 2018 16:40:28 +0800
Subject: [PATCH] 组织配置单位和页面显示

---
 src/app/routes/sensors/basic-info/sensor-unit/sensor-unit.component.ts |  135 ++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 126 insertions(+), 9 deletions(-)

diff --git a/src/app/routes/sensors/basic-info/sensor-unit/sensor-unit.component.ts b/src/app/routes/sensors/basic-info/sensor-unit/sensor-unit.component.ts
index 35a0948..2965818 100644
--- a/src/app/routes/sensors/basic-info/sensor-unit/sensor-unit.component.ts
+++ b/src/app/routes/sensors/basic-info/sensor-unit/sensor-unit.component.ts
@@ -1,7 +1,12 @@
 import { Component, OnInit } from '@angular/core';
 import { _HttpClient } from '@delon/theme';
 import { NzModalSubject } from 'ng-zorro-antd';
-import { FormGroup } from '@angular/forms';
+import { FormGroup, Validators, FormBuilder, FormControl } from '@angular/forms';
+import { Sensor, SensorUnit, OperatorRule } from '@business/entity/data';
+import { ToolsService } from '@business/services/util/tools.service';
+import { Operator, ResultCode } from '@business/enum/types.enum';
+import { ResultBean } from '@business/entity/grid';
+import { SensorUnitService } from '@business/services/http/sensor-unit.service';
 
 @Component({
   selector: 'app-sensor-unit',
@@ -10,13 +15,44 @@
 export class SensorUnitComponent implements OnInit {
     public isSaving = false;
     public validateForm: FormGroup;
-    public data: any;
+    public operatorOptions: {label: string, value: Operator} [] = [
+      {label: '���', value: Operator.PLUS},
+      {label: '���', value: Operator.MINUS},
+      {label: '���', value: Operator.MULTIPLY},
+      {label: '���', value: Operator.DIVIDE}
+    ];
+    // public rule = '���';
+    public data: Sensor;
+    public dataList: SensorUnit[] = [];
     constructor(
         private subject: NzModalSubject,
-        private http: _HttpClient
+        private formBuilder: FormBuilder,
+        private http: _HttpClient,
+        private sensorUnitService: SensorUnitService
     ) { }
-
+    loadDataList() {
+      this.sensorUnitService.getListBySensorId(this.data.id).subscribe(
+        res => {
+          if (res.code === 1 ) {
+            this.dataList = res.data;
+          }
+        }
+      );
+    }
     ngOnInit() {
+      this.loadDataList();
+      const validates: SensorUnit  = {
+           id: [null ],
+           sensorId: [this.data.id, [Validators.required] ],
+           name: [null, [Validators.required] ]
+      };
+      validates['_rule-operator'] = [Operator.MULTIPLY];
+      validates['_rule-value'] = 1000;
+      validates['_rules'] =  [null, [Validators.required]];
+      this.validateForm = this.formBuilder.group(
+          validates
+      );
+      // this.validateForm.controls['_rules'].disable();
     }
     save($event, value, valid) {
         $event.preventDefault();
@@ -25,19 +61,100 @@
             this.validateForm.controls[ i ].disable();
           } 
           this.isSaving = true;
-          Object.keys(value).forEach( (key: string) => {
-                // '_'������������������������������
-                if (!key.startsWith('_') && value[key] != null) {
-                     this.data[key] = value[key];
+          ToolsService.removePrivate(value);
+          const sensorUnit: SensorUnit = {};
+          Object.assign(sensorUnit, value);
+          sensorUnit['rules'] = this.rulesToString(this.rules);
+          sensorUnit['originalUnitName'] = this.data.unit;
+          console.log(JSON.stringify(sensorUnit));
+          this.http.post('sensor-unit/add-or-modify', sensorUnit).subscribe(
+            (res: ResultBean<any>) => {
+                if (!!res.code) {
+                  for (const i in this.validateForm.controls) {
+                    this.validateForm.controls[ i ].enable();
+                  }
+                  this.isSaving = false;
+                  this.loadDataList();
+                  this.reset();
                 }
-          } );
+            }
+          );
         } else {
           this.validate(); 
         }
+    }
+    toEdit(item) {      
+        this.reset();
+        this.setValueToControl('id', item.id);
+        this.setValueToControl('name', item.name);
+    }
+    delete(id) {
+      this.http.get('sensor-unit/delete', {id: id}).subscribe(
+          (res: ResultBean<any>) => {
+             if (!!res.code ) {
+               this.loadDataList();
+             }
+          }
+      );
     }
     validate() {
         for (const i in this.validateForm.controls) {
           this.validateForm.controls[ i ].markAsDirty();
         }
      }
+     private rules: OperatorRule[] = [];
+     addRule(event) {
+      event.preventDefault();
+      const rule: OperatorRule = {
+        operator: this.getValueFormControl('_rule-operator'),
+        value: this.getValueFormControl('_rule-value')
+      };
+      this.rules.push(rule);
+      this.setValueToControl('_rules' , this.rulesToString(this.rules, '������'));
+     }
+     rulesToString(rules , dataLabel?: string) {     
+        let rulesString = '' ;
+        dataLabel = dataLabel === undefined ? '{0}' : dataLabel;
+        if (!!this.rules && this.rules.length > 0) {
+            // const dataLabel = '������';
+            rulesString += dataLabel ;
+            this.rules.forEach(rule => {
+              if (!rulesString.endsWith(dataLabel)) {
+                rulesString = '(' + rulesString + ')';
+              }              
+               switch (rule.operator) {
+                  case Operator.PLUS: rulesString += '+' + rule.value + 'd'; break;
+                  case Operator.MINUS: rulesString += '-' + rule.value + 'd'; break;
+                  case Operator.MULTIPLY: rulesString += '*' + rule.value + 'd'; break;
+                  case Operator.DIVIDE: rulesString += '/' + rule.value + 'd'; break;
+               }
+            });
+        }
+        return rulesString;
+     }
+     getValueFormControl(controlName: string) {
+       return ToolsService.getValueFormControl(this.validateForm, controlName);
+     }
+     setValueToControl(controlName: string, value: any) {
+      ToolsService.setValueToControl(this.validateForm, controlName, value);
+     }
+     clearRules(event) {
+      event.preventDefault();
+      this.rules = [];
+      this.setValueToControl('_rules', this.rulesToString(this.rules, '������'));
+     }
+    //  print() {
+    //      debugger;
+    //      console.log(this.validateForm.controls['_rule']);
+    //  }
+    reset(event?: any) {
+      if (!!event) {
+        event.preventDefault();
+      }
+      this.setValueToControl('id', null);
+      this.setValueToControl('name', null);
+      this.setValueToControl('_rules', null);
+      this.setValueToControl('_rule-operator', Operator.MULTIPLY);
+      this.setValueToControl('_rule-value', 1000);
+    }
 }

--
Gitblit v1.8.0