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