@deephaven/iris-grid 0.22.3-deep-bot-test.14 → 0.23.0
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 +1 -1
- package/dist/AdvancedFilterCreator.d.ts.map +1 -1
- package/dist/AdvancedFilterCreator.js +7 -65
- package/dist/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.d.ts +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.js +0 -23
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js +0 -52
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts +1 -5
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js +2 -42
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/ColumnHeaderGroup.js +0 -11
- package/dist/ColumnHeaderGroup.js.map +1 -1
- package/dist/ColumnStatistics.js +1 -20
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/CommonTypes.d.ts +14 -14
- package/dist/CommonTypes.d.ts.map +1 -1
- package/dist/CrossColumnSearch.js +2 -23
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/FilterInputField.js +2 -36
- package/dist/FilterInputField.js.map +1 -1
- package/dist/GotoRow.d.ts +1 -1
- package/dist/GotoRow.d.ts.map +1 -1
- package/dist/GotoRow.js +2 -7
- package/dist/GotoRow.js.map +1 -1
- package/dist/IrisGrid.d.ts +45 -39
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +77 -519
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridBottomBar.d.ts +2 -2
- package/dist/IrisGridBottomBar.d.ts.map +1 -1
- package/dist/IrisGridBottomBar.js +2 -2
- package/dist/IrisGridBottomBar.js.map +1 -1
- package/dist/IrisGridCellOverflowModal.js +6 -21
- package/dist/IrisGridCellOverflowModal.js.map +1 -1
- package/dist/IrisGridCopyHandler.d.ts +3 -3
- package/dist/IrisGridCopyHandler.d.ts.map +1 -1
- package/dist/IrisGridCopyHandler.js +3 -50
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridMetricCalculator.js +2 -12
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridModel.d.ts +3 -3
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js +32 -58
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelFactory.js +0 -7
- package/dist/IrisGridModelFactory.js.map +1 -1
- package/dist/IrisGridModelUpdater.js +0 -4
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridPartitionSelector.js +0 -23
- package/dist/IrisGridPartitionSelector.js.map +1 -1
- package/dist/IrisGridProxyModel.js +9 -153
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.d.ts +1 -1
- package/dist/IrisGridRenderer.d.ts.map +1 -1
- package/dist/IrisGridRenderer.js +41 -183
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridShortcuts.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts +3 -3
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +10 -90
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.d.ts +3 -3
- package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
- package/dist/IrisGridTableModelTemplate.js +70 -461
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/IrisGridTestUtils.js +0 -23
- package/dist/IrisGridTestUtils.js.map +1 -1
- package/dist/IrisGridTheme.d.ts +1 -1
- package/dist/IrisGridTheme.d.ts.map +1 -1
- package/dist/IrisGridTheme.js.map +1 -1
- package/dist/IrisGridTreeTableModel.js +3 -42
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.d.ts +13 -7
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +98 -196
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/MissingKeyError.js +0 -7
- package/dist/MissingKeyError.js.map +1 -1
- package/dist/PartitionSelectorSearch.d.ts +2 -2
- package/dist/PartitionSelectorSearch.js +2 -48
- package/dist/PartitionSelectorSearch.js.map +1 -1
- package/dist/PendingDataBottomBar.d.ts +2 -2
- package/dist/PendingDataBottomBar.d.ts.map +1 -1
- package/dist/PendingDataBottomBar.js +2 -7
- package/dist/PendingDataBottomBar.js.map +1 -1
- package/dist/TableViewportUpdater.d.ts +2 -2
- package/dist/TableViewportUpdater.d.ts.map +1 -1
- package/dist/TableViewportUpdater.js +3 -29
- package/dist/TableViewportUpdater.js.map +1 -1
- package/dist/ToastBottomBar.d.ts +2 -2
- package/dist/ToastBottomBar.d.ts.map +1 -1
- package/dist/ToastBottomBar.js +2 -4
- package/dist/ToastBottomBar.js.map +1 -1
- package/dist/TreeTableViewportUpdater.js +0 -21
- package/dist/TreeTableViewportUpdater.js.map +1 -1
- package/dist/format-context-menus/CustomFormatAction.d.ts +1 -1
- package/dist/format-context-menus/CustomFormatAction.d.ts.map +1 -1
- package/dist/format-context-menus/CustomFormatAction.js +4 -25
- package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
- package/dist/format-context-menus/DateTimeFormatContextMenu.js +0 -7
- package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.js +0 -9
- package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/FormatContextMenuUtils.js +3 -9
- package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.js +0 -8
- package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/index.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/key-handlers/ClearFilterKeyHandler.js +0 -8
- package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -1
- package/dist/key-handlers/CopyKeyHandler.js +1 -10
- package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
- package/dist/key-handlers/ReverseKeyHandler.js +0 -11
- package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
- package/dist/key-handlers/index.js.map +1 -1
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +2 -32
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +4 -34
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +0 -20
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +15 -105
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +0 -9
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js +0 -17
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridSortMouseHandler.js +2 -15
- package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
- package/dist/mousehandlers/PendingMouseHandler.js +0 -6
- package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
- package/dist/mousehandlers/index.js.map +1 -1
- package/dist/sidebar/AdvancedSettings.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.d.ts +6 -6
- package/dist/sidebar/AdvancedSettingsMenu.d.ts.map +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.js +2 -6
- package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsType.js +0 -2
- package/dist/sidebar/AdvancedSettingsType.js.map +1 -1
- package/dist/sidebar/ChartBuilder.d.ts +2 -2
- package/dist/sidebar/ChartBuilder.d.ts.map +1 -1
- package/dist/sidebar/ChartBuilder.js +2 -46
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.d.ts +2 -2
- package/dist/sidebar/CustomColumnBuilder.d.ts.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +6 -58
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +4 -15
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/InputEditor.js +5 -36
- package/dist/sidebar/InputEditor.js.map +1 -1
- package/dist/sidebar/OptionType.js +0 -2
- package/dist/sidebar/OptionType.js.map +1 -1
- package/dist/sidebar/RollupRows.d.ts +3 -3
- package/dist/sidebar/RollupRows.d.ts.map +1 -1
- package/dist/sidebar/RollupRows.js +9 -65
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js +0 -13
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +0 -52
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/TableSaver.d.ts +1 -1
- package/dist/sidebar/TableSaver.d.ts.map +1 -1
- package/dist/sidebar/TableSaver.js +10 -123
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts +5 -4
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.js +37 -116
- package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.d.ts +2 -2
- package/dist/sidebar/aggregations/AggregationEdit.d.ts.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js +2 -14
- package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationOperation.js +0 -2
- package/dist/sidebar/aggregations/AggregationOperation.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js +2 -5
- package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.d.ts +4 -4
- package/dist/sidebar/aggregations/Aggregations.d.ts.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.js +2 -12
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +2 -16
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.js +2 -35
- package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts +4 -4
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +2 -12
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js +0 -3
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts +5 -5
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +16 -26
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts +3 -3
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +9 -172
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js +2 -16
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.js +2 -12
- package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
- package/dist/sidebar/icons/BarIcon.js +0 -3
- package/dist/sidebar/icons/BarIcon.js.map +1 -1
- package/dist/sidebar/icons/FormatColumnWhereIcon.js +2 -5
- package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -1
- package/dist/sidebar/icons/FormatRowWhereIcon.js +2 -5
- package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -1
- package/dist/sidebar/icons/HistogramIcon.js +0 -3
- package/dist/sidebar/icons/HistogramIcon.js.map +1 -1
- package/dist/sidebar/icons/LineIcon.js +0 -3
- package/dist/sidebar/icons/LineIcon.js.map +1 -1
- package/dist/sidebar/icons/PieIcon.js +0 -3
- package/dist/sidebar/icons/PieIcon.js.map +1 -1
- package/dist/sidebar/icons/ScatterIcon.js +0 -3
- package/dist/sidebar/icons/ScatterIcon.js.map +1 -1
- package/dist/sidebar/icons/index.js.map +1 -1
- package/dist/sidebar/index.js.map +1 -1
- package/package.json +15 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectDistinctBuilder.js","names":["React","Component","deepEqual","FontAwesomeIcon","dhNewCircleLargeFilled","vsTrash","Button","Log","log","module","SelectDistinctBuilder","constructor","props","handleAddColumnClick","bind","handleDeleteColumn","handleDropdownChanged","model","selectDistinctColumns","state","inputs","length","columns","originalColumns","componentDidUpdate","prevProps","prevState","onChange","filteredInputs","filter","val","setState","prevInputs","index","input","inputIndex","event","debug","value","target","renderInputs","map","options","name","includes","render","disableAddButton","undefined"],"sources":["../../src/sidebar/SelectDistinctBuilder.tsx"],"sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport deepEqual from 'deep-equal';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhNewCircleLargeFilled, vsTrash } from '@deephaven/icons';\nimport { Button } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { Column } from '@deephaven/jsapi-shim';\nimport { ModelIndex } from '@deephaven/grid';\nimport IrisGridModel from '../IrisGridModel';\n\nimport './SelectDistinctBuilder.scss';\nimport { ColumnName } from '../CommonTypes';\n\nconst log = Log.module('SelectDistinctBuilder');\n\ninterface SelectDistinctBuilderProps {\n model: IrisGridModel;\n selectDistinctColumns: ColumnName[];\n onChange: (newStr: string[]) => void;\n}\ninterface SelectDistinctBuilderState {\n inputs: string[];\n columns: Column[];\n}\nclass SelectDistinctBuilder extends Component<\n SelectDistinctBuilderProps,\n SelectDistinctBuilderState\n> {\n static defaultProps = {\n selectDistinctColumns: [],\n onChange: (): void => undefined,\n };\n\n constructor(props: SelectDistinctBuilderProps) {\n super(props);\n\n this.handleAddColumnClick = this.handleAddColumnClick.bind(this);\n this.handleDeleteColumn = this.handleDeleteColumn.bind(this);\n this.handleDropdownChanged = this.handleDropdownChanged.bind(this);\n\n const { model, selectDistinctColumns } = this.props;\n\n this.state = {\n inputs:\n selectDistinctColumns.length > 0 ? [...selectDistinctColumns] : [''],\n columns: model.originalColumns,\n };\n }\n\n componentDidUpdate(\n prevProps: SelectDistinctBuilderProps,\n prevState: SelectDistinctBuilderState\n ): void {\n const { inputs } = this.state;\n const { onChange } = this.props;\n if (prevState.inputs !== inputs) {\n const filteredInputs = inputs.filter(val => val !== '');\n if (\n !deepEqual(\n prevState.inputs.filter(val => val !== ''),\n filteredInputs\n )\n ) {\n onChange(filteredInputs);\n }\n }\n }\n\n handleAddColumnClick(): void {\n this.setState(({ inputs: prevInputs }) => ({\n inputs: [...prevInputs, ''],\n }));\n }\n\n handleDeleteColumn(index: ModelIndex): void {\n this.setState(({ inputs }) => ({\n inputs:\n inputs.length === 1 && index === 0\n ? ['']\n : inputs.filter((input, inputIndex) => index !== inputIndex),\n }));\n }\n\n handleDropdownChanged(\n index: number,\n event: React.ChangeEvent<HTMLSelectElement>\n ): void {\n log.debug('handleDropdownChanged', index, event);\n const { value } = event.target;\n this.setState(({ inputs: prevInputs }) => {\n const inputs = [...prevInputs];\n inputs[index] = value;\n return { inputs };\n });\n }\n\n renderInputs(): ReactElement[] {\n const { columns, inputs } = this.state;\n\n return inputs.map((value, index) => {\n const options = columns\n .filter(({ name }) => name === value || !inputs.includes(name))\n .map(({ name }) => (\n <option value={name} key={name}>\n {name}\n </option>\n ));\n return (\n // eslint-disable-next-line react/no-array-index-key\n <div className=\"form-inline px-3 pb-3\" key={index}>\n <select\n className=\"form-control custom-select col\"\n value={value}\n onChange={event => this.handleDropdownChanged(index, event)}\n >\n <option value=\"\">Select a column</option>\n {options}\n </select>\n\n {(inputs.length > 1 || value !== '') && (\n <Button\n kind=\"ghost\"\n className=\"ml-1 px-2\"\n onClick={() => {\n this.handleDeleteColumn(index);\n }}\n icon={<FontAwesomeIcon icon={vsTrash} transform=\"grow-3\" />}\n tooltip=\"Delete column\"\n />\n )}\n </div>\n );\n });\n }\n\n render(): React.ReactElement {\n const { columns, inputs } = this.state;\n const disableAddButton = inputs.length >= columns.length;\n return (\n <div\n role=\"presentation\"\n className=\"select-distinct-builder-container h-100\"\n >\n <div className=\"select-distinct-title\">Display Unique Values From</div>\n\n {this.renderInputs()}\n\n <hr />\n\n <div className=\"pt-1 px-3\">\n <Button\n kind=\"ghost\"\n className=\"btn-add-column\"\n onClick={this.handleAddColumnClick}\n disabled={disableAddButton}\n icon={dhNewCircleLargeFilled}\n >\n Add Additional Column\n </Button>\n </div>\n\n <div className=\"select-distinct-builder-footer\">\n <div className=\"select-distinct-builder-hint\">\n Modifies a table to show unique value from a column, same as{' '}\n <span className=\"inline-code-snippet\">\n selectDistinct("Column")\n </span>\n . Filters will be reset and the resulting table will contain only\n the selected columns above.\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default SelectDistinctBuilder;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"SelectDistinctBuilder.js","names":["React","Component","deepEqual","FontAwesomeIcon","dhNewCircleLargeFilled","vsTrash","Button","Log","log","module","SelectDistinctBuilder","constructor","props","handleAddColumnClick","bind","handleDeleteColumn","handleDropdownChanged","model","selectDistinctColumns","state","inputs","length","columns","originalColumns","componentDidUpdate","prevProps","prevState","onChange","filteredInputs","filter","val","setState","prevInputs","index","input","inputIndex","event","debug","value","target","renderInputs","map","options","name","includes","render","disableAddButton","undefined"],"sources":["../../src/sidebar/SelectDistinctBuilder.tsx"],"sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport deepEqual from 'deep-equal';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhNewCircleLargeFilled, vsTrash } from '@deephaven/icons';\nimport { Button } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { Column } from '@deephaven/jsapi-shim';\nimport { ModelIndex } from '@deephaven/grid';\nimport IrisGridModel from '../IrisGridModel';\n\nimport './SelectDistinctBuilder.scss';\nimport { ColumnName } from '../CommonTypes';\n\nconst log = Log.module('SelectDistinctBuilder');\n\ninterface SelectDistinctBuilderProps {\n model: IrisGridModel;\n selectDistinctColumns: ColumnName[];\n onChange: (newStr: string[]) => void;\n}\ninterface SelectDistinctBuilderState {\n inputs: string[];\n columns: Column[];\n}\nclass SelectDistinctBuilder extends Component<\n SelectDistinctBuilderProps,\n SelectDistinctBuilderState\n> {\n static defaultProps = {\n selectDistinctColumns: [],\n onChange: (): void => undefined,\n };\n\n constructor(props: SelectDistinctBuilderProps) {\n super(props);\n\n this.handleAddColumnClick = this.handleAddColumnClick.bind(this);\n this.handleDeleteColumn = this.handleDeleteColumn.bind(this);\n this.handleDropdownChanged = this.handleDropdownChanged.bind(this);\n\n const { model, selectDistinctColumns } = this.props;\n\n this.state = {\n inputs:\n selectDistinctColumns.length > 0 ? [...selectDistinctColumns] : [''],\n columns: model.originalColumns,\n };\n }\n\n componentDidUpdate(\n prevProps: SelectDistinctBuilderProps,\n prevState: SelectDistinctBuilderState\n ): void {\n const { inputs } = this.state;\n const { onChange } = this.props;\n if (prevState.inputs !== inputs) {\n const filteredInputs = inputs.filter(val => val !== '');\n if (\n !deepEqual(\n prevState.inputs.filter(val => val !== ''),\n filteredInputs\n )\n ) {\n onChange(filteredInputs);\n }\n }\n }\n\n handleAddColumnClick(): void {\n this.setState(({ inputs: prevInputs }) => ({\n inputs: [...prevInputs, ''],\n }));\n }\n\n handleDeleteColumn(index: ModelIndex): void {\n this.setState(({ inputs }) => ({\n inputs:\n inputs.length === 1 && index === 0\n ? ['']\n : inputs.filter((input, inputIndex) => index !== inputIndex),\n }));\n }\n\n handleDropdownChanged(\n index: number,\n event: React.ChangeEvent<HTMLSelectElement>\n ): void {\n log.debug('handleDropdownChanged', index, event);\n const { value } = event.target;\n this.setState(({ inputs: prevInputs }) => {\n const inputs = [...prevInputs];\n inputs[index] = value;\n return { inputs };\n });\n }\n\n renderInputs(): ReactElement[] {\n const { columns, inputs } = this.state;\n\n return inputs.map((value, index) => {\n const options = columns\n .filter(({ name }) => name === value || !inputs.includes(name))\n .map(({ name }) => (\n <option value={name} key={name}>\n {name}\n </option>\n ));\n return (\n // eslint-disable-next-line react/no-array-index-key\n <div className=\"form-inline px-3 pb-3\" key={index}>\n <select\n className=\"form-control custom-select col\"\n value={value}\n onChange={event => this.handleDropdownChanged(index, event)}\n >\n <option value=\"\">Select a column</option>\n {options}\n </select>\n\n {(inputs.length > 1 || value !== '') && (\n <Button\n kind=\"ghost\"\n className=\"ml-1 px-2\"\n onClick={() => {\n this.handleDeleteColumn(index);\n }}\n icon={<FontAwesomeIcon icon={vsTrash} transform=\"grow-3\" />}\n tooltip=\"Delete column\"\n />\n )}\n </div>\n );\n });\n }\n\n render(): React.ReactElement {\n const { columns, inputs } = this.state;\n const disableAddButton = inputs.length >= columns.length;\n return (\n <div\n role=\"presentation\"\n className=\"select-distinct-builder-container h-100\"\n >\n <div className=\"select-distinct-title\">Display Unique Values From</div>\n\n {this.renderInputs()}\n\n <hr />\n\n <div className=\"pt-1 px-3\">\n <Button\n kind=\"ghost\"\n className=\"btn-add-column\"\n onClick={this.handleAddColumnClick}\n disabled={disableAddButton}\n icon={dhNewCircleLargeFilled}\n >\n Add Additional Column\n </Button>\n </div>\n\n <div className=\"select-distinct-builder-footer\">\n <div className=\"select-distinct-builder-hint\">\n Modifies a table to show unique value from a column, same as{' '}\n <span className=\"inline-code-snippet\">\n selectDistinct("Column")\n </span>\n . Filters will be reset and the resulting table will contain only\n the selected columns above.\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default SelectDistinctBuilder;\n"],"mappings":"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"}
|
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
2
|
-
|
|
3
2
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
4
|
-
|
|
5
3
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
6
|
-
|
|
7
4
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
8
|
-
|
|
9
5
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
10
|
-
|
|
11
6
|
import React, { Component } from 'react';
|
|
12
7
|
import ClassNames from 'classnames';
|
|
13
8
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
@@ -21,12 +16,10 @@ import "./TableCsvExporter.css";
|
|
|
21
16
|
import Log from '@deephaven/log';
|
|
22
17
|
import IrisGridUtils from "../IrisGridUtils.js";
|
|
23
18
|
var log = Log.module('TableCsvExporter');
|
|
24
|
-
|
|
25
19
|
class TableCsvExporter extends Component {
|
|
26
20
|
static getDateString() {
|
|
27
21
|
return dh.i18n.DateTimeFormat.format(TableCsvExporter.FILENAME_DATE_FORMAT, new Date());
|
|
28
22
|
}
|
|
29
|
-
|
|
30
23
|
constructor(props) {
|
|
31
24
|
super(props);
|
|
32
25
|
this.handleDownloadClick = this.handleDownloadClick.bind(this);
|
|
@@ -51,7 +44,6 @@ class TableCsvExporter extends Component {
|
|
|
51
44
|
id: shortid.generate()
|
|
52
45
|
};
|
|
53
46
|
}
|
|
54
|
-
|
|
55
47
|
getSnapshotRanges() {
|
|
56
48
|
var {
|
|
57
49
|
model,
|
|
@@ -67,12 +59,10 @@ class TableCsvExporter extends Component {
|
|
|
67
59
|
columnCount
|
|
68
60
|
} = model;
|
|
69
61
|
var snapshotRanges = [];
|
|
70
|
-
|
|
71
62
|
switch (downloadRowOption) {
|
|
72
63
|
case TableCsvExporter.DOWNLOAD_ROW_OPTIONS.ALL_ROWS:
|
|
73
64
|
snapshotRanges.push(new GridRange(0, 0, columnCount - 1, rowCount - 1));
|
|
74
65
|
break;
|
|
75
|
-
|
|
76
66
|
case TableCsvExporter.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS:
|
|
77
67
|
snapshotRanges = selectedRanges.map(range => _objectSpread(_objectSpread({}, range), {}, {
|
|
78
68
|
startColumn: 0,
|
|
@@ -81,34 +71,26 @@ class TableCsvExporter extends Component {
|
|
|
81
71
|
if (rangeA.startRow != null && rangeB.startRow != null) {
|
|
82
72
|
return rangeA.startRow - rangeB.startRow;
|
|
83
73
|
}
|
|
84
|
-
|
|
85
74
|
return 0;
|
|
86
75
|
});
|
|
87
76
|
break;
|
|
88
|
-
|
|
89
77
|
case TableCsvExporter.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS:
|
|
90
78
|
switch (customizedDownloadRowOption) {
|
|
91
79
|
case TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.FIRST:
|
|
92
80
|
snapshotRanges.push(new GridRange(0, 0, columnCount - 1, Math.min(customizedDownloadRows - 1, rowCount - 1)));
|
|
93
81
|
break;
|
|
94
|
-
|
|
95
82
|
case TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.LAST:
|
|
96
83
|
snapshotRanges.push(new GridRange(0, Math.max(0, rowCount - customizedDownloadRows), columnCount - 1, rowCount - 1));
|
|
97
84
|
break;
|
|
98
|
-
|
|
99
85
|
default:
|
|
100
86
|
break;
|
|
101
87
|
}
|
|
102
|
-
|
|
103
88
|
break;
|
|
104
|
-
|
|
105
89
|
default:
|
|
106
90
|
break;
|
|
107
91
|
}
|
|
108
|
-
|
|
109
92
|
return snapshotRanges;
|
|
110
93
|
}
|
|
111
|
-
|
|
112
94
|
getModelRanges(ranges) {
|
|
113
95
|
var {
|
|
114
96
|
userColumnWidths,
|
|
@@ -119,24 +101,19 @@ class TableCsvExporter extends Component {
|
|
|
119
101
|
} = this.state;
|
|
120
102
|
var hiddenColumns = IrisGridUtils.getHiddenColumns(userColumnWidths);
|
|
121
103
|
var modelRanges = GridUtils.getModelRanges(ranges, movedColumns);
|
|
122
|
-
|
|
123
104
|
if (!includeHiddenColumns && hiddenColumns.length > 0) {
|
|
124
105
|
var subtractRanges = hiddenColumns.map(GridRange.makeColumn);
|
|
125
106
|
modelRanges = GridRange.subtractRangesFromRanges(modelRanges, subtractRanges);
|
|
126
107
|
}
|
|
127
|
-
|
|
128
108
|
return modelRanges;
|
|
129
109
|
}
|
|
130
|
-
|
|
131
110
|
resetDownloadState() {
|
|
132
111
|
this.setState({
|
|
133
112
|
errorMessage: null
|
|
134
113
|
});
|
|
135
114
|
}
|
|
136
|
-
|
|
137
115
|
handleDownloadClick() {
|
|
138
116
|
var _this = this;
|
|
139
|
-
|
|
140
117
|
return _asyncToGenerator(function* () {
|
|
141
118
|
var {
|
|
142
119
|
model,
|
|
@@ -150,61 +127,47 @@ class TableCsvExporter extends Component {
|
|
|
150
127
|
includeColumnHeaders,
|
|
151
128
|
useUnformattedValues
|
|
152
129
|
} = _this.state;
|
|
153
|
-
|
|
154
130
|
if (isDownloading) {
|
|
155
131
|
onCancel();
|
|
156
132
|
return;
|
|
157
133
|
}
|
|
158
|
-
|
|
159
134
|
_this.resetDownloadState();
|
|
160
|
-
|
|
161
135
|
var snapshotRanges = _this.getSnapshotRanges();
|
|
162
|
-
|
|
163
136
|
var modelRanges = _this.getModelRanges(snapshotRanges);
|
|
164
|
-
|
|
165
137
|
if (_this.validateOptionInput()) {
|
|
166
138
|
onDownloadStart();
|
|
167
|
-
|
|
168
139
|
try {
|
|
169
140
|
var _frozenTable = yield model.export();
|
|
170
|
-
|
|
171
141
|
var _tableSubscription = _frozenTable.setViewport(0, 0);
|
|
172
|
-
|
|
173
142
|
yield _tableSubscription.getViewportData();
|
|
174
143
|
onDownload(fileName, _frozenTable, _tableSubscription, snapshotRanges, modelRanges, includeColumnHeaders, useUnformattedValues);
|
|
175
144
|
} catch (error) {
|
|
176
145
|
log.error('CSV download failed', error);
|
|
177
|
-
|
|
178
146
|
_this.setState({
|
|
179
147
|
errorMessage: /*#__PURE__*/React.createElement("p", null, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
180
148
|
icon: vsWarning
|
|
181
149
|
}), " ", "".concat(error))
|
|
182
150
|
});
|
|
183
|
-
|
|
184
151
|
onCancel();
|
|
185
152
|
}
|
|
186
153
|
}
|
|
187
154
|
})();
|
|
188
155
|
}
|
|
189
|
-
|
|
190
156
|
handleDownloadRowOptionChanged(event) {
|
|
191
157
|
this.setState({
|
|
192
158
|
downloadRowOption: event.target.value
|
|
193
159
|
});
|
|
194
160
|
}
|
|
195
|
-
|
|
196
161
|
handleCustomizedDownloadRowOptionChanged(event) {
|
|
197
162
|
this.setState({
|
|
198
163
|
customizedDownloadRowOption: event.target.value
|
|
199
164
|
});
|
|
200
165
|
}
|
|
201
|
-
|
|
202
166
|
handleCustomizedDownloadRowsChanged(event) {
|
|
203
167
|
this.setState({
|
|
204
168
|
customizedDownloadRows: parseInt(event.target.value, 10)
|
|
205
169
|
});
|
|
206
170
|
}
|
|
207
|
-
|
|
208
171
|
handleIncludeColumnHeadersChanged() {
|
|
209
172
|
this.setState(_ref => {
|
|
210
173
|
var {
|
|
@@ -215,7 +178,6 @@ class TableCsvExporter extends Component {
|
|
|
215
178
|
};
|
|
216
179
|
});
|
|
217
180
|
}
|
|
218
|
-
|
|
219
181
|
handleIncludeHiddenColumnsChanged() {
|
|
220
182
|
this.setState(_ref2 => {
|
|
221
183
|
var {
|
|
@@ -226,7 +188,6 @@ class TableCsvExporter extends Component {
|
|
|
226
188
|
};
|
|
227
189
|
});
|
|
228
190
|
}
|
|
229
|
-
|
|
230
191
|
handleUseUnformattedValuesChanged() {
|
|
231
192
|
this.setState(_ref3 => {
|
|
232
193
|
var {
|
|
@@ -237,7 +198,6 @@ class TableCsvExporter extends Component {
|
|
|
237
198
|
};
|
|
238
199
|
});
|
|
239
200
|
}
|
|
240
|
-
|
|
241
201
|
validateOptionInput() {
|
|
242
202
|
var {
|
|
243
203
|
selectedRanges
|
|
@@ -246,7 +206,6 @@ class TableCsvExporter extends Component {
|
|
|
246
206
|
downloadRowOption,
|
|
247
207
|
customizedDownloadRows
|
|
248
208
|
} = this.state;
|
|
249
|
-
|
|
250
209
|
if (downloadRowOption === TableCsvExporter.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS && selectedRanges.length === 0) {
|
|
251
210
|
this.setState({
|
|
252
211
|
errorMessage: /*#__PURE__*/React.createElement("p", null, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
@@ -255,7 +214,6 @@ class TableCsvExporter extends Component {
|
|
|
255
214
|
});
|
|
256
215
|
return false;
|
|
257
216
|
}
|
|
258
|
-
|
|
259
217
|
if (downloadRowOption === TableCsvExporter.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS && customizedDownloadRows <= 0) {
|
|
260
218
|
this.setState({
|
|
261
219
|
errorMessage: /*#__PURE__*/React.createElement("p", null, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
@@ -264,10 +222,8 @@ class TableCsvExporter extends Component {
|
|
|
264
222
|
});
|
|
265
223
|
return false;
|
|
266
224
|
}
|
|
267
|
-
|
|
268
225
|
return true;
|
|
269
226
|
}
|
|
270
|
-
|
|
271
227
|
render() {
|
|
272
228
|
var {
|
|
273
229
|
model,
|
|
@@ -411,31 +367,24 @@ class TableCsvExporter extends Component {
|
|
|
411
367
|
className: "btn-hover-content"
|
|
412
368
|
}, "Cancel")), !isDownloading && 'Download')));
|
|
413
369
|
}
|
|
414
|
-
|
|
415
370
|
}
|
|
416
|
-
|
|
417
371
|
_defineProperty(TableCsvExporter, "FILENAME_DATE_FORMAT", 'yyyy-MM-dd-HHmmss');
|
|
418
|
-
|
|
419
372
|
_defineProperty(TableCsvExporter, "DOWNLOAD_STATUS", {
|
|
420
373
|
INITIATING: 'INITIATING',
|
|
421
374
|
DOWNLOADING: 'DOWNLOADING',
|
|
422
375
|
FINISHED: 'FINISHED',
|
|
423
376
|
CANCELED: 'CANCELED'
|
|
424
377
|
});
|
|
425
|
-
|
|
426
378
|
_defineProperty(TableCsvExporter, "DOWNLOAD_ROW_OPTIONS", {
|
|
427
379
|
ALL_ROWS: 'ALL_ROWS',
|
|
428
380
|
SELECTED_ROWS: 'SELECTED_ROWS',
|
|
429
381
|
CUSTOMIZED_ROWS: 'CUSTOMIZED_ROWS'
|
|
430
382
|
});
|
|
431
|
-
|
|
432
383
|
_defineProperty(TableCsvExporter, "CUSTOMIZED_ROWS_OPTIONS", {
|
|
433
384
|
FIRST: 'FIRST',
|
|
434
385
|
LAST: 'LAST'
|
|
435
386
|
});
|
|
436
|
-
|
|
437
387
|
_defineProperty(TableCsvExporter, "DEFAULT_DOWNLOAD_ROWS", 100);
|
|
438
|
-
|
|
439
388
|
_defineProperty(TableCsvExporter, "defaultProps", {
|
|
440
389
|
onDownloadStart: () => undefined,
|
|
441
390
|
isDownloading: false,
|
|
@@ -444,6 +393,5 @@ _defineProperty(TableCsvExporter, "defaultProps", {
|
|
|
444
393
|
tableDownloadEstimatedTime: null,
|
|
445
394
|
selectedRanges: []
|
|
446
395
|
});
|
|
447
|
-
|
|
448
396
|
export default TableCsvExporter;
|
|
449
397
|
//# sourceMappingURL=TableCsvExporter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableCsvExporter.js","names":["React","Component","ClassNames","FontAwesomeIcon","Button","Checkbox","LoadingSpinner","RadioGroup","RadioItem","GridRange","GridUtils","vsWarning","dh","TimeUtils","shortid","Log","IrisGridUtils","log","module","TableCsvExporter","getDateString","i18n","DateTimeFormat","format","FILENAME_DATE_FORMAT","Date","constructor","props","handleDownloadClick","bind","handleDownloadRowOptionChanged","handleCustomizedDownloadRowOptionChanged","handleCustomizedDownloadRowsChanged","handleIncludeColumnHeadersChanged","handleIncludeHiddenColumnsChanged","handleUseUnformattedValuesChanged","name","state","fileName","downloadRowOption","DOWNLOAD_ROW_OPTIONS","ALL_ROWS","customizedDownloadRowOption","CUSTOMIZED_ROWS_OPTIONS","FIRST","customizedDownloadRows","DEFAULT_DOWNLOAD_ROWS","includeColumnHeaders","includeHiddenColumns","useUnformattedValues","errorMessage","id","generate","getSnapshotRanges","model","selectedRanges","rowCount","columnCount","snapshotRanges","push","SELECTED_ROWS","map","range","startColumn","endColumn","sort","rangeA","rangeB","startRow","CUSTOMIZED_ROWS","Math","min","LAST","max","getModelRanges","ranges","userColumnWidths","movedColumns","hiddenColumns","getHiddenColumns","modelRanges","length","subtractRanges","makeColumn","subtractRangesFromRanges","resetDownloadState","setState","isDownloading","onDownloadStart","onDownload","onCancel","validateOptionInput","frozenTable","export","tableSubscription","setViewport","getViewportData","error","event","target","value","parseInt","render","tableDownloadProgress","tableDownloadEstimatedTime","tableDownloadStatus","toString","replace","DOWNLOAD_STATUS","DOWNLOADING","INITIATING","formatElapsedTime","FINISHED","CANCELED","width","undefined"],"sources":["../../src/sidebar/TableCsvExporter.tsx"],"sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport ClassNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n Button,\n Checkbox,\n LoadingSpinner,\n RadioGroup,\n RadioItem,\n} from '@deephaven/components';\nimport {\n GridRange,\n GridUtils,\n ModelSizeMap,\n MoveOperation,\n} from '@deephaven/grid';\nimport { vsWarning } from '@deephaven/icons';\nimport dh, { Table, TableViewportSubscription } from '@deephaven/jsapi-shim';\nimport { TimeUtils } from '@deephaven/utils';\nimport shortid from 'shortid';\nimport './TableCsvExporter.scss';\nimport Log from '@deephaven/log';\nimport IrisGridModel from '../IrisGridModel';\nimport IrisGridUtils from '../IrisGridUtils';\n\nconst log = Log.module('TableCsvExporter');\ninterface TableCsvExporterProps {\n model: IrisGridModel;\n name: string;\n userColumnWidths: ModelSizeMap;\n movedColumns: MoveOperation[];\n isDownloading: boolean;\n tableDownloadStatus: string;\n tableDownloadProgress: number;\n tableDownloadEstimatedTime: number;\n onDownloadStart: () => void;\n onDownload: (\n fileName: string,\n frozenTable: Table,\n tableSubscription: TableViewportSubscription,\n snapshotRanges: GridRange[],\n modelRanges: GridRange[],\n includeColumnHeaders: boolean,\n useUnformattedValues: boolean\n ) => void;\n onCancel: () => void;\n selectedRanges: GridRange[];\n}\n\ninterface TableCsvExporterState {\n fileName: string;\n\n downloadRowOption: string;\n customizedDownloadRowOption: string;\n customizedDownloadRows: number;\n\n includeColumnHeaders: boolean;\n includeHiddenColumns: boolean;\n useUnformattedValues: boolean;\n\n errorMessage: React.ReactNode;\n id: string;\n}\nclass TableCsvExporter extends Component<\n TableCsvExporterProps,\n TableCsvExporterState\n> {\n static FILENAME_DATE_FORMAT = 'yyyy-MM-dd-HHmmss';\n\n static DOWNLOAD_STATUS = {\n INITIATING: 'INITIATING',\n DOWNLOADING: 'DOWNLOADING',\n FINISHED: 'FINISHED',\n CANCELED: 'CANCELED',\n };\n\n static DOWNLOAD_ROW_OPTIONS = {\n ALL_ROWS: 'ALL_ROWS',\n SELECTED_ROWS: 'SELECTED_ROWS',\n CUSTOMIZED_ROWS: 'CUSTOMIZED_ROWS',\n };\n\n static CUSTOMIZED_ROWS_OPTIONS = {\n FIRST: 'FIRST',\n LAST: 'LAST',\n };\n\n static DEFAULT_DOWNLOAD_ROWS = 100;\n\n static defaultProps = {\n onDownloadStart: (): void => undefined,\n isDownloading: false,\n tableDownloadStatus: '',\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: null,\n selectedRanges: [],\n };\n\n static getDateString(): string {\n return dh.i18n.DateTimeFormat.format(\n TableCsvExporter.FILENAME_DATE_FORMAT,\n new Date()\n );\n }\n\n constructor(props: TableCsvExporterProps) {\n super(props);\n\n this.handleDownloadClick = this.handleDownloadClick.bind(this);\n this.handleDownloadRowOptionChanged = this.handleDownloadRowOptionChanged.bind(\n this\n );\n this.handleCustomizedDownloadRowOptionChanged = this.handleCustomizedDownloadRowOptionChanged.bind(\n this\n );\n this.handleCustomizedDownloadRowsChanged = this.handleCustomizedDownloadRowsChanged.bind(\n this\n );\n this.handleIncludeColumnHeadersChanged = this.handleIncludeColumnHeadersChanged.bind(\n this\n );\n this.handleIncludeHiddenColumnsChanged = this.handleIncludeHiddenColumnsChanged.bind(\n this\n );\n this.handleUseUnformattedValuesChanged = this.handleUseUnformattedValuesChanged.bind(\n this\n );\n\n const { name } = props;\n this.state = {\n fileName: `${name}-${TableCsvExporter.getDateString()}.csv`,\n\n downloadRowOption: TableCsvExporter.DOWNLOAD_ROW_OPTIONS.ALL_ROWS,\n customizedDownloadRowOption:\n TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.FIRST,\n customizedDownloadRows: TableCsvExporter.DEFAULT_DOWNLOAD_ROWS,\n\n includeColumnHeaders: true,\n includeHiddenColumns: false,\n useUnformattedValues: false,\n\n errorMessage: null,\n id: shortid.generate(),\n };\n }\n\n getSnapshotRanges(): GridRange[] {\n const { model, selectedRanges } = this.props;\n const {\n downloadRowOption,\n customizedDownloadRowOption,\n customizedDownloadRows,\n } = this.state;\n const { rowCount, columnCount } = model;\n let snapshotRanges = [] as GridRange[];\n switch (downloadRowOption) {\n case TableCsvExporter.DOWNLOAD_ROW_OPTIONS.ALL_ROWS:\n snapshotRanges.push(new GridRange(0, 0, columnCount - 1, rowCount - 1));\n break;\n case TableCsvExporter.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS:\n snapshotRanges = selectedRanges\n .map(range => ({\n ...range,\n startColumn: 0,\n endColumn: columnCount - 1,\n }))\n .sort((rangeA, rangeB) => {\n if (rangeA.startRow != null && rangeB.startRow != null) {\n return rangeA.startRow - rangeB.startRow;\n }\n return 0;\n }) as GridRange[];\n break;\n case TableCsvExporter.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS:\n switch (customizedDownloadRowOption) {\n case TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.FIRST:\n snapshotRanges.push(\n new GridRange(\n 0,\n 0,\n columnCount - 1,\n Math.min(customizedDownloadRows - 1, rowCount - 1)\n )\n );\n break;\n case TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.LAST:\n snapshotRanges.push(\n new GridRange(\n 0,\n Math.max(0, rowCount - customizedDownloadRows),\n columnCount - 1,\n rowCount - 1\n )\n );\n break;\n default:\n break;\n }\n break;\n default:\n break;\n }\n return snapshotRanges;\n }\n\n getModelRanges(ranges: GridRange[]): GridRange[] {\n const { userColumnWidths, movedColumns } = this.props;\n const { includeHiddenColumns } = this.state;\n const hiddenColumns = IrisGridUtils.getHiddenColumns(userColumnWidths);\n let modelRanges = GridUtils.getModelRanges(ranges, movedColumns);\n if (!includeHiddenColumns && hiddenColumns.length > 0) {\n const subtractRanges = hiddenColumns.map(GridRange.makeColumn);\n modelRanges = GridRange.subtractRangesFromRanges(\n modelRanges,\n subtractRanges\n );\n }\n return modelRanges;\n }\n\n resetDownloadState(): void {\n this.setState({ errorMessage: null });\n }\n\n async handleDownloadClick(): Promise<void> {\n const {\n model,\n isDownloading,\n onDownloadStart,\n onDownload,\n onCancel,\n } = this.props;\n const { fileName, includeColumnHeaders, useUnformattedValues } = this.state;\n\n if (isDownloading) {\n onCancel();\n return;\n }\n\n this.resetDownloadState();\n\n const snapshotRanges = this.getSnapshotRanges();\n const modelRanges = this.getModelRanges(snapshotRanges);\n if (this.validateOptionInput()) {\n onDownloadStart();\n try {\n const frozenTable = await model.export();\n const tableSubscription = frozenTable.setViewport(0, 0);\n await tableSubscription.getViewportData();\n onDownload(\n fileName,\n frozenTable,\n tableSubscription,\n snapshotRanges,\n modelRanges,\n includeColumnHeaders,\n useUnformattedValues\n );\n } catch (error) {\n log.error('CSV download failed', error);\n\n this.setState({\n errorMessage: (\n <p>\n <FontAwesomeIcon icon={vsWarning} /> {`${error}`}\n </p>\n ),\n });\n onCancel();\n }\n }\n }\n\n handleDownloadRowOptionChanged(\n event: React.ChangeEvent<HTMLInputElement>\n ): void {\n this.setState({ downloadRowOption: event.target.value });\n }\n\n handleCustomizedDownloadRowOptionChanged(\n event: React.ChangeEvent<HTMLSelectElement>\n ): void {\n this.setState({ customizedDownloadRowOption: event.target.value });\n }\n\n handleCustomizedDownloadRowsChanged(\n event: React.ChangeEvent<HTMLInputElement>\n ): void {\n this.setState({ customizedDownloadRows: parseInt(event.target.value, 10) });\n }\n\n handleIncludeColumnHeadersChanged(): void {\n this.setState(({ includeColumnHeaders }) => ({\n includeColumnHeaders: !includeColumnHeaders,\n }));\n }\n\n handleIncludeHiddenColumnsChanged(): void {\n this.setState(({ includeHiddenColumns }) => ({\n includeHiddenColumns: !includeHiddenColumns,\n }));\n }\n\n handleUseUnformattedValuesChanged(): void {\n this.setState(({ useUnformattedValues }) => ({\n useUnformattedValues: !useUnformattedValues,\n }));\n }\n\n validateOptionInput(): boolean {\n const { selectedRanges } = this.props;\n const { downloadRowOption, customizedDownloadRows } = this.state;\n\n if (\n downloadRowOption ===\n TableCsvExporter.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS &&\n selectedRanges.length === 0\n ) {\n this.setState({\n errorMessage: (\n <p>\n <FontAwesomeIcon icon={vsWarning} /> No rows selected. Please select\n some rows in the table.\n </p>\n ),\n });\n return false;\n }\n\n if (\n downloadRowOption ===\n TableCsvExporter.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS &&\n customizedDownloadRows <= 0\n ) {\n this.setState({\n errorMessage: (\n <p>\n <FontAwesomeIcon icon={vsWarning} /> Number of rows to output must\n be greater than 0\n </p>\n ),\n });\n return false;\n }\n return true;\n }\n\n render(): ReactElement {\n const {\n model,\n isDownloading,\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n selectedRanges,\n tableDownloadStatus,\n } = this.props;\n const {\n fileName,\n downloadRowOption,\n customizedDownloadRowOption,\n customizedDownloadRows,\n includeColumnHeaders,\n includeHiddenColumns,\n useUnformattedValues,\n errorMessage,\n id,\n } = this.state;\n const { rowCount } = model;\n return (\n <div className=\"table-csv-exporter\">\n <div className=\"section-title\">Download Rows</div>\n <div className=\"form-group\">\n <RadioGroup\n onChange={this.handleDownloadRowOptionChanged}\n value={downloadRowOption}\n disabled={isDownloading}\n >\n <RadioItem\n value={TableCsvExporter.DOWNLOAD_ROW_OPTIONS.ALL_ROWS}\n data-testid=\"radio-csv-exporter-download-all\"\n >\n All Rows\n <span className=\"text-muted ml-2\">\n {`(${rowCount\n .toString()\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')} rows)`}\n </span>\n </RadioItem>\n <RadioItem\n value={TableCsvExporter.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS}\n data-testid=\"radio-csv-exporter-only-selected\"\n >\n Only Selected Rows\n <span className=\"text-muted ml-2\">\n {selectedRanges.length > 0\n ? `(${GridRange.rowCount(selectedRanges)\n .toString()\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')} rows)`\n : null}\n </span>\n </RadioItem>\n <RadioItem\n value={TableCsvExporter.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS}\n data-testid=\"radio-csv-exporter-customized-rows\"\n >\n <div\n className=\"radio-input-row\"\n role=\"presentation\"\n onClick={() => {\n this.setState({\n downloadRowOption:\n TableCsvExporter.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS,\n });\n }}\n >\n <select\n value={customizedDownloadRowOption}\n data-testid=\"select-csv-exporter-customized-rows\"\n className=\"custom-select\"\n disabled={isDownloading}\n onChange={this.handleCustomizedDownloadRowOptionChanged}\n >\n <option value=\"FIRST\">First</option>\n <option value=\"LAST\">Last</option>\n </select>\n <input\n type=\"number\"\n className=\"form-control\"\n id={`customizedRows-${id}`}\n data-testid=\"input-csv-exporter-customized-rows\"\n name={`customizedRows-${id}`}\n placeholder=\"100\"\n value={customizedDownloadRows}\n disabled={isDownloading}\n onChange={this.handleCustomizedDownloadRowsChanged}\n />\n <div>Rows</div>\n </div>\n </RadioItem>\n </RadioGroup>\n </div>\n <div className=\"form-group\">\n <label htmlFor={`customizedRows-${id}`}>File Name</label>\n <input\n type=\"text\"\n className=\"form-control\"\n id={`filename-${id}`}\n data-testid=\"input-csv-exporter-file-name\"\n name={`filename-${id}`}\n value={fileName}\n onChange={event => {\n this.setState({ fileName: event.target.value });\n }}\n disabled={isDownloading}\n />\n </div>\n <div className=\"checkbox-options\">\n <Checkbox\n checked={includeColumnHeaders}\n onChange={this.handleIncludeColumnHeadersChanged}\n >\n Include column headers\n </Checkbox>\n <Checkbox\n checked={includeHiddenColumns}\n onChange={this.handleIncludeHiddenColumnsChanged}\n >\n Include hidden columns\n </Checkbox>\n <Checkbox\n checked={useUnformattedValues}\n onChange={this.handleUseUnformattedValuesChanged}\n >\n Use unformatted values\n </Checkbox>\n </div>\n <div className=\"section-footer flex-column\">\n {errorMessage != null && (\n <div className=\"error-message\">{errorMessage}</div>\n )}\n {tableDownloadStatus && (\n <div className=\"download-status\">\n {(tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING ||\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING) && (\n <>\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING && (\n <div className=\"text-muted\">Starting Download...</div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING && (\n <div className=\"text-muted d-flex justify-content-between\">\n <span>\n {tableDownloadEstimatedTime ||\n tableDownloadEstimatedTime === 0\n ? `Estimated time: ${TimeUtils.formatElapsedTime(\n tableDownloadEstimatedTime\n )}`\n : null}\n </span>\n <span>{`${tableDownloadProgress}%`}</span>\n </div>\n )}\n </>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.FINISHED && (\n <div className=\"text-muted text-right\">Download Completed</div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.CANCELED && (\n <div className=\"text-muted\">Download Canceled</div>\n )}\n\n {(tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING ||\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING) && (\n <div className=\"progress\">\n <div\n className=\"progress-bar progress-bar-striped progress-bar-animated\"\n style={{ width: `${tableDownloadProgress}%` }}\n />\n </div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.FINISHED && (\n <div className=\"progress\">\n <div\n className=\"progress-bar bg-success\"\n style={{ width: `${tableDownloadProgress}%` }}\n />\n </div>\n )}\n </div>\n )}\n <Button\n kind=\"primary\"\n data-testid=\"btn-csv-exporter-download\"\n className={ClassNames('btn-downloading', {\n 'btn-spinner btn-cancelable': isDownloading,\n })}\n onClick={this.handleDownloadClick}\n >\n {isDownloading && (\n <span>\n <LoadingSpinner />\n <span className=\"btn-normal-content\">Downloading</span>\n <span className=\"btn-hover-content\">Cancel</span>\n </span>\n )}\n {!isDownloading && 'Download'}\n </Button>\n </div>\n </div>\n );\n }\n}\n\nexport default TableCsvExporter;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TableCsvExporter.js","names":["React","Component","ClassNames","FontAwesomeIcon","Button","Checkbox","LoadingSpinner","RadioGroup","RadioItem","GridRange","GridUtils","vsWarning","dh","TimeUtils","shortid","Log","IrisGridUtils","log","module","TableCsvExporter","getDateString","i18n","DateTimeFormat","format","FILENAME_DATE_FORMAT","Date","constructor","props","handleDownloadClick","bind","handleDownloadRowOptionChanged","handleCustomizedDownloadRowOptionChanged","handleCustomizedDownloadRowsChanged","handleIncludeColumnHeadersChanged","handleIncludeHiddenColumnsChanged","handleUseUnformattedValuesChanged","name","state","fileName","downloadRowOption","DOWNLOAD_ROW_OPTIONS","ALL_ROWS","customizedDownloadRowOption","CUSTOMIZED_ROWS_OPTIONS","FIRST","customizedDownloadRows","DEFAULT_DOWNLOAD_ROWS","includeColumnHeaders","includeHiddenColumns","useUnformattedValues","errorMessage","id","generate","getSnapshotRanges","model","selectedRanges","rowCount","columnCount","snapshotRanges","push","SELECTED_ROWS","map","range","startColumn","endColumn","sort","rangeA","rangeB","startRow","CUSTOMIZED_ROWS","Math","min","LAST","max","getModelRanges","ranges","userColumnWidths","movedColumns","hiddenColumns","getHiddenColumns","modelRanges","length","subtractRanges","makeColumn","subtractRangesFromRanges","resetDownloadState","setState","isDownloading","onDownloadStart","onDownload","onCancel","validateOptionInput","frozenTable","export","tableSubscription","setViewport","getViewportData","error","event","target","value","parseInt","render","tableDownloadProgress","tableDownloadEstimatedTime","tableDownloadStatus","toString","replace","DOWNLOAD_STATUS","DOWNLOADING","INITIATING","formatElapsedTime","FINISHED","CANCELED","width","undefined"],"sources":["../../src/sidebar/TableCsvExporter.tsx"],"sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport ClassNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n Button,\n Checkbox,\n LoadingSpinner,\n RadioGroup,\n RadioItem,\n} from '@deephaven/components';\nimport {\n GridRange,\n GridUtils,\n ModelSizeMap,\n MoveOperation,\n} from '@deephaven/grid';\nimport { vsWarning } from '@deephaven/icons';\nimport dh, { Table, TableViewportSubscription } from '@deephaven/jsapi-shim';\nimport { TimeUtils } from '@deephaven/utils';\nimport shortid from 'shortid';\nimport './TableCsvExporter.scss';\nimport Log from '@deephaven/log';\nimport IrisGridModel from '../IrisGridModel';\nimport IrisGridUtils from '../IrisGridUtils';\n\nconst log = Log.module('TableCsvExporter');\ninterface TableCsvExporterProps {\n model: IrisGridModel;\n name: string;\n userColumnWidths: ModelSizeMap;\n movedColumns: MoveOperation[];\n isDownloading: boolean;\n tableDownloadStatus: string;\n tableDownloadProgress: number;\n tableDownloadEstimatedTime: number;\n onDownloadStart: () => void;\n onDownload: (\n fileName: string,\n frozenTable: Table,\n tableSubscription: TableViewportSubscription,\n snapshotRanges: GridRange[],\n modelRanges: GridRange[],\n includeColumnHeaders: boolean,\n useUnformattedValues: boolean\n ) => void;\n onCancel: () => void;\n selectedRanges: GridRange[];\n}\n\ninterface TableCsvExporterState {\n fileName: string;\n\n downloadRowOption: string;\n customizedDownloadRowOption: string;\n customizedDownloadRows: number;\n\n includeColumnHeaders: boolean;\n includeHiddenColumns: boolean;\n useUnformattedValues: boolean;\n\n errorMessage: React.ReactNode;\n id: string;\n}\nclass TableCsvExporter extends Component<\n TableCsvExporterProps,\n TableCsvExporterState\n> {\n static FILENAME_DATE_FORMAT = 'yyyy-MM-dd-HHmmss';\n\n static DOWNLOAD_STATUS = {\n INITIATING: 'INITIATING',\n DOWNLOADING: 'DOWNLOADING',\n FINISHED: 'FINISHED',\n CANCELED: 'CANCELED',\n };\n\n static DOWNLOAD_ROW_OPTIONS = {\n ALL_ROWS: 'ALL_ROWS',\n SELECTED_ROWS: 'SELECTED_ROWS',\n CUSTOMIZED_ROWS: 'CUSTOMIZED_ROWS',\n };\n\n static CUSTOMIZED_ROWS_OPTIONS = {\n FIRST: 'FIRST',\n LAST: 'LAST',\n };\n\n static DEFAULT_DOWNLOAD_ROWS = 100;\n\n static defaultProps = {\n onDownloadStart: (): void => undefined,\n isDownloading: false,\n tableDownloadStatus: '',\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: null,\n selectedRanges: [],\n };\n\n static getDateString(): string {\n return dh.i18n.DateTimeFormat.format(\n TableCsvExporter.FILENAME_DATE_FORMAT,\n new Date()\n );\n }\n\n constructor(props: TableCsvExporterProps) {\n super(props);\n\n this.handleDownloadClick = this.handleDownloadClick.bind(this);\n this.handleDownloadRowOptionChanged = this.handleDownloadRowOptionChanged.bind(\n this\n );\n this.handleCustomizedDownloadRowOptionChanged = this.handleCustomizedDownloadRowOptionChanged.bind(\n this\n );\n this.handleCustomizedDownloadRowsChanged = this.handleCustomizedDownloadRowsChanged.bind(\n this\n );\n this.handleIncludeColumnHeadersChanged = this.handleIncludeColumnHeadersChanged.bind(\n this\n );\n this.handleIncludeHiddenColumnsChanged = this.handleIncludeHiddenColumnsChanged.bind(\n this\n );\n this.handleUseUnformattedValuesChanged = this.handleUseUnformattedValuesChanged.bind(\n this\n );\n\n const { name } = props;\n this.state = {\n fileName: `${name}-${TableCsvExporter.getDateString()}.csv`,\n\n downloadRowOption: TableCsvExporter.DOWNLOAD_ROW_OPTIONS.ALL_ROWS,\n customizedDownloadRowOption:\n TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.FIRST,\n customizedDownloadRows: TableCsvExporter.DEFAULT_DOWNLOAD_ROWS,\n\n includeColumnHeaders: true,\n includeHiddenColumns: false,\n useUnformattedValues: false,\n\n errorMessage: null,\n id: shortid.generate(),\n };\n }\n\n getSnapshotRanges(): GridRange[] {\n const { model, selectedRanges } = this.props;\n const {\n downloadRowOption,\n customizedDownloadRowOption,\n customizedDownloadRows,\n } = this.state;\n const { rowCount, columnCount } = model;\n let snapshotRanges = [] as GridRange[];\n switch (downloadRowOption) {\n case TableCsvExporter.DOWNLOAD_ROW_OPTIONS.ALL_ROWS:\n snapshotRanges.push(new GridRange(0, 0, columnCount - 1, rowCount - 1));\n break;\n case TableCsvExporter.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS:\n snapshotRanges = selectedRanges\n .map(range => ({\n ...range,\n startColumn: 0,\n endColumn: columnCount - 1,\n }))\n .sort((rangeA, rangeB) => {\n if (rangeA.startRow != null && rangeB.startRow != null) {\n return rangeA.startRow - rangeB.startRow;\n }\n return 0;\n }) as GridRange[];\n break;\n case TableCsvExporter.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS:\n switch (customizedDownloadRowOption) {\n case TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.FIRST:\n snapshotRanges.push(\n new GridRange(\n 0,\n 0,\n columnCount - 1,\n Math.min(customizedDownloadRows - 1, rowCount - 1)\n )\n );\n break;\n case TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.LAST:\n snapshotRanges.push(\n new GridRange(\n 0,\n Math.max(0, rowCount - customizedDownloadRows),\n columnCount - 1,\n rowCount - 1\n )\n );\n break;\n default:\n break;\n }\n break;\n default:\n break;\n }\n return snapshotRanges;\n }\n\n getModelRanges(ranges: GridRange[]): GridRange[] {\n const { userColumnWidths, movedColumns } = this.props;\n const { includeHiddenColumns } = this.state;\n const hiddenColumns = IrisGridUtils.getHiddenColumns(userColumnWidths);\n let modelRanges = GridUtils.getModelRanges(ranges, movedColumns);\n if (!includeHiddenColumns && hiddenColumns.length > 0) {\n const subtractRanges = hiddenColumns.map(GridRange.makeColumn);\n modelRanges = GridRange.subtractRangesFromRanges(\n modelRanges,\n subtractRanges\n );\n }\n return modelRanges;\n }\n\n resetDownloadState(): void {\n this.setState({ errorMessage: null });\n }\n\n async handleDownloadClick(): Promise<void> {\n const {\n model,\n isDownloading,\n onDownloadStart,\n onDownload,\n onCancel,\n } = this.props;\n const { fileName, includeColumnHeaders, useUnformattedValues } = this.state;\n\n if (isDownloading) {\n onCancel();\n return;\n }\n\n this.resetDownloadState();\n\n const snapshotRanges = this.getSnapshotRanges();\n const modelRanges = this.getModelRanges(snapshotRanges);\n if (this.validateOptionInput()) {\n onDownloadStart();\n try {\n const frozenTable = await model.export();\n const tableSubscription = frozenTable.setViewport(0, 0);\n await tableSubscription.getViewportData();\n onDownload(\n fileName,\n frozenTable,\n tableSubscription,\n snapshotRanges,\n modelRanges,\n includeColumnHeaders,\n useUnformattedValues\n );\n } catch (error) {\n log.error('CSV download failed', error);\n\n this.setState({\n errorMessage: (\n <p>\n <FontAwesomeIcon icon={vsWarning} /> {`${error}`}\n </p>\n ),\n });\n onCancel();\n }\n }\n }\n\n handleDownloadRowOptionChanged(\n event: React.ChangeEvent<HTMLInputElement>\n ): void {\n this.setState({ downloadRowOption: event.target.value });\n }\n\n handleCustomizedDownloadRowOptionChanged(\n event: React.ChangeEvent<HTMLSelectElement>\n ): void {\n this.setState({ customizedDownloadRowOption: event.target.value });\n }\n\n handleCustomizedDownloadRowsChanged(\n event: React.ChangeEvent<HTMLInputElement>\n ): void {\n this.setState({ customizedDownloadRows: parseInt(event.target.value, 10) });\n }\n\n handleIncludeColumnHeadersChanged(): void {\n this.setState(({ includeColumnHeaders }) => ({\n includeColumnHeaders: !includeColumnHeaders,\n }));\n }\n\n handleIncludeHiddenColumnsChanged(): void {\n this.setState(({ includeHiddenColumns }) => ({\n includeHiddenColumns: !includeHiddenColumns,\n }));\n }\n\n handleUseUnformattedValuesChanged(): void {\n this.setState(({ useUnformattedValues }) => ({\n useUnformattedValues: !useUnformattedValues,\n }));\n }\n\n validateOptionInput(): boolean {\n const { selectedRanges } = this.props;\n const { downloadRowOption, customizedDownloadRows } = this.state;\n\n if (\n downloadRowOption ===\n TableCsvExporter.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS &&\n selectedRanges.length === 0\n ) {\n this.setState({\n errorMessage: (\n <p>\n <FontAwesomeIcon icon={vsWarning} /> No rows selected. Please select\n some rows in the table.\n </p>\n ),\n });\n return false;\n }\n\n if (\n downloadRowOption ===\n TableCsvExporter.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS &&\n customizedDownloadRows <= 0\n ) {\n this.setState({\n errorMessage: (\n <p>\n <FontAwesomeIcon icon={vsWarning} /> Number of rows to output must\n be greater than 0\n </p>\n ),\n });\n return false;\n }\n return true;\n }\n\n render(): ReactElement {\n const {\n model,\n isDownloading,\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n selectedRanges,\n tableDownloadStatus,\n } = this.props;\n const {\n fileName,\n downloadRowOption,\n customizedDownloadRowOption,\n customizedDownloadRows,\n includeColumnHeaders,\n includeHiddenColumns,\n useUnformattedValues,\n errorMessage,\n id,\n } = this.state;\n const { rowCount } = model;\n return (\n <div className=\"table-csv-exporter\">\n <div className=\"section-title\">Download Rows</div>\n <div className=\"form-group\">\n <RadioGroup\n onChange={this.handleDownloadRowOptionChanged}\n value={downloadRowOption}\n disabled={isDownloading}\n >\n <RadioItem\n value={TableCsvExporter.DOWNLOAD_ROW_OPTIONS.ALL_ROWS}\n data-testid=\"radio-csv-exporter-download-all\"\n >\n All Rows\n <span className=\"text-muted ml-2\">\n {`(${rowCount\n .toString()\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')} rows)`}\n </span>\n </RadioItem>\n <RadioItem\n value={TableCsvExporter.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS}\n data-testid=\"radio-csv-exporter-only-selected\"\n >\n Only Selected Rows\n <span className=\"text-muted ml-2\">\n {selectedRanges.length > 0\n ? `(${GridRange.rowCount(selectedRanges)\n .toString()\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')} rows)`\n : null}\n </span>\n </RadioItem>\n <RadioItem\n value={TableCsvExporter.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS}\n data-testid=\"radio-csv-exporter-customized-rows\"\n >\n <div\n className=\"radio-input-row\"\n role=\"presentation\"\n onClick={() => {\n this.setState({\n downloadRowOption:\n TableCsvExporter.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS,\n });\n }}\n >\n <select\n value={customizedDownloadRowOption}\n data-testid=\"select-csv-exporter-customized-rows\"\n className=\"custom-select\"\n disabled={isDownloading}\n onChange={this.handleCustomizedDownloadRowOptionChanged}\n >\n <option value=\"FIRST\">First</option>\n <option value=\"LAST\">Last</option>\n </select>\n <input\n type=\"number\"\n className=\"form-control\"\n id={`customizedRows-${id}`}\n data-testid=\"input-csv-exporter-customized-rows\"\n name={`customizedRows-${id}`}\n placeholder=\"100\"\n value={customizedDownloadRows}\n disabled={isDownloading}\n onChange={this.handleCustomizedDownloadRowsChanged}\n />\n <div>Rows</div>\n </div>\n </RadioItem>\n </RadioGroup>\n </div>\n <div className=\"form-group\">\n <label htmlFor={`customizedRows-${id}`}>File Name</label>\n <input\n type=\"text\"\n className=\"form-control\"\n id={`filename-${id}`}\n data-testid=\"input-csv-exporter-file-name\"\n name={`filename-${id}`}\n value={fileName}\n onChange={event => {\n this.setState({ fileName: event.target.value });\n }}\n disabled={isDownloading}\n />\n </div>\n <div className=\"checkbox-options\">\n <Checkbox\n checked={includeColumnHeaders}\n onChange={this.handleIncludeColumnHeadersChanged}\n >\n Include column headers\n </Checkbox>\n <Checkbox\n checked={includeHiddenColumns}\n onChange={this.handleIncludeHiddenColumnsChanged}\n >\n Include hidden columns\n </Checkbox>\n <Checkbox\n checked={useUnformattedValues}\n onChange={this.handleUseUnformattedValuesChanged}\n >\n Use unformatted values\n </Checkbox>\n </div>\n <div className=\"section-footer flex-column\">\n {errorMessage != null && (\n <div className=\"error-message\">{errorMessage}</div>\n )}\n {tableDownloadStatus && (\n <div className=\"download-status\">\n {(tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING ||\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING) && (\n <>\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING && (\n <div className=\"text-muted\">Starting Download...</div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING && (\n <div className=\"text-muted d-flex justify-content-between\">\n <span>\n {tableDownloadEstimatedTime ||\n tableDownloadEstimatedTime === 0\n ? `Estimated time: ${TimeUtils.formatElapsedTime(\n tableDownloadEstimatedTime\n )}`\n : null}\n </span>\n <span>{`${tableDownloadProgress}%`}</span>\n </div>\n )}\n </>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.FINISHED && (\n <div className=\"text-muted text-right\">Download Completed</div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.CANCELED && (\n <div className=\"text-muted\">Download Canceled</div>\n )}\n\n {(tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING ||\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING) && (\n <div className=\"progress\">\n <div\n className=\"progress-bar progress-bar-striped progress-bar-animated\"\n style={{ width: `${tableDownloadProgress}%` }}\n />\n </div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.FINISHED && (\n <div className=\"progress\">\n <div\n className=\"progress-bar bg-success\"\n style={{ width: `${tableDownloadProgress}%` }}\n />\n </div>\n )}\n </div>\n )}\n <Button\n kind=\"primary\"\n data-testid=\"btn-csv-exporter-download\"\n className={ClassNames('btn-downloading', {\n 'btn-spinner btn-cancelable': isDownloading,\n })}\n onClick={this.handleDownloadClick}\n >\n {isDownloading && (\n <span>\n <LoadingSpinner />\n <span className=\"btn-normal-content\">Downloading</span>\n <span className=\"btn-hover-content\">Cancel</span>\n </span>\n )}\n {!isDownloading && 'Download'}\n </Button>\n </div>\n </div>\n );\n }\n}\n\nexport default TableCsvExporter;\n"],"mappings":"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"}
|
|
@@ -56,7 +56,7 @@ export default class TableSaver extends PureComponent<TableSaverProps, Record<st
|
|
|
56
56
|
downloadStartTime?: number;
|
|
57
57
|
iframes: HTMLIFrameElement[];
|
|
58
58
|
useBlobFallback: boolean;
|
|
59
|
-
getCachedCustomColumnFormatFlag: typeof import("@deephaven/jsapi-utils").isCustomColumnFormatDefined & import("memoizee").Memoized<typeof import("@deephaven/jsapi-utils").isCustomColumnFormatDefined>;
|
|
59
|
+
getCachedCustomColumnFormatFlag: typeof import("@deephaven/jsapi-utils").isCustomColumnFormatDefined & import("@types/memoizee").Memoized<typeof import("@deephaven/jsapi-utils").isCustomColumnFormatDefined>;
|
|
60
60
|
createWriterStream(port: MessagePort): WritableStream<{
|
|
61
61
|
rows?: string | undefined;
|
|
62
62
|
header?: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableSaver.d.ts","sourceRoot":"","sources":["../../src/sidebar/TableSaver.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAW,EACT,MAAM,EAEN,KAAK,EAEL,yBAAyB,EACzB,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,SAAS,EAAE,cAAc,EAAgB,MAAM,iBAAiB,CAAC;AAE1E,OAAO,EAAE,SAAS,EAA8B,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EACL,iBAAiB,EAGlB,MAAM,kBAAkB,CAAC;AAO1B,UAAU,eAAe;IACvB,iBAAiB,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;IAChD,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,wBAAwB,EAAE,CACxB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GAAG,IAAI,KACzB,IAAI,CAAC;IACV,SAAS,EAAE,SAAS,CAAC;CACtB;AAcD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,aAAa,CACnD,eAAe,EACf,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CACtB;IACC,MAAM,CAAC,mBAAmB,SAAQ;IAElC,MAAM,CAAC,oBAAoB,SAAK;IAEhC,MAAM,CAAC,cAAc,SAAQ;IAE7B,MAAM,CAAC,wBAAwB,SAAK;IAEpC,MAAM,CAAC,YAAY;iCACM,QAAQ,KAAK,CAAC;;mCAGZ,IAAI;kCACL,IAAI;wCACE,IAAI;MAClC;IAEF,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;gBAI/B,KAAK,EAAE,eAAe;IAsClC,iBAAiB,IAAI,IAAI;IAezB,oBAAoB,IAAI,IAAI;IAU5B,EAAE,CAAC,EAAE,aAAa,CAAC;IAEnB,IAAI,CAAC,EAAE,WAAW,CAAC;IAEnB,UAAU,CAAC,EAAE,2BAA2B,CAAC,OAAO,CAAC,CAAC;IAElD,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd,iBAAiB,CAAC,EAAE,yBAAyB,CAAC;IAE9C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,oBAAoB,EAAE,OAAO,CAAC;IAE9B,oBAAoB,EAAE,OAAO,CAAC;IAE9B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,UAAU,EAAE,SAAS,EAAE,CAAC;IAExB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAE/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,cAAc,EAAE,MAAM,CAAC;IAEvB,eAAe,EAAE,MAAM,CAAC;IAExB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAE9C,oBAAoB,EAAE,MAAM,CAAC;IAE7B,eAAe,EAAE,MAAM,CAAC;IAExB,mBAAmB,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IAK3D,cAAc;;;MAAmD;IAOjE,aAAa,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IAE9C,sBAAsB,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IAEvD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAE7B,eAAe,EAAE,OAAO,CAAC;IAEzB,+BAA+B,
|
|
1
|
+
{"version":3,"file":"TableSaver.d.ts","sourceRoot":"","sources":["../../src/sidebar/TableSaver.tsx"],"names":[],"mappings":"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"}
|