From 8ba4860a97cbff9e50e7a6b5d2c05b97816755c2 Mon Sep 17 00:00:00 2001
From: fengxiang <110431245@qq.com>
Date: Tue, 27 Mar 2018 09:41:23 +0800
Subject: [PATCH] 监控点 click事件实现

---
 src/app/routes/reports/query/query.component.ts   |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
 src/app/routes/reports/query/query.component.html |    5 ++++-
 2 files changed, 52 insertions(+), 1 deletions(-)

diff --git a/src/app/routes/reports/query/query.component.html b/src/app/routes/reports/query/query.component.html
index b9c3f1b..e449992 100644
--- a/src/app/routes/reports/query/query.component.html
+++ b/src/app/routes/reports/query/query.component.html
@@ -18,7 +18,10 @@
                             </nz-input>
                             <ng-template #nzTemplate>
                                 <div [ngStyle]="{'width': '240px', 'height': '240px', 'overflow-y' :'auto'}">
-                                    <nz-tree [nzNodes]="sensorOptions" [nzCheckable]="true" (nzCheck)="onSensorSelect($event)"></nz-tree>
+                                    <nz-tree [nzNodes]="sensorOptions"
+                                    (nzActivate)="onTreeClickSelect($event)"
+                                    (nzDeactivate)="onTreeClickSelect($event)"
+                                    [nzCheckable]="true" (nzCheck)="onSensorSelect($event)"></nz-tree>
                                 </div>
                             </ng-template>
                         </nz-popover>
diff --git a/src/app/routes/reports/query/query.component.ts b/src/app/routes/reports/query/query.component.ts
index b113d75..ad91fcb 100644
--- a/src/app/routes/reports/query/query.component.ts
+++ b/src/app/routes/reports/query/query.component.ts
@@ -16,6 +16,7 @@
 import * as $ from 'jquery';
 import { DateService } from '@business/services/util/date.service';
 import { zip } from 'rxjs/observable/zip';
+import { Subject } from 'rxjs/Subject';
 
 @Component({
   selector: 'app-query',
@@ -165,6 +166,46 @@
     ) { }    
     ngOnInit() {
         this.initPage();
+        // ������������ tree click ������
+        this.treeClickStream.debounceTime(1).subscribe( event => {
+            const data = event.node.data;  
+            console.log(data);    
+            if (data.id === -1) {
+                const children = data.children;
+                // ������������
+                if (!data.halfChecked && data.checked) {
+                    // ���������������
+                    data['checked'] = false;
+                    data['halfChecked'] = false;
+                    children.forEach(element => {
+                        element['checked'] = false;
+                    });
+                    this._sensors = {};
+                    // ������ ������ ������������
+                }else {
+                    // ������������
+                    children.forEach(element => {
+                        element['checked'] = true;
+                        this._sensors [element.id] = element.sensorKey;
+                    });
+                    data['checked'] = true;
+                    data['halfChecked'] = false;
+                }
+            }else {
+                const parentData = event.node.parent.data;
+                data['checked'] = !data['checked'];
+                if (data['checked']) {
+                    this._sensors [data.id] = data.sensorKey;
+                } else {
+                    delete this._sensors [data.id];
+                }
+                const length = Object.keys(this._sensors).length;
+                parentData['halfChecked'] = length > 0 
+                && this.sensorOptions[0].children.length > length;
+                parentData['checked'] = !parentData['halfChecked'] && length !== 0;
+            }
+            this.reloadSensorNames();
+        });
     }
     private initPage() {
         this.sensorsService.getPagingList(null, null).subscribe(
@@ -292,6 +333,10 @@
      * @type {string}
      * @memberof QueryComponent
      */  
+    private treeClickStream: Subject<any> = new Subject<any>();
+    public onTreeClickSelect(event): void {
+          this.treeClickStream.next(event);
+    }
     public onSensorSelect(event): void {
         const data = event.node.data;
         if (data.id === -1 && data.halfChecked === false) {
@@ -311,6 +356,9 @@
                 delete this._sensors[data.id];
              }
         }
+        this.reloadSensorNames();
+    }
+    private reloadSensorNames(): void {
         this._sensorNames = '';
         this.sensorOptions[0].children.forEach(
             sensor => {

--
Gitblit v1.8.0