@finos/legend-data-cube
Version:
271 lines • 14.9 kB
TypeScript
/**
* Copyright (c) 2020-present, Goldman Sachs
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import type { GridApi, IRowNode, IServerSideDatasource, IServerSideGetRowsParams } from 'ag-grid-community';
import type { DataCubeGridState } from './DataCubeGridState.js';
import { DataCubeConfiguration, type DataCubeConfigurationColorKey } from '../../core/model/DataCubeConfiguration.js';
import { type DataCubeSnapshot } from '../../core/DataCubeSnapshot.js';
import type { DataCubeViewState } from '../DataCubeViewState.js';
import { DataCubeDimensionalMetadata, type DataCubeDimensionalTree } from './DataCubeGridDimensionalTree.js';
type DataCubeGridClientCellValue = string | number | boolean | Map<string, DataCubeDimensionalMetadata> | null | undefined;
type DataCubeGridClientRowData = {
[key: string]: DataCubeGridClientCellValue;
};
export declare enum DataCubeGridClientExportFormat {
CSV = "CSV",
EXCEL = "EXCEL",
PLAIN_TEXT = "PLAIN_TEXT",
HTML = "HTML",
PDF = "PDF"
}
export declare enum INTERNAL__GridClientUtilityCssClassName {
ROOT = "data-cube-grid.ag-theme-quartz",
HIGHLIGHT_ROW = "data-cube-grid__utility--highlight-row",
SHOW_VERTICAL_GRID_LINES = "data-cube-grid__utility--show-vertical-grid-lines",
SHOW_HORIZONTAL_GRID_LINES = "data-cube-grid__utility--show-horizontal-grid-lines",
BLUR = "data-cube-grid__utility--blur",
FONT_FAMILY_PREFIX = "data-cube-grid__utility--font-family-",
FONT_SIZE_PREFIX = "data-cube-grid__utility--font-size-",
FONT_BOLD = "data-cube-grid__utility--font-style-bold",
FONT_ITALIC = "data-cube-grid__utility--font-style-italic",
FONT_UNDERLINE_PREFIX = "data-cube-grid__utility--font-style-underline-",
FONT_STRIKETHROUGH = "data-cube-grid__utility--font-style-strikethrough",
FONT_CASE_PREFIX = "data-cube-grid__utility--font-style-case-",
TEXT_ALIGN_PREFIX = "data-cube-grid__utility--text-align-",
TEXT_COLOR_PREFIX = "data-cube-grid__utility--text-color-",
BACKGROUND_COLOR_PREFIX = "data-cube-grid__utility--background-color-",
PIVOT_COLUMN_GROUP = "data-cube-grid__utility--pivot-column-group",
PIVOT_COLUMN_GROUP_PREFIX = "data-cube-grid__utility--pivot-column-group-"
}
export declare const generateFontFamilyUtilityClassName: (fontFamily: string) => string;
export declare const generateFontSizeUtilityClassName: (fontSize: number) => string;
export declare const generateFontUnderlineUtilityClassName: (variant: string | undefined) => string;
export declare const generateFontCaseUtilityClassName: (fontCase: string | undefined) => string;
export declare const generateTextAlignUtilityClassName: (alignment: string) => string;
export declare const generateTextColorUtilityClassName: (color: string, key: DataCubeConfigurationColorKey) => string;
export declare const generateBackgroundColorUtilityClassName: (color: string, key: DataCubeConfigurationColorKey) => string;
export declare const INTERNAL__GRID_CLIENT_DEFAULT_CACHE_BLOCK_SIZE = 500;
export declare const INTERNAL__GRID_CLIENT_DEFAULT_ENABLE_PAGINATION = true;
export declare const INTERNAL__GRID_CLIENT_DEFAULT_ENABLE_CACHING = false;
export declare const INTERNAL__GRID_CLIENT_MAX_CACHE_BLOCK_SIZE = 1000;
export declare const INTERNAL__GRID_CLIENT_PIVOT_COLUMN_GROUP_COLOR_ROTATION_SIZE = 5;
export declare const INTERNAL__GRID_CLIENT_SIDE_BAR_WIDTH = 200;
export declare const INTERNAL__GRID_CLIENT_COLUMN_MIN_WIDTH = 50;
export declare const INTERNAL__GRID_CLIENT_HEADER_HEIGHT = 24;
export declare const INTERNAL__GRID_CLIENT_ROW_HEIGHT = 20;
export declare const INTERNAL__GRID_CLIENT_TOOLTIP_SHOW_DELAY = 1500;
export declare const INTERNAL__GRID_CLIENT_AUTO_RESIZE_PADDING = 10;
export declare const INTERNAL__GRID_CLIENT_MISSING_VALUE = "__MISSING";
export declare const INTERNAL__GRID_CLIENT_TREE_COLUMN_ID = "ag-Grid-AutoColumn";
export declare const INTERNAL__GRID_CLIENT_ROOT_AGGREGATION_COLUMN_ID = "INTERNAL__rootAggregation";
export declare const INTERNAL__GRID_CLIENT_DATA_FETCH_MANUAL_TRIGGER_COLUMN_ID = "INTERNAL__dataFetchManualTrigger";
export declare const INTERNAL__GRID_CLIENT_ROW_GROUPING_COUNT_AGG_COLUMN_ID = "count";
export declare enum DataCubeGridClientPinnedAlignement {
LEFT = "left",
RIGHT = "right"
}
export declare enum DataCubeGridClientSortDirection {
ASCENDING = "asc",
DESCENDING = "desc"
}
export declare function getAllNodes<T>(client: GridApi<T>): IRowNode<T>[];
export declare function getDataForAllNodes<T>(client: GridApi<T>): T[];
/**
* NOTE: this method does not work for server-side row model.
* It only works when client-side filter is being applied
*/
export declare function getDataForAllFilteredNodes<T>(client: GridApi<T>): T[];
/**
* This method computes the hash code for the parts of the snapshot that should trigger data fetching.
* This is used to manually trigger server-side row model data source getRows() method.
*/
export declare function computeHashCodeForDataFetchManualTrigger(snapshot: DataCubeSnapshot, configuration: DataCubeConfiguration): string;
export declare function fetchDimensionalQueryRows(snapshot: DataCubeSnapshot, view: DataCubeViewState, previousTree?: DataCubeDimensionalTree): Promise<{
rowData: DataCubeGridClientRowData[];
columnDefs: ({
colId: string;
field: string;
type?: string | string[];
cellDataType: boolean | string;
valueGetter?: string | import("ag-grid-community").ValueGetterFunc<any, any>;
valueFormatter: string | ((params: import("ag-grid-community").ValueFormatterParams<any, any>) => any);
refData?: {
[key: string]: string;
};
keyCreator?: (params: import("ag-grid-community").KeyCreatorParams<any, any>) => string;
equals?: (valueA: any, valueB: any) => boolean;
tooltipField?: string;
tooltipValueGetter: (params: import("ag-grid-community").ITooltipParams<any, any, any>) => string | any;
checkboxSelection?: boolean | import("ag-grid-community").CheckboxSelectionCallback<any, any>;
showDisabledCheckboxes?: boolean;
icons?: {
[key: string]: ((...args: any[]) => any) | string;
};
suppressNavigable?: boolean | import("ag-grid-community").SuppressNavigableCallback<any, any>;
suppressKeyboardEvent?: (params: import("ag-grid-community").SuppressKeyboardEventParams<any, any>) => boolean;
suppressPaste?: boolean | import("ag-grid-community").SuppressPasteCallback<any, any>;
suppressFillHandle?: boolean;
hide: boolean;
initialHide?: boolean;
lockVisible: boolean;
lockPosition?: boolean | "left" | "right";
suppressMovable?: boolean;
useValueFormatterForExport?: boolean;
editable?: boolean | import("ag-grid-community").EditableCallback<any, any>;
valueSetter?: string | import("ag-grid-community").ValueSetterFunc<any, any>;
valueParser?: string | import("ag-grid-community").ValueParserFunc<any, any>;
cellEditor?: any;
cellEditorParams?: any;
cellEditorSelector?: import("ag-grid-community").CellEditorSelectorFunc<any, any>;
singleClickEdit?: boolean;
cellEditorPopup?: boolean;
cellEditorPopupPosition?: "over" | "under";
useValueParserForImport?: boolean;
onCellValueChanged?: (event: import("ag-grid-community").NewValueParams<any, any>) => void;
onCellClicked?: (event: import("ag-grid-community").CellClickedEvent<any, any>) => void;
onCellDoubleClicked?: (event: import("ag-grid-community").CellDoubleClickedEvent<any, any>) => void;
onCellContextMenu?: (event: import("ag-grid-community").CellContextMenuEvent<any, any>) => void;
getQuickFilterText?: (params: import("ag-grid-community").GetQuickFilterTextParams<any, any>) => string;
filterValueGetter?: string | import("ag-grid-community").ValueGetterFunc<any, any>;
floatingFilter?: boolean;
suppressFloatingFilterButton?: boolean;
headerComponent?: any;
headerComponentParams?: any;
menuTabs: import("ag-grid-community").ColumnMenuTab[];
columnChooserParams?: import("ag-grid-community").ColumnChooserParams;
suppressHeaderMenuButton?: boolean;
suppressHeaderFilterButton?: boolean;
mainMenuItems?: (import("ag-grid-community").DefaultMenuItem | import("ag-grid-community").MenuItemDef<any, any>)[] | import("ag-grid-community").GetMainMenuItems<any, any>;
contextMenuItems?: import("ag-grid-community").GetContextMenuItems<any, any> | (import("ag-grid-community").DefaultMenuItem | import("ag-grid-community").MenuItemDef<any, any>)[];
headerCheckboxSelection?: boolean | import("ag-grid-community").HeaderCheckboxSelectionCallback<any, any>;
headerCheckboxSelectionFilteredOnly?: boolean;
headerCheckboxSelectionCurrentPageOnly?: boolean;
chartDataType?: "category" | "series" | "time" | "excluded";
pinned: boolean | "left" | "right" | DataCubeGridClientPinnedAlignement | null;
initialPinned?: boolean | "left" | "right";
lockPinned?: boolean;
pivot?: boolean;
initialPivot?: boolean;
pivotIndex?: number | null;
initialPivotIndex?: number;
pivotComparator?: (valueA: string, valueB: string) => number;
enablePivot?: boolean;
cellStyle?: import("ag-grid-community").CellStyle | import("ag-grid-community").CellStyleFunc<any, any>;
cellClass?: string | string[] | import("ag-grid-community").CellClassFunc<any, any>;
cellClassRules: import("ag-grid-community").CellClassRules<any, any>;
cellRenderer: any;
cellRendererParams?: any;
cellRendererSelector?: import("ag-grid-community").CellRendererSelectorFunc<any, any>;
loadingCellRenderer?: any;
loadingCellRendererParams?: any;
loadingCellRendererSelector?: import("ag-grid-community").CellRendererSelectorFunc<any, any>;
autoHeight?: boolean;
wrapText?: boolean;
enableCellChangeFlash?: boolean;
rowDrag?: boolean | import("ag-grid-community").RowDragCallback<any, any>;
rowDragText?: (params: import("ag-grid-community").IRowDragItem, dragItemCount: number) => string;
dndSource?: boolean | import("ag-grid-community").DndSourceCallback<any, any>;
dndSourceOnRowDrag?: (params: import("ag-grid-community").DndSourceOnRowDragParams<any>) => void;
rowGroup?: boolean;
initialRowGroup?: boolean;
rowGroupIndex?: number | null;
initialRowGroupIndex?: number;
enableRowGroup?: boolean;
enableValue?: boolean;
aggFunc?: string | import("ag-grid-community").IAggFunc<any, any> | null;
initialAggFunc?: string | import("ag-grid-community").IAggFunc<any, any>;
defaultAggFunc?: string;
allowedAggFuncs?: string[];
showRowGroup?: string | boolean;
sortable?: boolean;
sort?: import("ag-grid-community").SortDirection;
initialSort?: import("ag-grid-community").SortDirection;
sortIndex?: number | null;
initialSortIndex?: number;
sortingOrder?: import("ag-grid-community").SortDirection[];
comparator?: (valueA: any, valueB: any, nodeA: IRowNode<any>, nodeB: IRowNode<any>, isDescending: boolean) => number;
unSortIcon?: boolean;
colSpan?: (params: import("ag-grid-community").ColSpanParams<any, any>) => number;
rowSpan?: (params: import("ag-grid-community").RowSpanParams<any, any>) => number;
spanRows?: boolean | ((params: import("ag-grid-community").SpanRowsParams<any, any>) => boolean);
width?: number;
initialWidth?: number;
minWidth?: number;
maxWidth?: number;
flex?: number;
initialFlex?: number;
resizable?: boolean;
suppressSizeToFit?: boolean;
suppressAutoSize?: boolean;
pivotValueColumn?: import("ag-grid-community").Column | null;
pivotTotalColumnIds?: string[];
suppressSpanHeaderHeight: boolean;
headerName: string;
headerValueGetter?: string | import("ag-grid-community").HeaderValueGetterFunc<any, any>;
headerTooltip: string;
headerStyle?: import("ag-grid-community").HeaderStyle | import("ag-grid-community").HeaderStyleFunc<any, any>;
headerClass: import("ag-grid-community").HeaderClass<any, any>;
suppressHeaderKeyboardEvent?: (params: import("ag-grid-community").SuppressHeaderKeyboardEventParams<any, any>) => boolean;
columnGroupShow?: import("ag-grid-community").ColumnGroupShowType;
toolPanelClass?: import("ag-grid-community").ToolPanelClass<any, any>;
suppressColumnsToolPanel?: boolean;
suppressFiltersToolPanel?: boolean;
tooltipComponent?: any;
tooltipComponentParams?: any;
pivotKeys?: string[];
cellAriaRole?: string;
context?: any;
wrapHeaderText?: boolean;
autoHeaderHeight?: boolean;
suppressHeaderContextMenu?: boolean;
filter?: any;
filterParams?: any;
floatingFilterComponent?: any;
floatingFilterComponentParams?: any;
} | {
colId: string;
headerName: string;
field: string;
hide: true;
enableValue: false;
allowedAggFuncs: never[];
enablePivot: false;
enableRowGroup: false;
suppressColumnsToolPanel: true;
rowGroup: true;
rowGroupIndex: number;
})[];
}>;
export type DataCubeGridClientDataFetchRequest = {
startRow: number | undefined;
endRow: number | undefined;
rowGroupColumns: string[];
groupKeys: (string | null | undefined)[];
pivotColumns: string[];
sortColumns: {
name: string;
direction: DataCubeGridClientSortDirection;
}[];
};
export declare class DataCubeGridClientServerSideDataSource implements IServerSideDatasource {
private readonly _view;
private readonly _grid;
rowCount: number | undefined;
constructor(grid: DataCubeGridState, view: DataCubeViewState);
fetchRows(params: IServerSideGetRowsParams<unknown, unknown>): Promise<void>;
getRows(params: IServerSideGetRowsParams<unknown, unknown>): void;
}
export {};
//# sourceMappingURL=DataCubeGridClientEngine.d.ts.map