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