@deephaven/iris-grid 0.13.3-treemap.2 → 0.14.1-beta.6
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/AdvancedFilterCreator.d.ts +69 -63
- package/dist/AdvancedFilterCreator.d.ts.map +1 -1
- package/dist/AdvancedFilterCreator.js +79 -73
- package/dist/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.d.ts +45 -45
- package/dist/AdvancedFilterCreatorSelectValue.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js +32 -36
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts +47 -52
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js +24 -39
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/ColumnStatistics.d.ts +34 -22
- package/dist/ColumnStatistics.d.ts.map +1 -1
- package/dist/ColumnStatistics.js +8 -12
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/CommonTypes.d.ts +58 -0
- package/dist/CommonTypes.d.ts.map +1 -0
- package/dist/CommonTypes.js +2 -0
- package/dist/CommonTypes.js.map +1 -0
- package/dist/CrossColumnSearch.d.ts +26 -24
- package/dist/CrossColumnSearch.d.ts.map +1 -1
- package/dist/CrossColumnSearch.js +9 -13
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/FilterInputField.d.ts +48 -51
- package/dist/FilterInputField.d.ts.map +1 -1
- package/dist/FilterInputField.js +30 -27
- package/dist/FilterInputField.js.map +1 -1
- package/dist/IrisGrid.d.ts +410 -453
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +590 -526
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridCellOverflowModal.d.ts +1 -1
- package/dist/IrisGridCellOverflowModal.d.ts.map +1 -1
- package/dist/IrisGridCellOverflowModal.js +1 -4
- package/dist/IrisGridCellOverflowModal.js.map +1 -1
- package/dist/IrisGridCopyHandler.d.ts +52 -46
- package/dist/IrisGridCopyHandler.d.ts.map +1 -1
- package/dist/IrisGridCopyHandler.js +22 -38
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridMetricCalculator.d.ts +5 -4
- package/dist/IrisGridMetricCalculator.d.ts.map +1 -1
- package/dist/IrisGridMetricCalculator.js +5 -1
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridModel.d.ts +37 -35
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js +19 -3
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelFactory.d.ts +7 -5
- package/dist/IrisGridModelFactory.d.ts.map +1 -1
- package/dist/IrisGridModelFactory.js +5 -5
- package/dist/IrisGridModelFactory.js.map +1 -1
- package/dist/IrisGridModelUpdater.d.ts +13 -11
- package/dist/IrisGridModelUpdater.d.ts.map +1 -1
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridPartitionSelector.d.ts +38 -39
- package/dist/IrisGridPartitionSelector.d.ts.map +1 -1
- package/dist/IrisGridPartitionSelector.js +18 -24
- package/dist/IrisGridPartitionSelector.js.map +1 -1
- package/dist/IrisGridProxyModel.d.ts +111 -32
- package/dist/IrisGridProxyModel.d.ts.map +1 -1
- package/dist/IrisGridProxyModel.js +212 -170
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.d.ts +59 -31
- package/dist/IrisGridRenderer.d.ts.map +1 -1
- package/dist/IrisGridRenderer.js +92 -46
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts +48 -149
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +58 -1385
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.d.ts +218 -0
- package/dist/IrisGridTableModelTemplate.d.ts.map +1 -0
- package/dist/IrisGridTableModelTemplate.js +1624 -0
- package/dist/IrisGridTableModelTemplate.js.map +1 -0
- package/dist/IrisGridTestUtils.d.ts +18 -14
- package/dist/IrisGridTestUtils.d.ts.map +1 -1
- package/dist/IrisGridTestUtils.js +29 -1
- package/dist/IrisGridTestUtils.js.map +1 -1
- package/dist/IrisGridTheme.d.ts +35 -3
- package/dist/IrisGridTheme.d.ts.map +1 -1
- package/dist/IrisGridTheme.js.map +1 -1
- package/dist/IrisGridTreeTableModel.d.ts +26 -7
- package/dist/IrisGridTreeTableModel.d.ts.map +1 -1
- package/dist/IrisGridTreeTableModel.js +24 -14
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.d.ts +257 -162
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +132 -95
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/MissingKeyError.d.ts +5 -3
- package/dist/MissingKeyError.d.ts.map +1 -1
- package/dist/MissingKeyError.js.map +1 -1
- package/dist/PartitionSelectorSearch.d.ts +61 -40
- package/dist/PartitionSelectorSearch.d.ts.map +1 -1
- package/dist/PartitionSelectorSearch.js +25 -15
- package/dist/PartitionSelectorSearch.js.map +1 -1
- package/dist/PendingDataBottomBar.d.ts +3 -6
- package/dist/PendingDataBottomBar.d.ts.map +1 -1
- package/dist/PendingDataBottomBar.js.map +1 -1
- package/dist/TableViewportUpdater.d.ts +39 -55
- package/dist/TableViewportUpdater.d.ts.map +1 -1
- package/dist/TableViewportUpdater.js +42 -64
- package/dist/TableViewportUpdater.js.map +1 -1
- package/dist/TreeTableViewportUpdater.d.ts +29 -37
- package/dist/TreeTableViewportUpdater.d.ts.map +1 -1
- package/dist/TreeTableViewportUpdater.js +39 -50
- package/dist/TreeTableViewportUpdater.js.map +1 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.d.ts +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +2 -0
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.d.ts +2 -2
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +32 -14
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts +41 -130
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +426 -317
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridFilterMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js +2 -2
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridSortMouseHandler.js +1 -1
- package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
- package/dist/mousehandlers/PendingMouseHandler.d.ts +8 -4
- package/dist/mousehandlers/PendingMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/PendingMouseHandler.js +4 -5
- package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
- package/dist/sidebar/ChartBuilder.d.ts +48 -33
- package/dist/sidebar/ChartBuilder.d.ts.map +1 -1
- package/dist/sidebar/ChartBuilder.js +28 -27
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.d.ts +51 -41
- package/dist/sidebar/CustomColumnBuilder.d.ts.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +22 -18
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.d.ts +26 -36
- package/dist/sidebar/CustomColumnInput.d.ts.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +11 -20
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/InputEditor.d.ts +34 -35
- package/dist/sidebar/InputEditor.d.ts.map +1 -1
- package/dist/sidebar/InputEditor.js +43 -24
- package/dist/sidebar/InputEditor.js.map +1 -1
- package/dist/sidebar/RollupRows.d.ts +67 -52
- package/dist/sidebar/RollupRows.d.ts.map +1 -1
- package/dist/sidebar/RollupRows.js +51 -53
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.d.ts +27 -21
- package/dist/sidebar/SelectDistinctBuilder.d.ts.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js +6 -10
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.d.ts +42 -39
- package/dist/sidebar/TableCsvExporter.d.ts.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +12 -20
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/TableSaver.d.ts +59 -60
- package/dist/sidebar/TableSaver.d.ts.map +1 -1
- package/dist/sidebar/TableSaver.js +154 -68
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts +56 -45
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.js +34 -29
- package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.d.ts.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts +2 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts +6 -5
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +5 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
- package/dist/sidebar/icons/index.d.ts +7 -7
- package/dist/sidebar/icons/index.d.ts.map +1 -1
- package/dist/sidebar/icons/index.js.map +1 -1
- package/dist/sidebar/index.d.ts +12 -12
- package/dist/sidebar/index.d.ts.map +1 -1
- package/dist/sidebar/index.js.map +1 -1
- package/package.json +18 -17
|
@@ -5,6 +5,6 @@ interface IrisGridCellOverflowModalProps {
|
|
|
5
5
|
isOpen: boolean;
|
|
6
6
|
onClose: () => void;
|
|
7
7
|
}
|
|
8
|
-
export default function IrisGridCellOverflowModal({ text, isOpen, onClose, }: IrisGridCellOverflowModalProps): React.
|
|
8
|
+
export default function IrisGridCellOverflowModal({ text, isOpen, onClose, }: IrisGridCellOverflowModalProps): React.ReactElement | null;
|
|
9
9
|
export {};
|
|
10
10
|
//# sourceMappingURL=IrisGridCellOverflowModal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridCellOverflowModal.d.ts","sourceRoot":"","sources":["../src/IrisGridCellOverflowModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"IrisGridCellOverflowModal.d.ts","sourceRoot":"","sources":["../src/IrisGridCellOverflowModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAK3D,OAAO,kCAAkC,CAAC;AAE1C,UAAU,8BAA8B;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,EAChD,IAAI,EACJ,MAAM,EACN,OAAO,GACR,EAAE,8BAA8B,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAyJ5D"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React, { useEffect, useRef, useState } from 'react';
|
|
2
2
|
import { Editor } from '@deephaven/console';
|
|
3
|
-
import { Modal, ModalBody, ModalHeader } from '
|
|
4
|
-
import { Button } from '@deephaven/components';
|
|
3
|
+
import { Button, Modal, ModalBody, ModalHeader } from '@deephaven/components';
|
|
5
4
|
import { vsJson, vsListOrdered } from '@deephaven/icons';
|
|
6
5
|
import "./IrisGridCellOverflowModal.css";
|
|
7
6
|
export default function IrisGridCellOverflowModal(_ref) {
|
|
@@ -114,10 +113,8 @@ export default function IrisGridCellOverflowModal(_ref) {
|
|
|
114
113
|
setIsOpened(false);
|
|
115
114
|
setHeight(0);
|
|
116
115
|
},
|
|
117
|
-
size: "xl",
|
|
118
116
|
className: "theme-bg-dark cell-overflow-modal"
|
|
119
117
|
}, /*#__PURE__*/React.createElement(ModalHeader, {
|
|
120
|
-
tag: "div",
|
|
121
118
|
toggle: onClose
|
|
122
119
|
}, /*#__PURE__*/React.createElement("h5", {
|
|
123
120
|
className: "overflow-modal-title"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/IrisGridCellOverflowModal.tsx"],"names":["React","useEffect","useRef","useState","Editor","Modal","ModalBody","ModalHeader","
|
|
1
|
+
{"version":3,"sources":["../src/IrisGridCellOverflowModal.tsx"],"names":["React","useEffect","useRef","useState","Editor","Button","Modal","ModalBody","ModalHeader","vsJson","vsListOrdered","IrisGridCellOverflowModal","text","isOpen","onClose","isOpened","setIsOpened","height","setHeight","showLineNumbers","setShowLineNumbers","isFormatted","setIsFormatted","canFormat","setCanFormat","editorRef","enableFormatButtonWhenOpen","JSON","parse","updateLayoutOnHeightChange","current","layout","toggleShowLineNumber","updateOptions","lineNumbers","toggleLineNumbers","formatAsJSON","model","getModel","setValue","stringify","undefined","autoSetLineNumbers","editor","getLineCount","handleToggle","onEditorInitialized","onDidContentSizeChange","contentHeight","value","readOnly","wordWrap","language","folding","padding","bottom","overviewRulerLanes","renderLineHighlight","find","seedSearchStringFromSelection"],"mappings":"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","sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { Editor } from '@deephaven/console';\nimport * as monaco from 'monaco-editor';\nimport { Button, Modal, ModalBody, ModalHeader } from '@deephaven/components';\nimport { vsJson, vsListOrdered } from '@deephaven/icons';\nimport './IrisGridCellOverflowModal.scss';\n\ninterface IrisGridCellOverflowModalProps {\n text: string;\n isOpen: boolean;\n onClose: () => void;\n}\n\nexport default function IrisGridCellOverflowModal({\n text,\n isOpen,\n onClose,\n}: IrisGridCellOverflowModalProps): React.ReactElement | null {\n const [isOpened, setIsOpened] = useState(false);\n const [height, setHeight] = useState(0);\n const [showLineNumbers, setShowLineNumbers] = useState(false);\n const [isFormatted, setIsFormatted] = useState(false);\n const [canFormat, setCanFormat] = useState(false);\n const editorRef = useRef<monaco.editor.IStandaloneCodeEditor>();\n\n // Update format button on open\n useEffect(\n function enableFormatButtonWhenOpen() {\n if (!isOpen) {\n return;\n }\n\n try {\n JSON.parse(text);\n setCanFormat(true);\n } catch {\n setCanFormat(false);\n }\n setIsFormatted(false);\n },\n [isOpen, text]\n );\n\n // Re-layout editor on height change\n useEffect(\n function updateLayoutOnHeightChange() {\n if (editorRef.current) {\n editorRef.current.layout();\n }\n },\n [height]\n );\n\n // Update editor options on line number toggle\n useEffect(\n function toggleShowLineNumber() {\n if (editorRef.current) {\n editorRef.current.updateOptions({\n lineNumbers: showLineNumbers ? 'on' : 'off',\n });\n }\n },\n [showLineNumbers]\n );\n\n function toggleLineNumbers() {\n setShowLineNumbers(!showLineNumbers);\n }\n\n function formatAsJSON() {\n const model = editorRef.current?.getModel();\n if (!canFormat || !model) {\n return;\n }\n\n if (!isFormatted) {\n model.setValue(JSON.stringify(JSON.parse(text), undefined, 2));\n setIsFormatted(true);\n } else {\n model.setValue(text);\n setIsFormatted(false);\n }\n autoSetLineNumbers();\n }\n\n function autoSetLineNumbers() {\n const editor = editorRef.current;\n if (!editor) {\n return;\n }\n\n setShowLineNumbers((editor.getModel()?.getLineCount() ?? 0) > 1);\n }\n\n function handleToggle() {\n if (isOpened) {\n editorRef.current = undefined;\n onClose();\n }\n }\n\n function onEditorInitialized(editor: monaco.editor.IStandaloneCodeEditor) {\n editorRef.current = editor;\n editor.onDidContentSizeChange(({ contentHeight }) =>\n setHeight(contentHeight)\n );\n autoSetLineNumbers();\n }\n\n if (!isOpen && !isOpened) {\n return null;\n }\n\n return (\n <Modal\n isOpen={isOpen}\n centered\n keyboard\n toggle={handleToggle}\n onOpened={() => setIsOpened(true)}\n onClosed={() => {\n setIsOpened(false);\n setHeight(0);\n }}\n className=\"theme-bg-dark cell-overflow-modal\"\n >\n <ModalHeader toggle={onClose}>\n <h5 className=\"overflow-modal-title\">Cell Contents</h5>\n <Button\n kind=\"inline\"\n active={showLineNumbers}\n icon={vsListOrdered}\n tooltip=\"Toggle line numbers\"\n onClick={toggleLineNumbers}\n />\n {canFormat && (\n <Button\n kind=\"inline\"\n icon={vsJson}\n active={isFormatted}\n tooltip=\"Format as JSON\"\n onClick={formatAsJSON}\n />\n )}\n </ModalHeader>\n <ModalBody style={{ height }}>\n <Editor\n onEditorInitialized={onEditorInitialized}\n settings={{\n value: text,\n readOnly: true,\n wordWrap: 'on',\n // Loading json language w/o the monaco workers causes UI freezes and monaco errors. TS colorizes the same\n language: canFormat ? 'typescript' : 'plaintext',\n folding: canFormat,\n padding: { bottom: 16 },\n lineNumbers: showLineNumbers ? 'on' : 'off',\n overviewRulerLanes: 0,\n renderLineHighlight: 'none',\n /*\n The entire string may be 1 giant line\n Monaco by default seeds find w/ that line\n On very long strings this hangs the browser, so never seed the search\n */\n find: { seedSearchStringFromSelection: 'never' },\n }}\n />\n </ModalBody>\n </Modal>\n );\n}\n"],"file":"IrisGridCellOverflowModal.js"}
|
|
@@ -1,10 +1,39 @@
|
|
|
1
|
-
|
|
1
|
+
import { Component } from 'react';
|
|
2
|
+
import { GridRange, ModelSizeMap, MoveOperation } from '@deephaven/grid';
|
|
3
|
+
import { CancelablePromise } from '@deephaven/utils';
|
|
4
|
+
import './IrisGridCopyHandler.scss';
|
|
5
|
+
import IrisGridModel from './IrisGridModel';
|
|
6
|
+
declare type Values<T> = T[keyof T];
|
|
7
|
+
declare type ButtonStateType = Values<typeof IrisGridCopyHandler.BUTTON_STATES>;
|
|
8
|
+
export declare type CopyOperation = {
|
|
9
|
+
ranges: GridRange[];
|
|
10
|
+
includeHeaders: boolean;
|
|
11
|
+
formatValues?: boolean;
|
|
12
|
+
movedColumns: MoveOperation[];
|
|
13
|
+
userColumnWidths: ModelSizeMap;
|
|
14
|
+
error?: string;
|
|
15
|
+
};
|
|
16
|
+
interface IrisGridCopyHandlerProps {
|
|
17
|
+
model: IrisGridModel;
|
|
18
|
+
copyOperation: CopyOperation;
|
|
19
|
+
onEntering: () => void;
|
|
20
|
+
onEntered: () => void;
|
|
21
|
+
onExiting: () => void;
|
|
22
|
+
onExited: () => void;
|
|
23
|
+
}
|
|
24
|
+
interface IrisGridCopyHandlerState {
|
|
25
|
+
error?: string;
|
|
26
|
+
copyState: string;
|
|
27
|
+
buttonState: string;
|
|
28
|
+
isShown: boolean;
|
|
29
|
+
rowCount: number;
|
|
30
|
+
}
|
|
2
31
|
/**
|
|
3
32
|
* Component for handling copying of data from the Iris Grid.
|
|
4
33
|
* - Prompts if necessary (large amount of rows copied)
|
|
5
34
|
* - Tries to async copy, falls back to showing a "Click to Copy" button if that fails
|
|
6
35
|
*/
|
|
7
|
-
declare class IrisGridCopyHandler extends
|
|
36
|
+
declare class IrisGridCopyHandler extends Component<IrisGridCopyHandlerProps, IrisGridCopyHandlerState> {
|
|
8
37
|
static NO_PROMPT_THRESHOLD: number;
|
|
9
38
|
static HIDE_TIMEOUT: number;
|
|
10
39
|
/**
|
|
@@ -24,57 +53,34 @@ declare class IrisGridCopyHandler extends React.Component<any, any, any> {
|
|
|
24
53
|
CLICK_TO_COPY: string;
|
|
25
54
|
RETRY: string;
|
|
26
55
|
};
|
|
27
|
-
static
|
|
28
|
-
|
|
29
|
-
|
|
56
|
+
static defaultProps: {
|
|
57
|
+
copyOperation: null;
|
|
58
|
+
onEntering: () => void;
|
|
59
|
+
onEntered: () => void;
|
|
60
|
+
onExiting: () => void;
|
|
61
|
+
onExited: () => void;
|
|
62
|
+
};
|
|
63
|
+
static getStatusMessageText(copyState: string, rowCount: number): string;
|
|
64
|
+
static getCopyButtonText(buttonState: ButtonStateType): string;
|
|
65
|
+
constructor(props: IrisGridCopyHandlerProps);
|
|
66
|
+
componentDidMount(): void;
|
|
67
|
+
componentDidUpdate(prevProps: IrisGridCopyHandlerProps): void;
|
|
68
|
+
componentWillUnmount(): void;
|
|
69
|
+
textData?: string;
|
|
70
|
+
hideTimer?: ReturnType<typeof setTimeout>;
|
|
71
|
+
fetchPromise?: CancelablePromise<string>;
|
|
72
|
+
startCopy(): void;
|
|
73
|
+
stopCopy(): void;
|
|
30
74
|
handleBackgroundClick(): void;
|
|
31
75
|
handleCancelClick(): void;
|
|
32
76
|
handleCopyClick(): void;
|
|
33
77
|
handleHideTimeout(): void;
|
|
34
|
-
|
|
35
|
-
hideTimer: NodeJS.Timeout | null;
|
|
36
|
-
fetchPromise: import("@deephaven/utils").CancelablePromise<any> | null;
|
|
37
|
-
startCopy(): void;
|
|
38
|
-
stopCopy(): void;
|
|
39
|
-
copyText(text: any): void;
|
|
78
|
+
copyText(text: string): void;
|
|
40
79
|
startFetch(): void;
|
|
41
80
|
stopFetch(): void;
|
|
42
81
|
startHideTimer(): void;
|
|
43
82
|
stopHideTimer(): void;
|
|
83
|
+
render(): JSX.Element;
|
|
44
84
|
}
|
|
45
|
-
|
|
46
|
-
namespace propTypes {
|
|
47
|
-
const model: PropTypes.Validator<any>;
|
|
48
|
-
const copyOperation: PropTypes.Requireable<PropTypes.InferProps<{
|
|
49
|
-
ranges: PropTypes.Validator<(GridRange | null | undefined)[]>;
|
|
50
|
-
movedColumns: PropTypes.Validator<(PropTypes.InferProps<{
|
|
51
|
-
to: PropTypes.Requireable<number>;
|
|
52
|
-
from: PropTypes.Requireable<number>;
|
|
53
|
-
}> | null | undefined)[]>;
|
|
54
|
-
userColumnWidths: PropTypes.Validator<Map<unknown, unknown>>;
|
|
55
|
-
formatValues: PropTypes.Requireable<boolean>;
|
|
56
|
-
includeHeaders: PropTypes.Requireable<boolean>;
|
|
57
|
-
error: PropTypes.Requireable<string>;
|
|
58
|
-
}>>;
|
|
59
|
-
const onEntering: PropTypes.Requireable<(...args: any[]) => any>;
|
|
60
|
-
const onEntered: PropTypes.Requireable<(...args: any[]) => any>;
|
|
61
|
-
const onExiting: PropTypes.Requireable<(...args: any[]) => any>;
|
|
62
|
-
const onExited: PropTypes.Requireable<(...args: any[]) => any>;
|
|
63
|
-
}
|
|
64
|
-
namespace defaultProps {
|
|
65
|
-
const copyOperation_1: null;
|
|
66
|
-
export { copyOperation_1 as copyOperation };
|
|
67
|
-
export function onEntering_1(): void;
|
|
68
|
-
export { onEntering_1 as onEntering };
|
|
69
|
-
export function onEntered_1(): void;
|
|
70
|
-
export { onEntered_1 as onEntered };
|
|
71
|
-
export function onExiting_1(): void;
|
|
72
|
-
export { onExiting_1 as onExiting };
|
|
73
|
-
export function onExited_1(): void;
|
|
74
|
-
export { onExited_1 as onExited };
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
import React from "react";
|
|
78
|
-
import PropTypes from "prop-types";
|
|
79
|
-
import { GridRange } from "packages/grid/src/GridRange";
|
|
85
|
+
export default IrisGridCopyHandler;
|
|
80
86
|
//# sourceMappingURL=IrisGridCopyHandler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridCopyHandler.d.ts","sourceRoot":"","sources":["../src/IrisGridCopyHandler.
|
|
1
|
+
{"version":3,"file":"IrisGridCopyHandler.d.ts","sourceRoot":"","sources":["../src/IrisGridCopyHandler.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQzC,OAAO,EACL,SAAS,EAET,YAAY,EACZ,aAAa,EACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,iBAAiB,EAGlB,MAAM,kBAAkB,CAAC;AAK1B,OAAO,4BAA4B,CAAC;AACpC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAI5C,aAAK,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAE5B,aAAK,eAAe,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,aAAa,CAAC,CAAC;AAExE,oBAAY,aAAa,GAAG;IAC1B,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,aAAa,EAAE,CAAC;IAC9B,gBAAgB,EAAE,YAAY,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,UAAU,wBAAwB;IAChC,KAAK,EAAE,aAAa,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,UAAU,wBAAwB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD;;;;GAIG;AACH,cAAM,mBAAoB,SAAQ,SAAS,CACzC,wBAAwB,EACxB,wBAAwB,CACzB;IACC,MAAM,CAAC,mBAAmB,SAAS;IAEnC,MAAM,CAAC,YAAY,SAAQ;IAE3B;;OAEG;IACH,MAAM,CAAC,WAAW;;;;;;;MAkBhB;IAEF,MAAM,CAAC,aAAa;;;;;MAKlB;IAEF,MAAM,CAAC,YAAY;;0BAED,IAAI;yBACL,IAAI;yBACJ,IAAI;wBACL,IAAI;MAClB;IAEF,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAiBxE,MAAM,CAAC,iBAAiB,CAAC,WAAW,EAAE,eAAe,GAAG,MAAM;gBAalD,KAAK,EAAE,wBAAwB;IAiB3C,iBAAiB,IAAI,IAAI;IAOzB,kBAAkB,CAAC,SAAS,EAAE,wBAAwB,GAAG,IAAI;IAO7D,oBAAoB,IAAI,IAAI;IAI5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IAE1C,YAAY,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAEzC,SAAS,IAAI,IAAI;IAsCjB,QAAQ,IAAI,IAAI;IAMhB,qBAAqB,IAAI,IAAI;IAS7B,iBAAiB,IAAI,IAAI;IAOzB,eAAe,IAAI,IAAI;IAUvB,iBAAiB,IAAI,IAAI;IAQzB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAoB5B,UAAU,IAAI,IAAI;IAwDlB,SAAS,IAAI,IAAI;IAQjB,cAAc,IAAI,IAAI;IAStB,aAAa,IAAI,IAAI;IAOrB,MAAM,IAAI,GAAG,CAAC,OAAO;CAkEtB;AAED,eAAe,mBAAmB,CAAC"}
|
|
@@ -2,23 +2,21 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
|
2
2
|
|
|
3
3
|
import React, { Component } from 'react';
|
|
4
4
|
import classNames from 'classnames';
|
|
5
|
-
import PropTypes from 'prop-types';
|
|
6
5
|
import { CSSTransition } from 'react-transition-group';
|
|
7
6
|
import { ContextActionUtils, LoadingSpinner, ThemeExport } from '@deephaven/components';
|
|
8
7
|
import { GridRange, GridUtils } from '@deephaven/grid';
|
|
9
8
|
import { CanceledPromiseError, PromiseUtils } from '@deephaven/utils';
|
|
10
9
|
import Log from '@deephaven/log';
|
|
11
|
-
import IrisGridModel from "./IrisGridModel.js";
|
|
12
10
|
import IrisGridUtils from "./IrisGridUtils.js";
|
|
13
11
|
import IrisGridBottomBar from "./IrisGridBottomBar.js";
|
|
14
12
|
import "./IrisGridCopyHandler.css";
|
|
15
13
|
var log = Log.module('IrisGridCopyHandler');
|
|
14
|
+
|
|
16
15
|
/**
|
|
17
16
|
* Component for handling copying of data from the Iris Grid.
|
|
18
17
|
* - Prompts if necessary (large amount of rows copied)
|
|
19
18
|
* - Tries to async copy, falls back to showing a "Click to Copy" button if that fails
|
|
20
19
|
*/
|
|
21
|
-
|
|
22
20
|
class IrisGridCopyHandler extends Component {
|
|
23
21
|
/**
|
|
24
22
|
* Different states for the current copy operation
|
|
@@ -63,15 +61,19 @@ class IrisGridCopyHandler extends Component {
|
|
|
63
61
|
|
|
64
62
|
constructor(props) {
|
|
65
63
|
super(props);
|
|
64
|
+
|
|
65
|
+
_defineProperty(this, "textData", void 0);
|
|
66
|
+
|
|
67
|
+
_defineProperty(this, "hideTimer", void 0);
|
|
68
|
+
|
|
69
|
+
_defineProperty(this, "fetchPromise", void 0);
|
|
70
|
+
|
|
66
71
|
this.handleBackgroundClick = this.handleBackgroundClick.bind(this);
|
|
67
72
|
this.handleCancelClick = this.handleCancelClick.bind(this);
|
|
68
73
|
this.handleCopyClick = this.handleCopyClick.bind(this);
|
|
69
74
|
this.handleHideTimeout = this.handleHideTimeout.bind(this);
|
|
70
|
-
this.textData = null;
|
|
71
|
-
this.hideTimer = null;
|
|
72
|
-
this.fetchPromise = null;
|
|
73
75
|
this.state = {
|
|
74
|
-
error:
|
|
76
|
+
error: undefined,
|
|
75
77
|
copyState: IrisGridCopyHandler.COPY_STATES.IDLE,
|
|
76
78
|
buttonState: IrisGridCopyHandler.BUTTON_STATES.COPY,
|
|
77
79
|
isShown: false,
|
|
@@ -138,7 +140,7 @@ class IrisGridCopyHandler extends Component {
|
|
|
138
140
|
this.setState({
|
|
139
141
|
rowCount,
|
|
140
142
|
isShown: true,
|
|
141
|
-
error:
|
|
143
|
+
error: undefined
|
|
142
144
|
});
|
|
143
145
|
|
|
144
146
|
if (rowCount > IrisGridCopyHandler.NO_PROMPT_THRESHOLD) {
|
|
@@ -152,7 +154,7 @@ class IrisGridCopyHandler extends Component {
|
|
|
152
154
|
}
|
|
153
155
|
|
|
154
156
|
stopCopy() {
|
|
155
|
-
this.textData =
|
|
157
|
+
this.textData = undefined;
|
|
156
158
|
this.stopFetch();
|
|
157
159
|
this.stopHideTimer();
|
|
158
160
|
}
|
|
@@ -243,14 +245,14 @@ class IrisGridCopyHandler extends Component {
|
|
|
243
245
|
var formatValue = formatValues ? (value, column) => model.displayString(value, column.type, column.name) : value => "".concat(value);
|
|
244
246
|
this.fetchPromise = PromiseUtils.makeCancelable(model.textSnapshot(modelRanges, includeHeaders, formatValue));
|
|
245
247
|
this.fetchPromise.then(text => {
|
|
246
|
-
this.fetchPromise =
|
|
248
|
+
this.fetchPromise = undefined;
|
|
247
249
|
this.copyText(text);
|
|
248
250
|
}).catch(error => {
|
|
249
251
|
if (error instanceof CanceledPromiseError) {
|
|
250
252
|
log.debug('User cancelled copy.');
|
|
251
253
|
} else {
|
|
252
254
|
log.error('Error fetching contents', error);
|
|
253
|
-
this.fetchPromise =
|
|
255
|
+
this.fetchPromise = undefined;
|
|
254
256
|
this.setState({
|
|
255
257
|
buttonState: IrisGridCopyHandler.BUTTON_STATES.RETRY,
|
|
256
258
|
copyState: IrisGridCopyHandler.COPY_STATES.FETCH_ERROR
|
|
@@ -263,7 +265,7 @@ class IrisGridCopyHandler extends Component {
|
|
|
263
265
|
if (this.fetchPromise) {
|
|
264
266
|
log.debug2('stopFetch');
|
|
265
267
|
this.fetchPromise.cancel();
|
|
266
|
-
this.fetchPromise =
|
|
268
|
+
this.fetchPromise = undefined;
|
|
267
269
|
}
|
|
268
270
|
}
|
|
269
271
|
|
|
@@ -275,7 +277,7 @@ class IrisGridCopyHandler extends Component {
|
|
|
275
277
|
stopHideTimer() {
|
|
276
278
|
if (this.hideTimer != null) {
|
|
277
279
|
clearTimeout(this.hideTimer);
|
|
278
|
-
this.hideTimer =
|
|
280
|
+
this.hideTimer = undefined;
|
|
279
281
|
}
|
|
280
282
|
}
|
|
281
283
|
|
|
@@ -364,31 +366,13 @@ _defineProperty(IrisGridCopyHandler, "BUTTON_STATES", {
|
|
|
364
366
|
RETRY: 'RETRY'
|
|
365
367
|
});
|
|
366
368
|
|
|
367
|
-
IrisGridCopyHandler
|
|
368
|
-
model: PropTypes.instanceOf(IrisGridModel).isRequired,
|
|
369
|
-
copyOperation: PropTypes.shape({
|
|
370
|
-
// ranges are expected to be bounded ranges
|
|
371
|
-
ranges: PropTypes.arrayOf(PropTypes.instanceOf(GridRange)).isRequired,
|
|
372
|
-
movedColumns: PropTypes.arrayOf(PropTypes.shape({
|
|
373
|
-
to: PropTypes.number,
|
|
374
|
-
from: PropTypes.number
|
|
375
|
-
})).isRequired,
|
|
376
|
-
userColumnWidths: PropTypes.instanceOf(Map).isRequired,
|
|
377
|
-
formatValues: PropTypes.bool,
|
|
378
|
-
includeHeaders: PropTypes.bool,
|
|
379
|
-
error: PropTypes.string
|
|
380
|
-
}),
|
|
381
|
-
onEntering: PropTypes.func,
|
|
382
|
-
onEntered: PropTypes.func,
|
|
383
|
-
onExiting: PropTypes.func,
|
|
384
|
-
onExited: PropTypes.func
|
|
385
|
-
};
|
|
386
|
-
IrisGridCopyHandler.defaultProps = {
|
|
369
|
+
_defineProperty(IrisGridCopyHandler, "defaultProps", {
|
|
387
370
|
copyOperation: null,
|
|
388
|
-
onEntering: () =>
|
|
389
|
-
onEntered: () =>
|
|
390
|
-
onExiting: () =>
|
|
391
|
-
onExited: () =>
|
|
392
|
-
};
|
|
371
|
+
onEntering: () => undefined,
|
|
372
|
+
onEntered: () => undefined,
|
|
373
|
+
onExiting: () => undefined,
|
|
374
|
+
onExited: () => undefined
|
|
375
|
+
});
|
|
376
|
+
|
|
393
377
|
export default IrisGridCopyHandler;
|
|
394
378
|
//# sourceMappingURL=IrisGridCopyHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/IrisGridCopyHandler.jsx"],"names":["React","Component","classNames","PropTypes","CSSTransition","ContextActionUtils","LoadingSpinner","ThemeExport","GridRange","GridUtils","CanceledPromiseError","PromiseUtils","Log","IrisGridModel","IrisGridUtils","IrisGridBottomBar","log","module","IrisGridCopyHandler","getStatusMessageText","copyState","rowCount","COPY_STATES","CONFIRMATION_REQUIRED","toLocaleString","CLICK_REQUIRED","FETCH_ERROR","FETCH_IN_PROGRESS","DONE","getCopyButtonText","buttonState","BUTTON_STATES","CLICK_TO_COPY","RETRY","constructor","props","handleBackgroundClick","bind","handleCancelClick","handleCopyClick","handleHideTimeout","textData","hideTimer","fetchPromise","state","error","IDLE","COPY","isShown","componentDidMount","copyOperation","startCopy","componentDidUpdate","prevProps","componentWillUnmount","stopCopy","debug2","setState","ranges","debug","startHideTimer","NO_PROMPT_THRESHOLD","startFetch","stopFetch","stopHideTimer","copyText","text","copyToClipboard","then","model","includeHeaders","userColumnWidths","movedColumns","formatValues","hiddenColumns","getHiddenColumns","modelRanges","getModelRanges","length","subtractRanges","map","makeColumn","subtractRangesFromRanges","formatValue","value","column","displayString","type","name","makeCancelable","textSnapshot","catch","cancel","setTimeout","HIDE_TIMEOUT","clearTimeout","render","onEntering","onEntered","onExiting","onExited","animation","copyButtonText","statusMessageText","isButtonContainerVisible","isFetching","isDone","transitionMs","propTypes","instanceOf","isRequired","shape","arrayOf","to","number","from","Map","bool","string","func","defaultProps"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\nimport {\n ContextActionUtils,\n LoadingSpinner,\n ThemeExport,\n} from '@deephaven/components';\nimport { GridRange, GridUtils } from '@deephaven/grid';\nimport { CanceledPromiseError, PromiseUtils } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport IrisGridModel from './IrisGridModel';\nimport IrisGridUtils from './IrisGridUtils';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport './IrisGridCopyHandler.scss';\n\nconst log = Log.module('IrisGridCopyHandler');\n\n/**\n * Component for handling copying of data from the Iris Grid.\n * - Prompts if necessary (large amount of rows copied)\n * - Tries to async copy, falls back to showing a \"Click to Copy\" button if that fails\n */\nclass IrisGridCopyHandler extends Component {\n static NO_PROMPT_THRESHOLD = 10000;\n\n static HIDE_TIMEOUT = 3000;\n\n /**\n * Different states for the current copy operation\n */\n static COPY_STATES = {\n // No copy operation in progress\n IDLE: 'IDLE',\n\n // Large copy operation, confirmation required\n CONFIRMATION_REQUIRED: 'CONFIRMATION_REQUIRED',\n\n // Fetch is currently in progress\n FETCH_IN_PROGRESS: 'FETCH_IN_PROGRESS',\n\n // There was an error fetching the data\n FETCH_ERROR: 'FETCH_ERROR',\n\n // Click is required to copy\n CLICK_REQUIRED: 'CLICK_REQUIRED',\n\n // The copy operation is completed and successfully copied to the clipboard\n DONE: 'DONE',\n };\n\n static BUTTON_STATES = {\n COPY: 'COPY',\n FETCH_IN_PROGRESS: 'FETCH_IN_PROGRESS',\n CLICK_TO_COPY: 'CLICK_TO_COPY',\n RETRY: 'RETRY',\n };\n\n static getStatusMessageText(copyState, rowCount) {\n switch (copyState) {\n case IrisGridCopyHandler.COPY_STATES.CONFIRMATION_REQUIRED:\n return `Are you sure you want to copy ${rowCount.toLocaleString()} rows to your clipboard?`;\n case IrisGridCopyHandler.COPY_STATES.CLICK_REQUIRED:\n return `Fetched ${rowCount.toLocaleString()} rows!`;\n case IrisGridCopyHandler.COPY_STATES.FETCH_ERROR:\n return 'Unable to copy data.';\n case IrisGridCopyHandler.COPY_STATES.FETCH_IN_PROGRESS:\n return `Fetching ${rowCount.toLocaleString()} rows for clipboard...`;\n case IrisGridCopyHandler.COPY_STATES.DONE:\n return 'Copied to Clipboard!';\n default:\n return '';\n }\n }\n\n static getCopyButtonText(buttonState) {\n switch (buttonState) {\n case IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS:\n return 'Fetching';\n case IrisGridCopyHandler.BUTTON_STATES.CLICK_TO_COPY:\n return 'Click to Copy';\n case IrisGridCopyHandler.BUTTON_STATES.RETRY:\n return 'Retry';\n default:\n return 'Copy';\n }\n }\n\n constructor(props) {\n super(props);\n\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.handleCancelClick = this.handleCancelClick.bind(this);\n this.handleCopyClick = this.handleCopyClick.bind(this);\n this.handleHideTimeout = this.handleHideTimeout.bind(this);\n\n this.textData = null;\n this.hideTimer = null;\n this.fetchPromise = null;\n\n this.state = {\n error: null,\n copyState: IrisGridCopyHandler.COPY_STATES.IDLE,\n buttonState: IrisGridCopyHandler.BUTTON_STATES.COPY,\n isShown: false,\n rowCount: 0,\n };\n }\n\n componentDidMount() {\n const { copyOperation } = this.props;\n if (copyOperation != null) {\n this.startCopy();\n }\n }\n\n componentDidUpdate(prevProps) {\n const { copyOperation } = this.props;\n if (prevProps.copyOperation !== copyOperation) {\n this.startCopy();\n }\n }\n\n componentWillUnmount() {\n this.stopCopy();\n }\n\n startCopy() {\n log.debug2('startCopy');\n\n this.stopCopy();\n\n const { copyOperation } = this.props;\n if (copyOperation == null) {\n log.debug2('No copy operation set, cancelling out');\n this.setState({ isShown: false });\n return;\n }\n\n const { ranges, error } = copyOperation;\n if (error != null) {\n log.debug('Showing copy error', error);\n this.setState({\n isShown: true,\n copyState: IrisGridCopyHandler.COPY_STATES.DONE,\n error,\n });\n this.startHideTimer();\n return;\n }\n\n const rowCount = GridRange.rowCount(ranges);\n\n this.setState({ rowCount, isShown: true, error: null });\n\n if (rowCount > IrisGridCopyHandler.NO_PROMPT_THRESHOLD) {\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.COPY,\n copyState: IrisGridCopyHandler.COPY_STATES.CONFIRMATION_REQUIRED,\n });\n } else {\n this.startFetch();\n }\n }\n\n stopCopy() {\n this.textData = null;\n this.stopFetch();\n this.stopHideTimer();\n }\n\n handleBackgroundClick() {\n log.debug2('handleBackgroundClick');\n\n const { copyState } = this.state;\n if (copyState === IrisGridCopyHandler.COPY_STATES.DONE) {\n this.setState({ isShown: false });\n }\n }\n\n handleCancelClick() {\n log.debug2('handleCancelClick');\n\n this.stopFetch();\n this.setState({ isShown: false });\n }\n\n handleCopyClick() {\n log.debug2('handleCopyClick');\n\n if (this.textData != null) {\n this.copyText(this.textData);\n } else {\n this.startFetch();\n }\n }\n\n handleHideTimeout() {\n log.debug2('handleHideTimeout');\n\n this.stopHideTimer();\n\n this.setState({ isShown: false });\n }\n\n copyText(text) {\n log.debug2('copyText', text);\n\n this.textData = text;\n\n ContextActionUtils.copyToClipboard(text).then(\n () => {\n this.setState({ copyState: IrisGridCopyHandler.COPY_STATES.DONE });\n this.startHideTimer();\n },\n error => {\n log.error('copyText error', error);\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.CLICK_TO_COPY,\n copyState: IrisGridCopyHandler.COPY_STATES.CLICK_REQUIRED,\n });\n }\n );\n }\n\n startFetch() {\n this.stopFetch();\n\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS,\n copyState: IrisGridCopyHandler.COPY_STATES.FETCH_IN_PROGRESS,\n });\n\n const { model, copyOperation } = this.props;\n const {\n ranges,\n includeHeaders,\n userColumnWidths,\n movedColumns,\n formatValues,\n } = copyOperation;\n log.debug('startFetch', ranges);\n\n const hiddenColumns = IrisGridUtils.getHiddenColumns(userColumnWidths);\n let modelRanges = GridUtils.getModelRanges(ranges, movedColumns);\n if (hiddenColumns.length > 0) {\n const subtractRanges = hiddenColumns.map(GridRange.makeColumn);\n modelRanges = GridRange.subtractRangesFromRanges(\n modelRanges,\n subtractRanges\n );\n }\n\n // Remove the hidden columns from the snapshot\n const formatValue = formatValues\n ? (value, column) => model.displayString(value, column.type, column.name)\n : value => `${value}`;\n\n this.fetchPromise = PromiseUtils.makeCancelable(\n model.textSnapshot(modelRanges, includeHeaders, formatValue)\n );\n this.fetchPromise\n .then(text => {\n this.fetchPromise = null;\n this.copyText(text);\n })\n .catch(error => {\n if (error instanceof CanceledPromiseError) {\n log.debug('User cancelled copy.');\n } else {\n log.error('Error fetching contents', error);\n this.fetchPromise = null;\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.RETRY,\n copyState: IrisGridCopyHandler.COPY_STATES.FETCH_ERROR,\n });\n }\n });\n }\n\n stopFetch() {\n if (this.fetchPromise) {\n log.debug2('stopFetch');\n this.fetchPromise.cancel();\n this.fetchPromise = null;\n }\n }\n\n startHideTimer() {\n this.stopHideTimer();\n\n this.hideTimer = setTimeout(\n this.handleHideTimeout,\n IrisGridCopyHandler.HIDE_TIMEOUT\n );\n }\n\n stopHideTimer() {\n if (this.hideTimer != null) {\n clearTimeout(this.hideTimer);\n this.hideTimer = null;\n }\n }\n\n render() {\n const { onEntering, onEntered, onExiting, onExited } = this.props;\n const { buttonState, copyState, isShown, rowCount, error } = this.state;\n\n const animation =\n copyState === IrisGridCopyHandler.COPY_STATES.DONE\n ? 'fade'\n : 'copy-slide-up';\n const copyButtonText = IrisGridCopyHandler.getCopyButtonText(buttonState);\n const statusMessageText =\n error ?? IrisGridCopyHandler.getStatusMessageText(copyState, rowCount);\n const isButtonContainerVisible =\n copyState !== IrisGridCopyHandler.COPY_STATES.DONE;\n const isFetching =\n buttonState === IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS;\n const isDone = copyState === IrisGridCopyHandler.COPY_STATES.DONE;\n\n return (\n <IrisGridBottomBar\n animation={animation}\n isShown={isShown}\n className={classNames('iris-grid-copy-handler', {\n 'copy-done': isDone,\n })}\n onClick={this.handleBackgroundClick}\n onEntering={onEntering}\n onEntered={onEntered}\n onExiting={onExiting}\n onExited={onExited}\n >\n <div className=\"status-message\">\n <span>{statusMessageText}</span>\n </div>\n <CSSTransition\n in={isButtonContainerVisible}\n timeout={ThemeExport.transitionMs}\n classNames=\"fade\"\n mountOnEnter\n unmountOnExit\n >\n <div className=\"buttons-container\">\n <button\n type=\"button\"\n className=\"btn btn-outline-secondary btn-cancel\"\n onClick={this.handleCancelClick}\n >\n Cancel\n </button>\n <button\n type=\"button\"\n className={classNames('btn', 'btn-copy', {\n 'btn-primary': !isFetching,\n 'btn-secondary': isFetching,\n 'btn-spinner': isFetching,\n })}\n onClick={this.handleCopyClick}\n disabled={isFetching}\n >\n {isFetching && <LoadingSpinner />}\n {copyButtonText}\n </button>\n </div>\n </CSSTransition>\n </IrisGridBottomBar>\n );\n }\n}\n\nIrisGridCopyHandler.propTypes = {\n model: PropTypes.instanceOf(IrisGridModel).isRequired,\n copyOperation: PropTypes.shape({\n // ranges are expected to be bounded ranges\n ranges: PropTypes.arrayOf(PropTypes.instanceOf(GridRange)).isRequired,\n movedColumns: PropTypes.arrayOf(\n PropTypes.shape({ to: PropTypes.number, from: PropTypes.number })\n ).isRequired,\n userColumnWidths: PropTypes.instanceOf(Map).isRequired,\n formatValues: PropTypes.bool,\n includeHeaders: PropTypes.bool,\n error: PropTypes.string,\n }),\n onEntering: PropTypes.func,\n onEntered: PropTypes.func,\n onExiting: PropTypes.func,\n onExited: PropTypes.func,\n};\n\nIrisGridCopyHandler.defaultProps = {\n copyOperation: null,\n onEntering: () => {},\n onEntered: () => {},\n onExiting: () => {},\n onExited: () => {},\n};\n\nexport default IrisGridCopyHandler;\n"],"file":"IrisGridCopyHandler.js"}
|
|
1
|
+
{"version":3,"sources":["../src/IrisGridCopyHandler.tsx"],"names":["React","Component","classNames","CSSTransition","ContextActionUtils","LoadingSpinner","ThemeExport","GridRange","GridUtils","CanceledPromiseError","PromiseUtils","Log","IrisGridUtils","IrisGridBottomBar","log","module","IrisGridCopyHandler","getStatusMessageText","copyState","rowCount","COPY_STATES","CONFIRMATION_REQUIRED","toLocaleString","CLICK_REQUIRED","FETCH_ERROR","FETCH_IN_PROGRESS","DONE","getCopyButtonText","buttonState","BUTTON_STATES","CLICK_TO_COPY","RETRY","constructor","props","handleBackgroundClick","bind","handleCancelClick","handleCopyClick","handleHideTimeout","state","error","undefined","IDLE","COPY","isShown","componentDidMount","copyOperation","startCopy","componentDidUpdate","prevProps","componentWillUnmount","stopCopy","debug2","setState","ranges","debug","startHideTimer","NO_PROMPT_THRESHOLD","startFetch","textData","stopFetch","stopHideTimer","copyText","text","copyToClipboard","then","model","includeHeaders","userColumnWidths","movedColumns","formatValues","hiddenColumns","getHiddenColumns","modelRanges","getModelRanges","length","subtractRanges","map","makeColumn","subtractRangesFromRanges","formatValue","value","column","displayString","type","name","fetchPromise","makeCancelable","textSnapshot","catch","cancel","hideTimer","setTimeout","HIDE_TIMEOUT","clearTimeout","render","onEntering","onEntered","onExiting","onExited","animation","copyButtonText","statusMessageText","isButtonContainerVisible","isFetching","isDone","transitionMs"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport {\n ContextActionUtils,\n LoadingSpinner,\n ThemeExport,\n} from '@deephaven/components';\nimport {\n GridRange,\n GridUtils,\n ModelSizeMap,\n MoveOperation,\n} from '@deephaven/grid';\nimport {\n CancelablePromise,\n CanceledPromiseError,\n PromiseUtils,\n} from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport { Column } from '@deephaven/jsapi-shim';\nimport IrisGridUtils from './IrisGridUtils';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport './IrisGridCopyHandler.scss';\nimport IrisGridModel from './IrisGridModel';\n\nconst log = Log.module('IrisGridCopyHandler');\n\ntype Values<T> = T[keyof T];\n\ntype ButtonStateType = Values<typeof IrisGridCopyHandler.BUTTON_STATES>;\n\nexport type CopyOperation = {\n ranges: GridRange[];\n includeHeaders: boolean;\n formatValues?: boolean;\n movedColumns: MoveOperation[];\n userColumnWidths: ModelSizeMap;\n error?: string;\n};\n\ninterface IrisGridCopyHandlerProps {\n model: IrisGridModel;\n copyOperation: CopyOperation;\n onEntering: () => void;\n onEntered: () => void;\n onExiting: () => void;\n onExited: () => void;\n}\n\ninterface IrisGridCopyHandlerState {\n error?: string;\n copyState: string;\n buttonState: string;\n isShown: boolean;\n rowCount: number;\n}\n/**\n * Component for handling copying of data from the Iris Grid.\n * - Prompts if necessary (large amount of rows copied)\n * - Tries to async copy, falls back to showing a \"Click to Copy\" button if that fails\n */\nclass IrisGridCopyHandler extends Component<\n IrisGridCopyHandlerProps,\n IrisGridCopyHandlerState\n> {\n static NO_PROMPT_THRESHOLD = 10000;\n\n static HIDE_TIMEOUT = 3000;\n\n /**\n * Different states for the current copy operation\n */\n static COPY_STATES = {\n // No copy operation in progress\n IDLE: 'IDLE',\n\n // Large copy operation, confirmation required\n CONFIRMATION_REQUIRED: 'CONFIRMATION_REQUIRED',\n\n // Fetch is currently in progress\n FETCH_IN_PROGRESS: 'FETCH_IN_PROGRESS',\n\n // There was an error fetching the data\n FETCH_ERROR: 'FETCH_ERROR',\n\n // Click is required to copy\n CLICK_REQUIRED: 'CLICK_REQUIRED',\n\n // The copy operation is completed and successfully copied to the clipboard\n DONE: 'DONE',\n };\n\n static BUTTON_STATES = {\n COPY: 'COPY',\n FETCH_IN_PROGRESS: 'FETCH_IN_PROGRESS',\n CLICK_TO_COPY: 'CLICK_TO_COPY',\n RETRY: 'RETRY',\n };\n\n static defaultProps = {\n copyOperation: null,\n onEntering: (): void => undefined,\n onEntered: (): void => undefined,\n onExiting: (): void => undefined,\n onExited: (): void => undefined,\n };\n\n static getStatusMessageText(copyState: string, rowCount: number): string {\n switch (copyState) {\n case IrisGridCopyHandler.COPY_STATES.CONFIRMATION_REQUIRED:\n return `Are you sure you want to copy ${rowCount.toLocaleString()} rows to your clipboard?`;\n case IrisGridCopyHandler.COPY_STATES.CLICK_REQUIRED:\n return `Fetched ${rowCount.toLocaleString()} rows!`;\n case IrisGridCopyHandler.COPY_STATES.FETCH_ERROR:\n return 'Unable to copy data.';\n case IrisGridCopyHandler.COPY_STATES.FETCH_IN_PROGRESS:\n return `Fetching ${rowCount.toLocaleString()} rows for clipboard...`;\n case IrisGridCopyHandler.COPY_STATES.DONE:\n return 'Copied to Clipboard!';\n default:\n return '';\n }\n }\n\n static getCopyButtonText(buttonState: ButtonStateType): string {\n switch (buttonState) {\n case IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS:\n return 'Fetching';\n case IrisGridCopyHandler.BUTTON_STATES.CLICK_TO_COPY:\n return 'Click to Copy';\n case IrisGridCopyHandler.BUTTON_STATES.RETRY:\n return 'Retry';\n default:\n return 'Copy';\n }\n }\n\n constructor(props: IrisGridCopyHandlerProps) {\n super(props);\n\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.handleCancelClick = this.handleCancelClick.bind(this);\n this.handleCopyClick = this.handleCopyClick.bind(this);\n this.handleHideTimeout = this.handleHideTimeout.bind(this);\n\n this.state = {\n error: undefined,\n copyState: IrisGridCopyHandler.COPY_STATES.IDLE,\n buttonState: IrisGridCopyHandler.BUTTON_STATES.COPY,\n isShown: false,\n rowCount: 0,\n };\n }\n\n componentDidMount(): void {\n const { copyOperation } = this.props;\n if (copyOperation != null) {\n this.startCopy();\n }\n }\n\n componentDidUpdate(prevProps: IrisGridCopyHandlerProps): void {\n const { copyOperation } = this.props;\n if (prevProps.copyOperation !== copyOperation) {\n this.startCopy();\n }\n }\n\n componentWillUnmount(): void {\n this.stopCopy();\n }\n\n textData?: string;\n\n hideTimer?: ReturnType<typeof setTimeout>;\n\n fetchPromise?: CancelablePromise<string>;\n\n startCopy(): void {\n log.debug2('startCopy');\n\n this.stopCopy();\n\n const { copyOperation } = this.props;\n if (copyOperation == null) {\n log.debug2('No copy operation set, cancelling out');\n this.setState({ isShown: false });\n return;\n }\n\n const { ranges, error } = copyOperation;\n if (error != null) {\n log.debug('Showing copy error', error);\n this.setState({\n isShown: true,\n copyState: IrisGridCopyHandler.COPY_STATES.DONE,\n error,\n });\n this.startHideTimer();\n return;\n }\n\n const rowCount = GridRange.rowCount(ranges);\n\n this.setState({ rowCount, isShown: true, error: undefined });\n\n if (rowCount > IrisGridCopyHandler.NO_PROMPT_THRESHOLD) {\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.COPY,\n copyState: IrisGridCopyHandler.COPY_STATES.CONFIRMATION_REQUIRED,\n });\n } else {\n this.startFetch();\n }\n }\n\n stopCopy(): void {\n this.textData = undefined;\n this.stopFetch();\n this.stopHideTimer();\n }\n\n handleBackgroundClick(): void {\n log.debug2('handleBackgroundClick');\n\n const { copyState } = this.state;\n if (copyState === IrisGridCopyHandler.COPY_STATES.DONE) {\n this.setState({ isShown: false });\n }\n }\n\n handleCancelClick(): void {\n log.debug2('handleCancelClick');\n\n this.stopFetch();\n this.setState({ isShown: false });\n }\n\n handleCopyClick(): void {\n log.debug2('handleCopyClick');\n\n if (this.textData != null) {\n this.copyText(this.textData);\n } else {\n this.startFetch();\n }\n }\n\n handleHideTimeout(): void {\n log.debug2('handleHideTimeout');\n\n this.stopHideTimer();\n\n this.setState({ isShown: false });\n }\n\n copyText(text: string): void {\n log.debug2('copyText', text);\n\n this.textData = text;\n\n ContextActionUtils.copyToClipboard(text).then(\n () => {\n this.setState({ copyState: IrisGridCopyHandler.COPY_STATES.DONE });\n this.startHideTimer();\n },\n error => {\n log.error('copyText error', error);\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.CLICK_TO_COPY,\n copyState: IrisGridCopyHandler.COPY_STATES.CLICK_REQUIRED,\n });\n }\n );\n }\n\n startFetch(): void {\n this.stopFetch();\n\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS,\n copyState: IrisGridCopyHandler.COPY_STATES.FETCH_IN_PROGRESS,\n });\n\n const { model, copyOperation } = this.props;\n const {\n ranges,\n includeHeaders,\n userColumnWidths,\n movedColumns,\n formatValues,\n } = copyOperation;\n log.debug('startFetch', ranges);\n\n const hiddenColumns = IrisGridUtils.getHiddenColumns(userColumnWidths);\n let modelRanges = GridUtils.getModelRanges(ranges, movedColumns);\n if (hiddenColumns.length > 0) {\n const subtractRanges = hiddenColumns.map(GridRange.makeColumn);\n modelRanges = GridRange.subtractRangesFromRanges(\n modelRanges,\n subtractRanges\n );\n }\n\n // Remove the hidden columns from the snapshot\n const formatValue = formatValues\n ? (value: unknown, column: Column) =>\n model.displayString(value, column.type, column.name)\n : (value: unknown) => `${value}`;\n\n this.fetchPromise = PromiseUtils.makeCancelable(\n model.textSnapshot(modelRanges, includeHeaders, formatValue)\n );\n this.fetchPromise\n .then((text: string) => {\n this.fetchPromise = undefined;\n this.copyText(text);\n })\n .catch((error: unknown) => {\n if (error instanceof CanceledPromiseError) {\n log.debug('User cancelled copy.');\n } else {\n log.error('Error fetching contents', error);\n this.fetchPromise = undefined;\n this.setState({\n buttonState: IrisGridCopyHandler.BUTTON_STATES.RETRY,\n copyState: IrisGridCopyHandler.COPY_STATES.FETCH_ERROR,\n });\n }\n });\n }\n\n stopFetch(): void {\n if (this.fetchPromise) {\n log.debug2('stopFetch');\n this.fetchPromise.cancel();\n this.fetchPromise = undefined;\n }\n }\n\n startHideTimer(): void {\n this.stopHideTimer();\n\n this.hideTimer = setTimeout(\n this.handleHideTimeout,\n IrisGridCopyHandler.HIDE_TIMEOUT\n );\n }\n\n stopHideTimer(): void {\n if (this.hideTimer != null) {\n clearTimeout(this.hideTimer);\n this.hideTimer = undefined;\n }\n }\n\n render(): JSX.Element {\n const { onEntering, onEntered, onExiting, onExited } = this.props;\n const { buttonState, copyState, isShown, rowCount, error } = this.state;\n\n const animation =\n copyState === IrisGridCopyHandler.COPY_STATES.DONE\n ? 'fade'\n : 'copy-slide-up';\n const copyButtonText = IrisGridCopyHandler.getCopyButtonText(buttonState);\n const statusMessageText =\n error ?? IrisGridCopyHandler.getStatusMessageText(copyState, rowCount);\n const isButtonContainerVisible =\n copyState !== IrisGridCopyHandler.COPY_STATES.DONE;\n const isFetching =\n buttonState === IrisGridCopyHandler.BUTTON_STATES.FETCH_IN_PROGRESS;\n const isDone = copyState === IrisGridCopyHandler.COPY_STATES.DONE;\n\n return (\n <IrisGridBottomBar\n animation={animation}\n isShown={isShown}\n className={classNames('iris-grid-copy-handler', {\n 'copy-done': isDone,\n })}\n onClick={this.handleBackgroundClick}\n onEntering={onEntering}\n onEntered={onEntered}\n onExiting={onExiting}\n onExited={onExited}\n >\n <div className=\"status-message\">\n <span>{statusMessageText}</span>\n </div>\n <CSSTransition\n in={isButtonContainerVisible}\n timeout={ThemeExport.transitionMs}\n classNames=\"fade\"\n mountOnEnter\n unmountOnExit\n >\n <div className=\"buttons-container\">\n <button\n type=\"button\"\n className=\"btn btn-outline-secondary btn-cancel\"\n onClick={this.handleCancelClick}\n >\n Cancel\n </button>\n <button\n type=\"button\"\n className={classNames('btn', 'btn-copy', {\n 'btn-primary': !isFetching,\n 'btn-secondary': isFetching,\n 'btn-spinner': isFetching,\n })}\n onClick={this.handleCopyClick}\n disabled={isFetching}\n >\n {isFetching && <LoadingSpinner />}\n {copyButtonText}\n </button>\n </div>\n </CSSTransition>\n </IrisGridBottomBar>\n );\n }\n}\n\nexport default IrisGridCopyHandler;\n"],"file":"IrisGridCopyHandler.js"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { GridMetricCalculator } from '@deephaven/grid';
|
|
2
|
-
import type { VisibleIndex, GridMetricState
|
|
1
|
+
import { GridMetricCalculator, ModelSizeMap } from '@deephaven/grid';
|
|
2
|
+
import type { VisibleIndex, GridMetricState } from '@deephaven/grid';
|
|
3
3
|
import type { FilterCondition, Sort } from '@deephaven/jsapi-shim';
|
|
4
4
|
import type IrisGridModel from './IrisGridModel';
|
|
5
|
-
import
|
|
5
|
+
import { IrisGridThemeType } from './IrisGridTheme';
|
|
6
6
|
export interface IrisGridMetricState extends GridMetricState {
|
|
7
7
|
model: IrisGridModel;
|
|
8
|
-
theme:
|
|
8
|
+
theme: IrisGridThemeType;
|
|
9
9
|
isFilterBarShown: boolean;
|
|
10
10
|
advancedFilters: Map<string, {
|
|
11
11
|
options: unknown;
|
|
@@ -25,6 +25,7 @@ export interface IrisGridMetricState extends GridMetricState {
|
|
|
25
25
|
declare class IrisGridMetricCalculator extends GridMetricCalculator {
|
|
26
26
|
getVisibleColumnWidth(column: VisibleIndex, state: IrisGridMetricState, firstColumn?: VisibleIndex, treePaddingX?: number): number;
|
|
27
27
|
getGridY(state: IrisGridMetricState): number;
|
|
28
|
+
getUserColumnWidths(): ModelSizeMap;
|
|
28
29
|
}
|
|
29
30
|
export default IrisGridMetricCalculator;
|
|
30
31
|
//# sourceMappingURL=IrisGridMetricCalculator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridMetricCalculator.d.ts","sourceRoot":"","sources":["../src/IrisGridMetricCalculator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"IrisGridMetricCalculator.d.ts","sourceRoot":"","sources":["../src/IrisGridMetricCalculator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC1D,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,iBAAiB,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,GAAG,CAClB,MAAM,EACN;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAA;KAAE,CACrD,CAAC;IACF,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAC5E,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAID;;;GAGG;AACH,cAAM,wBAAyB,SAAQ,oBAAoB;IACzD,qBAAqB,CACnB,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,mBAAmB,EAC1B,WAAW,GAAE,YAAyC,EACtD,YAAY,SAAoC,GAC/C,MAAM;IAsBT,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM;IA6B5C,mBAAmB,IAAI,YAAY;CAGpC;AAED,eAAe,wBAAwB,CAAC"}
|
|
@@ -48,13 +48,17 @@ class IrisGridMetricCalculator extends GridMetricCalculator {
|
|
|
48
48
|
gridY += theme.filterBarCollapsedHeight;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
if (reverseType !== TableUtils.REVERSE_TYPE.NONE && sorts.length > 0) {
|
|
51
|
+
if (reverseType !== TableUtils.REVERSE_TYPE.NONE && sorts && sorts.length > 0) {
|
|
52
52
|
gridY += theme.reverseHeaderBarHeight;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
return gridY;
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
+
getUserColumnWidths() {
|
|
59
|
+
return this.userColumnWidths;
|
|
60
|
+
}
|
|
61
|
+
|
|
58
62
|
}
|
|
59
63
|
|
|
60
64
|
export default IrisGridMetricCalculator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/IrisGridMetricCalculator.ts"],"names":["GridMetricCalculator","TableUtils","IrisGridMetricCalculator","getVisibleColumnWidth","column","state","firstColumn","getFirstColumn","treePaddingX","calculateTreePaddingX","model","hiddenColumns","layoutHints","modelColumn","getModelColumn","columnWidth","hasUserSetWidth","userColumnWidths","has","includes","columns","name","getGridY","gridY","isFilterBarShown","theme","advancedFilters","quickFilters","sorts","reverseType","filterBarHeight","size","filterBarCollapsedHeight","REVERSE_TYPE","NONE","length","reverseHeaderBarHeight"],"mappings":"AAAA,SAASA,oBAAT,
|
|
1
|
+
{"version":3,"sources":["../src/IrisGridMetricCalculator.ts"],"names":["GridMetricCalculator","TableUtils","IrisGridMetricCalculator","getVisibleColumnWidth","column","state","firstColumn","getFirstColumn","treePaddingX","calculateTreePaddingX","model","hiddenColumns","layoutHints","modelColumn","getModelColumn","columnWidth","hasUserSetWidth","userColumnWidths","has","includes","columns","name","getGridY","gridY","isFilterBarShown","theme","advancedFilters","quickFilters","sorts","reverseType","filterBarHeight","size","filterBarCollapsedHeight","REVERSE_TYPE","NONE","length","reverseHeaderBarHeight","getUserColumnWidths"],"mappings":"AAAA,SAASA,oBAAT,QAAmD,iBAAnD;AAGA,SAASC,UAAT,QAA2B,wBAA3B;;AAiBA;;AACA;;AACA;AACA;AACA;AACA;AACA,MAAMC,wBAAN,SAAuCF,oBAAvC,CAA4D;AAC1DG,EAAAA,qBAAqB,CACnBC,MADmB,EAEnBC,KAFmB,EAKX;AAAA;;AAAA,QAFRC,WAEQ,uEAFoB,KAAKC,cAAL,CAAoBF,KAApB,CAEpB;AAAA,QADRG,YACQ,uEADO,KAAKC,qBAAL,CAA2BJ,KAA3B,CACP;AACR,QAAM;AAAEK,MAAAA;AAAF,QAAYL,KAAlB;AACA,QAAMM,aAAa,kDAAGD,KAAK,CAACE,WAAT,uDAAG,mBAAmBD,aAAtB,yEAAuC,EAA1D;AACA,QAAME,WAAW,GAAG,KAAKC,cAAL,CAAoBV,MAApB,EAA4BC,KAA5B,CAApB,CAHQ,CAKR;;AACA,QAAMU,WAAW,GAAG,MAAMZ,qBAAN,CAClBC,MADkB,EAElBC,KAFkB,EAGlBC,WAHkB,EAIlBE,YAJkB,CAApB;AAMA,QAAMQ,eAAe,GAAG,KAAKC,gBAAL,CAAsBC,GAAtB,CAA0BL,WAA1B,CAAxB;;AACA,QACE,CAACG,eAAD,IACAL,aAAa,CAACQ,QAAd,CAAuBT,KAAK,CAACU,OAAN,CAAcP,WAAd,EAA2BQ,IAAlD,CAFF,EAGE;AACA,aAAO,CAAP;AACD;;AACD,WAAON,WAAP;AACD;;AAEDO,EAAAA,QAAQ,CAACjB,KAAD,EAAqC;AAC3C,QAAIkB,KAAK,GAAG,MAAMD,QAAN,CAAejB,KAAf,CAAZ;AACA,QAAM;AACJmB,MAAAA,gBADI;AAEJC,MAAAA,KAFI;AAGJC,MAAAA,eAHI;AAIJC,MAAAA,YAJI;AAKJC,MAAAA,KALI;AAMJC,MAAAA;AANI,QAOFxB,KAPJ;;AAQA,QAAImB,gBAAJ,EAAsB;AACpBD,MAAAA,KAAK,IAAIE,KAAK,CAACK,eAAf;AACD,KAFD,MAEO,IACJH,YAAY,IAAIA,YAAY,CAACI,IAAb,GAAoB,CAArC,IACCL,eAAe,IAAIA,eAAe,CAACK,IAAhB,GAAuB,CAFtC,EAGL;AACAR,MAAAA,KAAK,IAAIE,KAAK,CAACO,wBAAf;AACD;;AACD,QACEH,WAAW,KAAK5B,UAAU,CAACgC,YAAX,CAAwBC,IAAxC,IACAN,KADA,IAEAA,KAAK,CAACO,MAAN,GAAe,CAHjB,EAIE;AACAZ,MAAAA,KAAK,IAAIE,KAAK,CAACW,sBAAf;AACD;;AAED,WAAOb,KAAP;AACD;;AAEDc,EAAAA,mBAAmB,GAAiB;AAClC,WAAO,KAAKpB,gBAAZ;AACD;;AA3DyD;;AA8D5D,eAAef,wBAAf","sourcesContent":["import { GridMetricCalculator, ModelSizeMap } from '@deephaven/grid';\nimport type { VisibleIndex, GridMetricState } from '@deephaven/grid';\nimport type { FilterCondition, Sort } from '@deephaven/jsapi-shim';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport type IrisGridModel from './IrisGridModel';\nimport { IrisGridThemeType } from './IrisGridTheme';\n\nexport interface IrisGridMetricState extends GridMetricState {\n model: IrisGridModel;\n theme: IrisGridThemeType;\n isFilterBarShown: boolean;\n advancedFilters: Map<\n string,\n { options: unknown; filter: FilterCondition | null }\n >;\n quickFilters: Map<string, { text: string; filter: FilterCondition | null }>;\n sorts: Sort[];\n reverseType: string;\n}\n\n/* eslint class-methods-use-this: \"off\" */\n/* eslint react/destructuring-assignment: \"off\" */\n/**\n * Class to calculate all the metrics for a grid.\n * Call getMetrics() with the state to get metrics\n */\nclass IrisGridMetricCalculator extends GridMetricCalculator {\n getVisibleColumnWidth(\n column: VisibleIndex,\n state: IrisGridMetricState,\n firstColumn: VisibleIndex = this.getFirstColumn(state),\n treePaddingX = this.calculateTreePaddingX(state)\n ): number {\n const { model } = state;\n const hiddenColumns = model.layoutHints?.hiddenColumns ?? [];\n const modelColumn = this.getModelColumn(column, state);\n\n // Need to make sure super is called so column width is always re-calculated correctly\n const columnWidth = super.getVisibleColumnWidth(\n column,\n state,\n firstColumn,\n treePaddingX\n );\n const hasUserSetWidth = this.userColumnWidths.has(modelColumn);\n if (\n !hasUserSetWidth &&\n hiddenColumns.includes(model.columns[modelColumn].name)\n ) {\n return 0;\n }\n return columnWidth;\n }\n\n getGridY(state: IrisGridMetricState): number {\n let gridY = super.getGridY(state);\n const {\n isFilterBarShown,\n theme,\n advancedFilters,\n quickFilters,\n sorts,\n reverseType,\n } = state;\n if (isFilterBarShown) {\n gridY += theme.filterBarHeight;\n } else if (\n (quickFilters && quickFilters.size > 0) ||\n (advancedFilters && advancedFilters.size > 0)\n ) {\n gridY += theme.filterBarCollapsedHeight;\n }\n if (\n reverseType !== TableUtils.REVERSE_TYPE.NONE &&\n sorts &&\n sorts.length > 0\n ) {\n gridY += theme.reverseHeaderBarHeight;\n }\n\n return gridY;\n }\n\n getUserColumnWidths(): ModelSizeMap {\n return this.userColumnWidths;\n }\n}\n\nexport default IrisGridMetricCalculator;\n"],"file":"IrisGridMetricCalculator.js"}
|