@deephaven/iris-grid 0.13.3-beta.2 → 0.13.5
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 +63 -69
- package/dist/AdvancedFilterCreator.d.ts.map +1 -1
- package/dist/AdvancedFilterCreator.js +73 -79
- 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 +36 -32
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts +52 -47
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js +39 -24
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/ColumnStatistics.d.ts +22 -34
- package/dist/ColumnStatistics.d.ts.map +1 -1
- package/dist/ColumnStatistics.js +12 -8
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/CrossColumnSearch.d.ts +24 -26
- package/dist/CrossColumnSearch.d.ts.map +1 -1
- package/dist/CrossColumnSearch.js +13 -9
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/FilterInputField.d.ts +51 -48
- package/dist/FilterInputField.d.ts.map +1 -1
- package/dist/FilterInputField.js +27 -30
- package/dist/FilterInputField.js.map +1 -1
- package/dist/IrisGrid.d.ts +453 -409
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +449 -514
- 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.map +1 -1
- package/dist/IrisGridCopyHandler.d.ts +46 -52
- package/dist/IrisGridCopyHandler.d.ts.map +1 -1
- package/dist/IrisGridCopyHandler.js +38 -22
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridMetricCalculator.d.ts +4 -5
- package/dist/IrisGridMetricCalculator.d.ts.map +1 -1
- package/dist/IrisGridMetricCalculator.js +1 -5
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridModel.d.ts +35 -37
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js +3 -19
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelFactory.d.ts +5 -7
- 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 +11 -13
- package/dist/IrisGridModelUpdater.d.ts.map +1 -1
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridPartitionSelector.d.ts +39 -38
- package/dist/IrisGridPartitionSelector.d.ts.map +1 -1
- package/dist/IrisGridPartitionSelector.js +24 -18
- package/dist/IrisGridPartitionSelector.js.map +1 -1
- package/dist/IrisGridProxyModel.d.ts +32 -111
- package/dist/IrisGridProxyModel.d.ts.map +1 -1
- package/dist/IrisGridProxyModel.js +170 -212
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.d.ts +31 -59
- package/dist/IrisGridRenderer.d.ts.map +1 -1
- package/dist/IrisGridRenderer.js +46 -92
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts +147 -48
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +1381 -58
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTestUtils.d.ts +14 -18
- package/dist/IrisGridTestUtils.d.ts.map +1 -1
- package/dist/IrisGridTestUtils.js +1 -29
- package/dist/IrisGridTestUtils.js.map +1 -1
- package/dist/IrisGridTheme.d.ts +3 -35
- package/dist/IrisGridTheme.d.ts.map +1 -1
- package/dist/IrisGridTheme.js.map +1 -1
- package/dist/IrisGridTreeTableModel.d.ts +7 -26
- package/dist/IrisGridTreeTableModel.d.ts.map +1 -1
- package/dist/IrisGridTreeTableModel.js +14 -24
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.d.ts +162 -257
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +95 -132
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/MissingKeyError.d.ts +3 -5
- package/dist/MissingKeyError.d.ts.map +1 -1
- package/dist/MissingKeyError.js.map +1 -1
- package/dist/PartitionSelectorSearch.d.ts +40 -61
- package/dist/PartitionSelectorSearch.d.ts.map +1 -1
- package/dist/PartitionSelectorSearch.js +15 -25
- package/dist/PartitionSelectorSearch.js.map +1 -1
- package/dist/PendingDataBottomBar.d.ts +6 -3
- package/dist/PendingDataBottomBar.d.ts.map +1 -1
- package/dist/PendingDataBottomBar.js.map +1 -1
- package/dist/TableViewportUpdater.d.ts +55 -39
- package/dist/TableViewportUpdater.d.ts.map +1 -1
- package/dist/TableViewportUpdater.js +64 -42
- package/dist/TableViewportUpdater.js.map +1 -1
- package/dist/TreeTableViewportUpdater.d.ts +37 -29
- package/dist/TreeTableViewportUpdater.d.ts.map +1 -1
- package/dist/TreeTableViewportUpdater.js +50 -39
- package/dist/TreeTableViewportUpdater.js.map +1 -1
- package/dist/index.d.ts +0 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -9
- 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 +0 -2
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts +130 -41
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +317 -426
- 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 +4 -8
- package/dist/mousehandlers/PendingMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/PendingMouseHandler.js +5 -4
- package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
- package/dist/sidebar/ChartBuilder.d.ts +33 -48
- package/dist/sidebar/ChartBuilder.d.ts.map +1 -1
- package/dist/sidebar/ChartBuilder.js +27 -28
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.d.ts +41 -51
- package/dist/sidebar/CustomColumnBuilder.d.ts.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +18 -22
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.d.ts +36 -26
- package/dist/sidebar/CustomColumnInput.d.ts.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +20 -11
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/InputEditor.d.ts +35 -34
- package/dist/sidebar/InputEditor.d.ts.map +1 -1
- package/dist/sidebar/InputEditor.js +24 -43
- package/dist/sidebar/InputEditor.js.map +1 -1
- package/dist/sidebar/RollupRows.d.ts +52 -67
- package/dist/sidebar/RollupRows.d.ts.map +1 -1
- package/dist/sidebar/RollupRows.js +53 -51
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.d.ts +21 -27
- package/dist/sidebar/SelectDistinctBuilder.d.ts.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js +10 -6
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.d.ts +39 -42
- package/dist/sidebar/TableCsvExporter.d.ts.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +20 -12
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/TableSaver.d.ts +60 -59
- package/dist/sidebar/TableSaver.d.ts.map +1 -1
- package/dist/sidebar/TableSaver.js +68 -154
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts +45 -56
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.js +29 -34
- 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 +1 -2
- 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 +5 -6
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +0 -5
- 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 +16 -17
- package/dist/CommonTypes.d.ts +0 -58
- package/dist/CommonTypes.d.ts.map +0 -1
- package/dist/CommonTypes.js +0 -2
- package/dist/CommonTypes.js.map +0 -1
- package/dist/IrisGridTableModelTemplate.d.ts +0 -219
- package/dist/IrisGridTableModelTemplate.d.ts.map +0 -1
- package/dist/IrisGridTableModelTemplate.js +0 -1623
- package/dist/IrisGridTableModelTemplate.js.map +0 -1
|
@@ -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.ReactNode;
|
|
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;AAM3D,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,
|
|
1
|
+
{"version":3,"file":"IrisGridCellOverflowModal.d.ts","sourceRoot":"","sources":["../src/IrisGridCellOverflowModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAM3D,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,SAAS,CA0JlD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/IrisGridCellOverflowModal.tsx"],"names":["React","useEffect","useRef","useState","Editor","Modal","ModalBody","ModalHeader","Button","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":"AAAA,OAAOA,KAAP,IAAgBC,SAAhB,EAA2BC,MAA3B,EAAmCC,QAAnC,QAAmD,OAAnD;AACA,SAASC,MAAT,QAAuB,oBAAvB;AACA,SAASC,KAAT,EAAgBC,SAAhB,EAA2BC,WAA3B,QAA8C,YAA9C;AAEA,SAASC,MAAT,QAAuB,uBAAvB;AACA,SAASC,MAAT,EAAiBC,aAAjB,QAAsC,kBAAtC;;AASA,eAAe,SAASC,yBAAT,
|
|
1
|
+
{"version":3,"sources":["../src/IrisGridCellOverflowModal.tsx"],"names":["React","useEffect","useRef","useState","Editor","Modal","ModalBody","ModalHeader","Button","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 { Modal, ModalBody, ModalHeader } from 'reactstrap';\nimport * as monaco from 'monaco-editor';\nimport { Button } 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.ReactNode {\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 size=\"xl\"\n className=\"theme-bg-dark cell-overflow-modal\"\n >\n <ModalHeader tag=\"div\" 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,39 +1,10 @@
|
|
|
1
|
-
|
|
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
|
-
}
|
|
1
|
+
export default IrisGridCopyHandler;
|
|
31
2
|
/**
|
|
32
3
|
* Component for handling copying of data from the Iris Grid.
|
|
33
4
|
* - Prompts if necessary (large amount of rows copied)
|
|
34
5
|
* - Tries to async copy, falls back to showing a "Click to Copy" button if that fails
|
|
35
6
|
*/
|
|
36
|
-
declare class IrisGridCopyHandler extends Component<
|
|
7
|
+
declare class IrisGridCopyHandler extends React.Component<any, any, any> {
|
|
37
8
|
static NO_PROMPT_THRESHOLD: number;
|
|
38
9
|
static HIDE_TIMEOUT: number;
|
|
39
10
|
/**
|
|
@@ -53,34 +24,57 @@ declare class IrisGridCopyHandler extends Component<IrisGridCopyHandlerProps, Ir
|
|
|
53
24
|
CLICK_TO_COPY: string;
|
|
54
25
|
RETRY: string;
|
|
55
26
|
};
|
|
56
|
-
static
|
|
57
|
-
|
|
58
|
-
|
|
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;
|
|
27
|
+
static getStatusMessageText(copyState: any, rowCount: any): string;
|
|
28
|
+
static getCopyButtonText(buttonState: any): "Fetching" | "Click to Copy" | "Retry" | "Copy";
|
|
29
|
+
constructor(props: any);
|
|
74
30
|
handleBackgroundClick(): void;
|
|
75
31
|
handleCancelClick(): void;
|
|
76
32
|
handleCopyClick(): void;
|
|
77
33
|
handleHideTimeout(): void;
|
|
78
|
-
|
|
34
|
+
textData: any;
|
|
35
|
+
hideTimer: NodeJS.Timeout | null;
|
|
36
|
+
fetchPromise: import("@deephaven/utils").CancelablePromise<any> | null;
|
|
37
|
+
startCopy(): void;
|
|
38
|
+
stopCopy(): void;
|
|
39
|
+
copyText(text: any): void;
|
|
79
40
|
startFetch(): void;
|
|
80
41
|
stopFetch(): void;
|
|
81
42
|
startHideTimer(): void;
|
|
82
43
|
stopHideTimer(): void;
|
|
83
|
-
render(): JSX.Element;
|
|
84
44
|
}
|
|
85
|
-
|
|
45
|
+
declare namespace IrisGridCopyHandler {
|
|
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";
|
|
86
80
|
//# 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.jsx"],"names":[],"mappings":";AAmBA;;;;GAIG;AACH;IACE,mCAAmC;IAEnC,4BAA2B;IAE3B;;OAEG;IACH;;;;;;;MAkBE;IAEF;;;;;MAKE;IAEF,mEAeC;IAED,4FAWC;IAED,wBAmBC;IAgED,8BAOC;IAED,0BAKC;IAED,wBAQC;IAED,0BAMC;IA3GC,cAAoB;IACpB,iCAAqB;IACrB,uEAAwB;IA6B1B,kBAoCC;IAED,iBAIC;IAoCD,0BAkBC;IAED,mBAqDC;IAED,kBAMC;IAED,uBAOC;IAED,sBAKC;CAoEF;;;;;;;;;;;;;;;;;;;;;;;QAuBa,qCAAQ;;QACT,oCAAQ;;QACR,oCAAQ;;QACT,mCAAQ"}
|
|
@@ -2,21 +2,23 @@ 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';
|
|
5
6
|
import { CSSTransition } from 'react-transition-group';
|
|
6
7
|
import { ContextActionUtils, LoadingSpinner, ThemeExport } from '@deephaven/components';
|
|
7
8
|
import { GridRange, GridUtils } from '@deephaven/grid';
|
|
8
9
|
import { CanceledPromiseError, PromiseUtils } from '@deephaven/utils';
|
|
9
10
|
import Log from '@deephaven/log';
|
|
11
|
+
import IrisGridModel from "./IrisGridModel.js";
|
|
10
12
|
import IrisGridUtils from "./IrisGridUtils.js";
|
|
11
13
|
import IrisGridBottomBar from "./IrisGridBottomBar.js";
|
|
12
14
|
import "./IrisGridCopyHandler.css";
|
|
13
15
|
var log = Log.module('IrisGridCopyHandler');
|
|
14
|
-
|
|
15
16
|
/**
|
|
16
17
|
* Component for handling copying of data from the Iris Grid.
|
|
17
18
|
* - Prompts if necessary (large amount of rows copied)
|
|
18
19
|
* - Tries to async copy, falls back to showing a "Click to Copy" button if that fails
|
|
19
20
|
*/
|
|
21
|
+
|
|
20
22
|
class IrisGridCopyHandler extends Component {
|
|
21
23
|
/**
|
|
22
24
|
* Different states for the current copy operation
|
|
@@ -61,19 +63,15 @@ class IrisGridCopyHandler extends Component {
|
|
|
61
63
|
|
|
62
64
|
constructor(props) {
|
|
63
65
|
super(props);
|
|
64
|
-
|
|
65
|
-
_defineProperty(this, "textData", void 0);
|
|
66
|
-
|
|
67
|
-
_defineProperty(this, "hideTimer", void 0);
|
|
68
|
-
|
|
69
|
-
_defineProperty(this, "fetchPromise", void 0);
|
|
70
|
-
|
|
71
66
|
this.handleBackgroundClick = this.handleBackgroundClick.bind(this);
|
|
72
67
|
this.handleCancelClick = this.handleCancelClick.bind(this);
|
|
73
68
|
this.handleCopyClick = this.handleCopyClick.bind(this);
|
|
74
69
|
this.handleHideTimeout = this.handleHideTimeout.bind(this);
|
|
70
|
+
this.textData = null;
|
|
71
|
+
this.hideTimer = null;
|
|
72
|
+
this.fetchPromise = null;
|
|
75
73
|
this.state = {
|
|
76
|
-
error:
|
|
74
|
+
error: null,
|
|
77
75
|
copyState: IrisGridCopyHandler.COPY_STATES.IDLE,
|
|
78
76
|
buttonState: IrisGridCopyHandler.BUTTON_STATES.COPY,
|
|
79
77
|
isShown: false,
|
|
@@ -140,7 +138,7 @@ class IrisGridCopyHandler extends Component {
|
|
|
140
138
|
this.setState({
|
|
141
139
|
rowCount,
|
|
142
140
|
isShown: true,
|
|
143
|
-
error:
|
|
141
|
+
error: null
|
|
144
142
|
});
|
|
145
143
|
|
|
146
144
|
if (rowCount > IrisGridCopyHandler.NO_PROMPT_THRESHOLD) {
|
|
@@ -154,7 +152,7 @@ class IrisGridCopyHandler extends Component {
|
|
|
154
152
|
}
|
|
155
153
|
|
|
156
154
|
stopCopy() {
|
|
157
|
-
this.textData =
|
|
155
|
+
this.textData = null;
|
|
158
156
|
this.stopFetch();
|
|
159
157
|
this.stopHideTimer();
|
|
160
158
|
}
|
|
@@ -245,14 +243,14 @@ class IrisGridCopyHandler extends Component {
|
|
|
245
243
|
var formatValue = formatValues ? (value, column) => model.displayString(value, column.type, column.name) : value => "".concat(value);
|
|
246
244
|
this.fetchPromise = PromiseUtils.makeCancelable(model.textSnapshot(modelRanges, includeHeaders, formatValue));
|
|
247
245
|
this.fetchPromise.then(text => {
|
|
248
|
-
this.fetchPromise =
|
|
246
|
+
this.fetchPromise = null;
|
|
249
247
|
this.copyText(text);
|
|
250
248
|
}).catch(error => {
|
|
251
249
|
if (error instanceof CanceledPromiseError) {
|
|
252
250
|
log.debug('User cancelled copy.');
|
|
253
251
|
} else {
|
|
254
252
|
log.error('Error fetching contents', error);
|
|
255
|
-
this.fetchPromise =
|
|
253
|
+
this.fetchPromise = null;
|
|
256
254
|
this.setState({
|
|
257
255
|
buttonState: IrisGridCopyHandler.BUTTON_STATES.RETRY,
|
|
258
256
|
copyState: IrisGridCopyHandler.COPY_STATES.FETCH_ERROR
|
|
@@ -265,7 +263,7 @@ class IrisGridCopyHandler extends Component {
|
|
|
265
263
|
if (this.fetchPromise) {
|
|
266
264
|
log.debug2('stopFetch');
|
|
267
265
|
this.fetchPromise.cancel();
|
|
268
|
-
this.fetchPromise =
|
|
266
|
+
this.fetchPromise = null;
|
|
269
267
|
}
|
|
270
268
|
}
|
|
271
269
|
|
|
@@ -277,7 +275,7 @@ class IrisGridCopyHandler extends Component {
|
|
|
277
275
|
stopHideTimer() {
|
|
278
276
|
if (this.hideTimer != null) {
|
|
279
277
|
clearTimeout(this.hideTimer);
|
|
280
|
-
this.hideTimer =
|
|
278
|
+
this.hideTimer = null;
|
|
281
279
|
}
|
|
282
280
|
}
|
|
283
281
|
|
|
@@ -366,13 +364,31 @@ _defineProperty(IrisGridCopyHandler, "BUTTON_STATES", {
|
|
|
366
364
|
RETRY: 'RETRY'
|
|
367
365
|
});
|
|
368
366
|
|
|
369
|
-
|
|
367
|
+
IrisGridCopyHandler.propTypes = {
|
|
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 = {
|
|
370
387
|
copyOperation: null,
|
|
371
|
-
onEntering: () =>
|
|
372
|
-
onEntered: () =>
|
|
373
|
-
onExiting: () =>
|
|
374
|
-
onExited: () =>
|
|
375
|
-
}
|
|
376
|
-
|
|
388
|
+
onEntering: () => {},
|
|
389
|
+
onEntered: () => {},
|
|
390
|
+
onExiting: () => {},
|
|
391
|
+
onExited: () => {}
|
|
392
|
+
};
|
|
377
393
|
export default IrisGridCopyHandler;
|
|
378
394
|
//# sourceMappingURL=IrisGridCopyHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
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
|
+
{"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,11 +1,11 @@
|
|
|
1
|
-
import { GridMetricCalculator
|
|
2
|
-
import type { VisibleIndex, GridMetricState } from '@deephaven/grid';
|
|
1
|
+
import { GridMetricCalculator } from '@deephaven/grid';
|
|
2
|
+
import type { VisibleIndex, GridMetricState, GridTheme } from '@deephaven/grid';
|
|
3
3
|
import type { FilterCondition, Sort } from '@deephaven/jsapi-shim';
|
|
4
4
|
import type IrisGridModel from './IrisGridModel';
|
|
5
|
-
import
|
|
5
|
+
import type IrisGridTheme from './IrisGridTheme';
|
|
6
6
|
export interface IrisGridMetricState extends GridMetricState {
|
|
7
7
|
model: IrisGridModel;
|
|
8
|
-
theme:
|
|
8
|
+
theme: typeof IrisGridTheme & typeof GridTheme;
|
|
9
9
|
isFilterBarShown: boolean;
|
|
10
10
|
advancedFilters: Map<string, {
|
|
11
11
|
options: unknown;
|
|
@@ -25,7 +25,6 @@ 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;
|
|
29
28
|
}
|
|
30
29
|
export default IrisGridMetricCalculator;
|
|
31
30
|
//# 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,
|
|
1
|
+
{"version":3,"file":"IrisGridMetricCalculator.d.ts","sourceRoot":"","sources":["../src/IrisGridMetricCalculator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AAEjD,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC1D,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,OAAO,aAAa,GAAG,OAAO,SAAS,CAAC;IAC/C,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;CAwB7C;AAED,eAAe,wBAAwB,CAAC"}
|
|
@@ -48,17 +48,13 @@ class IrisGridMetricCalculator extends GridMetricCalculator {
|
|
|
48
48
|
gridY += theme.filterBarCollapsedHeight;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
if (reverseType !== TableUtils.REVERSE_TYPE.NONE && sorts
|
|
51
|
+
if (reverseType !== TableUtils.REVERSE_TYPE.NONE && 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
|
-
|
|
62
58
|
}
|
|
63
59
|
|
|
64
60
|
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"
|
|
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,QAAqC,iBAArC;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,QAAIH,WAAW,KAAK5B,UAAU,CAACgC,YAAX,CAAwBC,IAAxC,IAAgDN,KAAK,CAACO,MAAN,GAAe,CAAnE,EAAsE;AACpEZ,MAAAA,KAAK,IAAIE,KAAK,CAACW,sBAAf;AACD;;AAED,WAAOb,KAAP;AACD;;AAnDyD;;AAsD5D,eAAerB,wBAAf","sourcesContent":["import { GridMetricCalculator } from '@deephaven/grid';\nimport type { VisibleIndex, GridMetricState, GridTheme } from '@deephaven/grid';\nimport type { FilterCondition, Sort } from '@deephaven/jsapi-shim';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport type IrisGridModel from './IrisGridModel';\nimport type IrisGridTheme from './IrisGridTheme';\n\nexport interface IrisGridMetricState extends GridMetricState {\n model: IrisGridModel;\n theme: typeof IrisGridTheme & typeof GridTheme;\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 (reverseType !== TableUtils.REVERSE_TYPE.NONE && sorts.length > 0) {\n gridY += theme.reverseHeaderBarHeight;\n }\n\n return gridY;\n }\n}\n\nexport default IrisGridMetricCalculator;\n"],"file":"IrisGridMetricCalculator.js"}
|