From f01d6b7e6bf8132524c1c2821fdcbbc5ca548369 Mon Sep 17 00:00:00 2001
From: fengxiang <110431245@qq.com>
Date: Fri, 29 Dec 2017 16:57:22 +0800
Subject: [PATCH] 设备型号完成

---
 src/app/core/entity/grid.ts |   41 +++++++++++++++++++++++++++--------------
 1 files changed, 27 insertions(+), 14 deletions(-)

diff --git a/src/app/core/entity/grid.ts b/src/app/core/entity/grid.ts
index 65331b3..4567923 100644
--- a/src/app/core/entity/grid.ts
+++ b/src/app/core/entity/grid.ts
@@ -1,11 +1,11 @@
-import { Type } from '@angular/core';
+import { Column } from '@core/entity/grid';
 import { Types } from '@core/enum/types.enum';
 export interface Column {
    text?: string;
    name?: string;
-   value?: any;
    width?: string;
-   sort?: boolean;
+   sort?: string;
+   isSort?: boolean;
    type?: DataType;
 }
 export interface DataType {
@@ -18,31 +18,44 @@
     pageSize?: number ; // ���������������
     total?: number;
     data?: any[];
-    queryParams?: string;    
+    queryParams?: string;
+    orderByClause?: string;
+    getOrderByClause ?(): string;
 }
-export class Grid implements PageBean {
+export class Grid<T> implements PageBean {
+    getOrderByClause(): string {
+        const orderby = this.sorts.map( (fn) => {
+          return this.columns.find( (col: Column) => {
+                 return fn === col.name;
+           } );
+        }).map( (col: Column) => {
+            const sort = col.sort.startsWith('asc') ? 'asc' : 'desc' ;
+            return col.name + '||' + sort;
+        }).join('|||');
+        return  encodeURI(orderby);
+    }
     title = '';
     pageIndex = 0; // ������
     pageSize = 10; // ������������������
-    data: any[] = [];
+    data: T[] = [];
     total = 0;
     queryParams = '';   
     pages = 0; // ���������
-    queryMap?: any = {};
     size  = 0;  // ���������������������
     sorts?: any[] = [];
+    loading = false;
     indeterminate = false;
     allChecked = false;
     selectedIndexs?: number[] = []; // ������������������
     columns?: Column[] = [];    
-    
+
     checkAll(value: boolean) {
         this.data.forEach(
-            row => {row.checked = value;}
-        )
+            row => {row['checked'] = value; }
+        ); 
         this.refreshStatus();
     }
-    getData():any[]{
+    getData(): any [] {
         return this.data;
     }
     initData(pageData: {data?: any[], total?: number}) {
@@ -57,11 +70,11 @@
     }
     refreshStatus() {
         const data = this.data;
-        const allChecked =   data.every(value => value.checked);
-        const allUnChecked = data.every(value => !value.checked);
+        const allChecked =   data.every(value => value['checked']);
+        const allUnChecked = data.every(value => !value['checked']);
         this.allChecked = allChecked;
         this.indeterminate = (!allChecked) && (!allUnChecked);
-        this.selectedIndexs = data.filter(value => value.checked).map(
+        this.selectedIndexs = data.filter(value => value['checked']).map(
             row => {
                return row['index'] != null ? row['index'] : 0;
             }

--
Gitblit v1.8.0