import { Subscription } from 'rxjs/Subscription'; import { OnInit, TemplateRef, QueryList, AfterContentInit, OnDestroy, EventEmitter, ElementRef, AfterViewInit, NgZone, Renderer2, OnChanges, SimpleChanges, AfterViewChecked, ChangeDetectorRef, DoCheck } from '@angular/core'; import { TreeNode, RowNode, SelectEventArgs } from './types/treenode'; import { TreetableService } from './treetable.service'; import { FarrisTemplateDirective } from '../../common/farris-template.directive'; import { ResizeService, CommonUtils, ShortcutsService } from '../../common'; import { TreeTableColumn } from './types/treetable-column'; import { SearchHandle } from './search.handle'; import { ColumnFormatService } from '../column-format'; import { InputGroupComponent } from '../../inputs/input-group'; export declare class TreeTableColumnDirective { field: string; title: string; width?: number; hAlign?: string; align?: string; formatter?: Function; } export declare class TreeTableComponent implements OnInit, AfterContentInit, AfterViewInit, OnChanges, AfterViewChecked { ttService: TreetableService; el: ElementRef; resizeSer: ResizeService; private renderer; utils: CommonUtils; colFormatSer: ColumnFormatService; private shortcuts; private cdRef; /** 宽度 */ width: number; /** 高度 */ height: number; showFilterBar: boolean; headerHeight: number; /** * 列信息 */ columns: TreeTableColumn[]; fitColumns: boolean; searchFields: { label: string; value: string; }[]; allColumnsTitle: string; /** * 是否启用多选。 默认为单选 */ singleSelect: boolean; /** 启用多选后,是否显示checkbox */ showCheckbox: boolean; /** * 主键字段 */ idField: string; /** 显示图标 */ showIcon: boolean; /** 显示边框线 */ showBorder: boolean; showCheckAll: boolean; showHeader: boolean; /** 启用斑马线 */ striped: boolean; /** 启用鼠标划过效果 */ hovered: boolean; /** 禁用。 禁用时不允许选中行 */ disabled: boolean; /** 数据加载方式 * - all: 全部加载 * - async: 分层加载 */ loadDataType: 'all' | 'async'; /** 固定表头 */ fixedHeader: boolean; /** 当多选时,选中当前行并钩选 */ checkOnSelect: boolean; /** 当多选时,钩选并选中当前行 */ selectOnCheck: boolean; /** * 启用多选时,此属性为true 时,仅当前行选中 */ onlySelectSelf: boolean; /** 启用列宽调整 */ resizableColumns: boolean; /** 设置为true时自适应父容的尺寸 */ fit: boolean; /** 启用级联选中功能 */ cascadeCheck: boolean; /** 向下级联选中 */ cascadeDown: boolean; /** 向上级联选中 */ cascadeUp: boolean; /** 空数据时,显示的提示文本 */ emptyMessage: string; /** * 单击行选中后,在次点击不会被取消选中状态; * */ keepSelect: boolean; /** 虚拟加载 */ virtualized: boolean; /** * 仅允许选择叶子节点 * - default: 应用服务器端传回的设置,如果服务器端没有设置,则与 no 保持一至; * - yes: 如果客户端设置为 `yes`, 服务器端的设置失效; * - no: 允许选择所有节点;服务器端设置失效 */ onlySelectLeaf: boolean | 'default' | 'yes' | 'no'; /** 叶子节点图标 */ leafIcon: string; /** 节点展开图标 */ expandIcon: string; /** 节点折叠图标 */ collapseIcon: string; /** 选中事件 */ nodeSelected: EventEmitter; /** 取消选中事件 */ nodeUnSelect: EventEmitter; /** 钩选 */ nodeChecked: EventEmitter; /** 取消钩选 */ nodeUnChecked: EventEmitter; /** 全选事件 */ checkAll: EventEmitter; /** 取消全选 */ unCheckAll: EventEmitter; /** 查询 */ search: EventEmitter; dblClick: EventEmitter; loadedData: EventEmitter; expand: EventEmitter; collapse: EventEmitter; expandAllNodes: EventEmitter; collapseAllNodes: EventEmitter; appendNew: EventEmitter; removed: EventEmitter; _data: TreeNode[]; serializedValue: RowNode[]; data: any[]; templates: QueryList; columnsRef: QueryList; headerBox: ElementRef; resizerHelperVC: ElementRef; headerTable: ElementRef; bodyTable: ElementRef; inputGroup: InputGroupComponent; private headerCheckboxCmp; allCheckbox: TreeTableHeaderCheckboxComponent; /** * 表头模板 */ headerTemplate: TemplateRef; /** * 表体模板 */ bodyTemplate: TemplateRef; /** * 选中项集合 */ selections: TreeNode[]; /** * 选中项索引 */ selectRowIndex: number; /** * 选中当前行 */ selectedRow: TreeNode; /** 钩选的记录集合 */ checkeds: TreeNode[]; containerElement: HTMLDivElement; lastResizerHelperX: number; searchData: { field: string; value: string; }; scorllBodyHeight: number; searchHandle: SearchHandle; searchButtonText: string; private isDataChanged; constructor(ttService: TreetableService, el: ElementRef, resizeSer: ResizeService, renderer: Renderer2, utils: CommonUtils, colFormatSer: ColumnFormatService, shortcuts: ShortcutsService, cdRef: ChangeDetectorRef); ngOnInit(): void; ngOnChanges(changes: SimpleChanges): void; ngAfterViewChecked(): void; ngAfterContentInit(): void; ngAfterViewInit(): void; /** 注册快捷键 */ private registerShortcuts(); getRealColWidth(currentCol: TreeTableColumn): string; onResized(): void; onScrollX(e: any): void; onClearSearchValue(): void; trackByFn(index: any, rowNode: any): any; /** * 格式化数据 **/ formatData(field: string, data: any, formatter: any): any; private ttc2columns(list); private reSetSize(); updateSerializedValue(): void; /** * 将树节点数据序列化为RowNode * @param parent 父级节点 * @param nodes 树节点集合 * @param level 级别 * @param visible 是否可见 */ serializeNodes(parent: TreeNode, nodes: TreeNode[], level: number, visible: boolean, parentIds?: any[]): void; /** * 判断指定的节点是否被选中 * @param node 树节点 */ isSelected(node: TreeNode): boolean; /** 判断当前节点的钩选状态 */ isChecked(node: TreeNode): boolean; /** * 行单击事件 * @param event */ handleRowClick(event: SelectEventArgs): void; /** * 带有checkbox 的单选 * @param rowNode 当前节点 */ private singleSelectWhenMultiSelect(rowNode, flag); private singleSelectWhenChecked(rowNode, flag); private isInArray(rowNode, items); private setSelections(rowNode); private setCheckeds(rowNode); private getDiffrentData(data); /** * 行Checkbox 选中变化事件 * @param event 鼠标点击事件对象 * @param rowNode 当前树节点 */ toggleNodeWithCheckbox(event: Event, rowNode: RowNode, checked: boolean): any; /** * 全选 * @param event 鼠标事件对象 * @param checked 是否选中 */ toggleNodesWithCheckbox(event: Event, checked: boolean): void; private cascadeCheckedNode(rowNode, checked); /** * 向下级联选中 * @param node 当前节点 * @param checked 选中状态 * 返回受影响的行 */ propagateSelectionDown(rowNode: RowNode, checked: boolean): TreeNode[]; /** * 向上级联选中 */ propagateSelectionUp(rowNode: RowNode, checked: boolean): TreeNode[]; /** 更新全选checkbox 的状态 */ private updateAllCheckboxStatus(); /** 更新父节点checkbox 选中状态 */ private updateParentCheckboxStatus(rowNode); /** 更新N个父节点复选框中的选中状态 */ private updateParentsCheckStatus(parentIds); /** 更新节点中checkbox的状态 */ private updateCheckboxStatus(rowNode); /** 判断指定节点checkbox 的状态 */ private isIndeterminate(rowNode?); /** * 返回父级节点checkbox 的状态。0:不选中, 1: 选中, 2:不确定 * @param rowNode 父级节点;为空时返回全选checkbox 的状态 */ private getCheckboxStatus(rowNode?); private findIndexIn(node, treeNodes); /** * 在选中的集合中查找指定节点的索引 * @param node 树节点 */ findIndexInCheckeds(node: TreeNode): number; /** * 在选中的集合中查找指定节点的索引 * @param node 树节点 */ findIndexInSelection(node: TreeNode): number; /** 对比两个节点是否同一个节点 */ equals(target: TreeNode, source: TreeNode): boolean; /** * 展开所有节点 * @param rowNode 展开此节点下的所有节点;如果为空,则展开所有节点 * @param deep 设置为true 时,当前节点下的所有子节点全部展开 */ toggleExpand(treeNode?: TreeNode, deep?: boolean): void; private toggleVisible(treeNode); /** 展开指定节点 */ expandNode(id: string): void; /** 展开所有节点 */ expandAll(): void; /** 折叠指定节点 */ collapseNode(id: string): void; /** 折叠所有节点 */ collapseAll(): void; getContainerOffset(): { left: number; top: number; }; onColumnResizeBegin(event: any): void; onColumnResize(event: any): void; onColumnResizeEnd(event: any, column: any): void; resizeColGroup(table: any, resizeColumnIndex: any, newColumnWidth: any, nextColumnWidth?: number): void; onSearch(): void; insert(node: TreeNode, parent?: TreeNode): void; append(data: { [key: string]: any; }, parent?: TreeNode): void; appendChildren(nodes: TreeNode[], parent: TreeNode): void; private setScorllBodyHeight(); resize(size?: { width: number; height: number; }): void; loadData(data: TreeNode[]): void; clearAll(detectChanges?: boolean): TreeTableComponent; detectChanges(): TreeTableComponent; clearCheckeds(): TreeTableComponent; clearSelections(): TreeTableComponent; /** 选中指定ID 的节点 */ selectNode(id: string, detectChanges?: boolean): TreeTableComponent; /** 取消选中 */ unSelectNode(id: string): void; /** 选中多行数据 */ selectNodes(ids: string[], detectChanges?: boolean): TreeTableComponent; /** 取消选中 */ unSelectNodes(ids?: string[]): void; /** * 钩选指定的节点 * @param updateParentCheckboxStatus: 是否更新父级节点checkbox 状态, 默认为 true * @param detectChanges 触发变更检测。默认为 true */ checkedNode(id: string, updateParentCheckboxStatus?: boolean, detectChanges?: boolean): void; unCheckedNode(id: string, updateParentCheckboxStatus?: boolean): void; private _checkedNodes(ids, checked); /** 批量选中节点 * @param ids: id 集合 * @param detectChanges: boolean 默认为 true ,是否触发变更检测 */ checkedNodes(ids: any[], detectChanges?: boolean): void; unCheckedNodes(ids?: string[]): void; findRowNode(id: string): RowNode; /** 将在 v0.2.x 废弃;请使用 findRowNode 方法 */ findNode(id: string): RowNode; findRowNodes(ids: string[]): RowNode[]; checkAllNodes(args?: any): void; unCheckAllNodes(args?: any): void; private isEnableMultiSelect(); getTreeIcon(treeNode: TreeNode): { [x: string]: boolean; }; } export declare class TTBodyComponent { tt: TreeTableComponent; /** * 列集合 */ columns: any[]; /** 表体模板 */ template: TemplateRef; constructor(tt: TreeTableComponent); } /** * 树节点展开折叠 */ export declare class TreeTableTogglerComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy, DoCheck { tt: TreeTableComponent; private ngzone; private render; /** * 树节点 */ rowNode: RowNode; disabled: boolean; treeNodeIcon: {}; isShowTriangle: boolean; noChilds: boolean; subscriptions: Subscription[]; togglerEl: ElementRef; constructor(tt: TreeTableComponent, ngzone: NgZone, render: Renderer2); ngOnInit(): void; ngDoCheck(): void; private unAllSubscriptions(); ngOnDestroy(): void; hasChildren(): boolean; showTriangle(): boolean; ngAfterViewInit(): void; private registerClickEvent(); onClick(event: Event): boolean; ngOnChanges(changes: SimpleChanges): void; private updateIcon(treeNode); } /** * 选中行组件 */ export declare class TreeTableSelectRowDirective implements OnInit, OnDestroy, OnChanges, AfterViewInit, DoCheck { tt: TreeTableComponent; private el; private render; private ngZone; rowNode: RowNode; rowIndex: number; selectRowDisabled: boolean; subscription: Subscription; prevent: boolean; timer: any; delay: number; constructor(tt: TreeTableComponent, el: ElementRef, render: Renderer2, ngZone: NgZone); ngOnInit(): void; ngOnDestroy(): void; ngOnChanges(changes: SimpleChanges): void; ngAfterViewInit(): void; ngDoCheck(): void; onclick(event: MouseEvent): void; isEnabled(): boolean; private rowClick(event); } /** * 表头全选组件 */ export declare class TreeTableHeaderCheckboxComponent implements OnInit { tt: TreeTableComponent; ttService: TreetableService; checked: boolean; disabled: boolean; checkedChange: EventEmitter<{}>; chkAll: ElementRef; constructor(tt: TreeTableComponent, ttService: TreetableService); ngOnInit(): void; handleClick(event: any): boolean; } /** * 表体checkbox 组件 */ export declare class TreeTableCheckboxComponent implements OnInit, OnChanges { tt: TreeTableComponent; ttService: TreetableService; checked: boolean; disabled: boolean; rowNode: RowNode; checkedChange: EventEmitter<{}>; chk: ElementRef; constructor(tt: TreeTableComponent, ttService: TreetableService); ngOnInit(): void; ngOnChanges(changes: SimpleChanges): void; handleClick(event: any): boolean; } export declare class DblClickRowDirective implements OnInit { tt: TreeTableComponent; el: ElementRef; ttService: TreetableService; selectRowDir: TreeTableSelectRowDirective; enableDblClick: boolean; constructor(tt: TreeTableComponent, el: ElementRef, ttService: TreetableService, selectRowDir: TreeTableSelectRowDirective); ngOnInit(): void; ondblclick(event: Event): void; } export declare class TTResizableColumnDirective implements AfterViewInit, OnDestroy { tt: TreeTableComponent; ngzone: NgZone; el: ElementRef; render: Renderer2; resizer: HTMLSpanElement; resizerMouseDownListener: any; documentMouseMoveListener: any; documentMouseUpListener: any; constructor(tt: TreeTableComponent, ngzone: NgZone, el: ElementRef, render: Renderer2); ngAfterViewInit(): void; isEnable(): boolean; bindDocumentEvents(): void; unbindDocumentEvents(): void; onMouseDown(event: Event): void; onMouseEnter(): void; onMouseMove(event: Event): void; onMouseUp(event: Event): void; ngOnDestroy(): void; }