@deephaven/js-plugin-ag-grid 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AgGridDhTheme.d.ts +9 -0
- package/dist/AgGridDhTheme.d.ts.map +1 -0
- package/dist/AgGridDhTheme.js +41 -0
- package/dist/AgGridDhTheme.js.map +1 -0
- package/dist/AgGridPlugin.d.ts +5 -0
- package/dist/AgGridPlugin.d.ts.map +1 -0
- package/dist/AgGridPlugin.js +16 -0
- package/dist/AgGridPlugin.js.map +1 -0
- package/dist/AgGridView.d.ts +16 -0
- package/dist/AgGridView.d.ts.map +1 -0
- package/dist/AgGridView.js +86 -0
- package/dist/AgGridView.js.map +1 -0
- package/dist/AgGridWidget.d.ts +10 -0
- package/dist/AgGridWidget.d.ts.map +1 -0
- package/dist/AgGridWidget.js +69 -0
- package/dist/AgGridWidget.js.map +1 -0
- package/dist/bundle/index.js +60710 -0
- package/dist/datasources/DeephavenViewportDatasource.d.ts +66 -0
- package/dist/datasources/DeephavenViewportDatasource.d.ts.map +1 -0
- package/dist/datasources/DeephavenViewportDatasource.js +225 -0
- package/dist/datasources/DeephavenViewportDatasource.js.map +1 -0
- package/dist/datasources/index.d.ts +2 -0
- package/dist/datasources/index.d.ts.map +1 -0
- package/dist/datasources/index.js +2 -0
- package/dist/datasources/index.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -84928
- package/dist/index.js.map +1 -0
- package/dist/renderers/TreeCellRenderer.d.ts +8 -0
- package/dist/renderers/TreeCellRenderer.d.ts.map +1 -0
- package/dist/renderers/TreeCellRenderer.js +34 -0
- package/dist/renderers/TreeCellRenderer.js.map +1 -0
- package/dist/renderers/index.d.ts +2 -0
- package/dist/renderers/index.d.ts.map +1 -0
- package/dist/renderers/index.js +2 -0
- package/dist/renderers/index.js.map +1 -0
- package/dist/utils/AgGridAggUtils.d.ts +23 -0
- package/dist/utils/AgGridAggUtils.d.ts.map +1 -0
- package/dist/utils/AgGridAggUtils.js +53 -0
- package/dist/utils/AgGridAggUtils.js.map +1 -0
- package/dist/utils/AgGridColors.d.ts +20 -0
- package/dist/utils/AgGridColors.d.ts.map +1 -0
- package/dist/utils/AgGridColors.js +26 -0
- package/dist/utils/AgGridColors.js.map +1 -0
- package/dist/utils/AgGridFilterUtils.d.ts +22 -0
- package/dist/utils/AgGridFilterUtils.d.ts.map +1 -0
- package/dist/utils/AgGridFilterUtils.js +202 -0
- package/dist/utils/AgGridFilterUtils.js.map +1 -0
- package/dist/utils/AgGridFormatter.d.ts +12 -0
- package/dist/utils/AgGridFormatter.d.ts.map +1 -0
- package/dist/utils/AgGridFormatter.js +64 -0
- package/dist/utils/AgGridFormatter.js.map +1 -0
- package/dist/utils/AgGridSortUtils.d.ts +20 -0
- package/dist/utils/AgGridSortUtils.d.ts.map +1 -0
- package/dist/utils/AgGridSortUtils.js +45 -0
- package/dist/utils/AgGridSortUtils.js.map +1 -0
- package/dist/utils/AgGridTableUtils.d.ts +22 -0
- package/dist/utils/AgGridTableUtils.d.ts.map +1 -0
- package/dist/utils/AgGridTableUtils.js +75 -0
- package/dist/utils/AgGridTableUtils.js.map +1 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +7 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +28 -9
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AAExB,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { CustomCellRendererProps } from '@ag-grid-community/react';
|
|
3
|
+
import DeephavenViewportDatasource from '../datasources/DeephavenViewportDatasource';
|
|
4
|
+
export type TreeCellRendererProps = CustomCellRendererProps & {
|
|
5
|
+
datasource: DeephavenViewportDatasource;
|
|
6
|
+
};
|
|
7
|
+
export default function TreeCellRenderer(props: TreeCellRendererProps): JSX.Element;
|
|
8
|
+
//# sourceMappingURL=TreeCellRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TreeCellRenderer.d.ts","sourceRoot":"","sources":["../../src/renderers/TreeCellRenderer.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAInE,OAAO,2BAA2B,MAAM,4CAA4C,CAAC;AAErF,MAAM,MAAM,qBAAqB,GAAG,uBAAuB,GAAG;IAC5D,UAAU,EAAE,2BAA2B,CAAC;CACzC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,gBAAgB,CACtC,KAAK,EAAE,qBAAqB,GAC3B,GAAG,CAAC,OAAO,CA6Cb"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback } from 'react';
|
|
3
|
+
import { Button } from '@deephaven/components';
|
|
4
|
+
import { vsTriangleDown, vsTriangleRight } from '@deephaven/icons';
|
|
5
|
+
import { TREE_NODE_KEY } from '../utils/AgGridTableUtils';
|
|
6
|
+
import DeephavenViewportDatasource from '../datasources/DeephavenViewportDatasource';
|
|
7
|
+
export default function TreeCellRenderer(props) {
|
|
8
|
+
const { node, datasource, api } = props;
|
|
9
|
+
const { data } = node;
|
|
10
|
+
const treeNode = data === null || data === void 0 ? void 0 : data[TREE_NODE_KEY];
|
|
11
|
+
const { hasChildren = false, depth = 0, isExpanded = false } = treeNode !== null && treeNode !== void 0 ? treeNode : {};
|
|
12
|
+
const handleClick = useCallback(() => {
|
|
13
|
+
if (treeNode != null && datasource instanceof DeephavenViewportDatasource) {
|
|
14
|
+
datasource.setExpanded(treeNode.index, !treeNode.isExpanded);
|
|
15
|
+
}
|
|
16
|
+
}, [datasource, treeNode]);
|
|
17
|
+
const rowGroupColumns = api.getRowGroupColumns();
|
|
18
|
+
// If we're on a leaf row, show the last row group column as the group name instead of an empty string.
|
|
19
|
+
const colDef = rowGroupColumns[hasChildren ? depth - 2 : rowGroupColumns.length - 1];
|
|
20
|
+
const colId = colDef === null || colDef === void 0 ? void 0 : colDef.getId();
|
|
21
|
+
const groupName = data === null || data === void 0 ? void 0 : data[colId];
|
|
22
|
+
return (_jsxs(_Fragment, { children: [hasChildren && (_jsx(Button, Object.assign({ icon: isExpanded ? vsTriangleDown : vsTriangleRight, kind: "ghost", tooltip: isExpanded ? 'Collapse' : 'Expand', onClick: handleClick, style: {
|
|
23
|
+
width: 'calc(100% - 5px)',
|
|
24
|
+
height: '100%',
|
|
25
|
+
margin: 0,
|
|
26
|
+
paddingTop: 0,
|
|
27
|
+
paddingBottom: 0,
|
|
28
|
+
paddingRight: 0,
|
|
29
|
+
paddingLeft: depth * 10,
|
|
30
|
+
textAlign: 'left',
|
|
31
|
+
justifyContent: 'left',
|
|
32
|
+
} }, { children: groupName }))), !hasChildren && groupName] }));
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=TreeCellRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TreeCellRenderer.js","sourceRoot":"","sources":["../../src/renderers/TreeCellRenderer.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAY,MAAM,2BAA2B,CAAC;AACpE,OAAO,2BAA2B,MAAM,4CAA4C,CAAC;AAMrF,MAAM,CAAC,OAAO,UAAU,gBAAgB,CACtC,KAA4B;IAE5B,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;IACxC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACtB,MAAM,QAAQ,GAAyB,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,aAAa,CAAC,CAAC;IAC7D,MAAM,EAAE,WAAW,GAAG,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,UAAU,GAAG,KAAK,EAAE,GAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,CAAC;IAE9E,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,IAAI,QAAQ,IAAI,IAAI,IAAI,UAAU,YAAY,2BAA2B,EAAE;YACzE,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;SAC9D;IACH,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE3B,MAAM,eAAe,GAAG,GAAG,CAAC,kBAAkB,EAAE,CAAC;IACjD,uGAAuG;IACvG,MAAM,MAAM,GACV,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACxE,MAAM,KAAK,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,KAAK,CAAC,CAAC;IAEhC,OAAO,CACL,8BACG,WAAW,IAAI,CACd,KAAC,MAAM,kBACL,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,EACnD,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAC3C,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE;oBACL,KAAK,EAAE,kBAAkB;oBACzB,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,CAAC;oBACT,UAAU,EAAE,CAAC;oBACb,aAAa,EAAE,CAAC;oBAChB,YAAY,EAAE,CAAC;oBACf,WAAW,EAAE,KAAK,GAAG,EAAE;oBACvB,SAAS,EAAE,MAAM;oBACjB,cAAc,EAAE,MAAM;iBACvB,gBAEA,SAAS,IACH,CACV,EACA,CAAC,WAAW,IAAI,SAAS,IACzB,CACJ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/renderers/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/renderers/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Column, ColumnState, GridApi } from '@ag-grid-community/core';
|
|
2
|
+
import type { dh as DhType } from '@deephaven/jsapi-types';
|
|
3
|
+
export type AggregatedColumn = {
|
|
4
|
+
colId: string;
|
|
5
|
+
aggFunc: string;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Checks if the given ColumnState item is an aggregated column.
|
|
9
|
+
* @param item ColumnState item to check
|
|
10
|
+
* @returns True if the item is an aggregated column, otherwise false.
|
|
11
|
+
*/
|
|
12
|
+
export declare function isAggregatedColumn(item: ColumnState): item is AggregatedColumn;
|
|
13
|
+
export declare function getAggregatedColumns(gridApi: GridApi): AggregatedColumn[];
|
|
14
|
+
/**
|
|
15
|
+
* Gets the aggregation operation string for the given AG Grid aggregation function.
|
|
16
|
+
* @param dh Deephaven API instance to use
|
|
17
|
+
* @param agGridAggFunc AG Grid aggregation function to convert
|
|
18
|
+
* @returns The corresponding Deephaven aggregation operation string.
|
|
19
|
+
*/
|
|
20
|
+
export declare function getAggregationOperation(dh: typeof DhType, agGridAggFunc: DhType.AggregationOperationType): string;
|
|
21
|
+
export declare function getAggregationOperationMap(dh: typeof DhType, aggregatedColumns: AggregatedColumn[]): Record<DhType.AggregationOperationType, string[]>;
|
|
22
|
+
export declare function getRollupConfig(rowGroupColumns: Column[], aggColumns: AggregatedColumn[], dh: typeof DhType): DhType.RollupConfig;
|
|
23
|
+
//# sourceMappingURL=AgGridAggUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgGridAggUtils.d.ts","sourceRoot":"","sources":["../../src/utils/AgGridAggUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,WAAW,GAChB,IAAI,IAAI,gBAAgB,CAE1B;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,EAAE,CAGzE;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,OAAO,MAAM,EACjB,aAAa,EAAE,MAAM,CAAC,wBAAwB,GAC7C,MAAM,CAeR;AAED,wBAAgB,0BAA0B,CACxC,EAAE,EAAE,OAAO,MAAM,EACjB,iBAAiB,EAAE,gBAAgB,EAAE,GACpC,MAAM,CAAC,MAAM,CAAC,wBAAwB,EAAE,MAAM,EAAE,CAAC,CAUnD;AAED,wBAAgB,eAAe,CAC7B,eAAe,EAAE,MAAM,EAAE,EACzB,UAAU,EAAE,gBAAgB,EAAE,EAC9B,EAAE,EAAE,OAAO,MAAM,GAChB,MAAM,CAAC,YAAY,CAOrB"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Checks if the given ColumnState item is an aggregated column.
|
|
3
|
+
* @param item ColumnState item to check
|
|
4
|
+
* @returns True if the item is an aggregated column, otherwise false.
|
|
5
|
+
*/
|
|
6
|
+
export function isAggregatedColumn(item) {
|
|
7
|
+
return item.aggFunc != null && item.colId != null;
|
|
8
|
+
}
|
|
9
|
+
export function getAggregatedColumns(gridApi) {
|
|
10
|
+
const columnState = gridApi.getColumnState();
|
|
11
|
+
return columnState.filter(isAggregatedColumn);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Gets the aggregation operation string for the given AG Grid aggregation function.
|
|
15
|
+
* @param dh Deephaven API instance to use
|
|
16
|
+
* @param agGridAggFunc AG Grid aggregation function to convert
|
|
17
|
+
* @returns The corresponding Deephaven aggregation operation string.
|
|
18
|
+
*/
|
|
19
|
+
export function getAggregationOperation(dh, agGridAggFunc) {
|
|
20
|
+
switch (agGridAggFunc) {
|
|
21
|
+
case 'sum':
|
|
22
|
+
return dh.AggregationOperation.SUM;
|
|
23
|
+
case 'avg':
|
|
24
|
+
return dh.AggregationOperation.AVG;
|
|
25
|
+
case 'min':
|
|
26
|
+
return dh.AggregationOperation.MIN;
|
|
27
|
+
case 'max':
|
|
28
|
+
return dh.AggregationOperation.MAX;
|
|
29
|
+
case 'count':
|
|
30
|
+
return dh.AggregationOperation.COUNT;
|
|
31
|
+
default:
|
|
32
|
+
throw new Error(`Unknown aggregation function: ${agGridAggFunc}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export function getAggregationOperationMap(dh, aggregatedColumns) {
|
|
36
|
+
const operationMap = {};
|
|
37
|
+
aggregatedColumns.forEach(aggregatedColumn => {
|
|
38
|
+
const aggOperation = getAggregationOperation(dh, aggregatedColumn.aggFunc);
|
|
39
|
+
if (operationMap[aggOperation] == null) {
|
|
40
|
+
operationMap[aggOperation] = [];
|
|
41
|
+
}
|
|
42
|
+
operationMap[aggOperation].push(aggregatedColumn.colId);
|
|
43
|
+
});
|
|
44
|
+
return operationMap;
|
|
45
|
+
}
|
|
46
|
+
export function getRollupConfig(rowGroupColumns, aggColumns, dh) {
|
|
47
|
+
const rollupConfig = new dh.RollupConfig();
|
|
48
|
+
rollupConfig.groupingColumns = rowGroupColumns.map(c => c.getId());
|
|
49
|
+
rollupConfig.includeConstituents = true;
|
|
50
|
+
rollupConfig.aggregations = getAggregationOperationMap(dh, aggColumns);
|
|
51
|
+
return rollupConfig;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=AgGridAggUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgGridAggUtils.js","sourceRoot":"","sources":["../../src/utils/AgGridAggUtils.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAiB;IAEjB,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAC7C,OAAO,WAAW,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,EAAiB,EACjB,aAA8C;IAE9C,QAAQ,aAAa,EAAE;QACrB,KAAK,KAAK;YACR,OAAO,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC;QACrC,KAAK,KAAK;YACR,OAAO,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC;QACrC,KAAK,KAAK;YACR,OAAO,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC;QACrC,KAAK,KAAK;YACR,OAAO,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC;QACrC,KAAK,OAAO;YACV,OAAO,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC;QACvC;YACE,MAAM,IAAI,KAAK,CAAC,iCAAiC,aAAa,EAAE,CAAC,CAAC;KACrE;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,EAAiB,EACjB,iBAAqC;IAErC,MAAM,YAAY,GAAsD,EAAE,CAAC;IAC3E,iBAAiB,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;QAC3C,MAAM,YAAY,GAAG,uBAAuB,CAAC,EAAE,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC3E,IAAI,YAAY,CAAC,YAAY,CAAC,IAAI,IAAI,EAAE;YACtC,YAAY,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;SACjC;QACD,YAAY,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IACH,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,eAAyB,EACzB,UAA8B,EAC9B,EAAiB;IAEjB,MAAM,YAAY,GAAwB,IAAI,EAAE,CAAC,YAAY,EAAE,CAAC;IAChE,YAAY,CAAC,eAAe,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACnE,YAAY,CAAC,mBAAmB,GAAG,IAAI,CAAC;IACxC,YAAY,CAAC,YAAY,GAAG,0BAA0B,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAEvE,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare const AgGridCellColors: Readonly<{
|
|
2
|
+
numberPositive: "var(--dh-color-grid-number-positive)";
|
|
3
|
+
numberNegative: "var(--dh-color-grid-number-negative)";
|
|
4
|
+
numberZero: "var(--dh-color-grid-number-zero)";
|
|
5
|
+
date: "var(--dh-color-grid-date)";
|
|
6
|
+
}>;
|
|
7
|
+
export declare const AgGridThemeColors: Readonly<{
|
|
8
|
+
headerBackgroundColor: "var(--dh-color-grid-header-bg)";
|
|
9
|
+
headerTextColor: "var(--dh-color-grid-header-text)";
|
|
10
|
+
headerColumnResizeHandleColor: "var(--dh-color-grid-header-separator)";
|
|
11
|
+
backgroundColor: "var(--dh-color-grid-row-0-bg)";
|
|
12
|
+
oddRowBackgroundColor: "var(--dh-color-grid-row-1-bg)";
|
|
13
|
+
rowHoverColor: "var(--dh-color-grid-row-hover-bg)";
|
|
14
|
+
selectedRowBackgroundColor: "var(--dh-color-grid-row-hover-bg-selected)";
|
|
15
|
+
textColor: "var(--dh-color-grid-text)";
|
|
16
|
+
menuBackgroundColor: "var(--dh-color-grid-bg)";
|
|
17
|
+
menuTextColor: "var(--dh-color-grid-text)";
|
|
18
|
+
accentColor: "var(--dh-color-grid-filter-bar-active)";
|
|
19
|
+
}>;
|
|
20
|
+
//# sourceMappingURL=AgGridColors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgGridColors.d.ts","sourceRoot":"","sources":["../../src/utils/AgGridColors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB;;;;;EAK3B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;EAuB5B,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export const AgGridCellColors = Object.freeze({
|
|
2
|
+
numberPositive: 'var(--dh-color-grid-number-positive)',
|
|
3
|
+
numberNegative: 'var(--dh-color-grid-number-negative)',
|
|
4
|
+
numberZero: 'var(--dh-color-grid-number-zero)',
|
|
5
|
+
date: 'var(--dh-color-grid-date)',
|
|
6
|
+
});
|
|
7
|
+
export const AgGridThemeColors = Object.freeze({
|
|
8
|
+
/* Header */
|
|
9
|
+
headerBackgroundColor: 'var(--dh-color-grid-header-bg)',
|
|
10
|
+
headerTextColor: 'var(--dh-color-grid-header-text)',
|
|
11
|
+
headerColumnResizeHandleColor: 'var(--dh-color-grid-header-separator)',
|
|
12
|
+
/* Row */
|
|
13
|
+
backgroundColor: 'var(--dh-color-grid-row-0-bg)',
|
|
14
|
+
oddRowBackgroundColor: 'var(--dh-color-grid-row-1-bg)',
|
|
15
|
+
rowHoverColor: 'var(--dh-color-grid-row-hover-bg)',
|
|
16
|
+
/* Selection */
|
|
17
|
+
selectedRowBackgroundColor: 'var(--dh-color-grid-row-hover-bg-selected)',
|
|
18
|
+
/* Text */
|
|
19
|
+
textColor: 'var(--dh-color-grid-text)',
|
|
20
|
+
/* Menu */
|
|
21
|
+
menuBackgroundColor: 'var(--dh-color-grid-bg)',
|
|
22
|
+
menuTextColor: 'var(--dh-color-grid-text)',
|
|
23
|
+
/* Misc */
|
|
24
|
+
accentColor: 'var(--dh-color-grid-filter-bar-active)',
|
|
25
|
+
});
|
|
26
|
+
//# sourceMappingURL=AgGridColors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgGridColors.js","sourceRoot":"","sources":["../../src/utils/AgGridColors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5C,cAAc,EAAE,sCAAsC;IACtD,cAAc,EAAE,sCAAsC;IACtD,UAAU,EAAE,kCAAkC;IAC9C,IAAI,EAAE,2BAA2B;CAClC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7C,YAAY;IACZ,qBAAqB,EAAE,gCAAgC;IACvD,eAAe,EAAE,kCAAkC;IACnD,6BAA6B,EAAE,uCAAuC;IAEtE,SAAS;IACT,eAAe,EAAE,+BAA+B;IAChD,qBAAqB,EAAE,+BAA+B;IACtD,aAAa,EAAE,mCAAmC;IAElD,eAAe;IACf,0BAA0B,EAAE,4CAA4C;IAExE,UAAU;IACV,SAAS,EAAE,2BAA2B;IAEtC,UAAU;IACV,mBAAmB,EAAE,yBAAyB;IAC9C,aAAa,EAAE,2BAA2B;IAE1C,UAAU;IACV,WAAW,EAAE,wCAAwC;CACtD,CAAC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { dh as DhType } from '@deephaven/jsapi-types';
|
|
2
|
+
import { AdvancedFilterModel, DateFilterModel, FilterModel, ICombinedSimpleModel, ISimpleFilterModel, NumberFilterModel, TextFilterModel } from '@ag-grid-community/core';
|
|
3
|
+
type SupportedSimpleFilterModel = TextFilterModel | NumberFilterModel | DateFilterModel;
|
|
4
|
+
export default class AgGridFilterUtils {
|
|
5
|
+
/**
|
|
6
|
+
* Compares two arrays to see if they contain the same filter conditions in any order.
|
|
7
|
+
* @param a A FilterCondition array to compare
|
|
8
|
+
* @param b Another FilterCondition array to compare
|
|
9
|
+
* @returns True if the both arrays contain the same filter conditions, otherwise false.
|
|
10
|
+
*/
|
|
11
|
+
static areFiltersEqual(a: readonly DhType.FilterCondition[], b: readonly DhType.FilterCondition[]): boolean;
|
|
12
|
+
static parseFilterModel(dh: typeof DhType, table: DhType.Table | DhType.TreeTable, filterModel: FilterModel | AdvancedFilterModel | null): DhType.FilterCondition[];
|
|
13
|
+
static isCombinedSimpleModel<M extends ISimpleFilterModel>(model: unknown, isSimpleFilterModel: (obj: unknown) => obj is M): model is ICombinedSimpleModel<M>;
|
|
14
|
+
static isSimpleFilterModel(model: unknown): model is ISimpleFilterModel;
|
|
15
|
+
static isSupportedSimpleFilterModel(model: ISimpleFilterModel): model is SupportedSimpleFilterModel;
|
|
16
|
+
private static parseSimpleFilter;
|
|
17
|
+
private static parseTextFilter;
|
|
18
|
+
private static parseNumberFilter;
|
|
19
|
+
private static parseDateFilter;
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=AgGridFilterUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgGridFilterUtils.d.ts","sourceRoot":"","sources":["../../src/utils/AgGridFilterUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EAChB,MAAM,yBAAyB,CAAC;AAKjC,KAAK,0BAA0B,GAC3B,eAAe,GACf,iBAAiB,GACjB,eAAe,CAAC;AAOpB,MAAM,CAAC,OAAO,OAAO,iBAAiB;IACpC;;;;;OAKG;IACH,MAAM,CAAC,eAAe,CACpB,CAAC,EAAE,SAAS,MAAM,CAAC,eAAe,EAAE,EACpC,CAAC,EAAE,SAAS,MAAM,CAAC,eAAe,EAAE,GACnC,OAAO;IAQV,MAAM,CAAC,gBAAgB,CACrB,EAAE,EAAE,OAAO,MAAM,EACjB,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,SAAS,EACtC,WAAW,EAAE,WAAW,GAAG,mBAAmB,GAAG,IAAI,GACpD,MAAM,CAAC,eAAe,EAAE;IAuC3B,MAAM,CAAC,qBAAqB,CAAC,CAAC,SAAS,kBAAkB,EACvD,KAAK,EAAE,OAAO,EACd,mBAAmB,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,GAAG,IAAI,CAAC,GAC9C,KAAK,IAAI,oBAAoB,CAAC,CAAC,CAAC;IAiBnC,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB;IAYvE,MAAM,CAAC,4BAA4B,CACjC,KAAK,EAAE,kBAAkB,GACxB,KAAK,IAAI,0BAA0B;IAOtC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAiBhC,OAAO,CAAC,MAAM,CAAC,eAAe;IAiD9B,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAoDhC,OAAO,CAAC,MAAM,CAAC,eAAe;CA6C/B"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import { TableUtils } from '@deephaven/jsapi-utils';
|
|
2
|
+
export default class AgGridFilterUtils {
|
|
3
|
+
/**
|
|
4
|
+
* Compares two arrays to see if they contain the same filter conditions in any order.
|
|
5
|
+
* @param a A FilterCondition array to compare
|
|
6
|
+
* @param b Another FilterCondition array to compare
|
|
7
|
+
* @returns True if the both arrays contain the same filter conditions, otherwise false.
|
|
8
|
+
*/
|
|
9
|
+
static areFiltersEqual(a, b) {
|
|
10
|
+
if (a.length !== b.length)
|
|
11
|
+
return false;
|
|
12
|
+
// Might be a better way than using .toString() here
|
|
13
|
+
const filters = new Set(a.map(f => f.toString()));
|
|
14
|
+
return b.every(f => filters.has(f.toString()));
|
|
15
|
+
}
|
|
16
|
+
// Not handling AdvancedFilterModel yet
|
|
17
|
+
static parseFilterModel(dh, table, filterModel) {
|
|
18
|
+
if (filterModel == null) {
|
|
19
|
+
return [];
|
|
20
|
+
}
|
|
21
|
+
return Object.entries(filterModel).map(([colId, model]) => {
|
|
22
|
+
const column = table.findColumn(colId);
|
|
23
|
+
if (this.isCombinedSimpleModel(model, this.isSimpleFilterModel)) {
|
|
24
|
+
return model.conditions
|
|
25
|
+
.map(m => {
|
|
26
|
+
if (this.isSupportedSimpleFilterModel(m)) {
|
|
27
|
+
return this.parseSimpleFilter(dh, column, m);
|
|
28
|
+
}
|
|
29
|
+
throw new Error(`Filter model ${m} is not supported`);
|
|
30
|
+
})
|
|
31
|
+
.reduce((prev, curr) => {
|
|
32
|
+
if (model.operator === 'OR') {
|
|
33
|
+
return prev.or(curr);
|
|
34
|
+
}
|
|
35
|
+
if (model.operator === 'AND') {
|
|
36
|
+
return prev.and(curr);
|
|
37
|
+
}
|
|
38
|
+
throw new Error(`Unknown operator ${model.operator} for column ${colId}`);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
if (this.isSimpleFilterModel(model) &&
|
|
42
|
+
this.isSupportedSimpleFilterModel(model)) {
|
|
43
|
+
return this.parseSimpleFilter(dh, column, model);
|
|
44
|
+
}
|
|
45
|
+
throw new Error(`Filter model ${model} is not supported`);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
static isCombinedSimpleModel(model, isSimpleFilterModel) {
|
|
49
|
+
if (typeof model !== 'object' || model === null)
|
|
50
|
+
return false;
|
|
51
|
+
const m = model;
|
|
52
|
+
const hasValidOperator = typeof m.operator === 'string';
|
|
53
|
+
const hasValidFilterType = m.filterType === undefined || typeof m.filterType === 'string';
|
|
54
|
+
const hasValidConditions = Array.isArray(m.conditions) && m.conditions.every(isSimpleFilterModel);
|
|
55
|
+
return hasValidOperator && hasValidConditions && hasValidFilterType;
|
|
56
|
+
}
|
|
57
|
+
static isSimpleFilterModel(model) {
|
|
58
|
+
if (typeof model !== 'object' || model === null)
|
|
59
|
+
return false;
|
|
60
|
+
const m = model;
|
|
61
|
+
const hasValidFilterType = m.filterType === undefined || typeof m.filterType === 'string';
|
|
62
|
+
const hasValidType = m.type === undefined || m.type === null || typeof m.type === 'string';
|
|
63
|
+
return hasValidType && hasValidFilterType;
|
|
64
|
+
}
|
|
65
|
+
static isSupportedSimpleFilterModel(model) {
|
|
66
|
+
return (model.filterType != null &&
|
|
67
|
+
['text', 'number', 'date'].includes(model.filterType));
|
|
68
|
+
}
|
|
69
|
+
static parseSimpleFilter(dh, column, model) {
|
|
70
|
+
switch (model.filterType) {
|
|
71
|
+
case 'text':
|
|
72
|
+
return this.parseTextFilter(dh, column, model);
|
|
73
|
+
case 'number':
|
|
74
|
+
return this.parseNumberFilter(dh, column, model);
|
|
75
|
+
case 'date':
|
|
76
|
+
return this.parseDateFilter(dh, column, model);
|
|
77
|
+
default:
|
|
78
|
+
throw new Error(`Unimplemented simple filter type ${model.filterType}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
static parseTextFilter(dh, column, model) {
|
|
82
|
+
var _a;
|
|
83
|
+
const filterValue = dh.FilterValue.ofString((_a = model.filter) !== null && _a !== void 0 ? _a : '');
|
|
84
|
+
switch (model.type) {
|
|
85
|
+
case 'equals':
|
|
86
|
+
return column.filter().eq(filterValue);
|
|
87
|
+
case 'notEqual':
|
|
88
|
+
return column.filter().notEq(filterValue);
|
|
89
|
+
case 'contains':
|
|
90
|
+
return column.filter().contains(filterValue);
|
|
91
|
+
case 'notContains':
|
|
92
|
+
return column
|
|
93
|
+
.filter()
|
|
94
|
+
.isNull()
|
|
95
|
+
.or(column.filter().contains(filterValue).not());
|
|
96
|
+
case 'startsWith':
|
|
97
|
+
return column
|
|
98
|
+
.filter()
|
|
99
|
+
.isNull()
|
|
100
|
+
.not()
|
|
101
|
+
.and(column.filter().invoke('startsWith', filterValue));
|
|
102
|
+
case 'endsWith':
|
|
103
|
+
return column
|
|
104
|
+
.filter()
|
|
105
|
+
.isNull()
|
|
106
|
+
.not()
|
|
107
|
+
.and(column.filter().invoke('endsWith', filterValue));
|
|
108
|
+
// filterValue becomes ofString('') for blank/notBlank filters
|
|
109
|
+
case 'blank':
|
|
110
|
+
return column.filter().isNull().or(column.filter().eq(filterValue));
|
|
111
|
+
case 'notBlank':
|
|
112
|
+
return column
|
|
113
|
+
.filter()
|
|
114
|
+
.isNull()
|
|
115
|
+
.not()
|
|
116
|
+
.and(column.filter().notEq(filterValue));
|
|
117
|
+
case 'true':
|
|
118
|
+
return column.filter().isTrue();
|
|
119
|
+
case 'false':
|
|
120
|
+
return column.filter().isFalse();
|
|
121
|
+
default:
|
|
122
|
+
throw new Error(`Unimplemented filter operation ${model.type}`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
static parseNumberFilter(dh, column, model) {
|
|
126
|
+
switch (model.type) {
|
|
127
|
+
case 'blank':
|
|
128
|
+
return column.filter().isNull();
|
|
129
|
+
case 'notBlank':
|
|
130
|
+
return column.filter().isNull().not();
|
|
131
|
+
}
|
|
132
|
+
if (model.filter == null) {
|
|
133
|
+
throw new Error('Model does not have a filter value');
|
|
134
|
+
}
|
|
135
|
+
const filterValue = column.type === TableUtils.dataType.CHAR
|
|
136
|
+
? dh.FilterValue.ofString(String.fromCharCode(model.filter))
|
|
137
|
+
: dh.FilterValue.ofNumber(model.filter);
|
|
138
|
+
switch (model.type) {
|
|
139
|
+
case 'equals':
|
|
140
|
+
return column.filter().eq(filterValue);
|
|
141
|
+
case 'notEqual':
|
|
142
|
+
return column.filter().notEq(filterValue);
|
|
143
|
+
case 'greaterThan':
|
|
144
|
+
return column.filter().greaterThan(filterValue);
|
|
145
|
+
case 'lessThan':
|
|
146
|
+
return column.filter().lessThan(filterValue);
|
|
147
|
+
case 'greaterThanOrEqual':
|
|
148
|
+
return column.filter().greaterThanOrEqualTo(filterValue);
|
|
149
|
+
case 'lessThanOrEqual':
|
|
150
|
+
return column.filter().lessThanOrEqualTo(filterValue);
|
|
151
|
+
case 'inRange': {
|
|
152
|
+
if (model.filterTo == null) {
|
|
153
|
+
throw new Error('Model does not have a filterTo value');
|
|
154
|
+
}
|
|
155
|
+
const filterValueTo = column.type === TableUtils.dataType.CHAR
|
|
156
|
+
? dh.FilterValue.ofString(String.fromCharCode(model.filterTo))
|
|
157
|
+
: dh.FilterValue.ofNumber(model.filterTo);
|
|
158
|
+
return column
|
|
159
|
+
.filter()
|
|
160
|
+
.greaterThan(filterValue)
|
|
161
|
+
.and(column.filter().lessThan(filterValueTo));
|
|
162
|
+
}
|
|
163
|
+
default:
|
|
164
|
+
throw new Error(`Unimplemented filter operation ${model.type}`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
static parseDateFilter(dh, column, model) {
|
|
168
|
+
switch (model.type) {
|
|
169
|
+
case 'blank':
|
|
170
|
+
return column.filter().isNull();
|
|
171
|
+
case 'notBlank':
|
|
172
|
+
return column.filter().isNull().not();
|
|
173
|
+
}
|
|
174
|
+
if (model.dateFrom == null) {
|
|
175
|
+
throw new Error('Model does not have a dateFrom value');
|
|
176
|
+
}
|
|
177
|
+
const filterValue = dh.FilterValue.ofNumber(dh.DateWrapper.ofJsDate(new Date(model.dateFrom)));
|
|
178
|
+
switch (model.type) {
|
|
179
|
+
case 'equals':
|
|
180
|
+
return column.filter().eq(filterValue);
|
|
181
|
+
case 'notEqual':
|
|
182
|
+
return column.filter().notEq(filterValue);
|
|
183
|
+
case 'lessThan':
|
|
184
|
+
return column.filter().lessThan(filterValue);
|
|
185
|
+
case 'greaterThan':
|
|
186
|
+
return column.filter().greaterThan(filterValue);
|
|
187
|
+
case 'inRange': {
|
|
188
|
+
if (model.dateTo == null) {
|
|
189
|
+
throw new Error('Model does not have a dateTo value');
|
|
190
|
+
}
|
|
191
|
+
const filterValueTo = dh.FilterValue.ofNumber(dh.DateWrapper.ofJsDate(new Date(model.dateTo)));
|
|
192
|
+
return column
|
|
193
|
+
.filter()
|
|
194
|
+
.greaterThan(filterValue)
|
|
195
|
+
.and(column.filter().lessThan(filterValueTo));
|
|
196
|
+
}
|
|
197
|
+
default:
|
|
198
|
+
throw new Error(`Unimplemented filter operation ${model.type}`);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=AgGridFilterUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgGridFilterUtils.js","sourceRoot":"","sources":["../../src/utils/AgGridFilterUtils.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAcpD,MAAM,CAAC,OAAO,OAAO,iBAAiB;IACpC;;;;;OAKG;IACH,MAAM,CAAC,eAAe,CACpB,CAAoC,EACpC,CAAoC;QAEpC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QACxC,oDAAoD;QACpD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,uCAAuC;IACvC,MAAM,CAAC,gBAAgB,CACrB,EAAiB,EACjB,KAAsC,EACtC,WAAqD;QAErD,IAAI,WAAW,IAAI,IAAI,EAAE;YACvB,OAAO,EAAE,CAAC;SACX;QAED,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;YACxD,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAEvC,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,EAAE;gBAC/D,OAAO,KAAK,CAAC,UAAU;qBACpB,GAAG,CAAC,CAAC,CAAC,EAAE;oBACP,IAAI,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC,EAAE;wBACxC,OAAO,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;qBAC9C;oBACD,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;gBACxD,CAAC,CAAC;qBACD,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;oBACrB,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE;wBAC3B,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;qBACtB;oBACD,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,EAAE;wBAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;qBACvB;oBACD,MAAM,IAAI,KAAK,CACb,oBAAoB,KAAK,CAAC,QAAQ,eAAe,KAAK,EAAE,CACzD,CAAC;gBACJ,CAAC,CAAC,CAAC;aACN;YAED,IACE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;gBAC/B,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,EACxC;gBACA,OAAO,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;aAClD;YACD,MAAM,IAAI,KAAK,CAAC,gBAAgB,KAAK,mBAAmB,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,qBAAqB,CAC1B,KAAc,EACd,mBAA+C;QAE/C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAC9D,MAAM,CAAC,GAAG,KAIT,CAAC;QAEF,MAAM,gBAAgB,GAAG,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC;QACxD,MAAM,kBAAkB,GACtB,CAAC,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC;QACjE,MAAM,kBAAkB,GACtB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAEzE,OAAO,gBAAgB,IAAI,kBAAkB,IAAI,kBAAkB,CAAC;IACtE,CAAC;IAED,MAAM,CAAC,mBAAmB,CAAC,KAAc;QACvC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAC9D,MAAM,CAAC,GAAG,KAAiD,CAAC;QAE5D,MAAM,kBAAkB,GACtB,CAAC,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC;QACjE,MAAM,YAAY,GAChB,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;QAExE,OAAO,YAAY,IAAI,kBAAkB,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,4BAA4B,CACjC,KAAyB;QAEzB,OAAO,CACL,KAAK,CAAC,UAAU,IAAI,IAAI;YACxB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CACtD,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,iBAAiB,CAC9B,EAAiB,EACjB,MAAqB,EACrB,KAAiC;QAEjC,QAAQ,KAAK,CAAC,UAAU,EAAE;YACxB,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YACjD,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YACnD,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YACjD;gBACE,MAAM,IAAI,KAAK,CAAC,oCAAoC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;SAC3E;IACH,CAAC;IAEO,MAAM,CAAC,eAAe,CAC5B,EAAiB,EACjB,MAAqB,EACrB,KAAsB;;QAEtB,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAA,KAAK,CAAC,MAAM,mCAAI,EAAE,CAAC,CAAC;QAEhE,QAAQ,KAAK,CAAC,IAAmC,EAAE;YACjD,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;YACzC,KAAK,UAAU;gBACb,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC5C,KAAK,UAAU;gBACb,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC/C,KAAK,aAAa;gBAChB,OAAO,MAAM;qBACV,MAAM,EAAE;qBACR,MAAM,EAAE;qBACR,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YACrD,KAAK,YAAY;gBACf,OAAO,MAAM;qBACV,MAAM,EAAE;qBACR,MAAM,EAAE;qBACR,GAAG,EAAE;qBACL,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;YAC5D,KAAK,UAAU;gBACb,OAAO,MAAM;qBACV,MAAM,EAAE;qBACR,MAAM,EAAE;qBACR,GAAG,EAAE;qBACL,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;YAC1D,8DAA8D;YAC9D,KAAK,OAAO;gBACV,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;YACtE,KAAK,UAAU;gBACb,OAAO,MAAM;qBACV,MAAM,EAAE;qBACR,MAAM,EAAE;qBACR,GAAG,EAAE;qBACL,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;YAC7C,KAAK,MAAM;gBACT,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC;YAClC,KAAK,OAAO;gBACV,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;YACnC;gBACE,MAAM,IAAI,KAAK,CAAC,kCAAkC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;SACnE;IACH,CAAC;IAEO,MAAM,CAAC,iBAAiB,CAC9B,EAAiB,EACjB,MAAqB,EACrB,KAAwB;QAExB,QAAQ,KAAK,CAAC,IAAI,EAAE;YAClB,KAAK,OAAO;gBACV,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC;YAClC,KAAK,UAAU;gBACb,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;SACzC;QAED,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACvD;QAED,MAAM,WAAW,GACf,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,QAAQ,CAAC,IAAI;YACtC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC5D,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAE5C,QAAQ,KAAK,CAAC,IAAI,EAAE;YAClB,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;YACzC,KAAK,UAAU;gBACb,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC5C,KAAK,aAAa;gBAChB,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YAClD,KAAK,UAAU;gBACb,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC/C,KAAK,oBAAoB;gBACvB,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;YAC3D,KAAK,iBAAiB;gBACpB,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;YACxD,KAAK,SAAS,CAAC,CAAC;gBACd,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,EAAE;oBAC1B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;iBACzD;gBACD,MAAM,aAAa,GACjB,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,QAAQ,CAAC,IAAI;oBACtC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBAC9D,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC9C,OAAO,MAAM;qBACV,MAAM,EAAE;qBACR,WAAW,CAAC,WAAW,CAAC;qBACxB,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;aACjD;YACD;gBACE,MAAM,IAAI,KAAK,CAAC,kCAAkC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;SACnE;IACH,CAAC;IAEO,MAAM,CAAC,eAAe,CAC5B,EAAiB,EACjB,MAAqB,EACrB,KAAsB;QAEtB,QAAQ,KAAK,CAAC,IAAI,EAAE;YAClB,KAAK,OAAO;gBACV,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC;YAClC,KAAK,UAAU;gBACb,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;SACzC;QAED,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;SACzD;QAED,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,CACzC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAClD,CAAC;QAEF,QAAQ,KAAK,CAAC,IAAI,EAAE;YAClB,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;YACzC,KAAK,UAAU;gBACb,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC5C,KAAK,UAAU;gBACb,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC/C,KAAK,aAAa;gBAChB,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YAClD,KAAK,SAAS,CAAC,CAAC;gBACd,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE;oBACxB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;iBACvD;gBACD,MAAM,aAAa,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,CAC3C,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAChD,CAAC;gBACF,OAAO,MAAM;qBACV,MAAM,EAAE;qBACR,WAAW,CAAC,WAAW,CAAC;qBACxB,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;aACjD;YACD;gBACE,MAAM,IAAI,KAAK,CAAC,kCAAkC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;SACnE;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CellClassParams, CellStyle, DataTypeDefinition } from '@ag-grid-community/core';
|
|
2
|
+
import { Formatter } from '@deephaven/jsapi-utils';
|
|
3
|
+
export default class AgGridFormatter {
|
|
4
|
+
private formatter;
|
|
5
|
+
constructor(formatter: Formatter);
|
|
6
|
+
cellDataTypeDefinitions: {
|
|
7
|
+
[cellDataType: string]: DataTypeDefinition;
|
|
8
|
+
};
|
|
9
|
+
static styleForNumberCell(params: CellClassParams): CellStyle;
|
|
10
|
+
static styleForDateCell(params: CellClassParams): CellStyle;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=AgGridFormatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgGridFormatter.d.ts","sourceRoot":"","sources":["../../src/utils/AgGridFormatter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,SAAS,EACT,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,SAAS,EAAc,MAAM,wBAAwB,CAAC;AAG/D,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC,OAAO,CAAC,SAAS,CAAY;gBAEjB,SAAS,EAAE,SAAS;IAKhC,uBAAuB,EAAE;QAAE,CAAC,YAAY,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAE,CAuErE;IAEF,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS;IAgB7D,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS;CAG5D"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { TableUtils } from '@deephaven/jsapi-utils';
|
|
2
|
+
import { AgGridCellColors } from './AgGridColors';
|
|
3
|
+
export default class AgGridFormatter {
|
|
4
|
+
constructor(formatter) {
|
|
5
|
+
// Override pre-defined AG Grid data types/create new ones to match Deephaven types
|
|
6
|
+
this.cellDataTypeDefinitions = {
|
|
7
|
+
[TableUtils.dataType.BOOLEAN]: {
|
|
8
|
+
extendsDataType: 'boolean',
|
|
9
|
+
baseDataType: 'boolean',
|
|
10
|
+
valueFormatter: params => this.formatter.getFormattedString(params.value, TableUtils.dataType.BOOLEAN, params.colDef.field),
|
|
11
|
+
},
|
|
12
|
+
[TableUtils.dataType.CHAR]: {
|
|
13
|
+
extendsDataType: 'text',
|
|
14
|
+
baseDataType: 'text',
|
|
15
|
+
valueFormatter: params => this.formatter.getFormattedString(params.value, TableUtils.dataType.CHAR, params.colDef.field),
|
|
16
|
+
},
|
|
17
|
+
[TableUtils.dataType.DATETIME]: {
|
|
18
|
+
extendsDataType: 'dateString',
|
|
19
|
+
baseDataType: 'dateString',
|
|
20
|
+
valueFormatter: params => this.formatter.getFormattedString(params.value, TableUtils.dataType.DATETIME, params.colDef.field),
|
|
21
|
+
},
|
|
22
|
+
[TableUtils.dataType.DECIMAL]: {
|
|
23
|
+
extendsDataType: 'number',
|
|
24
|
+
baseDataType: 'number',
|
|
25
|
+
valueFormatter: params => this.formatter.getFormattedString(params.value, TableUtils.dataType.DECIMAL, params.colDef.field),
|
|
26
|
+
},
|
|
27
|
+
[TableUtils.dataType.INT]: {
|
|
28
|
+
extendsDataType: 'number',
|
|
29
|
+
baseDataType: 'number',
|
|
30
|
+
valueFormatter: params => this.formatter.getFormattedString(params.value, TableUtils.dataType.INT, params.colDef.field),
|
|
31
|
+
},
|
|
32
|
+
[TableUtils.dataType.STRING]: {
|
|
33
|
+
extendsDataType: 'text',
|
|
34
|
+
baseDataType: 'text',
|
|
35
|
+
valueFormatter: params => this.formatter.getFormattedString(params.value, TableUtils.dataType.STRING, params.colDef.field),
|
|
36
|
+
},
|
|
37
|
+
[TableUtils.dataType.UNKNOWN]: {
|
|
38
|
+
extendsDataType: 'text',
|
|
39
|
+
baseDataType: 'text',
|
|
40
|
+
valueFormatter: params => this.formatter.getFormattedString(params.value, TableUtils.dataType.UNKNOWN, params.colDef.field),
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
this.formatter = formatter;
|
|
44
|
+
}
|
|
45
|
+
static styleForNumberCell(params) {
|
|
46
|
+
if (params.value > 0) {
|
|
47
|
+
return {
|
|
48
|
+
textAlign: 'right',
|
|
49
|
+
color: AgGridCellColors.numberPositive,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
if (params.value < 0) {
|
|
53
|
+
return {
|
|
54
|
+
textAlign: 'right',
|
|
55
|
+
color: AgGridCellColors.numberNegative,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
return { textAlign: 'right', color: AgGridCellColors.numberZero };
|
|
59
|
+
}
|
|
60
|
+
static styleForDateCell(params) {
|
|
61
|
+
return { textAlign: 'center', color: AgGridCellColors.date };
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=AgGridFormatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgGridFormatter.js","sourceRoot":"","sources":["../../src/utils/AgGridFormatter.ts"],"names":[],"mappings":"AAKA,OAAO,EAAa,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,CAAC,OAAO,OAAO,eAAe;IAGlC,YAAY,SAAoB;QAIhC,mFAAmF;QACnF,4BAAuB,GAAmD;YACxE,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;gBAC7B,eAAe,EAAE,SAAS;gBAC1B,YAAY,EAAE,SAAS;gBACvB,cAAc,EAAE,MAAM,CAAC,EAAE,CACvB,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAC/B,MAAM,CAAC,KAAK,EACZ,UAAU,CAAC,QAAQ,CAAC,OAAO,EAC3B,MAAM,CAAC,MAAM,CAAC,KAAK,CACpB;aACJ;YACD,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBAC1B,eAAe,EAAE,MAAM;gBACvB,YAAY,EAAE,MAAM;gBACpB,cAAc,EAAE,MAAM,CAAC,EAAE,CACvB,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAC/B,MAAM,CAAC,KAAK,EACZ,UAAU,CAAC,QAAQ,CAAC,IAAI,EACxB,MAAM,CAAC,MAAM,CAAC,KAAK,CACpB;aACJ;YACD,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBAC9B,eAAe,EAAE,YAAY;gBAC7B,YAAY,EAAE,YAAY;gBAC1B,cAAc,EAAE,MAAM,CAAC,EAAE,CACvB,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAC/B,MAAM,CAAC,KAAK,EACZ,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAC5B,MAAM,CAAC,MAAM,CAAC,KAAK,CACpB;aACJ;YACD,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;gBAC7B,eAAe,EAAE,QAAQ;gBACzB,YAAY,EAAE,QAAQ;gBACtB,cAAc,EAAE,MAAM,CAAC,EAAE,CACvB,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAC/B,MAAM,CAAC,KAAK,EACZ,UAAU,CAAC,QAAQ,CAAC,OAAO,EAC3B,MAAM,CAAC,MAAM,CAAC,KAAK,CACpB;aACJ;YACD,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACzB,eAAe,EAAE,QAAQ;gBACzB,YAAY,EAAE,QAAQ;gBACtB,cAAc,EAAE,MAAM,CAAC,EAAE,CACvB,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAC/B,MAAM,CAAC,KAAK,EACZ,UAAU,CAAC,QAAQ,CAAC,GAAG,EACvB,MAAM,CAAC,MAAM,CAAC,KAAK,CACpB;aACJ;YACD,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBAC5B,eAAe,EAAE,MAAM;gBACvB,YAAY,EAAE,MAAM;gBACpB,cAAc,EAAE,MAAM,CAAC,EAAE,CACvB,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAC/B,MAAM,CAAC,KAAK,EACZ,UAAU,CAAC,QAAQ,CAAC,MAAM,EAC1B,MAAM,CAAC,MAAM,CAAC,KAAK,CACpB;aACJ;YACD,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;gBAC7B,eAAe,EAAE,MAAM;gBACvB,YAAY,EAAE,MAAM;gBACpB,cAAc,EAAE,MAAM,CAAC,EAAE,CACvB,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAC/B,MAAM,CAAC,KAAK,EACZ,UAAU,CAAC,QAAQ,CAAC,OAAO,EAC3B,MAAM,CAAC,MAAM,CAAC,KAAK,CACpB;aACJ;SACF,CAAC;QA3EA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IA4ED,MAAM,CAAC,kBAAkB,CAAC,MAAuB;QAC/C,IAAK,MAAM,CAAC,KAAgB,GAAG,CAAC,EAAE;YAChC,OAAO;gBACL,SAAS,EAAE,OAAO;gBAClB,KAAK,EAAE,gBAAgB,CAAC,cAAc;aACvC,CAAC;SACH;QACD,IAAK,MAAM,CAAC,KAAgB,GAAG,CAAC,EAAE;YAChC,OAAO;gBACL,SAAS,EAAE,OAAO;gBAClB,KAAK,EAAE,gBAAgB,CAAC,cAAc;aACvC,CAAC;SACH;QACD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,CAAC,UAAU,EAAE,CAAC;IACpE,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,MAAuB;QAC7C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,CAAC,IAAI,EAAE,CAAC;IAC/D,CAAC;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { dh as DhType } from '@deephaven/jsapi-types';
|
|
2
|
+
import { ColumnState, SortModelItem } from '@ag-grid-community/core';
|
|
3
|
+
export declare function isSortModelItem(item: ColumnState): item is SortModelItem;
|
|
4
|
+
export default class AgGridSortUtils {
|
|
5
|
+
/**
|
|
6
|
+
* Compares two arrays to see if they contain the same Sorts in the same order.
|
|
7
|
+
* @param a A Sort array to compare
|
|
8
|
+
* @param b Another Sort array to compare
|
|
9
|
+
* @returns True if the two Sort arrays are identical, otherwise false.
|
|
10
|
+
*/
|
|
11
|
+
static areSortsEqual(a: readonly DhType.Sort[], b: readonly DhType.Sort[]): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Parses the sort model items into Deephaven Sorts to apply on a table.
|
|
14
|
+
* @param table Deephaven table or tree table to use
|
|
15
|
+
* @param sortModelItems SortModelItem array to parse
|
|
16
|
+
* @returns An array of Deephaven Sort objects parsed from the SortModelItem array.
|
|
17
|
+
*/
|
|
18
|
+
static parseSortModel(table: DhType.Table | DhType.TreeTable, sortModelItems: readonly SortModelItem[]): DhType.Sort[];
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=AgGridSortUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgGridSortUtils.d.ts","sourceRoot":"","sources":["../../src/utils/AgGridSortUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAErE,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,IAAI,aAAa,CAExE;AAED,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAClB,CAAC,EAAE,SAAS,MAAM,CAAC,IAAI,EAAE,EACzB,CAAC,EAAE,SAAS,MAAM,CAAC,IAAI,EAAE,GACxB,OAAO;IAUV;;;;;OAKG;IACH,MAAM,CAAC,cAAc,CACnB,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,SAAS,EACtC,cAAc,EAAE,SAAS,aAAa,EAAE,GACvC,MAAM,CAAC,IAAI,EAAE;CAgBjB"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export function isSortModelItem(item) {
|
|
2
|
+
return item.sort != null;
|
|
3
|
+
}
|
|
4
|
+
export default class AgGridSortUtils {
|
|
5
|
+
/**
|
|
6
|
+
* Compares two arrays to see if they contain the same Sorts in the same order.
|
|
7
|
+
* @param a A Sort array to compare
|
|
8
|
+
* @param b Another Sort array to compare
|
|
9
|
+
* @returns True if the two Sort arrays are identical, otherwise false.
|
|
10
|
+
*/
|
|
11
|
+
static areSortsEqual(a, b) {
|
|
12
|
+
if (a.length !== b.length)
|
|
13
|
+
return false;
|
|
14
|
+
for (let i = 0; i < a.length; i += 1) {
|
|
15
|
+
if (a[i].column.name !== b[i].column.name)
|
|
16
|
+
return false;
|
|
17
|
+
if (a[i].direction !== b[i].direction)
|
|
18
|
+
return false;
|
|
19
|
+
if (a[i].isAbs !== b[i].isAbs)
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Parses the sort model items into Deephaven Sorts to apply on a table.
|
|
26
|
+
* @param table Deephaven table or tree table to use
|
|
27
|
+
* @param sortModelItems SortModelItem array to parse
|
|
28
|
+
* @returns An array of Deephaven Sort objects parsed from the SortModelItem array.
|
|
29
|
+
*/
|
|
30
|
+
static parseSortModel(table, sortModelItems) {
|
|
31
|
+
return sortModelItems.map(item => {
|
|
32
|
+
const column = table.findColumn(item.colId);
|
|
33
|
+
const sort = column.sort();
|
|
34
|
+
switch (item.sort) {
|
|
35
|
+
case 'asc':
|
|
36
|
+
return sort.asc();
|
|
37
|
+
case 'desc':
|
|
38
|
+
return sort.desc();
|
|
39
|
+
default:
|
|
40
|
+
throw new Error(`Unknown sort direction ${item.sort} for column ${item.colId}`);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=AgGridSortUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgGridSortUtils.js","sourceRoot":"","sources":["../../src/utils/AgGridSortUtils.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,eAAe,CAAC,IAAiB;IAC/C,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAClB,CAAyB,EACzB,CAAyB;QAEzB,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YACpC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI;gBAAE,OAAO,KAAK,CAAC;YACxD,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;gBAAE,OAAO,KAAK,CAAC;YACpD,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;gBAAE,OAAO,KAAK,CAAC;SAC7C;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,cAAc,CACnB,KAAsC,EACtC,cAAwC;QAExC,OAAO,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;YAC3B,QAAQ,IAAI,CAAC,IAAI,EAAE;gBACjB,KAAK,KAAK;oBACR,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;gBACpB,KAAK,MAAM;oBACT,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;gBACrB;oBACE,MAAM,IAAI,KAAK,CACb,0BAA0B,IAAI,CAAC,IAAI,eAAe,IAAI,CAAC,KAAK,EAAE,CAC/D,CAAC;aACL;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|