UNPKG

@gooddata/react-components

Version:

GoodData.UI - A powerful JavaScript library for building analytical applications

147 lines (146 loc) 5.48 kB
import { AFM, Execution, VisualizationObject } from "@gooddata/typings"; import * as React from "react"; import { WrappedComponentProps } from "react-intl"; import "../../../styles/css/pivotTable.css"; import { IPivotTableConfig, ColumnWidthItem } from "../../interfaces/PivotTable"; import { IDataSourceProviderInjectedProps } from "../afm/DataSourceProvider"; import { ICommonChartProps } from "./base/BaseChart"; import { BaseVisualization } from "./base/BaseVisualization"; import { IGetPage, ILoadingInjectedProps } from "./base/VisualizationLoadingHOC"; import { IGridHeader, IGridRow } from "./pivotTable/agGridTypes"; export interface IPivotTableProps extends ICommonChartProps, IDataSourceProviderInjectedProps { totals?: VisualizationObject.IVisualizationTotal[]; getPage?: IGetPage; cancelPagePromises?: () => void; pageSize?: number; config?: IPivotTableConfig; groupRows?: boolean; onDataSourceUpdateSuccess?: () => void; onColumnResized?: (columnWidths: ColumnWidthItem[]) => void; } export interface IPivotTableState { columnDefs: IGridHeader[]; rowData: IGridRow[]; execution: Execution.IExecutionResponses; columnTotals: AFM.ITotalItem[]; agGridRerenderNumber: number; desiredHeight: number | undefined; sortedByFirstAttribute: boolean; resized: boolean; } export declare type IPivotTableInnerProps = IPivotTableProps & ILoadingInjectedProps & IDataSourceProviderInjectedProps & WrappedComponentProps; export declare const WATCHING_TABLE_RENDERED_INTERVAL = 500; export declare const DEFAULT_COLUMN_WIDTH = 200; /** * Pivot Table react component */ export declare class PivotTableInner extends BaseVisualization<IPivotTableInnerProps, IPivotTableState> { static defaultProps: Partial<IPivotTableInnerProps>; private agGridDataSource; private gridApi; private columnApi; private containerRef; private groupingProvider; private lastScrollPosition; private resizedColumnsStore; private autoResizedColumns; private growToFittedColumns; private watchingIntervalId; private resizing; private lastResizedWidth; private lastResizedHeight; private numberOfColumnResizedCalls; private columnWidthsChangeWaitingForExecution; private isMetaOrCtrlKeyPressed; private isAltKeyPressed; constructor(props: IPivotTableInnerProps); componentWillMount(): void; componentDidMount(): void; componentWillUnmount(): void; componentWillUpdate(nextProps: IPivotTableInnerProps, nextState: IPivotTableState): void; componentDidUpdate(prevProps: IPivotTableInnerProps, prevState: IPivotTableState): void; renderVisualization(): JSX.Element; private isTableHidden; private forceRerender; private setContainerRef; private setGroupingProvider; private updateGrouping; private getExecutionResponse; private getExecutionResult; private getAfmFilters; private getColumnTotals; private getExecution; private getGridApi; private isNewAGGridDataSourceNeeded; private isAgGridRerenderNeeded; private updateAGGridDataSource; private getColumnIds; private getAutoResizedColumns; private autoresizeVisibleColumns; private autoresizeColumnsByColumnId; private shouldPerformAutoresize; private isColumnAutoresizeEnabled; private isGrowToFitEnabled; private isPivotTableReady; private autoresizeColumns; private isColumnAutoResized; private resetColumnsWidthToDefault; private clearFittedColumns; private handleColumnWidthsChange; private setFittedColumns; private growToFit; private mapFieldIdToGridId; private gridSizeChanged; private gridColumnsChanged; private shouldAutoResizeColumns; private onModelUpdated; private sortChanged; private createAGGridDataSource; private setGridDataSource; private onGridReady; private startWatchingTableRendered; private stopWatchingTableRendered; private onFirstDataRendered; private getAttributeHeader; private getItemAndAttributeHeaders; private getAttributeDrillItemsForMeasureDrill; private isSomeTotal; private getRowDrillItem; private getDrillItems; private getDrillIntersection; private cellClicked; private handleLegacyOnFireDrillEvent; private isManualResizing; private getDefaultWidth; private resetResizedColumn; private onGridColumnResized; private getAllMeasureColumns; private onColumnsManualReset; private isAllMeasureResizeOperation; private isWeakMeasureResizeOperation; private onColumnsManualResized; private afterOnResizeColumns; private onMenuAggregationClick; private onBodyScroll; private onContainerMouseDown; private getInfiniteInitialRowCountRowCount; private getColumnWidths; private hasColumnWidths; private getDefaultWidthFromProps; private createGridOptions; /** * getCellClass returns class for drillable cells. (maybe format in the future as well) */ private getCellClass; private getHeaderClass; private getDrillablePredicates; private isStickyRowAvailable; private updateStickyRow; private updateStickyRowContent; private getTotalBodyHeight; private getScrollBarPadding; private updateDesiredHeight; private isHeaderResizer; private shouldWaitForExecution; } export declare const PivotTable: React.ComponentClass<IPivotTableProps, any>;