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