@rdkmaster/jigsaw-labs
Version:
Jigsaw, the next generation component set for RDK
252 lines (251 loc) • 9.87 kB
TypeScript
import { TemplateRef, Type } from "@angular/core";
import { RawTableData, TableData } from "../../core/data/table-data";
import { SortAs, SortOrder } from "../../core/data/component-data";
import { TableCellRendererBase } from "./table-renderer";
export declare type TableColumnTarget = number | string | (number | string)[];
export declare type ColumnDefineGenerator = (field: string, index: number) => ColumnDefine;
export declare type TableCellDataGenerator = (tableData: TableData, row: number, column: number, additionalData: AdditionalTableData) => any;
export declare class TableValueGenerators {
static rowIndexGenerator(tableData: TableData, row: number): any;
static originCellDataGenerator(tableData: TableData, row: number, column: number): any;
}
export declare class ColumnDefine {
target?: TableColumnTarget;
visible?: boolean;
width?: string | number;
header?: TableHeader;
cell?: TableCell;
group?: boolean;
}
export declare class AdditionalColumnDefine {
pos?: number;
visible?: boolean;
width?: string | number;
header?: TableHeader;
cell?: TableCell;
group?: boolean;
}
export declare class TableDataChangeEvent {
field: string | number;
row: number | number[];
column: number;
cellData: string | number;
oldCellData: string | number;
}
export declare type TableAsyncRenderer = () => TemplateRef<any>;
export declare type TableSyncRenderer = Type<TableCellRendererBase> | TemplateRef<any>;
export declare type TableRenderer = TableSyncRenderer | TableAsyncRenderer | string;
export declare class TableHeader {
text?: string;
renderer?: TableRenderer;
clazz?: string;
sortable?: boolean;
sortAs?: SortAs;
defaultSortOrder?: SortOrder;
}
export declare class TableCell {
renderer?: TableRenderer;
rendererInitData?: any;
clazz?: string;
editable?: boolean;
editorRenderer?: TableRenderer;
editorRendererInitData?: any;
data?: any | TableCellDataGenerator;
tooltip?: any;
innerHtmlContext?: any;
}
export declare class TableHeadSetting {
cellData: string | number;
width: string | number;
visible: boolean;
renderer: Type<TableCellRendererBase> | TemplateRef<any>;
clazz: string;
sortable: boolean;
sortAs: SortAs;
defaultSortOrder: SortOrder;
field: string;
}
export declare class TableCellSetting {
cellData: any;
width: string | number;
visible: boolean;
renderer: Type<TableCellRendererBase> | TemplateRef<any>;
rendererInitData: any;
clazz: string;
editable: boolean;
editorRenderer: Type<TableCellRendererBase> | TemplateRef<any>;
editorRendererInitData: any;
group: boolean;
field: string;
rowSpan: number;
tooltip: any;
innerHtmlContext: any;
}
export declare class SortChangeEvent {
sortAs: SortAs;
order: SortOrder;
field: string;
}
/**
* @internal
*/
export declare function _getColumnIndex(data: TableData, additionalData: TableData, field: string): [number, TableData];
/**
* 用户在界面上,通过渲染器“摸”了表格的附加列之后,表格会将用户当时“摸过”列的相关信息,
* 以此类型保存在内存中备用。这些数据是渲染器在判定哪些列被“摸过”时的关键数据,
* 应用也可以通过`AdditionalTableData`的各个api更新这些数据。
*
* $since = v1.1.4
*/
export declare class TouchedValue {
key: any | any[];
value: any;
data: any[];
}
export declare class AdditionalTableData extends TableData {
/**
* 这个属性的值与`JigsawTable.trackRowBy`的值是相等的,关于这个属性的作用,
* 请访问[这个链接]($demo=table/checkbox-column#open-desc=true)。
*/
trackRowBy: string;
originData: RawTableData;
private _touchedValues;
private _trackRowByFields;
private _fixTrackRowFields();
private _toFieldString(field);
/**
* $deprecatedFrom = v1.1.4
* $replacement = clearTouchedValues()
*
* @deprecated
*/
clearCachedValues(): void;
/**
* 清空所有数据
*
* $since = v1.1.4
*/
clearTouchedValues(): void;
reset(): void;
private _getKeysByRow(field, row);
/**
* $deprecatedFrom = v1.1.4
* $replacement = touchValueByRow()
*
* @deprecated
*
* @param {string | number} field
* @param {number} row
* @param value
*/
cacheValue(field: string | number, row: number, value: any): void;
/**
* 更新用户“摸过”的单元格的值。
*
* $since = v1.1.4
*
* @param {string | number} field 需要更新的列名或者列索引
* @param {number} row 当前页行索引,只支持更新表格的当前页数据,如果需要更新其他页的数据,请使用`touchValue()`方法
* @param value 将此变量替代缓存里的数据,如果缓存里不存在对应的数据,则会新建一个对应的数据
*/
touchValueByRow(field: string | number, row: number, value: any): void;
/**
* 更新用户“摸过”的单元格的值。如果需要更新的是当前页,则通过`touchValueByRow()`方法更新会更方便些。
*
* $since = v1.1.4
*
* @param {string | number} field 需要更新的列名或者列索引
* @param {any | any[]} key 通过此值来确定更新缓存中的哪一行或者哪些行的数据,
* 一般需要配合[`trackRowBy`属性]($demo=table/checkbox-column#open-desc=true)一起使用。
* @param value 将此变量替代缓存里的数据,如果缓存里不存在对应的数据,则会新建一个对应的数据
* @param {any[]} data 可选,表格内置渲染器会自动将该行对应的数据存放在这个属性上,
* 方便应用在需要时使用该行的其他数据。
*/
touchValue(field: string | number, key: any | any[], value: any, data?: any[]): void;
/**
* 获取用户“摸过”的单元格的数据
* - 如果需要获取缓存的详细信息,请使用`getTouchedInfoByRow()`
* - 如果需要获取其他页的信息,请使用`getTouchedValue()`或者`getTouchedInfo()`
*
* $since = v1.1.4
*
* @param {string | number} field 需要获取的列名或者列索引
* @param {number} row 当前页行索引,支持获取表格的当前页数据,如果需要获取其他页的数据,请使用`getTouchedValue()`方法
* @return {any} 用户“摸过”之后改单元格的新值。
*/
getTouchedValueByRow(field: string | number, row: number): any;
/**
* 获取用户“摸过”的单元格的详细信息,可以直接更新得到的值,调用`JigsawTable.update()`方法可以刷新界面。
*
* 只能返回当前页的数据,如果需要获取其他页的数据,请使用`getTouchedInfo()`。
*
* $since = v1.1.4
*
* @param {string | number} field 需要获取的列名或者列索引
* @param {number} row 当前页行索引,支持获取表格的当前页数据,如果需要获取其他页的数据,请使用`getTouchedValue()`方法
* @return {TouchedValue} 用户“摸过”之后该单元格对应缓存数据对象。
*/
getTouchedInfoByRow(field: string | number, row: number): TouchedValue;
/**
* 获取用户“摸过”的单元格的值,可获取任意页的缓存数据。
*
* $since = v1.1.4
*
* @param {string | number} field 需要获取的列名或者列索引
* @param {any | any[]} key
* @return {any}
*/
getTouchedValue(field: string | number, key: any | any[]): any;
/**
* @deprecated
*
* @param {string | number} field
* @param {number} row 按行索引取值的重载**已经被废弃**,请使用`getTouchedValueByRow()`替代。
* @returns {any}
*/
getTouchedValue(field: string | number, row: number): any;
/**
* 获取用户“摸过”的单元格的详细信息,可以直接更新得到的值,调用`JigsawTable.update()`方法可以刷新界面。
*
* 通过此方法可获取任意页的缓存数据。
*
* $since = v1.1.4
*
* @param {string | number} field 需要获取的列名或者列索引
* @param {any | any[]} key 通过此值来确定更新缓存中的哪一行或者哪些行的数据,
* 一般需要配合[`trackRowBy`属性]($demo=table/checkbox-column#open-desc=true)一起使用。
* @return {TouchedValue}
*/
getTouchedInfo(field: string | number, key: any | any[]): TouchedValue;
/**
* 当表格单元格的值是对象而非简单类型的时候,对key的比较需要采用严格模式
*
* $since = v1.1.4
*
* @param key1
* @param key2
* @return {boolean}
* @private
*/
private _isKeyEquals(key1, key2);
private _getObjectValue(obj);
/**
* $deprecatedFrom = v1.1.4
* $replacement = getAllTouched()
*
* @deprecated
*
* @param {string | number} field
* @returns {TouchedValue[]}
*/
getTouchedValues(field: string | number): TouchedValue[];
/**
* 获取用户在表格上“摸过”的所有行的详细信息,对这些信息做修改后调用`JigsawTable.update()`方法可以刷新界面
*
* $since = v1.1.4
*
* @param {string | number} field 需要获取的列名或者列索引
* @returns {TouchedValue[]} 返回所有行的详细信息
*/
getAllTouched(field: string | number): TouchedValue[];
}