fengxiang
2017-12-29 f01d6b7e6bf8132524c1c2821fdcbbc5ca548369
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,27 +18,40 @@
    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();
    }
@@ -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;
            }