From 9200567a17b5a567ed14529fa0208618b4867938 Mon Sep 17 00:00:00 2001 From: fengxiang <110431245@qq.com> Date: Thu, 05 Jul 2018 16:03:25 +0800 Subject: [PATCH] 设备型号配置优化 --- src/app/routes/devices/version/version-sensor-config/version-sensor-config.component.ts | 88 +++++++++++++++++++++++++++++++++++++------ 1 files changed, 75 insertions(+), 13 deletions(-) diff --git a/src/app/routes/devices/version/version-sensor-config/version-sensor-config.component.ts b/src/app/routes/devices/version/version-sensor-config/version-sensor-config.component.ts index 600dd37..793d971 100644 --- a/src/app/routes/devices/version/version-sensor-config/version-sensor-config.component.ts +++ b/src/app/routes/devices/version/version-sensor-config/version-sensor-config.component.ts @@ -4,6 +4,8 @@ import { PageBean, Grid } from '@business/entity/grid'; import { Sensor } from '@business/entity/data'; import { Subject } from 'rxjs/Subject'; +import { count } from 'rxjs/operator/count'; +import { debounce } from 'rxjs/operators'; @Component({ selector: 'app-version-sensor-config', @@ -13,8 +15,10 @@ export class VersionSensorConfigComponent implements OnInit { deviceVersionId: number; selectedSensorIds: number[]; + originalOrder: { [key: string]: number} = {}; isSaving = false; grid: Grid<Sensor> = new Grid(null); + public searchValue = ''; private initPage() { const sensor: Sensor = { name: { @@ -44,6 +48,24 @@ this.grid.title = '���������'; this.grid.setColumns(sensor); this.grid.pageSize = 0; + this.subjectStream.debounceTime(500).distinctUntilChanged().subscribe( + name => { + if (!name || !name.trim()) { + this.gridDataImage = this.grid.data; + } else { + this.gridDataImage = this.grid.data.filter( + item => { + name = name.trim().toLowerCase(); + if (!!item.name.toLowerCase().match(name)) { + return true; + } else { + return false; + } + } + ); + } + } + ); } constructor( private subject: NzModalSubject, @@ -54,6 +76,7 @@ this.initPage(); this.load(); } + public gridDataImage = []; load() { // ������������������ExpressionChangedAfterItHasBeenCheckedError setTimeout(() => { @@ -64,6 +87,7 @@ this.grid.loading = true; if (res != null && res.data != null) { this.grid.initData(res); + this.gridDataImage = this.grid.data; this.grid.data.map( (row: any) => { row['checked'] = this.selectedSensorIds.filter( @@ -77,6 +101,9 @@ setTimeout(() => { this.grid.loading = false; }, 1); + this.grid.data.forEach((item, index) => { + this.originalOrder[item.id] = index; + }); } } ); @@ -88,18 +115,53 @@ $event.preventDefault(); this.subject.next( this ); } - - sort(field: string, value: string) { - // ������������field - this.grid.sorts = this.grid.sorts.filter( - (fn: string) => { - return fn !== field; - } - ); - // ������value������null������������������������������filed - if (value != null) { - this.grid.sorts.push(field); - } - this.load(); + public get selectedCount(): number { + let selectedCount = 0; + this.grid.data.forEach( + item => { + if (item['checked']) { + selectedCount++; + } + } + ); + return selectedCount; } + sort(field: string, value: string) { + const data = this.grid.data.sort( + (a, b) => { + let aWeight = 0; + let bWeight = 0; + // debugger; + if (!!value) { + if (value === 'ascend') { + aWeight = a['checked'] ? 1 : 0; + bWeight = b['checked'] ? 1 : 0; + } else { + aWeight = a['checked'] ? 0 : 1; + bWeight = b['checked'] ? 0 : 1; + } + } else { + const idMap = this.originalOrder; + aWeight = idMap[a.id]; + bWeight = idMap[b.id]; + } + return aWeight - bWeight; + } + ); + this.grid.data = data; + this.gridDataImage = []; + setTimeout(() => { + this.gridDataImage = data; + }, 1); + // this.subjectStream.next(null); + // setTimeout(() => { + // this.grid.data = data; + // this.grid.refreshStatus(); + // }, 1); + } + private subjectStream: Subject<string> = new Subject<string> (); + public setSearchValue(name) { + this.searchValue = name; + this.subjectStream.next(name); + } } -- Gitblit v1.8.0