@deephaven/dashboard-core-plugins 1.22.1-alpha-pivot-builder.0 → 1.22.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/GridWidgetPlugin.d.ts +1 -11
- package/dist/GridWidgetPlugin.d.ts.map +1 -1
- package/dist/GridWidgetPlugin.js +6 -18
- package/dist/GridWidgetPlugin.js.map +1 -1
- package/dist/panels/IrisGridPanel.d.ts +6 -28
- package/dist/panels/IrisGridPanel.d.ts.map +1 -1
- package/dist/panels/IrisGridPanel.js +23 -42
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/useIrisGridModel.d.ts +2 -2
- package/dist/useIrisGridModel.d.ts.map +1 -1
- package/dist/useIrisGridModel.js +3 -16
- package/dist/useIrisGridModel.js.map +1 -1
- package/package.json +24 -24
|
@@ -1,15 +1,5 @@
|
|
|
1
1
|
import { type WidgetComponentProps } from '@deephaven/plugin';
|
|
2
2
|
import { type dh as DhType } from '@deephaven/jsapi-types';
|
|
3
|
-
|
|
4
|
-
export declare function GridWidgetPlugin({ fetch, transformTableOptions, transformModel, irisGridProps, onModelChanged, }: WidgetComponentProps<DhType.Table> & IrisGridTableOptionsWidgetProps & IrisGridModelWidgetProps & {
|
|
5
|
-
/**
|
|
6
|
-
* View-concern overrides (theme, renderer, mouse handlers, metric
|
|
7
|
-
* calculator) forwarded as a single bag to `<IrisGrid>`. Lets a plugin
|
|
8
|
-
* contribute presentation without this host knowing each concern by name.
|
|
9
|
-
*/
|
|
10
|
-
irisGridProps?: Partial<IrisGridViewProps>;
|
|
11
|
-
/** Called once the model is built, so middleware can observe it. */
|
|
12
|
-
onModelChanged?: (model: IrisGridModel) => void;
|
|
13
|
-
}): JSX.Element | null;
|
|
3
|
+
export declare function GridWidgetPlugin({ fetch, }: WidgetComponentProps<DhType.Table>): JSX.Element | null;
|
|
14
4
|
export default GridWidgetPlugin;
|
|
15
5
|
//# sourceMappingURL=GridWidgetPlugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridWidgetPlugin.d.ts","sourceRoot":"","sources":["../src/GridWidgetPlugin.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"GridWidgetPlugin.d.ts","sourceRoot":"","sources":["../src/GridWidgetPlugin.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AA4B3D,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,GACN,EAAE,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAsJzD;AAED,eAAe,gBAAgB,CAAC"}
|
package/dist/GridWidgetPlugin.js
CHANGED
|
@@ -6,7 +6,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
6
6
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
7
7
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
8
8
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
9
|
-
import { useCallback,
|
|
9
|
+
import { useCallback, useMemo, useRef, useState } from 'react';
|
|
10
10
|
import { IrisGrid, IrisGridCacheUtils, IrisGridUtils, isIrisGridTableModelTemplate } from '@deephaven/iris-grid';
|
|
11
11
|
import { useSelector } from 'react-redux';
|
|
12
12
|
import { getSettings } from '@deephaven/redux';
|
|
@@ -23,25 +23,14 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
23
23
|
export function GridWidgetPlugin(_ref) {
|
|
24
24
|
var _model$columns;
|
|
25
25
|
var {
|
|
26
|
-
fetch
|
|
27
|
-
transformTableOptions,
|
|
28
|
-
transformModel,
|
|
29
|
-
irisGridProps,
|
|
30
|
-
onModelChanged
|
|
26
|
+
fetch
|
|
31
27
|
} = _ref;
|
|
32
28
|
var settings = useSelector(getSettings);
|
|
33
29
|
var {
|
|
34
30
|
eventHub
|
|
35
31
|
} = useLayoutManager();
|
|
36
|
-
var fetchResult = useIrisGridModel(fetch
|
|
32
|
+
var fetchResult = useIrisGridModel(fetch);
|
|
37
33
|
var model = fetchResult.status === 'success' ? fetchResult.model : undefined;
|
|
38
|
-
|
|
39
|
-
// Notify observers (e.g. middleware) when the built model changes.
|
|
40
|
-
useEffect(() => {
|
|
41
|
-
if (model != null) {
|
|
42
|
-
onModelChanged === null || onModelChanged === void 0 || onModelChanged(model);
|
|
43
|
-
}
|
|
44
|
-
}, [model, onModelChanged]);
|
|
45
34
|
var dh = useApi();
|
|
46
35
|
var irisGridUtils = useMemo(() => new IrisGridUtils(dh), [dh]);
|
|
47
36
|
var [state, setState] = usePersistentState(undefined, {
|
|
@@ -107,7 +96,7 @@ export function GridWidgetPlugin(_ref) {
|
|
|
107
96
|
});
|
|
108
97
|
}
|
|
109
98
|
assertNotNull(model, 'Model should be defined when fetch is successful');
|
|
110
|
-
return /*#__PURE__*/_jsx(IrisGrid, _objectSpread(_objectSpread(_objectSpread(
|
|
99
|
+
return /*#__PURE__*/_jsx(IrisGrid, _objectSpread(_objectSpread(_objectSpread({
|
|
111
100
|
ref: irisGridRef,
|
|
112
101
|
model: model,
|
|
113
102
|
settings: settings,
|
|
@@ -115,10 +104,9 @@ export function GridWidgetPlugin(_ref) {
|
|
|
115
104
|
onSelectionChanged: setSelection,
|
|
116
105
|
onContextMenu: onContextMenu,
|
|
117
106
|
inputFilters: inputFilters,
|
|
118
|
-
customFilters: customFilters
|
|
119
|
-
transformTableOptions: transformTableOptions
|
|
107
|
+
customFilters: customFilters
|
|
120
108
|
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
121
|
-
},
|
|
109
|
+
}, linkerProps), {}, {
|
|
122
110
|
alwaysFetchColumns: alwaysFetchColumns
|
|
123
111
|
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
124
112
|
}, hydratedState), {}, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridWidgetPlugin.js","names":["useCallback","useEffect","useMemo","useRef","useState","IrisGrid","IrisGridCacheUtils","IrisGridUtils","isIrisGridTableModelTemplate","useSelector","getSettings","LoadingOverlay","useLayoutManager","useListener","usePersistentState","assertNotNull","getErrorMessage","useApi","useIrisGridModel","useDashboardColumnFilters","InputFilterEvent","useGridLinker","useTablePlugin","jsx","_jsx","GridWidgetPlugin","_ref","_model$columns","fetch","transformTableOptions","transformModel","irisGridProps","onModelChanged","settings","eventHub","fetchResult","model","status","undefined","dh","irisGridUtils","state","setState","version","type","initialState","hydratedState","current","_objectSpread","hydrateIrisGridState","hydrateGridState","dehydrateIrisGridState","makeMemoizedCombinedGridStateDehydrator","handleIrisGridChange","irisGridState","gridState","newState","inputFilters","columns","table","irisGridRef","_useGridLinker","alwaysFetchColumns","linkerAlwaysFetchColumns","linkerProps","_objectWithoutProperties","_excluded","handleClearAllFilters","clearAllFilters","CLEAR_ALL_FILTERS","selection","setSelection","Plugin","customFilters","filterFetchColumns","onContextMenu","selectedRanges","columnSet","Set","isLoading","errorMessage","error","ref","onStateChange","onSelectionChanged","children"],"sources":["../src/GridWidgetPlugin.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { type WidgetComponentProps } from '@deephaven/plugin';\nimport { type dh as DhType } from '@deephaven/jsapi-types';\nimport {\n type DehydratedGridState,\n type DehydratedIrisGridState,\n IrisGrid,\n IrisGridCacheUtils,\n type IrisGridState,\n type IrisGridType,\n type IrisGridViewProps,\n IrisGridUtils,\n isIrisGridTableModelTemplate,\n type IrisGridModel,\n type IrisGridTableOptionsWidgetProps,\n type IrisGridModelWidgetProps,\n} from '@deephaven/iris-grid';\nimport { useSelector } from 'react-redux';\nimport { getSettings, type RootState } from '@deephaven/redux';\nimport { LoadingOverlay } from '@deephaven/components';\nimport {\n useLayoutManager,\n useListener,\n usePersistentState,\n} from '@deephaven/dashboard';\nimport { assertNotNull, getErrorMessage } from '@deephaven/utils';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { type GridRange, type GridState } from '@deephaven/grid';\nimport { useIrisGridModel } from './useIrisGridModel';\nimport useDashboardColumnFilters from './useDashboardColumnFilters';\nimport { InputFilterEvent } from './events';\nimport useGridLinker from './useGridLinker';\nimport { useTablePlugin } from './useTablePlugin';\n\nexport function GridWidgetPlugin({\n fetch,\n transformTableOptions,\n transformModel,\n irisGridProps,\n onModelChanged,\n}: WidgetComponentProps<DhType.Table> &\n IrisGridTableOptionsWidgetProps &\n IrisGridModelWidgetProps & {\n /**\n * View-concern overrides (theme, renderer, mouse handlers, metric\n * calculator) forwarded as a single bag to `<IrisGrid>`. Lets a plugin\n * contribute presentation without this host knowing each concern by name.\n */\n irisGridProps?: Partial<IrisGridViewProps>;\n /** Called once the model is built, so middleware can observe it. */\n onModelChanged?: (model: IrisGridModel) => void;\n }): JSX.Element | null {\n const settings = useSelector(getSettings<RootState>);\n const { eventHub } = useLayoutManager();\n\n const fetchResult = useIrisGridModel(fetch, transformModel);\n const model =\n fetchResult.status === 'success' ? fetchResult.model : undefined;\n\n // Notify observers (e.g. middleware) when the built model changes.\n useEffect(() => {\n if (model != null) {\n onModelChanged?.(model);\n }\n }, [model, onModelChanged]);\n\n const dh = useApi();\n const irisGridUtils = useMemo(() => new IrisGridUtils(dh), [dh]);\n\n const [state, setState] = usePersistentState<\n (DehydratedIrisGridState & DehydratedGridState) | undefined\n >(undefined, {\n version: 1,\n type: 'GridWidgetPlugin',\n });\n const initialState = useRef(state);\n const hydratedState = useMemo(() => {\n if (\n fetchResult.status !== 'success' ||\n initialState.current === undefined\n ) {\n return;\n }\n return {\n ...irisGridUtils.hydrateIrisGridState(\n fetchResult.model,\n initialState.current\n ),\n ...IrisGridUtils.hydrateGridState(\n fetchResult.model,\n initialState.current\n ),\n };\n }, [fetchResult, irisGridUtils]);\n\n const dehydrateIrisGridState = useMemo(\n () => IrisGridCacheUtils.makeMemoizedCombinedGridStateDehydrator(),\n []\n );\n\n const handleIrisGridChange = useCallback(\n (irisGridState: IrisGridState, gridState: GridState) => {\n if (\n fetchResult.status !== 'success' ||\n irisGridState == null ||\n gridState == null\n ) {\n return;\n }\n\n const newState = dehydrateIrisGridState(\n fetchResult.model,\n irisGridState,\n gridState\n );\n\n setState(newState);\n },\n [fetchResult, setState, dehydrateIrisGridState]\n );\n\n const inputFilters = useDashboardColumnFilters(\n model?.columns ?? null,\n model != null && isIrisGridTableModelTemplate(model)\n ? model.table\n : undefined\n );\n\n const irisGridRef = useRef<IrisGridType | null>(null);\n\n const { alwaysFetchColumns: linkerAlwaysFetchColumns, ...linkerProps } =\n useGridLinker(\n fetchResult.status === 'success' ? fetchResult.model : null,\n irisGridRef.current\n );\n\n const handleClearAllFilters = useCallback(() => {\n if (irisGridRef.current == null) {\n return;\n }\n irisGridRef.current.clearAllFilters();\n }, []);\n\n useListener(\n eventHub,\n InputFilterEvent.CLEAR_ALL_FILTERS,\n handleClearAllFilters\n );\n\n const [selection, setSelection] = useState<readonly GridRange[]>([]);\n\n const {\n Plugin,\n customFilters,\n alwaysFetchColumns: filterFetchColumns,\n onContextMenu,\n } = useTablePlugin({\n model,\n irisGridRef,\n irisGridUtils,\n selectedRanges: selection,\n });\n\n const alwaysFetchColumns = useMemo(() => {\n const columnSet = new Set([\n ...linkerAlwaysFetchColumns,\n ...filterFetchColumns,\n ]);\n return [...columnSet];\n }, [linkerAlwaysFetchColumns, filterFetchColumns]);\n\n if (fetchResult.status === 'loading') {\n return (\n <LoadingOverlay isLoading data-testid=\"grid-widget-plugin-loading\" />\n );\n }\n\n if (fetchResult.status === 'error') {\n return (\n <LoadingOverlay\n data-testid=\"grid-widget-plugin-loading-error\"\n errorMessage={getErrorMessage(fetchResult.error)}\n isLoading={false}\n />\n );\n }\n\n assertNotNull(model, 'Model should be defined when fetch is successful');\n\n return (\n <IrisGrid\n ref={irisGridRef}\n model={model}\n settings={settings}\n onStateChange={handleIrisGridChange}\n onSelectionChanged={setSelection}\n onContextMenu={onContextMenu}\n inputFilters={inputFilters}\n customFilters={customFilters}\n transformTableOptions={transformTableOptions}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...irisGridProps}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...linkerProps}\n alwaysFetchColumns={alwaysFetchColumns}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...hydratedState}\n >\n {Plugin}\n </IrisGrid>\n );\n}\n\nexport default GridWidgetPlugin;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"GridWidgetPlugin.js","names":["useCallback","useMemo","useRef","useState","IrisGrid","IrisGridCacheUtils","IrisGridUtils","isIrisGridTableModelTemplate","useSelector","getSettings","LoadingOverlay","useLayoutManager","useListener","usePersistentState","assertNotNull","getErrorMessage","useApi","useIrisGridModel","useDashboardColumnFilters","InputFilterEvent","useGridLinker","useTablePlugin","jsx","_jsx","GridWidgetPlugin","_ref","_model$columns","fetch","settings","eventHub","fetchResult","model","status","undefined","dh","irisGridUtils","state","setState","version","type","initialState","hydratedState","current","_objectSpread","hydrateIrisGridState","hydrateGridState","dehydrateIrisGridState","makeMemoizedCombinedGridStateDehydrator","handleIrisGridChange","irisGridState","gridState","newState","inputFilters","columns","table","irisGridRef","_useGridLinker","alwaysFetchColumns","linkerAlwaysFetchColumns","linkerProps","_objectWithoutProperties","_excluded","handleClearAllFilters","clearAllFilters","CLEAR_ALL_FILTERS","selection","setSelection","Plugin","customFilters","filterFetchColumns","onContextMenu","selectedRanges","columnSet","Set","isLoading","errorMessage","error","ref","onStateChange","onSelectionChanged","children"],"sources":["../src/GridWidgetPlugin.tsx"],"sourcesContent":["import { useCallback, useMemo, useRef, useState } from 'react';\nimport { type WidgetComponentProps } from '@deephaven/plugin';\nimport { type dh as DhType } from '@deephaven/jsapi-types';\nimport {\n type DehydratedGridState,\n type DehydratedIrisGridState,\n IrisGrid,\n IrisGridCacheUtils,\n type IrisGridState,\n type IrisGridType,\n IrisGridUtils,\n isIrisGridTableModelTemplate,\n} from '@deephaven/iris-grid';\nimport { useSelector } from 'react-redux';\nimport { getSettings, type RootState } from '@deephaven/redux';\nimport { LoadingOverlay } from '@deephaven/components';\nimport {\n useLayoutManager,\n useListener,\n usePersistentState,\n} from '@deephaven/dashboard';\nimport { assertNotNull, getErrorMessage } from '@deephaven/utils';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { type GridRange, type GridState } from '@deephaven/grid';\nimport { useIrisGridModel } from './useIrisGridModel';\nimport useDashboardColumnFilters from './useDashboardColumnFilters';\nimport { InputFilterEvent } from './events';\nimport useGridLinker from './useGridLinker';\nimport { useTablePlugin } from './useTablePlugin';\n\nexport function GridWidgetPlugin({\n fetch,\n}: WidgetComponentProps<DhType.Table>): JSX.Element | null {\n const settings = useSelector(getSettings<RootState>);\n const { eventHub } = useLayoutManager();\n\n const fetchResult = useIrisGridModel(fetch);\n const model =\n fetchResult.status === 'success' ? fetchResult.model : undefined;\n\n const dh = useApi();\n const irisGridUtils = useMemo(() => new IrisGridUtils(dh), [dh]);\n\n const [state, setState] = usePersistentState<\n (DehydratedIrisGridState & DehydratedGridState) | undefined\n >(undefined, {\n version: 1,\n type: 'GridWidgetPlugin',\n });\n const initialState = useRef(state);\n const hydratedState = useMemo(() => {\n if (\n fetchResult.status !== 'success' ||\n initialState.current === undefined\n ) {\n return;\n }\n return {\n ...irisGridUtils.hydrateIrisGridState(\n fetchResult.model,\n initialState.current\n ),\n ...IrisGridUtils.hydrateGridState(\n fetchResult.model,\n initialState.current\n ),\n };\n }, [fetchResult, irisGridUtils]);\n\n const dehydrateIrisGridState = useMemo(\n () => IrisGridCacheUtils.makeMemoizedCombinedGridStateDehydrator(),\n []\n );\n\n const handleIrisGridChange = useCallback(\n (irisGridState: IrisGridState, gridState: GridState) => {\n if (\n fetchResult.status !== 'success' ||\n irisGridState == null ||\n gridState == null\n ) {\n return;\n }\n\n const newState = dehydrateIrisGridState(\n fetchResult.model,\n irisGridState,\n gridState\n );\n\n setState(newState);\n },\n [fetchResult, setState, dehydrateIrisGridState]\n );\n\n const inputFilters = useDashboardColumnFilters(\n model?.columns ?? null,\n model != null && isIrisGridTableModelTemplate(model)\n ? model.table\n : undefined\n );\n\n const irisGridRef = useRef<IrisGridType | null>(null);\n\n const { alwaysFetchColumns: linkerAlwaysFetchColumns, ...linkerProps } =\n useGridLinker(\n fetchResult.status === 'success' ? fetchResult.model : null,\n irisGridRef.current\n );\n\n const handleClearAllFilters = useCallback(() => {\n if (irisGridRef.current == null) {\n return;\n }\n irisGridRef.current.clearAllFilters();\n }, []);\n\n useListener(\n eventHub,\n InputFilterEvent.CLEAR_ALL_FILTERS,\n handleClearAllFilters\n );\n\n const [selection, setSelection] = useState<readonly GridRange[]>([]);\n\n const {\n Plugin,\n customFilters,\n alwaysFetchColumns: filterFetchColumns,\n onContextMenu,\n } = useTablePlugin({\n model,\n irisGridRef,\n irisGridUtils,\n selectedRanges: selection,\n });\n\n const alwaysFetchColumns = useMemo(() => {\n const columnSet = new Set([\n ...linkerAlwaysFetchColumns,\n ...filterFetchColumns,\n ]);\n return [...columnSet];\n }, [linkerAlwaysFetchColumns, filterFetchColumns]);\n\n if (fetchResult.status === 'loading') {\n return (\n <LoadingOverlay isLoading data-testid=\"grid-widget-plugin-loading\" />\n );\n }\n\n if (fetchResult.status === 'error') {\n return (\n <LoadingOverlay\n data-testid=\"grid-widget-plugin-loading-error\"\n errorMessage={getErrorMessage(fetchResult.error)}\n isLoading={false}\n />\n );\n }\n\n assertNotNull(model, 'Model should be defined when fetch is successful');\n\n return (\n <IrisGrid\n ref={irisGridRef}\n model={model}\n settings={settings}\n onStateChange={handleIrisGridChange}\n onSelectionChanged={setSelection}\n onContextMenu={onContextMenu}\n inputFilters={inputFilters}\n customFilters={customFilters}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...linkerProps}\n alwaysFetchColumns={alwaysFetchColumns}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...hydratedState}\n >\n {Plugin}\n </IrisGrid>\n );\n}\n\nexport default GridWidgetPlugin;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { PureComponent, type ReactElement, type ReactNode, type RefObject } from 'react';
|
|
2
2
|
import { type DashboardPanelProps, type PanelComponent } from '@deephaven/dashboard';
|
|
3
|
-
import { type IrisGridType, IrisGridModel, type ColumnName, type PendingDataMap, type InputFilter, type ReadonlyAdvancedFilterMap, type AggregationSettings, type AdvancedSettingsType, type UIRollupConfig, type UIRow, type ReadonlyQuickFilterMap, type FilterMap, type QuickFilter, type AdvancedFilter, type SidebarFormattingRule, type IrisGridState, type ChartBuilderSettings, type DehydratedIrisGridState, type DehydratedIrisGridPanelState, type ColumnHeaderGroup, type IrisGridContextMenuData, type PartitionConfig, type
|
|
3
|
+
import { type IrisGridType, IrisGridModel, type ColumnName, type PendingDataMap, type InputFilter, type IrisGridThemeType, type ReadonlyAdvancedFilterMap, type AggregationSettings, type AdvancedSettingsType, type UIRollupConfig, type UIRow, type ReadonlyQuickFilterMap, type FilterMap, type QuickFilter, type AdvancedFilter, type SidebarFormattingRule, type IrisGridState, type ChartBuilderSettings, type DehydratedIrisGridState, type DehydratedIrisGridPanelState, type ColumnHeaderGroup, type IrisGridContextMenuData, type PartitionConfig, type IrisGridRenderer, type MouseHandlersProp, type GetMetricCalculatorType } from '@deephaven/iris-grid';
|
|
4
4
|
import { type RowDataMap, type FormattingRule, type SortDescriptor } from '@deephaven/jsapi-utils';
|
|
5
5
|
import { type User, type WorkspaceSettings } from '@deephaven/redux';
|
|
6
6
|
import { type CancelablePromise, type EventT } from '@deephaven/utils';
|
|
@@ -43,32 +43,10 @@ export interface OwnProps extends DashboardPanelProps {
|
|
|
43
43
|
getDownloadWorker?: () => Promise<ServiceWorker>;
|
|
44
44
|
/** Load a plugin defined by the table */
|
|
45
45
|
loadPlugin: (pluginName: string) => TablePluginComponent;
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
* concern by name. Threaded down the middleware chain.
|
|
51
|
-
*/
|
|
52
|
-
irisGridProps?: Partial<IrisGridViewProps>;
|
|
53
|
-
/**
|
|
54
|
-
* Transform applied to the built-in Table Options items before they are
|
|
55
|
-
* rendered. Forwarded to `IrisGrid#transformTableOptions`. Threaded down
|
|
56
|
-
* the middleware chain by IrisGrid-aware plugins.
|
|
57
|
-
*/
|
|
58
|
-
transformTableOptions?: TableOptionsTransform;
|
|
59
|
-
/**
|
|
60
|
-
* Called with the resolved `IrisGridModel` once it is initialized, so
|
|
61
|
-
* middleware can subscribe to model events (e.g. to recompute a
|
|
62
|
-
* `transformTableOptions` snapshot).
|
|
63
|
-
*/
|
|
64
|
-
onModelChanged?: (model: IrisGridModel) => void;
|
|
65
|
-
/**
|
|
66
|
-
* Transform applied to the model built by `makeModel` before it is handed
|
|
67
|
-
* to `IrisGrid`. Lets IrisGrid-aware middleware wrap the host-built model
|
|
68
|
-
* (e.g. in a proxy) without taking over model construction. Applied when
|
|
69
|
-
* the model is (re)built, so it must be referentially stable.
|
|
70
|
-
*/
|
|
71
|
-
transformModel?: IrisGridModelTransform;
|
|
46
|
+
theme?: Partial<IrisGridThemeType> & Record<string, unknown>;
|
|
47
|
+
mouseHandlers?: MouseHandlersProp;
|
|
48
|
+
renderer?: IrisGridRenderer;
|
|
49
|
+
getMetricCalculator?: GetMetricCalculatorType;
|
|
72
50
|
}
|
|
73
51
|
interface StateProps {
|
|
74
52
|
inputFilters: InputFilter[];
|
|
@@ -206,7 +184,7 @@ export declare class IrisGridPanel extends PureComponent<IrisGridPanelProps, Iri
|
|
|
206
184
|
updateGrid(): void;
|
|
207
185
|
render(): ReactElement;
|
|
208
186
|
}
|
|
209
|
-
declare const ConnectedIrisGridPanel: import("react-redux").ConnectedComponent<typeof IrisGridPanel, import("react-redux").Omit<Pick<React.ClassAttributes<IrisGridPanel> & OwnProps & StateProps, "glEventHub" | "children" | "glContainer" | "metadata" | "makeModel" | "localDashboardId" | "panelState" | "
|
|
187
|
+
declare const ConnectedIrisGridPanel: import("react-redux").ConnectedComponent<typeof IrisGridPanel, import("react-redux").Omit<Pick<React.ClassAttributes<IrisGridPanel> & OwnProps & StateProps, "glEventHub" | "children" | "glContainer" | "metadata" | "makeModel" | "localDashboardId" | "panelState" | "theme" | "getDownloadWorker" | "loadPlugin" | "mouseHandlers" | "renderer" | "getMetricCalculator" | keyof StateProps | keyof React.ClassAttributes<IrisGridPanel>> & {
|
|
210
188
|
onStateChange?: ((irisGridState: IrisGridState, gridState: GridState) => void) | undefined;
|
|
211
189
|
onPanelStateUpdate?: ((panelState: PanelState) => void) | undefined;
|
|
212
190
|
} & {}, "user" | "settings" | "inputFilters" | "links" | "columnSelectionValidator"> & OwnProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridPanel.d.ts","sourceRoot":"","sources":["../../src/panels/IrisGridPanel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EACZ,aAAa,EACb,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,OAAO,EACL,KAAK,mBAAmB,EAGxB,KAAK,cAAc,EAEpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAGL,KAAK,YAAY,EACjB,aAAa,EAIb,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,KAAK,EACV,KAAK,sBAAsB,EAC3B,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,4BAA4B,EACjC,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,
|
|
1
|
+
{"version":3,"file":"IrisGridPanel.d.ts","sourceRoot":"","sources":["../../src/panels/IrisGridPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
2
|
-
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
3
1
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4
2
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5
3
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
@@ -285,30 +283,12 @@ export class IrisGridPanel extends PureComponent {
|
|
|
285
283
|
isDisconnected: false
|
|
286
284
|
});
|
|
287
285
|
var {
|
|
288
|
-
makeModel
|
|
289
|
-
transformModel
|
|
286
|
+
makeModel
|
|
290
287
|
} = this.props;
|
|
291
288
|
if (this.modelPromise != null) {
|
|
292
289
|
this.modelPromise.cancel();
|
|
293
290
|
}
|
|
294
|
-
|
|
295
|
-
var _ref2 = _asyncToGenerator(function* (model) {
|
|
296
|
-
try {
|
|
297
|
-
var transformedModel = yield transformModel(model);
|
|
298
|
-
return transformedModel;
|
|
299
|
-
} catch (e) {
|
|
300
|
-
// The host owns the base model's lifecycle; if the transform
|
|
301
|
-
// rejects it never returns a model for us to close, so close
|
|
302
|
-
// the base model here to avoid leaking it.
|
|
303
|
-
model.close();
|
|
304
|
-
throw e;
|
|
305
|
-
}
|
|
306
|
-
});
|
|
307
|
-
return function (_x) {
|
|
308
|
-
return _ref2.apply(this, arguments);
|
|
309
|
-
};
|
|
310
|
-
}()) : Promise.resolve(makeModel());
|
|
311
|
-
this.modelPromise = PromiseUtils.makeCancelable(modelPromise, resolved => resolved.close());
|
|
291
|
+
this.modelPromise = PromiseUtils.makeCancelable(makeModel(), resolved => resolved.close());
|
|
312
292
|
this.modelPromise.then(this.handleLoadSuccess).catch(this.handleLoadError);
|
|
313
293
|
}
|
|
314
294
|
handleLoadSuccess(modelParam) {
|
|
@@ -375,10 +355,10 @@ export class IrisGridPanel extends PureComponent {
|
|
|
375
355
|
}
|
|
376
356
|
handleAdvancedSettingsChange(key, value) {
|
|
377
357
|
log.debug('handleAdvancedSettingsChange', key, value);
|
|
378
|
-
this.setState(
|
|
358
|
+
this.setState(_ref2 => {
|
|
379
359
|
var {
|
|
380
360
|
advancedSettings
|
|
381
|
-
} =
|
|
361
|
+
} = _ref2;
|
|
382
362
|
return advancedSettings.get(key) === value ? null : {
|
|
383
363
|
advancedSettings: new Map(advancedSettings).set(key, value)
|
|
384
364
|
};
|
|
@@ -565,8 +545,7 @@ export class IrisGridPanel extends PureComponent {
|
|
|
565
545
|
modelInitialized(model) {
|
|
566
546
|
var {
|
|
567
547
|
glEventHub,
|
|
568
|
-
loadPlugin
|
|
569
|
-
onModelChanged
|
|
548
|
+
loadPlugin
|
|
570
549
|
} = this.props;
|
|
571
550
|
this.modelPromise = undefined;
|
|
572
551
|
|
|
@@ -575,7 +554,6 @@ export class IrisGridPanel extends PureComponent {
|
|
|
575
554
|
this.setState({
|
|
576
555
|
isModelReady: true
|
|
577
556
|
});
|
|
578
|
-
onModelChanged === null || onModelChanged === void 0 || onModelChanged(model);
|
|
579
557
|
if (isIrisGridTableModelTemplate(model)) {
|
|
580
558
|
var {
|
|
581
559
|
table
|
|
@@ -676,11 +654,11 @@ export class IrisGridPanel extends PureComponent {
|
|
|
676
654
|
irisGrid.setAdvancedFilterMap(filterMap);
|
|
677
655
|
}
|
|
678
656
|
}
|
|
679
|
-
setFilters(
|
|
657
|
+
setFilters(_ref3) {
|
|
680
658
|
var {
|
|
681
659
|
quickFilters,
|
|
682
660
|
advancedFilters
|
|
683
|
-
} =
|
|
661
|
+
} = _ref3;
|
|
684
662
|
log.debug('setFilters', quickFilters, advancedFilters);
|
|
685
663
|
var {
|
|
686
664
|
model,
|
|
@@ -696,12 +674,12 @@ export class IrisGridPanel extends PureComponent {
|
|
|
696
674
|
columns,
|
|
697
675
|
formatter
|
|
698
676
|
} = model;
|
|
699
|
-
var indexedQuickFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(model.columns, quickFilters).filter(
|
|
700
|
-
var [columnIndex] =
|
|
677
|
+
var indexedQuickFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(model.columns, quickFilters).filter(_ref4 => {
|
|
678
|
+
var [columnIndex] = _ref4;
|
|
701
679
|
return model.isFilterable(columnIndex);
|
|
702
680
|
});
|
|
703
|
-
var indexedAdvancedFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(model.columns, advancedFilters).filter(
|
|
704
|
-
var [columnIndex] =
|
|
681
|
+
var indexedAdvancedFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(model.columns, advancedFilters).filter(_ref5 => {
|
|
682
|
+
var [columnIndex] = _ref5;
|
|
705
683
|
return model.isFilterable(columnIndex);
|
|
706
684
|
});
|
|
707
685
|
assertNotNull(this.irisGridUtils);
|
|
@@ -848,11 +826,13 @@ export class IrisGridPanel extends PureComponent {
|
|
|
848
826
|
inputFilters,
|
|
849
827
|
links,
|
|
850
828
|
metadata,
|
|
829
|
+
mouseHandlers,
|
|
851
830
|
panelState,
|
|
852
831
|
user,
|
|
832
|
+
renderer,
|
|
853
833
|
settings,
|
|
854
|
-
|
|
855
|
-
|
|
834
|
+
getMetricCalculator,
|
|
835
|
+
theme
|
|
856
836
|
} = this.props;
|
|
857
837
|
var {
|
|
858
838
|
advancedFilters,
|
|
@@ -925,7 +905,7 @@ export class IrisGridPanel extends PureComponent {
|
|
|
925
905
|
descriptor: widgetPanelDescriptor,
|
|
926
906
|
model: model
|
|
927
907
|
}),
|
|
928
|
-
children: isModelReady && model && /*#__PURE__*/_jsx(IrisGrid,
|
|
908
|
+
children: isModelReady && model && /*#__PURE__*/_jsx(IrisGrid, {
|
|
929
909
|
advancedFilters: advancedFilters,
|
|
930
910
|
aggregationSettings: aggregationSettings,
|
|
931
911
|
advancedSettings: advancedSettings,
|
|
@@ -945,11 +925,13 @@ export class IrisGridPanel extends PureComponent {
|
|
|
945
925
|
isSelectingPartition: isSelectingPartition,
|
|
946
926
|
isStuckToBottom: isStuckToBottom,
|
|
947
927
|
isStuckToRight: isStuckToRight,
|
|
928
|
+
mouseHandlers: mouseHandlers,
|
|
948
929
|
movedColumns: movedColumns,
|
|
949
930
|
movedRows: movedRows,
|
|
950
931
|
partitions: partitions,
|
|
951
932
|
partitionConfig: partitionConfig,
|
|
952
933
|
quickFilters: quickFilters,
|
|
934
|
+
renderer: renderer,
|
|
953
935
|
reverse: reverse,
|
|
954
936
|
rollupConfig: rollupConfig,
|
|
955
937
|
settings: settings,
|
|
@@ -977,12 +959,11 @@ export class IrisGridPanel extends PureComponent {
|
|
|
977
959
|
ref: this.irisGrid,
|
|
978
960
|
getDownloadWorker: getDownloadWorker,
|
|
979
961
|
frozenColumns: frozenColumns,
|
|
962
|
+
theme: theme,
|
|
980
963
|
columnHeaderGroups: columnHeaderGroups,
|
|
981
|
-
|
|
982
|
-
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
983
|
-
}, irisGridProps), {}, {
|
|
964
|
+
getMetricCalculator: getMetricCalculator,
|
|
984
965
|
children: childrenContent
|
|
985
|
-
})
|
|
966
|
+
})
|
|
986
967
|
});
|
|
987
968
|
}
|
|
988
969
|
}
|
|
@@ -992,11 +973,11 @@ _defineProperty(IrisGridPanel, "defaultProps", {
|
|
|
992
973
|
});
|
|
993
974
|
_defineProperty(IrisGridPanel, "displayName", 'IrisGridPanel');
|
|
994
975
|
_defineProperty(IrisGridPanel, "COMPONENT", 'IrisGridPanel');
|
|
995
|
-
var mapStateToProps = (state,
|
|
976
|
+
var mapStateToProps = (state, _ref6) => {
|
|
996
977
|
var {
|
|
997
978
|
localDashboardId = DEFAULT_DASHBOARD_ID,
|
|
998
979
|
glContainer
|
|
999
|
-
} =
|
|
980
|
+
} = _ref6;
|
|
1000
981
|
return {
|
|
1001
982
|
inputFilters: getInputFiltersForDashboard(state, localDashboardId),
|
|
1002
983
|
links: getLinksForDashboard(state, localDashboardId),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridPanel.js","names":["React","PureComponent","memoize","connect","debounce","DEFAULT_DASHBOARD_ID","LayoutUtils","AdvancedSettings","IrisGrid","IrisGridModel","IrisGridCacheUtils","IrisGridUtils","isIrisGridTableModelTemplate","Log","getSettings","getUser","assertNotNull","PromiseUtils","clamp","IrisGridEvent","getInputFiltersForDashboard","getLinksForDashboard","getColumnSelectionValidatorForDashboard","WidgetPanel","IrisGridPanelTooltip","isIrisGridPanelMetadata","isLegacyIrisGridPanelMetadata","emitFilterColumnsChanged","emitFilterTableChanged","emitLinkPointSelected","emitLinkSourceDataSelected","jsx","_jsx","log","module","DEBOUNCE_PANEL_STATE_UPDATE","getTableNameFromMetadata","metadata","Error","name","table","concat","JSON","stringify","IrisGridPanel","constructor","props","_defineProperty","makeMemoizedGridStateDehydrator","makeMemoizedIrisGridStateDehydrator","columns","inputFilters","getInputFiltersForColumns","filter","_ref","value","excludePanelIds","id","getIdFromPanel","includes","dashboardLinks","pluginFetchColumns","columnSet","Set","i","length","start","panelId","add","columnName","Plugin","model","pluginState","_this$irisGrid$curren","deprecatedProps","panel","className","children","_objectSpread","ref","pluginRef","handlePluginFilter","fetchColumns","handlePluginFetchColumns","tableName","getTableName","selectedRanges","irisGrid","current","state","onStateChange","handlePluginStateChange","isSelectingPartition","partitions","advancedSettings","dehydrateIrisGridPanelState","irisGridPanelState","irisGridState","gridState","description","type","displayType","onPanelStateUpdate","panelState","oldPanelState","irisGridUtils","getCachedPanelState","getDehydratedIrisGridPanelState","irisGridStateDehydrator","gridStateDehydrator","debug","setState","handleAdvancedSettingsChange","bind","handleColumnsChanged","handleTableChanged","handleColumnSelected","handleDataSelected","handleError","handleGridStateChange","handleCreateChart","handleShow","handleTabClicked","handleDisconnect","handleReconnect","handleLoadSuccess","handleLoadError","isColumnSelectionValid","handleContextMenu","handleClearAllFilters","createRef","error","isDisconnected","isLoaded","isLoading","isModelReady","undefined","advancedFilters","Map","aggregationSettings","aggregations","showOnTop","DEFAULTS","customColumns","customColumnFormatMap","columnAlignmentMap","isFilterBarShown","quickFilters","sorts","userColumnWidths","userColumnWidthsByName","userRowHeights","reverse","movedColumns","movedRows","rollupConfig","showSearchBar","searchValue","selectedSearchColumns","invertSearchColumns","pluginFilters","modelQueue","pendingDataMap","frozenColumns","irisGridStateOverrides","gridStateOverrides","isStuckToBottom","isStuckToRight","conditionalFormats","selectDistinctColumns","componentDidMount","initModel","componentDidUpdate","prevProps","prevState","makeModel","stopModelListening","close","startModelListening","componentWillUnmount","savePanelState","cancel","modelPromise","transformModel","Promise","resolve","then","_ref2","_asyncToGenerator","transformedModel","e","_x","apply","arguments","makeCancelable","resolved","catch","modelParam","dh","push","m","getModelRollupConfig","originalColumns","initModelQueue","modelInitialized","modelChange","shift","key","_ref3","get","set","filters","_this$irisGridUtils$g","_this$irisGridUtils","formatter","getFiltersFromInputFilters","timeZone","data","_this$pluginRef$curre","_this$pluginRef$curre2","_this$pluginRef$curre3","getMenu","call","tableColumn","columnSelectionValidator","glEventHub","emit","STATE_CHANGED","event","sendColumnsChange","detail","settings","flush","sourcePanelId","tableSettings","extractTableSettings","CREATE_CHART","column","row","dataMap","updateGrid","focus","isCanceled","loadPlugin","onModelChanged","loadPanelState","pluginName","clearAllFilters","debug2","addEventListener","EVENT","DISCONNECT","RECONNECT","COLUMNS_CHANGED","TABLE_CHANGED","removeEventListener","getCoordinateForColumn","_gridWrapper$getBound","_allColumnXs$get","_allColumnWidths$get","gridWrapper","rect","getBoundingClientRect","width","height","metrics","columnHeaderHeight","allColumnXs","allColumnWidths","right","columnHeaderMaxDepth","columnIndex","getColumnIndexByName","visibleIndex","getVisibleColumn","columnX","columnWidth","x","left","y","top","setFilterMap","filterMap","setAdvancedFilterMap","setFilters","_ref4","indexedQuickFilters","changeFilterColumnNamesToIndexes","_ref5","isFilterable","indexedAdvancedFilters","_ref6","hydrateQuickFilters","hydrateAdvancedFilters","setStateOverrides","overrides","unsetFilterValue","originalIrisGridStateOverrides","savedQuickFilters","savedAdvancedFilters","hydrateIrisGridPanelState","columnHeaderGroups","partitionConfig","hydrateIrisGridState","hydrateGridState","_this$irisGrid$curren2","_this$irisGrid$curren3","grid","handleResize","render","_model$description","_panelState$pluginSta","glContainer","getDownloadWorker","links","user","irisGridProps","transformTableOptions","errorMessage","childrenContent","getPluginContent","permissions","canCopy","canDownloadCsv","widgetPanelDescriptor","getWidgetPanelDescriptor","onClearAllFilters","onShow","onTabFocus","onTabClicked","componentPanel","descriptor","renderTabTooltip","alwaysFetchColumns","getAlwaysFetchColumns","columnAllowedCursor","columnNotAllowedCursor","copyCursor","getGridInputFilters","applyInputFiltersOnInit","isSelectingColumn","onColumnSelected","onCreateChart","onDataSelected","onError","onContextMenu","onAdvancedSettingsChange","customFilters","mapStateToProps","_ref7","localDashboardId","ConnectedIrisGridPanel","forwardRef"],"sources":["../../src/panels/IrisGridPanel.tsx"],"sourcesContent":["// Wrapper for the IrisGrid for use in a golden layout container\n// Will probably need to handle window popping out from golden layout here.\nimport React, {\n PureComponent,\n type ReactElement,\n type ReactNode,\n type RefObject,\n} from 'react';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport {\n type DashboardPanelProps,\n DEFAULT_DASHBOARD_ID,\n LayoutUtils,\n type PanelComponent,\n type PanelMetadata,\n} from '@deephaven/dashboard';\nimport {\n AdvancedSettings,\n IrisGrid,\n type IrisGridType,\n IrisGridModel,\n IrisGridCacheUtils,\n IrisGridUtils,\n isIrisGridTableModelTemplate,\n type ColumnName,\n type PendingDataMap,\n type InputFilter,\n type ReadonlyAdvancedFilterMap,\n type AggregationSettings,\n type AdvancedSettingsType,\n type UIRollupConfig,\n type UIRow,\n type ReadonlyQuickFilterMap,\n type FilterMap,\n type QuickFilter,\n type AdvancedFilter,\n type SidebarFormattingRule,\n type IrisGridState,\n type ChartBuilderSettings,\n type DehydratedIrisGridState,\n type DehydratedIrisGridPanelState,\n type ColumnHeaderGroup,\n type IrisGridContextMenuData,\n type PartitionConfig,\n type IrisGridViewProps,\n type TableOptionsTransform,\n type IrisGridModelTransform,\n} from '@deephaven/iris-grid';\nimport {\n type RowDataMap,\n type AdvancedFilterOptions,\n type FormattingRule,\n type SortDescriptor,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport {\n getSettings,\n getUser,\n type RootState,\n type User,\n type WorkspaceSettings,\n} from '@deephaven/redux';\nimport {\n assertNotNull,\n type CancelablePromise,\n type EventT,\n PromiseUtils,\n} from '@deephaven/utils';\nimport { type ResolvableContextAction } from '@deephaven/components';\nimport type { dh } from '@deephaven/jsapi-types';\nimport {\n type GridState,\n type ModelIndex,\n type ModelSizeMap,\n type MoveOperation,\n} from '@deephaven/grid';\nimport type {\n TablePluginComponent,\n TablePluginElement,\n} from '@deephaven/plugin';\nimport clamp from 'lodash.clamp';\nimport { IrisGridEvent } from '../events';\nimport {\n getInputFiltersForDashboard,\n getLinksForDashboard,\n getColumnSelectionValidatorForDashboard,\n} from '../redux';\nimport WidgetPanel from './WidgetPanel';\nimport './IrisGridPanel.scss';\nimport {\n type Link,\n type LinkColumn,\n type LinkPointOptions,\n} from '../linker/LinkerUtils';\nimport IrisGridPanelTooltip from './IrisGridPanelTooltip';\nimport {\n isIrisGridPanelMetadata,\n isLegacyIrisGridPanelMetadata,\n} from './IrisGridPanelTypes';\nimport { type WidgetPanelDescriptor } from './WidgetPanelTypes';\nimport {\n emitFilterColumnsChanged,\n emitFilterTableChanged,\n} from '../FilterEvents';\nimport {\n emitLinkPointSelected,\n emitLinkSourceDataSelected,\n} from '../linker/LinkerEvent';\n\nconst log = Log.module('IrisGridPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 500;\n\ntype ModelQueueFunction = (model: IrisGridModel) => void;\n\ntype ModelQueue = ModelQueueFunction[];\n\nexport interface PanelState {\n gridState: {\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n movedColumns: readonly {\n from: string | ModelIndex | [string, string] | [ModelIndex, ModelIndex];\n to: string | ModelIndex;\n }[];\n movedRows: readonly MoveOperation[];\n };\n irisGridState: DehydratedIrisGridState;\n irisGridPanelState: DehydratedIrisGridPanelState;\n pluginState: unknown;\n}\n\n// Some of the properties in the loaded panel state may be omitted\n// even though they can't be undefined in the dehydrated state.\n// This can happen when loading the state saved before the properties were added.\ntype LoadedPanelState = PanelState & {\n irisGridPanelState: PanelState['irisGridPanelState'] & {\n partitions?: (string | null)[];\n partition?: string | null;\n };\n};\n\nexport interface OwnProps extends DashboardPanelProps {\n children?: ReactNode;\n panelState?: LoadedPanelState | null;\n makeModel: () => IrisGridModel | Promise<IrisGridModel>;\n\n onStateChange?: (irisGridState: IrisGridState, gridState: GridState) => void;\n onPanelStateUpdate?: (panelState: PanelState) => void;\n\n /** Override the default worker used by IrisGrid to download CSVs. */\n getDownloadWorker?: () => Promise<ServiceWorker>;\n\n /** Load a plugin defined by the table */\n loadPlugin: (pluginName: string) => TablePluginComponent;\n\n /**\n * View-concern overrides (theme, renderer, mouse handlers, metric\n * calculator) forwarded as a single bag to `IrisGrid`. Lets IrisGrid-aware\n * middleware contribute presentation without this panel knowing each\n * concern by name. Threaded down the middleware chain.\n */\n irisGridProps?: Partial<IrisGridViewProps>;\n\n /**\n * Transform applied to the built-in Table Options items before they are\n * rendered. Forwarded to `IrisGrid#transformTableOptions`. Threaded down\n * the middleware chain by IrisGrid-aware plugins.\n */\n transformTableOptions?: TableOptionsTransform;\n\n /**\n * Called with the resolved `IrisGridModel` once it is initialized, so\n * middleware can subscribe to model events (e.g. to recompute a\n * `transformTableOptions` snapshot).\n */\n onModelChanged?: (model: IrisGridModel) => void;\n\n /**\n * Transform applied to the model built by `makeModel` before it is handed\n * to `IrisGrid`. Lets IrisGrid-aware middleware wrap the host-built model\n * (e.g. in a proxy) without taking over model construction. Applied when\n * the model is (re)built, so it must be referentially stable.\n */\n transformModel?: IrisGridModelTransform;\n}\n\ninterface StateProps {\n inputFilters: InputFilter[];\n links: Link[];\n columnSelectionValidator?: (\n panel: PanelComponent,\n tableColumn: LinkColumn,\n options: LinkPointOptions\n ) => boolean;\n user: User;\n settings: WorkspaceSettings;\n}\n\ninterface IrisGridPanelState {\n error: unknown;\n isDisconnected: boolean;\n isLoaded: boolean;\n isLoading: boolean;\n isModelReady: boolean;\n model?: IrisGridModel;\n\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n\n // State is hydrated from panel state when table is loaded\n conditionalFormats: readonly SidebarFormattingRule[];\n selectDistinctColumns: readonly ColumnName[];\n advancedFilters: ReadonlyAdvancedFilterMap;\n aggregationSettings: AggregationSettings;\n advancedSettings: Map<AdvancedSettingsType, boolean>;\n customColumns: readonly ColumnName[];\n customColumnFormatMap: Map<string, FormattingRule>;\n columnAlignmentMap: Map<string, CanvasTextAlign>;\n isFilterBarShown: boolean;\n quickFilters: ReadonlyQuickFilterMap;\n sorts: readonly SortDescriptor[];\n userColumnWidths: ModelSizeMap;\n userColumnWidthsByName: ReadonlyMap<ColumnName, number>;\n userRowHeights: ModelSizeMap;\n reverse: boolean;\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n isSelectingPartition: boolean;\n partitions: (string | null)[];\n partitionConfig?: PartitionConfig;\n rollupConfig?: UIRollupConfig;\n showSearchBar: boolean;\n searchValue: string;\n selectedSearchColumns?: readonly string[];\n invertSearchColumns: boolean;\n Plugin?: TablePluginComponent;\n pluginFilters: readonly dh.FilterCondition[];\n pluginFetchColumns: readonly string[];\n modelQueue: ModelQueue;\n pendingDataMap?: PendingDataMap<UIRow>;\n frozenColumns?: readonly ColumnName[];\n columnHeaderGroups?: readonly ColumnHeaderGroup[];\n\n // eslint-disable-next-line react/no-unused-state\n panelState?: PanelState | null; // Dehydrated panel state that can load this panel\n irisGridStateOverrides: Partial<DehydratedIrisGridState>;\n gridStateOverrides: Partial<GridState>;\n}\n\nfunction getTableNameFromMetadata(\n metadata: PanelMetadata | null | undefined\n): string {\n if (metadata == null) {\n throw new Error('No metadata provided');\n }\n if (isIrisGridPanelMetadata(metadata)) {\n return metadata.name;\n }\n if (isLegacyIrisGridPanelMetadata(metadata)) {\n return metadata.table;\n }\n\n throw new Error(\n `Unable to determine table name from metadata: ${JSON.stringify(metadata)}`\n );\n}\n\nexport type IrisGridPanelProps = OwnProps & StateProps;\n\nexport class IrisGridPanel extends PureComponent<\n IrisGridPanelProps,\n IrisGridPanelState\n> {\n static defaultProps = {\n onStateChange: (): void => undefined,\n onPanelStateUpdate: (): void => undefined,\n };\n\n static displayName = 'IrisGridPanel';\n\n static COMPONENT = 'IrisGridPanel';\n\n constructor(props: IrisGridPanelProps) {\n super(props);\n\n this.handleAdvancedSettingsChange =\n this.handleAdvancedSettingsChange.bind(this);\n this.handleColumnsChanged = this.handleColumnsChanged.bind(this);\n this.handleTableChanged = this.handleTableChanged.bind(this);\n this.handleColumnSelected = this.handleColumnSelected.bind(this);\n this.handleDataSelected = this.handleDataSelected.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleGridStateChange = this.handleGridStateChange.bind(this);\n this.handlePluginStateChange = this.handlePluginStateChange.bind(this);\n this.handleCreateChart = this.handleCreateChart.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleTabClicked = this.handleTabClicked.bind(this);\n this.handleDisconnect = this.handleDisconnect.bind(this);\n this.handleReconnect = this.handleReconnect.bind(this);\n this.handleLoadSuccess = this.handleLoadSuccess.bind(this);\n this.handleLoadError = this.handleLoadError.bind(this);\n this.isColumnSelectionValid = this.isColumnSelectionValid.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.handlePluginFilter = this.handlePluginFilter.bind(this);\n this.handlePluginFetchColumns = this.handlePluginFetchColumns.bind(this);\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n\n this.irisGrid = React.createRef();\n this.pluginRef = React.createRef();\n\n const { panelState } = props;\n\n this.pluginState = null;\n this.irisGridUtils = null;\n\n this.state = {\n error: null,\n isDisconnected: false,\n isLoaded: false,\n isLoading: true,\n isModelReady: false,\n model: undefined,\n\n // State is hydrated from panel state when table is loaded\n advancedFilters: new Map(),\n aggregationSettings: { aggregations: [], showOnTop: false },\n advancedSettings: new Map(AdvancedSettings.DEFAULTS),\n customColumns: [],\n customColumnFormatMap: new Map(),\n columnAlignmentMap: new Map(),\n isFilterBarShown: false,\n quickFilters: new Map(),\n sorts: [],\n userColumnWidths: new Map(),\n userColumnWidthsByName: new Map(),\n userRowHeights: new Map(),\n reverse: false,\n movedColumns: [],\n movedRows: [],\n isSelectingPartition: false,\n partitions: [],\n rollupConfig: undefined,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: undefined,\n invertSearchColumns: true,\n Plugin: undefined,\n pluginFilters: [],\n pluginFetchColumns: [],\n modelQueue: [],\n pendingDataMap: new Map(),\n frozenColumns: undefined,\n\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n irisGridStateOverrides: {},\n gridStateOverrides: {},\n isStuckToBottom: false,\n isStuckToRight: false,\n conditionalFormats: [],\n selectDistinctColumns: [],\n };\n }\n\n componentDidMount(): void {\n this.initModel();\n }\n\n componentDidUpdate(\n prevProps: IrisGridPanelProps,\n prevState: IrisGridPanelState\n ): void {\n const { model } = this.state;\n const { makeModel } = this.props;\n if (model !== prevState.model) {\n if (prevState.model != null) {\n this.stopModelListening(prevState.model);\n prevState.model.close();\n }\n if (model != null) {\n this.startModelListening(model);\n }\n }\n\n if (makeModel !== prevProps.makeModel) {\n this.initModel();\n }\n }\n\n componentWillUnmount(): void {\n this.savePanelState.cancel();\n\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n this.modelPromise = undefined;\n }\n\n const { model } = this.state;\n if (model) {\n this.stopModelListening(model);\n model.close();\n }\n }\n\n irisGrid: RefObject<IrisGridType>;\n\n pluginRef: RefObject<TablePluginElement>;\n\n modelPromise?: CancelablePromise<IrisGridModel>;\n\n irisGridState?: IrisGridState;\n\n gridState?: GridState;\n\n pluginState: unknown;\n\n private irisGridUtils: IrisGridUtils | null;\n\n private gridStateDehydrator =\n IrisGridCacheUtils.makeMemoizedGridStateDehydrator();\n\n private irisGridStateDehydrator =\n IrisGridCacheUtils.makeMemoizedIrisGridStateDehydrator();\n\n getTableName(): string {\n const { metadata } = this.props;\n return getTableNameFromMetadata(metadata);\n }\n\n getGridInputFilters = memoize(\n (columns: readonly dh.Column[], inputFilters: readonly InputFilter[]) =>\n IrisGridUtils.getInputFiltersForColumns(\n columns,\n // They may have picked a column, but not actually entered a value yet. In that case, don't need to update.\n inputFilters.filter(({ value, excludePanelIds }) => {\n const id = LayoutUtils.getIdFromPanel(this);\n return (\n value != null &&\n (excludePanelIds == null ||\n (id != null && !excludePanelIds.includes(id)))\n );\n })\n )\n );\n\n getAlwaysFetchColumns = memoize(\n (\n dashboardLinks: readonly Link[],\n pluginFetchColumns: readonly string[]\n ): string[] => {\n const id = LayoutUtils.getIdFromPanel(this);\n // Always fetch columns which are the start/source of a link or columns specified by a plugin\n const columnSet = new Set(pluginFetchColumns);\n for (let i = 0; i < dashboardLinks.length; i += 1) {\n const { start } = dashboardLinks[i];\n if (start != null && start.panelId === id) {\n columnSet.add(start.columnName);\n }\n }\n return [...columnSet];\n }\n );\n\n getPluginContent = memoize(\n (\n Plugin: TablePluginComponent | undefined,\n model: IrisGridModel | undefined,\n pluginState: unknown\n ) => {\n if (\n !model ||\n !isIrisGridTableModelTemplate(model) ||\n Plugin == null ||\n model.table == null\n ) {\n return null;\n }\n\n // TODO #2093: Find a better way to handle deprecated panel prop\n const deprecatedProps = {\n panel: this,\n };\n\n return (\n <div className=\"iris-grid-plugin\">\n <Plugin\n ref={this.pluginRef}\n filter={this.handlePluginFilter}\n fetchColumns={this.handlePluginFetchColumns}\n model={model}\n table={model.table}\n tableName={this.getTableName()}\n selectedRanges={this.irisGrid.current?.state.selectedRanges}\n onStateChange={this.handlePluginStateChange}\n pluginState={pluginState}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...deprecatedProps}\n />\n </div>\n );\n }\n );\n\n getDehydratedIrisGridPanelState = memoize(\n (\n model: IrisGridModel,\n isSelectingPartition: boolean,\n partitions: (string | null)[],\n advancedSettings: Map<AdvancedSettingsType, boolean>\n ) =>\n IrisGridUtils.dehydrateIrisGridPanelState(model, {\n isSelectingPartition,\n partitions,\n advancedSettings,\n })\n );\n\n getCachedPanelState = memoize(\n (\n irisGridPanelState: PanelState['irisGridPanelState'],\n irisGridState: PanelState['irisGridState'],\n gridState: PanelState['gridState'],\n pluginState: PanelState['pluginState']\n ): PanelState => ({\n irisGridPanelState,\n irisGridState,\n gridState,\n pluginState,\n })\n );\n\n getWidgetPanelDescriptor = memoize(\n (\n metadata: IrisGridPanelProps['metadata'],\n description?: string\n ): WidgetPanelDescriptor => {\n const name = getTableNameFromMetadata(metadata);\n return {\n type: 'Table',\n displayType: 'Table',\n ...metadata,\n name,\n description,\n };\n }\n );\n\n initModel(): void {\n this.setState({\n isModelReady: false,\n isLoading: true,\n error: null,\n isDisconnected: false,\n });\n const { makeModel, transformModel } = this.props;\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n }\n const modelPromise =\n transformModel != null\n ? Promise.resolve(makeModel()).then(async model => {\n try {\n const transformedModel = await transformModel(model);\n return transformedModel;\n } catch (e) {\n // The host owns the base model's lifecycle; if the transform\n // rejects it never returns a model for us to close, so close\n // the base model here to avoid leaking it.\n model.close();\n throw e;\n }\n })\n : Promise.resolve(makeModel());\n this.modelPromise = PromiseUtils.makeCancelable(modelPromise, resolved =>\n resolved.close()\n );\n this.modelPromise.then(this.handleLoadSuccess).catch(this.handleLoadError);\n }\n\n handleLoadSuccess(modelParam: IrisGridModel): void {\n const model = modelParam;\n const { panelState, irisGridStateOverrides } = this.state;\n const modelQueue: ((m: IrisGridModel) => void)[] = [];\n this.irisGridUtils = new IrisGridUtils(model.dh);\n if (panelState != null) {\n const { irisGridState } = panelState;\n const {\n aggregationSettings,\n customColumns,\n selectDistinctColumns = [],\n rollupConfig,\n } = { ...irisGridState, ...irisGridStateOverrides };\n\n if (customColumns.length > 0) {\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.customColumns = customColumns;\n });\n }\n\n if (rollupConfig != null && rollupConfig.columns.length > 0) {\n // originalColumns might change by the time this model queue item is applied.\n // Instead of pushing a static object, push the function\n // that calculates the config based on the updated model state.\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.rollupConfig = IrisGridUtils.getModelRollupConfig(\n m.originalColumns,\n rollupConfig,\n aggregationSettings\n );\n });\n }\n\n if (selectDistinctColumns.length > 0) {\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.selectDistinctColumns = selectDistinctColumns;\n });\n }\n }\n\n this.setState({ model, modelQueue });\n this.initModelQueue(model, modelQueue);\n }\n\n initModelQueue(modelParam: IrisGridModel, modelQueue: ModelQueue): void {\n const model = modelParam;\n if (modelQueue.length === 0) {\n this.modelInitialized(model);\n return;\n }\n const modelChange = modelQueue.shift();\n log.debug('initModelQueue', modelChange);\n // Apply next model change. Triggers columnschanged event.\n if (modelChange) {\n modelChange(model);\n }\n this.setState({ modelQueue });\n }\n\n handleAdvancedSettingsChange(\n key: AdvancedSettingsType,\n value: boolean\n ): void {\n log.debug('handleAdvancedSettingsChange', key, value);\n this.setState(({ advancedSettings }) =>\n advancedSettings.get(key) === value\n ? null\n : { advancedSettings: new Map(advancedSettings).set(key, value) }\n );\n }\n\n handlePluginFilter(filters: InputFilter[]): void {\n const { model } = this.state;\n assertNotNull(model);\n const { columns, formatter } = model;\n const pluginFilters =\n this.irisGridUtils?.getFiltersFromInputFilters(\n columns,\n filters,\n formatter.timeZone\n ) ?? [];\n this.setState({ pluginFilters });\n }\n\n handlePluginFetchColumns(pluginFetchColumns: string[]): void {\n this.setState({ pluginFetchColumns });\n }\n\n handleContextMenu(data: IrisGridContextMenuData): ResolvableContextAction[] {\n return this.pluginRef.current?.getMenu?.(data) ?? [];\n }\n\n isColumnSelectionValid(tableColumn: dh.Column | null): boolean {\n const { columnSelectionValidator } = this.props;\n if (columnSelectionValidator && tableColumn) {\n return columnSelectionValidator(this, tableColumn, {\n type: 'tableLink',\n });\n }\n return false;\n }\n\n handleGridStateChange(\n irisGridState: IrisGridState,\n gridState: GridState\n ): void {\n this.irisGridState = irisGridState;\n this.gridState = gridState;\n\n // Grid sends it's first state change after it's finished loading\n this.setState({ isLoaded: true, isLoading: false });\n\n this.savePanelState();\n\n const { glEventHub, onStateChange } = this.props;\n glEventHub.emit(IrisGridEvent.STATE_CHANGED, this);\n onStateChange?.(irisGridState, gridState);\n }\n\n handlePluginStateChange(pluginState: unknown): void {\n const { irisGridState, gridState } = this;\n this.pluginState = pluginState;\n // Do not save if there is null state\n // The save will happen when the grid loads\n if (irisGridState !== null && gridState !== null) {\n this.savePanelState();\n }\n }\n\n handleColumnsChanged(event: EventT): void {\n const { isModelReady, model, modelQueue } = this.state;\n if (isModelReady) {\n this.sendColumnsChange((event as CustomEvent).detail);\n } else {\n assertNotNull(model);\n this.initModelQueue(model, modelQueue);\n }\n }\n\n handleTableChanged(event: EventT): void {\n log.debug('handleTableChanged', event);\n const { glEventHub } = this.props;\n const { detail: table } = event as CustomEvent;\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitFilterTableChanged(glEventHub, panelId, table);\n }\n\n /**\n * Create a chart with the specified settings\n * @param settings The settings from the chart builder\n * @param settings.type The settings from the chart builder\n * @param settings.series The names of the series\n * @param model The IrisGridModel object\n */\n handleCreateChart(\n settings: ChartBuilderSettings,\n model: IrisGridModel\n ): void {\n // Panel state is stored with the created chart, so flush it first\n this.savePanelState.flush();\n\n this.setState(\n () => null,\n () => {\n const { glEventHub, inputFilters, metadata } = this.props;\n const table = this.getTableName();\n const { panelState } = this.state;\n const sourcePanelId = LayoutUtils.getIdFromPanel(this);\n let tableSettings;\n\n if (panelState) {\n tableSettings = IrisGridUtils.extractTableSettings(\n panelState,\n inputFilters\n );\n }\n glEventHub.emit(IrisGridEvent.CREATE_CHART, {\n metadata: {\n ...metadata,\n settings,\n sourcePanelId,\n table,\n tableSettings,\n },\n table: isIrisGridTableModelTemplate(model) ? model.table : undefined,\n });\n }\n );\n }\n\n handleColumnSelected(column: dh.Column): void {\n const { glEventHub } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitLinkPointSelected(glEventHub, panelId, column, { type: 'tableLink' });\n }\n\n handleDataSelected(row: ModelIndex, dataMap: RowDataMap): void {\n const { glEventHub } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitLinkSourceDataSelected(glEventHub, panelId, dataMap);\n }\n\n handleShow(): void {\n this.updateGrid();\n }\n\n handleTabClicked(): void {\n if (this.irisGrid.current) {\n this.irisGrid.current.focus();\n }\n }\n\n handleError(error: unknown): void {\n log.error(error);\n this.setState({ error, isLoading: false });\n }\n\n handleDisconnect(): void {\n this.setState({\n error: new Error('Table disconnected'),\n isDisconnected: true,\n isLoading: false,\n });\n }\n\n handleReconnect(): void {\n this.setState({ isDisconnected: false, error: null });\n }\n\n handleLoadError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n this.handleError(error);\n }\n\n modelInitialized(model: IrisGridModel): void {\n const { glEventHub, loadPlugin, onModelChanged } = this.props;\n\n this.modelPromise = undefined;\n\n // Custom columns at this point already initialized, can load state\n this.loadPanelState(model);\n\n this.setState({ isModelReady: true });\n\n onModelChanged?.(model);\n\n if (isIrisGridTableModelTemplate(model)) {\n const { table } = model;\n const { pluginName } = table;\n\n if (pluginName !== '') {\n if (loadPlugin != null && pluginName != null) {\n const Plugin = loadPlugin(pluginName);\n this.setState({ Plugin });\n }\n }\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitFilterTableChanged(glEventHub, panelId, table);\n }\n\n this.sendColumnsChange(model.columns);\n }\n\n handleClearAllFilters(): void {\n const irisGrid = this.irisGrid.current;\n const { isDisconnected } = this.state;\n if (irisGrid != null && !isDisconnected) {\n irisGrid.clearAllFilters();\n }\n }\n\n sendColumnsChange(columns: readonly dh.Column[]): void {\n log.debug2('sendColumnsChange', columns);\n const { glEventHub } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitFilterColumnsChanged(glEventHub, panelId, columns);\n }\n\n startModelListening(model: IrisGridModel): void {\n model.addEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n this.handleDisconnect\n );\n model.addEventListener(IrisGridModel.EVENT.RECONNECT, this.handleReconnect);\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleColumnsChanged\n );\n model.addEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n }\n\n stopModelListening(model: IrisGridModel): void {\n model.removeEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n this.handleDisconnect\n );\n model.removeEventListener(\n IrisGridModel.EVENT.RECONNECT,\n this.handleReconnect\n );\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleColumnsChanged\n );\n model.removeEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n }\n\n getCoordinateForColumn(columnName: ColumnName): [number, number] | null {\n const { model } = this.state;\n if (!model) {\n return null;\n }\n\n const irisGrid = this.irisGrid.current;\n const { gridWrapper } = irisGrid || {};\n const rect = gridWrapper?.getBoundingClientRect() ?? null;\n if (rect == null || rect.width <= 0 || rect.height <= 0) {\n return null;\n }\n assertNotNull(irisGrid);\n const { metrics } = irisGrid.state;\n assertNotNull(metrics);\n const {\n columnHeaderHeight,\n allColumnXs,\n allColumnWidths,\n right,\n columnHeaderMaxDepth,\n } = metrics;\n const columnIndex = model.getColumnIndexByName(columnName);\n assertNotNull(columnIndex);\n const visibleIndex = irisGrid.getVisibleColumn(columnIndex);\n const columnX = allColumnXs.get(visibleIndex) ?? 0;\n const columnWidth = allColumnWidths.get(visibleIndex) ?? 0;\n\n const x = clamp(\n visibleIndex > right\n ? rect.right\n : rect.left + columnX + columnWidth * 0.5,\n rect.left,\n rect.right\n );\n const y = rect.top + columnHeaderHeight * columnHeaderMaxDepth;\n\n return [x, y];\n }\n\n setFilterMap(filterMap: FilterMap): void {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setFilterMap(filterMap);\n }\n }\n\n setAdvancedFilterMap(filterMap: ReadonlyAdvancedFilterMap): void {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setAdvancedFilterMap(filterMap);\n }\n }\n\n setFilters({\n quickFilters,\n advancedFilters,\n }: {\n quickFilters: { name: ColumnName; filter: QuickFilter }[];\n advancedFilters: { name: ColumnName; filter: AdvancedFilter }[];\n }): void {\n log.debug('setFilters', quickFilters, advancedFilters);\n const { model, isDisconnected } = this.state;\n const irisGrid = this.irisGrid.current;\n if (irisGrid == null || isDisconnected) {\n log.debug('Ignore setFilters, model disconnected');\n return;\n }\n assertNotNull(model);\n const { columns, formatter } = model;\n const indexedQuickFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n quickFilters\n ).filter(([columnIndex]) => model.isFilterable(columnIndex));\n const indexedAdvancedFilters =\n IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n advancedFilters\n ).filter(([columnIndex]) => model.isFilterable(columnIndex));\n assertNotNull(this.irisGridUtils);\n irisGrid.clearAllFilters();\n irisGrid.setFilters({\n quickFilters: this.irisGridUtils.hydrateQuickFilters(\n columns,\n indexedQuickFilters,\n formatter.timeZone\n ),\n advancedFilters: this.irisGridUtils.hydrateAdvancedFilters(\n columns,\n indexedAdvancedFilters,\n formatter.timeZone\n ),\n });\n }\n\n setStateOverrides(overrides: {\n irisGridState: Partial<DehydratedIrisGridState>;\n gridState: Partial<GridState>;\n }): void {\n log.debug('setStateOverrides', overrides);\n const {\n irisGridState: irisGridStateOverrides,\n gridState: gridStateOverrides,\n } = overrides;\n this.setState({ irisGridStateOverrides, gridStateOverrides }, () => {\n this.initModel();\n });\n }\n\n // eslint-disable-next-line class-methods-use-this\n unsetFilterValue(): void {\n // IrisGridPanel retains the set value after the link is broken\n // We need to define this so LinkerUtils#isLinkablePanel passes the check\n }\n\n loadPanelState(model: IrisGridModel): void {\n const {\n panelState,\n irisGridStateOverrides: originalIrisGridStateOverrides,\n gridStateOverrides,\n } = this.state;\n if (panelState == null) {\n return;\n }\n\n try {\n const { gridState, irisGridState, irisGridPanelState } = panelState;\n const irisGridStateOverrides = { ...originalIrisGridStateOverrides };\n const {\n quickFilters: savedQuickFilters,\n advancedFilters: savedAdvancedFilters,\n } = irisGridStateOverrides;\n if (savedQuickFilters) {\n irisGridStateOverrides.quickFilters =\n IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n savedQuickFilters as unknown as {\n name: string;\n filter: {\n text: string;\n };\n }[]\n );\n }\n if (savedAdvancedFilters) {\n irisGridStateOverrides.advancedFilters =\n IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n savedAdvancedFilters as unknown as {\n name: string;\n filter: { options: AdvancedFilterOptions };\n }[]\n );\n }\n const { isSelectingPartition, partitions, advancedSettings } =\n IrisGridUtils.hydrateIrisGridPanelState(model, irisGridPanelState);\n assertNotNull(this.irisGridUtils);\n const {\n advancedFilters,\n customColumns,\n customColumnFormatMap,\n columnAlignmentMap,\n isFilterBarShown,\n quickFilters,\n reverse,\n rollupConfig,\n aggregationSettings,\n sorts,\n userColumnWidths,\n userColumnWidthsByName,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap,\n frozenColumns,\n conditionalFormats,\n columnHeaderGroups,\n partitionConfig,\n } = this.irisGridUtils.hydrateIrisGridState(model, {\n ...irisGridState,\n ...irisGridStateOverrides,\n });\n const { isStuckToBottom, isStuckToRight, movedColumns, movedRows } =\n IrisGridUtils.hydrateGridState(\n model,\n { ...gridState, ...gridStateOverrides },\n irisGridState.customColumns\n );\n this.setState({\n advancedFilters,\n advancedSettings,\n conditionalFormats,\n customColumns,\n customColumnFormatMap,\n columnAlignmentMap,\n isFilterBarShown,\n isSelectingPartition,\n movedColumns,\n movedRows,\n partitions,\n quickFilters,\n reverse,\n rollupConfig,\n aggregationSettings,\n sorts,\n userColumnWidths,\n userColumnWidthsByName,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap,\n frozenColumns,\n isStuckToBottom,\n isStuckToRight,\n columnHeaderGroups,\n partitionConfig,\n });\n } catch (error) {\n log.error('loadPanelState failed to load panelState', panelState, error);\n }\n }\n\n savePanelState = debounce(() => {\n const { irisGridState, gridState, pluginState } = this;\n assertNotNull(irisGridState);\n const { onPanelStateUpdate } = this.props;\n const {\n model,\n panelState: oldPanelState,\n isSelectingPartition,\n partitions,\n advancedSettings,\n } = this.state;\n assertNotNull(this.irisGridUtils);\n assertNotNull(model);\n assertNotNull(gridState);\n\n const panelState = this.getCachedPanelState(\n this.getDehydratedIrisGridPanelState(\n model,\n isSelectingPartition,\n partitions,\n advancedSettings\n ),\n this.irisGridStateDehydrator(model, irisGridState),\n this.gridStateDehydrator(model, gridState),\n pluginState\n );\n\n if (panelState !== oldPanelState) {\n log.debug('Saving panel state', this, panelState);\n\n this.setState({ panelState });\n onPanelStateUpdate?.(panelState);\n }\n }, DEBOUNCE_PANEL_STATE_UPDATE);\n\n updateGrid(): void {\n const grid = this.irisGrid.current?.grid ?? null;\n if (!grid) return;\n\n // handle resize will verify state and draw and update\n grid.handleResize();\n }\n\n render(): ReactElement {\n const {\n children,\n glContainer,\n glEventHub,\n columnSelectionValidator,\n getDownloadWorker,\n inputFilters,\n links,\n metadata,\n panelState,\n user,\n settings,\n irisGridProps,\n transformTableOptions,\n } = this.props;\n const {\n advancedFilters,\n aggregationSettings,\n advancedSettings,\n conditionalFormats,\n customColumns,\n customColumnFormatMap,\n columnAlignmentMap,\n error,\n isDisconnected,\n isFilterBarShown,\n isSelectingPartition,\n isStuckToBottom,\n isStuckToRight,\n isLoaded,\n isLoading,\n isModelReady,\n model,\n movedColumns,\n movedRows,\n partitions,\n partitionConfig,\n quickFilters,\n reverse,\n rollupConfig,\n sorts,\n userColumnWidths,\n userColumnWidthsByName,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n Plugin,\n pluginFilters,\n pluginFetchColumns,\n pendingDataMap,\n frozenColumns,\n columnHeaderGroups,\n } = this.state;\n const errorMessage =\n error != null ? `Unable to open table. ${error}` : undefined;\n const description = model?.description ?? undefined;\n const pluginState = panelState?.pluginState ?? null;\n const childrenContent =\n children ?? this.getPluginContent(Plugin, model, pluginState);\n const { permissions } = user;\n const { canCopy, canDownloadCsv } = permissions;\n const widgetPanelDescriptor = this.getWidgetPanelDescriptor(\n metadata,\n description\n );\n\n return (\n <WidgetPanel\n errorMessage={errorMessage}\n isDisconnected={isDisconnected}\n isLoading={isLoading}\n isLoaded={isLoaded}\n className=\"iris-grid-panel\"\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={this.handleClearAllFilters}\n onShow={this.handleShow}\n onTabFocus={this.handleShow}\n onTabClicked={this.handleTabClicked}\n componentPanel={this}\n descriptor={widgetPanelDescriptor}\n renderTabTooltip={() => (\n <IrisGridPanelTooltip\n descriptor={widgetPanelDescriptor}\n model={model}\n />\n )}\n >\n {isModelReady && model && (\n <IrisGrid\n advancedFilters={advancedFilters}\n aggregationSettings={aggregationSettings}\n advancedSettings={advancedSettings}\n alwaysFetchColumns={this.getAlwaysFetchColumns(\n links,\n pluginFetchColumns\n )}\n columnAllowedCursor=\"linker\"\n columnNotAllowedCursor=\"linker-not-allowed\"\n copyCursor=\"copy\"\n customColumns={customColumns}\n customColumnFormatMap={customColumnFormatMap}\n columnAlignmentMap={columnAlignmentMap}\n columnSelectionValidator={this.isColumnSelectionValid}\n conditionalFormats={conditionalFormats}\n inputFilters={this.getGridInputFilters(model.columns, inputFilters)}\n applyInputFiltersOnInit={panelState == null}\n isFilterBarShown={isFilterBarShown}\n isSelectingColumn={columnSelectionValidator != null}\n isSelectingPartition={isSelectingPartition}\n isStuckToBottom={isStuckToBottom}\n isStuckToRight={isStuckToRight}\n movedColumns={movedColumns}\n movedRows={movedRows}\n partitions={partitions}\n partitionConfig={partitionConfig}\n quickFilters={quickFilters}\n reverse={reverse}\n rollupConfig={rollupConfig}\n settings={settings}\n sorts={sorts}\n userColumnWidths={userColumnWidths}\n userColumnWidthsByName={userColumnWidthsByName}\n userRowHeights={userRowHeights}\n model={model}\n showSearchBar={showSearchBar}\n searchValue={searchValue}\n selectedSearchColumns={selectedSearchColumns}\n selectDistinctColumns={selectDistinctColumns}\n invertSearchColumns={invertSearchColumns}\n onColumnSelected={this.handleColumnSelected}\n onCreateChart={this.handleCreateChart}\n onDataSelected={this.handleDataSelected}\n onError={this.handleError}\n onStateChange={this.handleGridStateChange}\n onContextMenu={this.handleContextMenu}\n onAdvancedSettingsChange={this.handleAdvancedSettingsChange}\n customFilters={pluginFilters}\n pendingDataMap={pendingDataMap}\n canCopy={canCopy}\n canDownloadCsv={canDownloadCsv}\n ref={this.irisGrid}\n getDownloadWorker={getDownloadWorker}\n frozenColumns={frozenColumns}\n columnHeaderGroups={columnHeaderGroups}\n transformTableOptions={transformTableOptions}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...irisGridProps}\n >\n {childrenContent}\n </IrisGrid>\n )}\n </WidgetPanel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n { localDashboardId = DEFAULT_DASHBOARD_ID, glContainer }: OwnProps\n): StateProps => ({\n inputFilters: getInputFiltersForDashboard(state, localDashboardId),\n links: getLinksForDashboard(state, localDashboardId),\n columnSelectionValidator: getColumnSelectionValidatorForDashboard(\n state,\n localDashboardId\n ),\n user: getUser(state),\n settings: getSettings(state),\n});\n\nconst ConnectedIrisGridPanel = connect(mapStateToProps, null, null, {\n forwardRef: true,\n})(IrisGridPanel);\n\nexport default ConnectedIrisGridPanel;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"IrisGridPanel.js","names":["React","PureComponent","memoize","connect","debounce","DEFAULT_DASHBOARD_ID","LayoutUtils","AdvancedSettings","IrisGrid","IrisGridModel","IrisGridCacheUtils","IrisGridUtils","isIrisGridTableModelTemplate","Log","getSettings","getUser","assertNotNull","PromiseUtils","clamp","IrisGridEvent","getInputFiltersForDashboard","getLinksForDashboard","getColumnSelectionValidatorForDashboard","WidgetPanel","IrisGridPanelTooltip","isIrisGridPanelMetadata","isLegacyIrisGridPanelMetadata","emitFilterColumnsChanged","emitFilterTableChanged","emitLinkPointSelected","emitLinkSourceDataSelected","jsx","_jsx","log","module","DEBOUNCE_PANEL_STATE_UPDATE","getTableNameFromMetadata","metadata","Error","name","table","concat","JSON","stringify","IrisGridPanel","constructor","props","_defineProperty","makeMemoizedGridStateDehydrator","makeMemoizedIrisGridStateDehydrator","columns","inputFilters","getInputFiltersForColumns","filter","_ref","value","excludePanelIds","id","getIdFromPanel","includes","dashboardLinks","pluginFetchColumns","columnSet","Set","i","length","start","panelId","add","columnName","Plugin","model","pluginState","_this$irisGrid$curren","deprecatedProps","panel","className","children","_objectSpread","ref","pluginRef","handlePluginFilter","fetchColumns","handlePluginFetchColumns","tableName","getTableName","selectedRanges","irisGrid","current","state","onStateChange","handlePluginStateChange","isSelectingPartition","partitions","advancedSettings","dehydrateIrisGridPanelState","irisGridPanelState","irisGridState","gridState","description","type","displayType","onPanelStateUpdate","panelState","oldPanelState","irisGridUtils","getCachedPanelState","getDehydratedIrisGridPanelState","irisGridStateDehydrator","gridStateDehydrator","debug","setState","handleAdvancedSettingsChange","bind","handleColumnsChanged","handleTableChanged","handleColumnSelected","handleDataSelected","handleError","handleGridStateChange","handleCreateChart","handleShow","handleTabClicked","handleDisconnect","handleReconnect","handleLoadSuccess","handleLoadError","isColumnSelectionValid","handleContextMenu","handleClearAllFilters","createRef","error","isDisconnected","isLoaded","isLoading","isModelReady","undefined","advancedFilters","Map","aggregationSettings","aggregations","showOnTop","DEFAULTS","customColumns","customColumnFormatMap","columnAlignmentMap","isFilterBarShown","quickFilters","sorts","userColumnWidths","userColumnWidthsByName","userRowHeights","reverse","movedColumns","movedRows","rollupConfig","showSearchBar","searchValue","selectedSearchColumns","invertSearchColumns","pluginFilters","modelQueue","pendingDataMap","frozenColumns","irisGridStateOverrides","gridStateOverrides","isStuckToBottom","isStuckToRight","conditionalFormats","selectDistinctColumns","componentDidMount","initModel","componentDidUpdate","prevProps","prevState","makeModel","stopModelListening","close","startModelListening","componentWillUnmount","savePanelState","cancel","modelPromise","makeCancelable","resolved","then","catch","modelParam","dh","push","m","getModelRollupConfig","originalColumns","initModelQueue","modelInitialized","modelChange","shift","key","_ref2","get","set","filters","_this$irisGridUtils$g","_this$irisGridUtils","formatter","getFiltersFromInputFilters","timeZone","data","_this$pluginRef$curre","_this$pluginRef$curre2","_this$pluginRef$curre3","getMenu","call","tableColumn","columnSelectionValidator","glEventHub","emit","STATE_CHANGED","event","sendColumnsChange","detail","settings","flush","sourcePanelId","tableSettings","extractTableSettings","CREATE_CHART","column","row","dataMap","updateGrid","focus","isCanceled","loadPlugin","loadPanelState","pluginName","clearAllFilters","debug2","addEventListener","EVENT","DISCONNECT","RECONNECT","COLUMNS_CHANGED","TABLE_CHANGED","removeEventListener","getCoordinateForColumn","_gridWrapper$getBound","_allColumnXs$get","_allColumnWidths$get","gridWrapper","rect","getBoundingClientRect","width","height","metrics","columnHeaderHeight","allColumnXs","allColumnWidths","right","columnHeaderMaxDepth","columnIndex","getColumnIndexByName","visibleIndex","getVisibleColumn","columnX","columnWidth","x","left","y","top","setFilterMap","filterMap","setAdvancedFilterMap","setFilters","_ref3","indexedQuickFilters","changeFilterColumnNamesToIndexes","_ref4","isFilterable","indexedAdvancedFilters","_ref5","hydrateQuickFilters","hydrateAdvancedFilters","setStateOverrides","overrides","unsetFilterValue","originalIrisGridStateOverrides","savedQuickFilters","savedAdvancedFilters","hydrateIrisGridPanelState","columnHeaderGroups","partitionConfig","hydrateIrisGridState","hydrateGridState","_this$irisGrid$curren2","_this$irisGrid$curren3","grid","handleResize","render","_model$description","_panelState$pluginSta","glContainer","getDownloadWorker","links","mouseHandlers","user","renderer","getMetricCalculator","theme","errorMessage","childrenContent","getPluginContent","permissions","canCopy","canDownloadCsv","widgetPanelDescriptor","getWidgetPanelDescriptor","onClearAllFilters","onShow","onTabFocus","onTabClicked","componentPanel","descriptor","renderTabTooltip","alwaysFetchColumns","getAlwaysFetchColumns","columnAllowedCursor","columnNotAllowedCursor","copyCursor","getGridInputFilters","applyInputFiltersOnInit","isSelectingColumn","onColumnSelected","onCreateChart","onDataSelected","onError","onContextMenu","onAdvancedSettingsChange","customFilters","mapStateToProps","_ref6","localDashboardId","ConnectedIrisGridPanel","forwardRef"],"sources":["../../src/panels/IrisGridPanel.tsx"],"sourcesContent":["// Wrapper for the IrisGrid for use in a golden layout container\n// Will probably need to handle window popping out from golden layout here.\nimport React, {\n PureComponent,\n type ReactElement,\n type ReactNode,\n type RefObject,\n} from 'react';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport {\n type DashboardPanelProps,\n DEFAULT_DASHBOARD_ID,\n LayoutUtils,\n type PanelComponent,\n type PanelMetadata,\n} from '@deephaven/dashboard';\nimport {\n AdvancedSettings,\n IrisGrid,\n type IrisGridType,\n IrisGridModel,\n IrisGridCacheUtils,\n IrisGridUtils,\n isIrisGridTableModelTemplate,\n type ColumnName,\n type PendingDataMap,\n type InputFilter,\n type IrisGridThemeType,\n type ReadonlyAdvancedFilterMap,\n type AggregationSettings,\n type AdvancedSettingsType,\n type UIRollupConfig,\n type UIRow,\n type ReadonlyQuickFilterMap,\n type FilterMap,\n type QuickFilter,\n type AdvancedFilter,\n type SidebarFormattingRule,\n type IrisGridState,\n type ChartBuilderSettings,\n type DehydratedIrisGridState,\n type DehydratedIrisGridPanelState,\n type ColumnHeaderGroup,\n type IrisGridContextMenuData,\n type PartitionConfig,\n type IrisGridRenderer,\n type MouseHandlersProp,\n type GetMetricCalculatorType,\n} from '@deephaven/iris-grid';\nimport {\n type RowDataMap,\n type AdvancedFilterOptions,\n type FormattingRule,\n type SortDescriptor,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport {\n getSettings,\n getUser,\n type RootState,\n type User,\n type WorkspaceSettings,\n} from '@deephaven/redux';\nimport {\n assertNotNull,\n type CancelablePromise,\n type EventT,\n PromiseUtils,\n} from '@deephaven/utils';\nimport { type ResolvableContextAction } from '@deephaven/components';\nimport type { dh } from '@deephaven/jsapi-types';\nimport {\n type GridState,\n type ModelIndex,\n type ModelSizeMap,\n type MoveOperation,\n} from '@deephaven/grid';\nimport type {\n TablePluginComponent,\n TablePluginElement,\n} from '@deephaven/plugin';\nimport clamp from 'lodash.clamp';\nimport { IrisGridEvent } from '../events';\nimport {\n getInputFiltersForDashboard,\n getLinksForDashboard,\n getColumnSelectionValidatorForDashboard,\n} from '../redux';\nimport WidgetPanel from './WidgetPanel';\nimport './IrisGridPanel.scss';\nimport {\n type Link,\n type LinkColumn,\n type LinkPointOptions,\n} from '../linker/LinkerUtils';\nimport IrisGridPanelTooltip from './IrisGridPanelTooltip';\nimport {\n isIrisGridPanelMetadata,\n isLegacyIrisGridPanelMetadata,\n} from './IrisGridPanelTypes';\nimport { type WidgetPanelDescriptor } from './WidgetPanelTypes';\nimport {\n emitFilterColumnsChanged,\n emitFilterTableChanged,\n} from '../FilterEvents';\nimport {\n emitLinkPointSelected,\n emitLinkSourceDataSelected,\n} from '../linker/LinkerEvent';\n\nconst log = Log.module('IrisGridPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 500;\n\ntype ModelQueueFunction = (model: IrisGridModel) => void;\n\ntype ModelQueue = ModelQueueFunction[];\n\nexport interface PanelState {\n gridState: {\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n movedColumns: readonly {\n from: string | ModelIndex | [string, string] | [ModelIndex, ModelIndex];\n to: string | ModelIndex;\n }[];\n movedRows: readonly MoveOperation[];\n };\n irisGridState: DehydratedIrisGridState;\n irisGridPanelState: DehydratedIrisGridPanelState;\n pluginState: unknown;\n}\n\n// Some of the properties in the loaded panel state may be omitted\n// even though they can't be undefined in the dehydrated state.\n// This can happen when loading the state saved before the properties were added.\ntype LoadedPanelState = PanelState & {\n irisGridPanelState: PanelState['irisGridPanelState'] & {\n partitions?: (string | null)[];\n partition?: string | null;\n };\n};\n\nexport interface OwnProps extends DashboardPanelProps {\n children?: ReactNode;\n panelState?: LoadedPanelState | null;\n makeModel: () => IrisGridModel | Promise<IrisGridModel>;\n\n onStateChange?: (irisGridState: IrisGridState, gridState: GridState) => void;\n onPanelStateUpdate?: (panelState: PanelState) => void;\n\n /** Override the default worker used by IrisGrid to download CSVs. */\n getDownloadWorker?: () => Promise<ServiceWorker>;\n\n /** Load a plugin defined by the table */\n loadPlugin: (pluginName: string) => TablePluginComponent;\n\n theme?: Partial<IrisGridThemeType> & Record<string, unknown>;\n\n mouseHandlers?: MouseHandlersProp;\n\n renderer?: IrisGridRenderer;\n\n getMetricCalculator?: GetMetricCalculatorType;\n}\n\ninterface StateProps {\n inputFilters: InputFilter[];\n links: Link[];\n columnSelectionValidator?: (\n panel: PanelComponent,\n tableColumn: LinkColumn,\n options: LinkPointOptions\n ) => boolean;\n user: User;\n settings: WorkspaceSettings;\n}\n\ninterface IrisGridPanelState {\n error: unknown;\n isDisconnected: boolean;\n isLoaded: boolean;\n isLoading: boolean;\n isModelReady: boolean;\n model?: IrisGridModel;\n\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n\n // State is hydrated from panel state when table is loaded\n conditionalFormats: readonly SidebarFormattingRule[];\n selectDistinctColumns: readonly ColumnName[];\n advancedFilters: ReadonlyAdvancedFilterMap;\n aggregationSettings: AggregationSettings;\n advancedSettings: Map<AdvancedSettingsType, boolean>;\n customColumns: readonly ColumnName[];\n customColumnFormatMap: Map<string, FormattingRule>;\n columnAlignmentMap: Map<string, CanvasTextAlign>;\n isFilterBarShown: boolean;\n quickFilters: ReadonlyQuickFilterMap;\n sorts: readonly SortDescriptor[];\n userColumnWidths: ModelSizeMap;\n userColumnWidthsByName: ReadonlyMap<ColumnName, number>;\n userRowHeights: ModelSizeMap;\n reverse: boolean;\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n isSelectingPartition: boolean;\n partitions: (string | null)[];\n partitionConfig?: PartitionConfig;\n rollupConfig?: UIRollupConfig;\n showSearchBar: boolean;\n searchValue: string;\n selectedSearchColumns?: readonly string[];\n invertSearchColumns: boolean;\n Plugin?: TablePluginComponent;\n pluginFilters: readonly dh.FilterCondition[];\n pluginFetchColumns: readonly string[];\n modelQueue: ModelQueue;\n pendingDataMap?: PendingDataMap<UIRow>;\n frozenColumns?: readonly ColumnName[];\n columnHeaderGroups?: readonly ColumnHeaderGroup[];\n\n // eslint-disable-next-line react/no-unused-state\n panelState?: PanelState | null; // Dehydrated panel state that can load this panel\n irisGridStateOverrides: Partial<DehydratedIrisGridState>;\n gridStateOverrides: Partial<GridState>;\n}\n\nfunction getTableNameFromMetadata(\n metadata: PanelMetadata | null | undefined\n): string {\n if (metadata == null) {\n throw new Error('No metadata provided');\n }\n if (isIrisGridPanelMetadata(metadata)) {\n return metadata.name;\n }\n if (isLegacyIrisGridPanelMetadata(metadata)) {\n return metadata.table;\n }\n\n throw new Error(\n `Unable to determine table name from metadata: ${JSON.stringify(metadata)}`\n );\n}\n\nexport type IrisGridPanelProps = OwnProps & StateProps;\n\nexport class IrisGridPanel extends PureComponent<\n IrisGridPanelProps,\n IrisGridPanelState\n> {\n static defaultProps = {\n onStateChange: (): void => undefined,\n onPanelStateUpdate: (): void => undefined,\n };\n\n static displayName = 'IrisGridPanel';\n\n static COMPONENT = 'IrisGridPanel';\n\n constructor(props: IrisGridPanelProps) {\n super(props);\n\n this.handleAdvancedSettingsChange =\n this.handleAdvancedSettingsChange.bind(this);\n this.handleColumnsChanged = this.handleColumnsChanged.bind(this);\n this.handleTableChanged = this.handleTableChanged.bind(this);\n this.handleColumnSelected = this.handleColumnSelected.bind(this);\n this.handleDataSelected = this.handleDataSelected.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleGridStateChange = this.handleGridStateChange.bind(this);\n this.handlePluginStateChange = this.handlePluginStateChange.bind(this);\n this.handleCreateChart = this.handleCreateChart.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleTabClicked = this.handleTabClicked.bind(this);\n this.handleDisconnect = this.handleDisconnect.bind(this);\n this.handleReconnect = this.handleReconnect.bind(this);\n this.handleLoadSuccess = this.handleLoadSuccess.bind(this);\n this.handleLoadError = this.handleLoadError.bind(this);\n this.isColumnSelectionValid = this.isColumnSelectionValid.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.handlePluginFilter = this.handlePluginFilter.bind(this);\n this.handlePluginFetchColumns = this.handlePluginFetchColumns.bind(this);\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n\n this.irisGrid = React.createRef();\n this.pluginRef = React.createRef();\n\n const { panelState } = props;\n\n this.pluginState = null;\n this.irisGridUtils = null;\n\n this.state = {\n error: null,\n isDisconnected: false,\n isLoaded: false,\n isLoading: true,\n isModelReady: false,\n model: undefined,\n\n // State is hydrated from panel state when table is loaded\n advancedFilters: new Map(),\n aggregationSettings: { aggregations: [], showOnTop: false },\n advancedSettings: new Map(AdvancedSettings.DEFAULTS),\n customColumns: [],\n customColumnFormatMap: new Map(),\n columnAlignmentMap: new Map(),\n isFilterBarShown: false,\n quickFilters: new Map(),\n sorts: [],\n userColumnWidths: new Map(),\n userColumnWidthsByName: new Map(),\n userRowHeights: new Map(),\n reverse: false,\n movedColumns: [],\n movedRows: [],\n isSelectingPartition: false,\n partitions: [],\n rollupConfig: undefined,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: undefined,\n invertSearchColumns: true,\n Plugin: undefined,\n pluginFilters: [],\n pluginFetchColumns: [],\n modelQueue: [],\n pendingDataMap: new Map(),\n frozenColumns: undefined,\n\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n irisGridStateOverrides: {},\n gridStateOverrides: {},\n isStuckToBottom: false,\n isStuckToRight: false,\n conditionalFormats: [],\n selectDistinctColumns: [],\n };\n }\n\n componentDidMount(): void {\n this.initModel();\n }\n\n componentDidUpdate(\n prevProps: IrisGridPanelProps,\n prevState: IrisGridPanelState\n ): void {\n const { model } = this.state;\n const { makeModel } = this.props;\n if (model !== prevState.model) {\n if (prevState.model != null) {\n this.stopModelListening(prevState.model);\n prevState.model.close();\n }\n if (model != null) {\n this.startModelListening(model);\n }\n }\n\n if (makeModel !== prevProps.makeModel) {\n this.initModel();\n }\n }\n\n componentWillUnmount(): void {\n this.savePanelState.cancel();\n\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n this.modelPromise = undefined;\n }\n\n const { model } = this.state;\n if (model) {\n this.stopModelListening(model);\n model.close();\n }\n }\n\n irisGrid: RefObject<IrisGridType>;\n\n pluginRef: RefObject<TablePluginElement>;\n\n modelPromise?: CancelablePromise<IrisGridModel>;\n\n irisGridState?: IrisGridState;\n\n gridState?: GridState;\n\n pluginState: unknown;\n\n private irisGridUtils: IrisGridUtils | null;\n\n private gridStateDehydrator =\n IrisGridCacheUtils.makeMemoizedGridStateDehydrator();\n\n private irisGridStateDehydrator =\n IrisGridCacheUtils.makeMemoizedIrisGridStateDehydrator();\n\n getTableName(): string {\n const { metadata } = this.props;\n return getTableNameFromMetadata(metadata);\n }\n\n getGridInputFilters = memoize(\n (columns: readonly dh.Column[], inputFilters: readonly InputFilter[]) =>\n IrisGridUtils.getInputFiltersForColumns(\n columns,\n // They may have picked a column, but not actually entered a value yet. In that case, don't need to update.\n inputFilters.filter(({ value, excludePanelIds }) => {\n const id = LayoutUtils.getIdFromPanel(this);\n return (\n value != null &&\n (excludePanelIds == null ||\n (id != null && !excludePanelIds.includes(id)))\n );\n })\n )\n );\n\n getAlwaysFetchColumns = memoize(\n (\n dashboardLinks: readonly Link[],\n pluginFetchColumns: readonly string[]\n ): string[] => {\n const id = LayoutUtils.getIdFromPanel(this);\n // Always fetch columns which are the start/source of a link or columns specified by a plugin\n const columnSet = new Set(pluginFetchColumns);\n for (let i = 0; i < dashboardLinks.length; i += 1) {\n const { start } = dashboardLinks[i];\n if (start != null && start.panelId === id) {\n columnSet.add(start.columnName);\n }\n }\n return [...columnSet];\n }\n );\n\n getPluginContent = memoize(\n (\n Plugin: TablePluginComponent | undefined,\n model: IrisGridModel | undefined,\n pluginState: unknown\n ) => {\n if (\n !model ||\n !isIrisGridTableModelTemplate(model) ||\n Plugin == null ||\n model.table == null\n ) {\n return null;\n }\n\n // TODO #2093: Find a better way to handle deprecated panel prop\n const deprecatedProps = {\n panel: this,\n };\n\n return (\n <div className=\"iris-grid-plugin\">\n <Plugin\n ref={this.pluginRef}\n filter={this.handlePluginFilter}\n fetchColumns={this.handlePluginFetchColumns}\n model={model}\n table={model.table}\n tableName={this.getTableName()}\n selectedRanges={this.irisGrid.current?.state.selectedRanges}\n onStateChange={this.handlePluginStateChange}\n pluginState={pluginState}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...deprecatedProps}\n />\n </div>\n );\n }\n );\n\n getDehydratedIrisGridPanelState = memoize(\n (\n model: IrisGridModel,\n isSelectingPartition: boolean,\n partitions: (string | null)[],\n advancedSettings: Map<AdvancedSettingsType, boolean>\n ) =>\n IrisGridUtils.dehydrateIrisGridPanelState(model, {\n isSelectingPartition,\n partitions,\n advancedSettings,\n })\n );\n\n getCachedPanelState = memoize(\n (\n irisGridPanelState: PanelState['irisGridPanelState'],\n irisGridState: PanelState['irisGridState'],\n gridState: PanelState['gridState'],\n pluginState: PanelState['pluginState']\n ): PanelState => ({\n irisGridPanelState,\n irisGridState,\n gridState,\n pluginState,\n })\n );\n\n getWidgetPanelDescriptor = memoize(\n (\n metadata: IrisGridPanelProps['metadata'],\n description?: string\n ): WidgetPanelDescriptor => {\n const name = getTableNameFromMetadata(metadata);\n return {\n type: 'Table',\n displayType: 'Table',\n ...metadata,\n name,\n description,\n };\n }\n );\n\n initModel(): void {\n this.setState({\n isModelReady: false,\n isLoading: true,\n error: null,\n isDisconnected: false,\n });\n const { makeModel } = this.props;\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n }\n this.modelPromise = PromiseUtils.makeCancelable(makeModel(), resolved =>\n resolved.close()\n );\n this.modelPromise.then(this.handleLoadSuccess).catch(this.handleLoadError);\n }\n\n handleLoadSuccess(modelParam: IrisGridModel): void {\n const model = modelParam;\n const { panelState, irisGridStateOverrides } = this.state;\n const modelQueue: ((m: IrisGridModel) => void)[] = [];\n this.irisGridUtils = new IrisGridUtils(model.dh);\n if (panelState != null) {\n const { irisGridState } = panelState;\n const {\n aggregationSettings,\n customColumns,\n selectDistinctColumns = [],\n rollupConfig,\n } = { ...irisGridState, ...irisGridStateOverrides };\n\n if (customColumns.length > 0) {\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.customColumns = customColumns;\n });\n }\n\n if (rollupConfig != null && rollupConfig.columns.length > 0) {\n // originalColumns might change by the time this model queue item is applied.\n // Instead of pushing a static object, push the function\n // that calculates the config based on the updated model state.\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.rollupConfig = IrisGridUtils.getModelRollupConfig(\n m.originalColumns,\n rollupConfig,\n aggregationSettings\n );\n });\n }\n\n if (selectDistinctColumns.length > 0) {\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.selectDistinctColumns = selectDistinctColumns;\n });\n }\n }\n\n this.setState({ model, modelQueue });\n this.initModelQueue(model, modelQueue);\n }\n\n initModelQueue(modelParam: IrisGridModel, modelQueue: ModelQueue): void {\n const model = modelParam;\n if (modelQueue.length === 0) {\n this.modelInitialized(model);\n return;\n }\n const modelChange = modelQueue.shift();\n log.debug('initModelQueue', modelChange);\n // Apply next model change. Triggers columnschanged event.\n if (modelChange) {\n modelChange(model);\n }\n this.setState({ modelQueue });\n }\n\n handleAdvancedSettingsChange(\n key: AdvancedSettingsType,\n value: boolean\n ): void {\n log.debug('handleAdvancedSettingsChange', key, value);\n this.setState(({ advancedSettings }) =>\n advancedSettings.get(key) === value\n ? null\n : { advancedSettings: new Map(advancedSettings).set(key, value) }\n );\n }\n\n handlePluginFilter(filters: InputFilter[]): void {\n const { model } = this.state;\n assertNotNull(model);\n const { columns, formatter } = model;\n const pluginFilters =\n this.irisGridUtils?.getFiltersFromInputFilters(\n columns,\n filters,\n formatter.timeZone\n ) ?? [];\n this.setState({ pluginFilters });\n }\n\n handlePluginFetchColumns(pluginFetchColumns: string[]): void {\n this.setState({ pluginFetchColumns });\n }\n\n handleContextMenu(data: IrisGridContextMenuData): ResolvableContextAction[] {\n return this.pluginRef.current?.getMenu?.(data) ?? [];\n }\n\n isColumnSelectionValid(tableColumn: dh.Column | null): boolean {\n const { columnSelectionValidator } = this.props;\n if (columnSelectionValidator && tableColumn) {\n return columnSelectionValidator(this, tableColumn, {\n type: 'tableLink',\n });\n }\n return false;\n }\n\n handleGridStateChange(\n irisGridState: IrisGridState,\n gridState: GridState\n ): void {\n this.irisGridState = irisGridState;\n this.gridState = gridState;\n\n // Grid sends it's first state change after it's finished loading\n this.setState({ isLoaded: true, isLoading: false });\n\n this.savePanelState();\n\n const { glEventHub, onStateChange } = this.props;\n glEventHub.emit(IrisGridEvent.STATE_CHANGED, this);\n onStateChange?.(irisGridState, gridState);\n }\n\n handlePluginStateChange(pluginState: unknown): void {\n const { irisGridState, gridState } = this;\n this.pluginState = pluginState;\n // Do not save if there is null state\n // The save will happen when the grid loads\n if (irisGridState !== null && gridState !== null) {\n this.savePanelState();\n }\n }\n\n handleColumnsChanged(event: EventT): void {\n const { isModelReady, model, modelQueue } = this.state;\n if (isModelReady) {\n this.sendColumnsChange((event as CustomEvent).detail);\n } else {\n assertNotNull(model);\n this.initModelQueue(model, modelQueue);\n }\n }\n\n handleTableChanged(event: EventT): void {\n log.debug('handleTableChanged', event);\n const { glEventHub } = this.props;\n const { detail: table } = event as CustomEvent;\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitFilterTableChanged(glEventHub, panelId, table);\n }\n\n /**\n * Create a chart with the specified settings\n * @param settings The settings from the chart builder\n * @param settings.type The settings from the chart builder\n * @param settings.series The names of the series\n * @param model The IrisGridModel object\n */\n handleCreateChart(\n settings: ChartBuilderSettings,\n model: IrisGridModel\n ): void {\n // Panel state is stored with the created chart, so flush it first\n this.savePanelState.flush();\n\n this.setState(\n () => null,\n () => {\n const { glEventHub, inputFilters, metadata } = this.props;\n const table = this.getTableName();\n const { panelState } = this.state;\n const sourcePanelId = LayoutUtils.getIdFromPanel(this);\n let tableSettings;\n\n if (panelState) {\n tableSettings = IrisGridUtils.extractTableSettings(\n panelState,\n inputFilters\n );\n }\n glEventHub.emit(IrisGridEvent.CREATE_CHART, {\n metadata: {\n ...metadata,\n settings,\n sourcePanelId,\n table,\n tableSettings,\n },\n table: isIrisGridTableModelTemplate(model) ? model.table : undefined,\n });\n }\n );\n }\n\n handleColumnSelected(column: dh.Column): void {\n const { glEventHub } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitLinkPointSelected(glEventHub, panelId, column, { type: 'tableLink' });\n }\n\n handleDataSelected(row: ModelIndex, dataMap: RowDataMap): void {\n const { glEventHub } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitLinkSourceDataSelected(glEventHub, panelId, dataMap);\n }\n\n handleShow(): void {\n this.updateGrid();\n }\n\n handleTabClicked(): void {\n if (this.irisGrid.current) {\n this.irisGrid.current.focus();\n }\n }\n\n handleError(error: unknown): void {\n log.error(error);\n this.setState({ error, isLoading: false });\n }\n\n handleDisconnect(): void {\n this.setState({\n error: new Error('Table disconnected'),\n isDisconnected: true,\n isLoading: false,\n });\n }\n\n handleReconnect(): void {\n this.setState({ isDisconnected: false, error: null });\n }\n\n handleLoadError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n this.handleError(error);\n }\n\n modelInitialized(model: IrisGridModel): void {\n const { glEventHub, loadPlugin } = this.props;\n\n this.modelPromise = undefined;\n\n // Custom columns at this point already initialized, can load state\n this.loadPanelState(model);\n\n this.setState({ isModelReady: true });\n\n if (isIrisGridTableModelTemplate(model)) {\n const { table } = model;\n const { pluginName } = table;\n\n if (pluginName !== '') {\n if (loadPlugin != null && pluginName != null) {\n const Plugin = loadPlugin(pluginName);\n this.setState({ Plugin });\n }\n }\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitFilterTableChanged(glEventHub, panelId, table);\n }\n\n this.sendColumnsChange(model.columns);\n }\n\n handleClearAllFilters(): void {\n const irisGrid = this.irisGrid.current;\n const { isDisconnected } = this.state;\n if (irisGrid != null && !isDisconnected) {\n irisGrid.clearAllFilters();\n }\n }\n\n sendColumnsChange(columns: readonly dh.Column[]): void {\n log.debug2('sendColumnsChange', columns);\n const { glEventHub } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitFilterColumnsChanged(glEventHub, panelId, columns);\n }\n\n startModelListening(model: IrisGridModel): void {\n model.addEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n this.handleDisconnect\n );\n model.addEventListener(IrisGridModel.EVENT.RECONNECT, this.handleReconnect);\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleColumnsChanged\n );\n model.addEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n }\n\n stopModelListening(model: IrisGridModel): void {\n model.removeEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n this.handleDisconnect\n );\n model.removeEventListener(\n IrisGridModel.EVENT.RECONNECT,\n this.handleReconnect\n );\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleColumnsChanged\n );\n model.removeEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n }\n\n getCoordinateForColumn(columnName: ColumnName): [number, number] | null {\n const { model } = this.state;\n if (!model) {\n return null;\n }\n\n const irisGrid = this.irisGrid.current;\n const { gridWrapper } = irisGrid || {};\n const rect = gridWrapper?.getBoundingClientRect() ?? null;\n if (rect == null || rect.width <= 0 || rect.height <= 0) {\n return null;\n }\n assertNotNull(irisGrid);\n const { metrics } = irisGrid.state;\n assertNotNull(metrics);\n const {\n columnHeaderHeight,\n allColumnXs,\n allColumnWidths,\n right,\n columnHeaderMaxDepth,\n } = metrics;\n const columnIndex = model.getColumnIndexByName(columnName);\n assertNotNull(columnIndex);\n const visibleIndex = irisGrid.getVisibleColumn(columnIndex);\n const columnX = allColumnXs.get(visibleIndex) ?? 0;\n const columnWidth = allColumnWidths.get(visibleIndex) ?? 0;\n\n const x = clamp(\n visibleIndex > right\n ? rect.right\n : rect.left + columnX + columnWidth * 0.5,\n rect.left,\n rect.right\n );\n const y = rect.top + columnHeaderHeight * columnHeaderMaxDepth;\n\n return [x, y];\n }\n\n setFilterMap(filterMap: FilterMap): void {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setFilterMap(filterMap);\n }\n }\n\n setAdvancedFilterMap(filterMap: ReadonlyAdvancedFilterMap): void {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setAdvancedFilterMap(filterMap);\n }\n }\n\n setFilters({\n quickFilters,\n advancedFilters,\n }: {\n quickFilters: { name: ColumnName; filter: QuickFilter }[];\n advancedFilters: { name: ColumnName; filter: AdvancedFilter }[];\n }): void {\n log.debug('setFilters', quickFilters, advancedFilters);\n const { model, isDisconnected } = this.state;\n const irisGrid = this.irisGrid.current;\n if (irisGrid == null || isDisconnected) {\n log.debug('Ignore setFilters, model disconnected');\n return;\n }\n assertNotNull(model);\n const { columns, formatter } = model;\n const indexedQuickFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n quickFilters\n ).filter(([columnIndex]) => model.isFilterable(columnIndex));\n const indexedAdvancedFilters =\n IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n advancedFilters\n ).filter(([columnIndex]) => model.isFilterable(columnIndex));\n assertNotNull(this.irisGridUtils);\n irisGrid.clearAllFilters();\n irisGrid.setFilters({\n quickFilters: this.irisGridUtils.hydrateQuickFilters(\n columns,\n indexedQuickFilters,\n formatter.timeZone\n ),\n advancedFilters: this.irisGridUtils.hydrateAdvancedFilters(\n columns,\n indexedAdvancedFilters,\n formatter.timeZone\n ),\n });\n }\n\n setStateOverrides(overrides: {\n irisGridState: Partial<DehydratedIrisGridState>;\n gridState: Partial<GridState>;\n }): void {\n log.debug('setStateOverrides', overrides);\n const {\n irisGridState: irisGridStateOverrides,\n gridState: gridStateOverrides,\n } = overrides;\n this.setState({ irisGridStateOverrides, gridStateOverrides }, () => {\n this.initModel();\n });\n }\n\n // eslint-disable-next-line class-methods-use-this\n unsetFilterValue(): void {\n // IrisGridPanel retains the set value after the link is broken\n // We need to define this so LinkerUtils#isLinkablePanel passes the check\n }\n\n loadPanelState(model: IrisGridModel): void {\n const {\n panelState,\n irisGridStateOverrides: originalIrisGridStateOverrides,\n gridStateOverrides,\n } = this.state;\n if (panelState == null) {\n return;\n }\n\n try {\n const { gridState, irisGridState, irisGridPanelState } = panelState;\n const irisGridStateOverrides = { ...originalIrisGridStateOverrides };\n const {\n quickFilters: savedQuickFilters,\n advancedFilters: savedAdvancedFilters,\n } = irisGridStateOverrides;\n if (savedQuickFilters) {\n irisGridStateOverrides.quickFilters =\n IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n savedQuickFilters as unknown as {\n name: string;\n filter: {\n text: string;\n };\n }[]\n );\n }\n if (savedAdvancedFilters) {\n irisGridStateOverrides.advancedFilters =\n IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n savedAdvancedFilters as unknown as {\n name: string;\n filter: { options: AdvancedFilterOptions };\n }[]\n );\n }\n const { isSelectingPartition, partitions, advancedSettings } =\n IrisGridUtils.hydrateIrisGridPanelState(model, irisGridPanelState);\n assertNotNull(this.irisGridUtils);\n const {\n advancedFilters,\n customColumns,\n customColumnFormatMap,\n columnAlignmentMap,\n isFilterBarShown,\n quickFilters,\n reverse,\n rollupConfig,\n aggregationSettings,\n sorts,\n userColumnWidths,\n userColumnWidthsByName,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap,\n frozenColumns,\n conditionalFormats,\n columnHeaderGroups,\n partitionConfig,\n } = this.irisGridUtils.hydrateIrisGridState(model, {\n ...irisGridState,\n ...irisGridStateOverrides,\n });\n const { isStuckToBottom, isStuckToRight, movedColumns, movedRows } =\n IrisGridUtils.hydrateGridState(\n model,\n { ...gridState, ...gridStateOverrides },\n irisGridState.customColumns\n );\n this.setState({\n advancedFilters,\n advancedSettings,\n conditionalFormats,\n customColumns,\n customColumnFormatMap,\n columnAlignmentMap,\n isFilterBarShown,\n isSelectingPartition,\n movedColumns,\n movedRows,\n partitions,\n quickFilters,\n reverse,\n rollupConfig,\n aggregationSettings,\n sorts,\n userColumnWidths,\n userColumnWidthsByName,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap,\n frozenColumns,\n isStuckToBottom,\n isStuckToRight,\n columnHeaderGroups,\n partitionConfig,\n });\n } catch (error) {\n log.error('loadPanelState failed to load panelState', panelState, error);\n }\n }\n\n savePanelState = debounce(() => {\n const { irisGridState, gridState, pluginState } = this;\n assertNotNull(irisGridState);\n const { onPanelStateUpdate } = this.props;\n const {\n model,\n panelState: oldPanelState,\n isSelectingPartition,\n partitions,\n advancedSettings,\n } = this.state;\n assertNotNull(this.irisGridUtils);\n assertNotNull(model);\n assertNotNull(gridState);\n\n const panelState = this.getCachedPanelState(\n this.getDehydratedIrisGridPanelState(\n model,\n isSelectingPartition,\n partitions,\n advancedSettings\n ),\n this.irisGridStateDehydrator(model, irisGridState),\n this.gridStateDehydrator(model, gridState),\n pluginState\n );\n\n if (panelState !== oldPanelState) {\n log.debug('Saving panel state', this, panelState);\n\n this.setState({ panelState });\n onPanelStateUpdate?.(panelState);\n }\n }, DEBOUNCE_PANEL_STATE_UPDATE);\n\n updateGrid(): void {\n const grid = this.irisGrid.current?.grid ?? null;\n if (!grid) return;\n\n // handle resize will verify state and draw and update\n grid.handleResize();\n }\n\n render(): ReactElement {\n const {\n children,\n glContainer,\n glEventHub,\n columnSelectionValidator,\n getDownloadWorker,\n inputFilters,\n links,\n metadata,\n mouseHandlers,\n panelState,\n user,\n renderer,\n settings,\n getMetricCalculator,\n theme,\n } = this.props;\n const {\n advancedFilters,\n aggregationSettings,\n advancedSettings,\n conditionalFormats,\n customColumns,\n customColumnFormatMap,\n columnAlignmentMap,\n error,\n isDisconnected,\n isFilterBarShown,\n isSelectingPartition,\n isStuckToBottom,\n isStuckToRight,\n isLoaded,\n isLoading,\n isModelReady,\n model,\n movedColumns,\n movedRows,\n partitions,\n partitionConfig,\n quickFilters,\n reverse,\n rollupConfig,\n sorts,\n userColumnWidths,\n userColumnWidthsByName,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n Plugin,\n pluginFilters,\n pluginFetchColumns,\n pendingDataMap,\n frozenColumns,\n columnHeaderGroups,\n } = this.state;\n const errorMessage =\n error != null ? `Unable to open table. ${error}` : undefined;\n const description = model?.description ?? undefined;\n const pluginState = panelState?.pluginState ?? null;\n const childrenContent =\n children ?? this.getPluginContent(Plugin, model, pluginState);\n const { permissions } = user;\n const { canCopy, canDownloadCsv } = permissions;\n const widgetPanelDescriptor = this.getWidgetPanelDescriptor(\n metadata,\n description\n );\n\n return (\n <WidgetPanel\n errorMessage={errorMessage}\n isDisconnected={isDisconnected}\n isLoading={isLoading}\n isLoaded={isLoaded}\n className=\"iris-grid-panel\"\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={this.handleClearAllFilters}\n onShow={this.handleShow}\n onTabFocus={this.handleShow}\n onTabClicked={this.handleTabClicked}\n componentPanel={this}\n descriptor={widgetPanelDescriptor}\n renderTabTooltip={() => (\n <IrisGridPanelTooltip\n descriptor={widgetPanelDescriptor}\n model={model}\n />\n )}\n >\n {isModelReady && model && (\n <IrisGrid\n advancedFilters={advancedFilters}\n aggregationSettings={aggregationSettings}\n advancedSettings={advancedSettings}\n alwaysFetchColumns={this.getAlwaysFetchColumns(\n links,\n pluginFetchColumns\n )}\n columnAllowedCursor=\"linker\"\n columnNotAllowedCursor=\"linker-not-allowed\"\n copyCursor=\"copy\"\n customColumns={customColumns}\n customColumnFormatMap={customColumnFormatMap}\n columnAlignmentMap={columnAlignmentMap}\n columnSelectionValidator={this.isColumnSelectionValid}\n conditionalFormats={conditionalFormats}\n inputFilters={this.getGridInputFilters(model.columns, inputFilters)}\n applyInputFiltersOnInit={panelState == null}\n isFilterBarShown={isFilterBarShown}\n isSelectingColumn={columnSelectionValidator != null}\n isSelectingPartition={isSelectingPartition}\n isStuckToBottom={isStuckToBottom}\n isStuckToRight={isStuckToRight}\n mouseHandlers={mouseHandlers}\n movedColumns={movedColumns}\n movedRows={movedRows}\n partitions={partitions}\n partitionConfig={partitionConfig}\n quickFilters={quickFilters}\n renderer={renderer}\n reverse={reverse}\n rollupConfig={rollupConfig}\n settings={settings}\n sorts={sorts}\n userColumnWidths={userColumnWidths}\n userColumnWidthsByName={userColumnWidthsByName}\n userRowHeights={userRowHeights}\n model={model}\n showSearchBar={showSearchBar}\n searchValue={searchValue}\n selectedSearchColumns={selectedSearchColumns}\n selectDistinctColumns={selectDistinctColumns}\n invertSearchColumns={invertSearchColumns}\n onColumnSelected={this.handleColumnSelected}\n onCreateChart={this.handleCreateChart}\n onDataSelected={this.handleDataSelected}\n onError={this.handleError}\n onStateChange={this.handleGridStateChange}\n onContextMenu={this.handleContextMenu}\n onAdvancedSettingsChange={this.handleAdvancedSettingsChange}\n customFilters={pluginFilters}\n pendingDataMap={pendingDataMap}\n canCopy={canCopy}\n canDownloadCsv={canDownloadCsv}\n ref={this.irisGrid}\n getDownloadWorker={getDownloadWorker}\n frozenColumns={frozenColumns}\n theme={theme}\n columnHeaderGroups={columnHeaderGroups}\n getMetricCalculator={getMetricCalculator}\n >\n {childrenContent}\n </IrisGrid>\n )}\n </WidgetPanel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n { localDashboardId = DEFAULT_DASHBOARD_ID, glContainer }: OwnProps\n): StateProps => ({\n inputFilters: getInputFiltersForDashboard(state, localDashboardId),\n links: getLinksForDashboard(state, localDashboardId),\n columnSelectionValidator: getColumnSelectionValidatorForDashboard(\n state,\n localDashboardId\n ),\n user: getUser(state),\n settings: getSettings(state),\n});\n\nconst ConnectedIrisGridPanel = connect(mapStateToProps, null, null, {\n forwardRef: true,\n})(IrisGridPanel);\n\nexport default ConnectedIrisGridPanel;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type dh } from '@deephaven/jsapi-types';
|
|
2
|
-
import { IrisGridModel
|
|
2
|
+
import { IrisGridModel } from '@deephaven/iris-grid';
|
|
3
3
|
export type IrisGridModelFetch = () => Promise<dh.Table>;
|
|
4
4
|
export type IrisGridModelFetchErrorResult = {
|
|
5
5
|
error: NonNullable<unknown>;
|
|
@@ -16,5 +16,5 @@ export type IrisGridModelFetchResult = (IrisGridModelFetchErrorResult | IrisGrid
|
|
|
16
16
|
reload: () => void;
|
|
17
17
|
};
|
|
18
18
|
/** Pass in a table `fetch` function, will load the model and handle any errors */
|
|
19
|
-
export declare function useIrisGridModel(fetch: IrisGridModelFetch
|
|
19
|
+
export declare function useIrisGridModel(fetch: IrisGridModelFetch): IrisGridModelFetchResult;
|
|
20
20
|
//# sourceMappingURL=useIrisGridModel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIrisGridModel.d.ts","sourceRoot":"","sources":["../src/useIrisGridModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,
|
|
1
|
+
{"version":3,"file":"useIrisGridModel.d.ts","sourceRoot":"","sources":["../src/useIrisGridModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAwB,MAAM,sBAAsB,CAAC;AAG3E,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAEzD,MAAM,MAAM,6BAA6B,GAAG;IAC1C,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,aAAa,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,CACnC,6BAA6B,GAC7B,+BAA+B,GAC/B,+BAA+B,CAClC,GAAG;IACF,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAEF,kFAAkF;AAClF,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,kBAAkB,GACxB,wBAAwB,CA0F1B"}
|
package/dist/useIrisGridModel.js
CHANGED
|
@@ -4,28 +4,15 @@ import { useApi } from '@deephaven/jsapi-bootstrap';
|
|
|
4
4
|
import { IrisGridModel, IrisGridModelFactory } from '@deephaven/iris-grid';
|
|
5
5
|
import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
6
6
|
/** Pass in a table `fetch` function, will load the model and handle any errors */
|
|
7
|
-
export function useIrisGridModel(fetch
|
|
7
|
+
export function useIrisGridModel(fetch) {
|
|
8
8
|
var dh = useApi();
|
|
9
9
|
var [model, setModel] = useState();
|
|
10
10
|
var [error, setError] = useState();
|
|
11
11
|
var [isLoading, setIsLoading] = useState(true);
|
|
12
12
|
var makeModel = useCallback(/*#__PURE__*/_asyncToGenerator(function* () {
|
|
13
13
|
var table = yield fetch();
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return newModel;
|
|
17
|
-
}
|
|
18
|
-
try {
|
|
19
|
-
var transformedModel = yield transformModel(newModel);
|
|
20
|
-
return transformedModel;
|
|
21
|
-
} catch (e) {
|
|
22
|
-
// The host owns the base model's lifecycle; if the transform rejects it
|
|
23
|
-
// never returns a model for us to close, so close the base model here to
|
|
24
|
-
// avoid leaking it.
|
|
25
|
-
newModel.close();
|
|
26
|
-
throw e;
|
|
27
|
-
}
|
|
28
|
-
}), [dh, fetch, transformModel]);
|
|
14
|
+
return IrisGridModelFactory.makeModel(dh, table);
|
|
15
|
+
}), [dh, fetch]);
|
|
29
16
|
var reload = useCallback(/*#__PURE__*/_asyncToGenerator(function* () {
|
|
30
17
|
setIsLoading(true);
|
|
31
18
|
setError(undefined);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIrisGridModel.js","names":["useApi","IrisGridModel","IrisGridModelFactory","useCallback","useEffect","useMemo","useState","useIrisGridModel","fetch","
|
|
1
|
+
{"version":3,"file":"useIrisGridModel.js","names":["useApi","IrisGridModel","IrisGridModelFactory","useCallback","useEffect","useMemo","useState","useIrisGridModel","fetch","dh","model","setModel","error","setError","isLoading","setIsLoading","makeModel","_asyncToGenerator","table","reload","undefined","newModel","e","cancelled","init","_init","apply","arguments","startListeningModel","handleDisconnect","Error","addEventListener","EVENT","DISCONNECT","removeEventListener","result","status"],"sources":["../src/useIrisGridModel.ts"],"sourcesContent":["import { type dh } from '@deephaven/jsapi-types';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { IrisGridModel, IrisGridModelFactory } from '@deephaven/iris-grid';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nexport type IrisGridModelFetch = () => Promise<dh.Table>;\n\nexport type IrisGridModelFetchErrorResult = {\n error: NonNullable<unknown>;\n status: 'error';\n};\n\nexport type IrisGridModelFetchLoadingResult = {\n status: 'loading';\n};\n\nexport type IrisGridModelFetchSuccessResult = {\n status: 'success';\n model: IrisGridModel;\n};\n\nexport type IrisGridModelFetchResult = (\n | IrisGridModelFetchErrorResult\n | IrisGridModelFetchLoadingResult\n | IrisGridModelFetchSuccessResult\n) & {\n reload: () => void;\n};\n\n/** Pass in a table `fetch` function, will load the model and handle any errors */\nexport function useIrisGridModel(\n fetch: IrisGridModelFetch\n): IrisGridModelFetchResult {\n const dh = useApi();\n const [model, setModel] = useState<IrisGridModel>();\n const [error, setError] = useState<unknown>();\n const [isLoading, setIsLoading] = useState(true);\n\n const makeModel = useCallback(async () => {\n const table = await fetch();\n return IrisGridModelFactory.makeModel(dh, table);\n }, [dh, fetch]);\n\n const reload = useCallback(async () => {\n setIsLoading(true);\n setError(undefined);\n try {\n const newModel = await makeModel();\n setModel(newModel);\n setIsLoading(false);\n } catch (e) {\n setError(e);\n setIsLoading(false);\n }\n }, [makeModel]);\n\n useEffect(() => {\n let cancelled = false;\n async function init() {\n setIsLoading(true);\n setError(undefined);\n try {\n const newModel = await makeModel();\n if (!cancelled) {\n setModel(newModel);\n setIsLoading(false);\n }\n } catch (e) {\n if (!cancelled) {\n setError(e);\n setIsLoading(false);\n }\n }\n }\n\n init();\n\n return () => {\n cancelled = true;\n };\n }, [makeModel]);\n\n useEffect(\n function startListeningModel() {\n if (!model) {\n return;\n }\n\n // If the table inside a widget is disconnected, then don't bother trying to listen to reconnect, just close it and show a message\n // Widget closes the table already when it is disconnected, so no need to close it again\n function handleDisconnect() {\n setError(new Error('Table disconnected'));\n setModel(undefined);\n setIsLoading(false);\n }\n\n model.addEventListener(IrisGridModel.EVENT.DISCONNECT, handleDisconnect);\n\n return () => {\n model.removeEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n handleDisconnect\n );\n };\n },\n [model]\n );\n\n const result: IrisGridModelFetchResult = useMemo(() => {\n if (isLoading) {\n return { reload, status: 'loading' };\n }\n if (error != null) {\n return { error, reload, status: 'error' };\n }\n if (model != null) {\n return { model, reload, status: 'success' };\n }\n throw new Error('Invalid state');\n }, [error, isLoading, model, reload]);\n\n return result;\n}\n"],"mappings":";;AACA,SAASA,MAAM,QAAQ,4BAA4B;AACnD,SAASC,aAAa,EAAEC,oBAAoB,QAAQ,sBAAsB;AAC1E,SAASC,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,OAAO;AA0BjE;AACA,OAAO,SAASC,gBAAgBA,CAC9BC,KAAyB,EACC;EAC1B,IAAMC,EAAE,GAAGT,MAAM,CAAC,CAAC;EACnB,IAAM,CAACU,KAAK,EAAEC,QAAQ,CAAC,GAAGL,QAAQ,CAAgB,CAAC;EACnD,IAAM,CAACM,KAAK,EAAEC,QAAQ,CAAC,GAAGP,QAAQ,CAAU,CAAC;EAC7C,IAAM,CAACQ,SAAS,EAAEC,YAAY,CAAC,GAAGT,QAAQ,CAAC,IAAI,CAAC;EAEhD,IAAMU,SAAS,GAAGb,WAAW,cAAAc,iBAAA,CAAC,aAAY;IACxC,IAAMC,KAAK,SAASV,KAAK,CAAC,CAAC;IAC3B,OAAON,oBAAoB,CAACc,SAAS,CAACP,EAAE,EAAES,KAAK,CAAC;EAClD,CAAC,GAAE,CAACT,EAAE,EAAED,KAAK,CAAC,CAAC;EAEf,IAAMW,MAAM,GAAGhB,WAAW,cAAAc,iBAAA,CAAC,aAAY;IACrCF,YAAY,CAAC,IAAI,CAAC;IAClBF,QAAQ,CAACO,SAAS,CAAC;IACnB,IAAI;MACF,IAAMC,QAAQ,SAASL,SAAS,CAAC,CAAC;MAClCL,QAAQ,CAACU,QAAQ,CAAC;MAClBN,YAAY,CAAC,KAAK,CAAC;IACrB,CAAC,CAAC,OAAOO,CAAC,EAAE;MACVT,QAAQ,CAACS,CAAC,CAAC;MACXP,YAAY,CAAC,KAAK,CAAC;IACrB;EACF,CAAC,GAAE,CAACC,SAAS,CAAC,CAAC;EAEfZ,SAAS,CAAC,MAAM;IACd,IAAImB,SAAS,GAAG,KAAK;IAAC,SACPC,IAAIA,CAAA;MAAA,OAAAC,KAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IAAA,SAAAF,MAAA;MAAAA,KAAA,GAAAR,iBAAA,CAAnB,aAAsB;QACpBF,YAAY,CAAC,IAAI,CAAC;QAClBF,QAAQ,CAACO,SAAS,CAAC;QACnB,IAAI;UACF,IAAMC,QAAQ,SAASL,SAAS,CAAC,CAAC;UAClC,IAAI,CAACO,SAAS,EAAE;YACdZ,QAAQ,CAACU,QAAQ,CAAC;YAClBN,YAAY,CAAC,KAAK,CAAC;UACrB;QACF,CAAC,CAAC,OAAOO,CAAC,EAAE;UACV,IAAI,CAACC,SAAS,EAAE;YACdV,QAAQ,CAACS,CAAC,CAAC;YACXP,YAAY,CAAC,KAAK,CAAC;UACrB;QACF;MACF,CAAC;MAAA,OAAAU,KAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IAEDH,IAAI,CAAC,CAAC;IAEN,OAAO,MAAM;MACXD,SAAS,GAAG,IAAI;IAClB,CAAC;EACH,CAAC,EAAE,CAACP,SAAS,CAAC,CAAC;EAEfZ,SAAS,CACP,SAASwB,mBAAmBA,CAAA,EAAG;IAC7B,IAAI,CAAClB,KAAK,EAAE;MACV;IACF;;IAEA;IACA;IACA,SAASmB,gBAAgBA,CAAA,EAAG;MAC1BhB,QAAQ,CAAC,IAAIiB,KAAK,CAAC,oBAAoB,CAAC,CAAC;MACzCnB,QAAQ,CAACS,SAAS,CAAC;MACnBL,YAAY,CAAC,KAAK,CAAC;IACrB;IAEAL,KAAK,CAACqB,gBAAgB,CAAC9B,aAAa,CAAC+B,KAAK,CAACC,UAAU,EAAEJ,gBAAgB,CAAC;IAExE,OAAO,MAAM;MACXnB,KAAK,CAACwB,mBAAmB,CACvBjC,aAAa,CAAC+B,KAAK,CAACC,UAAU,EAC9BJ,gBACF,CAAC;IACH,CAAC;EACH,CAAC,EACD,CAACnB,KAAK,CACR,CAAC;EAED,IAAMyB,MAAgC,GAAG9B,OAAO,CAAC,MAAM;IACrD,IAAIS,SAAS,EAAE;MACb,OAAO;QAAEK,MAAM;QAAEiB,MAAM,EAAE;MAAU,CAAC;IACtC;IACA,IAAIxB,KAAK,IAAI,IAAI,EAAE;MACjB,OAAO;QAAEA,KAAK;QAAEO,MAAM;QAAEiB,MAAM,EAAE;MAAQ,CAAC;IAC3C;IACA,IAAI1B,KAAK,IAAI,IAAI,EAAE;MACjB,OAAO;QAAEA,KAAK;QAAES,MAAM;QAAEiB,MAAM,EAAE;MAAU,CAAC;IAC7C;IACA,MAAM,IAAIN,KAAK,CAAC,eAAe,CAAC;EAClC,CAAC,EAAE,CAAClB,KAAK,EAAEE,SAAS,EAAEJ,KAAK,EAAES,MAAM,CAAC,CAAC;EAErC,OAAOgB,MAAM;AACf","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/dashboard-core-plugins",
|
|
3
|
-
"version": "1.22.1
|
|
3
|
+
"version": "1.22.1",
|
|
4
4
|
"description": "Deephaven Dashboard Core Plugins",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -22,26 +22,26 @@
|
|
|
22
22
|
"build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@deephaven/chart": "^1.22.1
|
|
26
|
-
"@deephaven/components": "^1.22.1
|
|
27
|
-
"@deephaven/console": "^1.22.1
|
|
28
|
-
"@deephaven/dashboard": "^1.22.1
|
|
29
|
-
"@deephaven/file-explorer": "^1.22.1
|
|
30
|
-
"@deephaven/filters": "^1.
|
|
31
|
-
"@deephaven/golden-layout": "^1.22.1
|
|
32
|
-
"@deephaven/grid": "^1.22.1
|
|
33
|
-
"@deephaven/icons": "^1.
|
|
34
|
-
"@deephaven/iris-grid": "^1.22.1
|
|
35
|
-
"@deephaven/jsapi-bootstrap": "^1.22.1
|
|
36
|
-
"@deephaven/jsapi-components": "^1.22.1
|
|
25
|
+
"@deephaven/chart": "^1.22.1",
|
|
26
|
+
"@deephaven/components": "^1.22.1",
|
|
27
|
+
"@deephaven/console": "^1.22.1",
|
|
28
|
+
"@deephaven/dashboard": "^1.22.1",
|
|
29
|
+
"@deephaven/file-explorer": "^1.22.1",
|
|
30
|
+
"@deephaven/filters": "^1.1.0",
|
|
31
|
+
"@deephaven/golden-layout": "^1.22.1",
|
|
32
|
+
"@deephaven/grid": "^1.22.1",
|
|
33
|
+
"@deephaven/icons": "^1.2.0",
|
|
34
|
+
"@deephaven/iris-grid": "^1.22.1",
|
|
35
|
+
"@deephaven/jsapi-bootstrap": "^1.22.1",
|
|
36
|
+
"@deephaven/jsapi-components": "^1.22.1",
|
|
37
37
|
"@deephaven/jsapi-types": "^1.0.0-dev0.40.4",
|
|
38
|
-
"@deephaven/jsapi-utils": "^1.22.1
|
|
39
|
-
"@deephaven/log": "^1.
|
|
40
|
-
"@deephaven/plugin": "^1.22.1
|
|
41
|
-
"@deephaven/react-hooks": "^1.
|
|
42
|
-
"@deephaven/redux": "^1.22.1
|
|
43
|
-
"@deephaven/storage": "^1.
|
|
44
|
-
"@deephaven/utils": "^1.
|
|
38
|
+
"@deephaven/jsapi-utils": "^1.22.1",
|
|
39
|
+
"@deephaven/log": "^1.8.0",
|
|
40
|
+
"@deephaven/plugin": "^1.22.1",
|
|
41
|
+
"@deephaven/react-hooks": "^1.21.1",
|
|
42
|
+
"@deephaven/redux": "^1.22.1",
|
|
43
|
+
"@deephaven/storage": "^1.8.0",
|
|
44
|
+
"@deephaven/utils": "^1.10.0",
|
|
45
45
|
"@fortawesome/react-fontawesome": "^0.2.0",
|
|
46
46
|
"classnames": "^2.3.1",
|
|
47
47
|
"fast-deep-equal": "^3.1.3",
|
|
@@ -65,9 +65,9 @@
|
|
|
65
65
|
"react-redux": "^7.2.4"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
|
-
"@deephaven/jsapi-shim": "^1.
|
|
69
|
-
"@deephaven/mocks": "^1.
|
|
70
|
-
"@deephaven/test-utils": "^1.
|
|
68
|
+
"@deephaven/jsapi-shim": "^1.9.0",
|
|
69
|
+
"@deephaven/mocks": "^1.1.0",
|
|
70
|
+
"@deephaven/test-utils": "^1.8.0"
|
|
71
71
|
},
|
|
72
72
|
"files": [
|
|
73
73
|
"dist",
|
|
@@ -79,5 +79,5 @@
|
|
|
79
79
|
"publishConfig": {
|
|
80
80
|
"access": "public"
|
|
81
81
|
},
|
|
82
|
-
"gitHead": "
|
|
82
|
+
"gitHead": "d0ac1eabfef8efac88058247aeaef0ed526722d1"
|
|
83
83
|
}
|