UNPKG

@qn-pandora/pandora-visualization

Version:

Pandora 通用可视化库

118 lines (117 loc) 4.37 kB
/// <reference types="lodash" /> import * as React from 'react'; import { CellMeasurerCache } from 'react-virtualized'; import { PaginationConfig } from 'antd/es/pagination'; import BasicComponent from '../BasicComponent'; import { EThemeTypes, ITableTheme, ChartType, IFontStyle } from '../../../constants'; import { TableTextDisplay } from '../../../constants/table-style'; import { IColumnProps, IFilterValue } from './constant'; import { getLeafColumns, hasChildren } from './columnManager'; import 'react-resizable/css/styles.css'; export interface IFlexTableProps<T> { columns: Array<IColumnProps<T>>; dataSource: T[]; rowClassName?: (index: number, level?: number) => string; rowStyle?: (index: number) => React.CSSProperties; tableClassName?: string; className?: string; style?: React.CSSProperties; pagination?: PaginationConfig; bordered?: boolean; resizable?: boolean; size?: 'small' | 'middle' | 'large'; /** * 将表里面内容撑开的实际宽度 */ scrollWidth?: number; /** 表的视口宽度 */ width?: number; /** 表的视口高度 */ height?: number; tableTitleFont?: IFontStyle; tableTitleBgColor?: string; onResizeChange?: (scrollWidth: number) => void; onColumnsResizeChange?: (dataIndex: string, columnWidth: number) => void; onColumnsFiltersChange?: (filters: IFilterValue[]) => void; tableOption?: ITableTheme; theme?: EThemeTypes; chartType?: ChartType; pageScroll: boolean; autoplaySpeed: number; showPagination?: boolean; textDisplayMode?: TableTextDisplay; sort?: { field: string; order: 'ascend' | 'descend'; }; onSortChange?: (sort?: { field: string; order: 'ascend' | 'descend'; }) => void; } export default class FlexTable<T> extends BasicComponent<IFlexTableProps<T>, any> { static defaultProps: { columns: never[]; dataSource: never[]; bordered: boolean; size: string; tableOption: {}; theme: EThemeTypes; }; data: T[]; pagination: PaginationConfig; columns: Array<IColumnProps<T>>; scrollWidth: number; rowLevels: number; filters: IFilterValue[]; scrollToRowIndex: number; static getLeafColumns: typeof getLeafColumns; static hasChildren: typeof hasChildren; timer: any; vListRef: any; componentDidMount(): void; scroll: () => void; handleEnter: () => void; handleLeave: () => void; clearTimer: () => void; createTimer: (pageScroll: boolean, autoplaySpeed: number) => void; componentWillReceiveProps(nextProps: IFlexTableProps<T>): void; componentWillUnmount: () => void; get currentPageData(): T[]; get showPagination(): boolean; getColumnfilters(columns: Array<IColumnProps<T>>): IFilterValue[]; handleCellResize({ size }: any, dataIndex?: string): void; debounceTableSizeChange: import("lodash").DebouncedFunc<(scrollWidth: number) => void>; onTableWidthChange(nextWidth: number): void; handleTableResize(_: any, { size }: any): void; handleEnlargeTableWidth(): void; handleShrinkTableWidth(): void; getTableData(dataSource: T[]): void; itemRender(current: number, type: any, originalElement: any): any; cache: CellMeasurerCache; _rowRenderer({ index, key, style, parent }: any, { tableOption }: { tableOption?: ITableTheme; }): React.JSX.Element; renderRowData(rowData: any, rowIndex: number, level: number | undefined, params: { tableOption?: ITableTheme; }): React.JSX.Element; get fixedIndexes(): { left: number[]; right: number[]; }; renderDataBody(data: any[], level: number | undefined, params: { tableOption?: ITableTheme; }): JSX.Element[]; renderTable(): React.JSX.Element; getMaxCurrent(total: number): number | undefined; getDefaultPagination(): {}; initPagination(pagination: PaginationConfig): void; setRowLevels(levels: number): void; setTableScrollWidth(width: number): void; setData(data?: T[]): void; setColumns(columns?: Array<IColumnProps<T>>): void; setPagination(pagination: PaginationConfig): void; setFilters(filters: IFilterValue[]): void; setScrollToRowIndex(scrollToRowIndex: number): void; render(): React.JSX.Element; }