@deephaven/iris-grid 0.22.3-beta.15 → 0.22.3-beta.21
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.js +7 -65
- package/dist/AdvancedFilterCreator.js.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.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/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 +41 -35
- 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 +1 -1
- 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.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.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.js +41 -183
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridShortcuts.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts +2 -2
- 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 +2 -2
- 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.js.map +1 -1
- package/dist/IrisGridTreeTableModel.js +3 -42
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.d.ts +11 -5
- 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.js +2 -48
- package/dist/PartitionSelectorSearch.js.map +1 -1
- package/dist/PendingDataBottomBar.d.ts +1 -1
- 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 +1 -1
- 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.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 +4 -4
- 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.js +2 -46
- package/dist/sidebar/ChartBuilder.js.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.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 +3 -2
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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.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,9 +1,6 @@
|
|
|
1
1
|
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; }
|
|
2
|
-
|
|
3
2
|
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; }
|
|
4
|
-
|
|
5
3
|
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; }
|
|
6
|
-
|
|
7
4
|
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
8
5
|
import { DragDropContext } from 'react-beautiful-dnd';
|
|
9
6
|
import classNames from 'classnames';
|
|
@@ -16,8 +13,7 @@ import AggregationUtils from "./AggregationUtils.js";
|
|
|
16
13
|
import "./Aggregations.css";
|
|
17
14
|
var log = Log.module('Aggregations');
|
|
18
15
|
export var SELECTABLE_OPTIONS = [AggregationOperation.SUM, AggregationOperation.ABS_SUM, AggregationOperation.MIN, AggregationOperation.MAX, AggregationOperation.VAR, AggregationOperation.AVG, AggregationOperation.STD, AggregationOperation.FIRST, AggregationOperation.LAST, AggregationOperation.COUNT_DISTINCT, AggregationOperation.DISTINCT, AggregationOperation.COUNT, AggregationOperation.UNIQUE];
|
|
19
|
-
|
|
20
|
-
var Aggregations = _ref => {
|
|
16
|
+
function Aggregations(_ref) {
|
|
21
17
|
var {
|
|
22
18
|
isRollup,
|
|
23
19
|
settings,
|
|
@@ -55,17 +51,13 @@ var Aggregations = _ref => {
|
|
|
55
51
|
} = _ref2;
|
|
56
52
|
log.debug('handleDragEnd', destination, source);
|
|
57
53
|
DragUtils.stopDragging();
|
|
58
|
-
|
|
59
54
|
if (destination === null) {
|
|
60
55
|
return;
|
|
61
56
|
}
|
|
62
|
-
|
|
63
57
|
var destinationIndex = destination.index;
|
|
64
|
-
|
|
65
58
|
if (source.index < destination.index) {
|
|
66
59
|
destinationIndex += 1;
|
|
67
60
|
}
|
|
68
|
-
|
|
69
61
|
var newAggregations = [...aggregations];
|
|
70
62
|
var draggedItems = DragUtils.reorder(newAggregations, selectedRanges, newAggregations, destinationIndex);
|
|
71
63
|
var insertIndex = DragUtils.adjustDestinationIndex(destinationIndex, selectedRanges);
|
|
@@ -91,7 +83,6 @@ var Aggregations = _ref => {
|
|
|
91
83
|
}, [setSelectedRanges]);
|
|
92
84
|
var handleAggregationSelect = useCallback(itemIndex => {
|
|
93
85
|
var aggregation = aggregations[itemIndex];
|
|
94
|
-
|
|
95
86
|
if (!AggregationUtils.isRollupOperation(aggregation.operation)) {
|
|
96
87
|
onEdit(aggregation);
|
|
97
88
|
}
|
|
@@ -182,7 +173,6 @@ var Aggregations = _ref => {
|
|
|
182
173
|
selectedRanges: selectedRanges,
|
|
183
174
|
isMultiSelect: true
|
|
184
175
|
}))));
|
|
185
|
-
}
|
|
186
|
-
|
|
176
|
+
}
|
|
187
177
|
export default Aggregations;
|
|
188
178
|
//# sourceMappingURL=Aggregations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Aggregations.js","names":["React","useCallback","useEffect","useMemo","useState","DragDropContext","classNames","FontAwesomeIcon","dhNewCircleLargeFilled","vsTrash","vsEdit","dhWarningFilled","Log","DraggableItemList","DragUtils","Option","Select","RadioItem","RadioGroup","Button","AggregationOperation","AggregationUtils","log","module","SELECTABLE_OPTIONS","SUM","ABS_SUM","MIN","MAX","VAR","AVG","STD","FIRST","LAST","COUNT_DISTINCT","DISTINCT","COUNT","UNIQUE","Aggregations","isRollup","settings","onChange","onEdit","aggregations","showOnTop","options","filter","option","some","aggregation","operation","selectedOperation","setSelectedOperation","selectedRanges","setSelectedRanges","changeSettings","changedSettings","changeAggregations","newAggregations","changeShowOnTop","newShowOnTop","handleDragStart","debug","startDragging","handleDragEnd","destination","source","stopDragging","destinationIndex","index","draggedItems","reorder","insertIndex","adjustDestinationIndex","newSelectedRanges","length","handleOperationChange","handleAdd","selected","invert","handleDeleteClicked","itemIndex","handleAggregationSelectionChange","handleAggregationSelect","isRollupOperation","handleShowOnTopChange","event","target","value","setDefaultOperation","includes","renderAggregation","item","isClone","selectedCount","text","badgeText","undefined","className","isEditable","renderBadge","renderHandle","isOptionsShown","isAggregationsShown","map"],"sources":["../../../src/sidebar/aggregations/Aggregations.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { DragDropContext } from 'react-beautiful-dnd';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n dhNewCircleLargeFilled,\n vsTrash,\n vsEdit,\n dhWarningFilled,\n} from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport {\n DraggableItemList,\n DragUtils,\n Option,\n Select,\n RadioItem,\n RadioGroup,\n Button,\n} from '@deephaven/components';\nimport type { DraggableRenderItemProps, Range } from '@deephaven/components';\nimport { ModelIndex } from '@deephaven/grid';\nimport AggregationOperation from './AggregationOperation';\nimport AggregationUtils from './AggregationUtils';\nimport './Aggregations.scss';\n\nconst log = Log.module('Aggregations');\n\nexport type Aggregation = {\n operation: AggregationOperation;\n selected: string[];\n invert: boolean;\n};\n\nexport type AggregationSettings = {\n aggregations: Aggregation[];\n showOnTop: boolean;\n};\n\nexport type AggregationsProps = {\n isRollup: boolean;\n settings: AggregationSettings;\n onChange: (settings: AggregationSettings) => void;\n onEdit: (aggregation: Aggregation) => void;\n};\n\nexport const SELECTABLE_OPTIONS = [\n AggregationOperation.SUM,\n AggregationOperation.ABS_SUM,\n AggregationOperation.MIN,\n AggregationOperation.MAX,\n AggregationOperation.VAR,\n AggregationOperation.AVG,\n AggregationOperation.STD,\n AggregationOperation.FIRST,\n AggregationOperation.LAST,\n AggregationOperation.COUNT_DISTINCT,\n AggregationOperation.DISTINCT,\n AggregationOperation.COUNT,\n AggregationOperation.UNIQUE,\n];\n\nconst Aggregations = ({\n isRollup,\n settings,\n onChange,\n onEdit,\n}: AggregationsProps): JSX.Element => {\n const { aggregations, showOnTop } = settings;\n const options = useMemo(\n () =>\n SELECTABLE_OPTIONS.filter(\n option =>\n !aggregations.some(aggregation => aggregation.operation === option)\n ),\n [aggregations]\n );\n const [selectedOperation, setSelectedOperation] = useState(options[0]);\n const [selectedRanges, setSelectedRanges] = useState<Range[]>([]);\n const changeSettings = useCallback(\n changedSettings => {\n onChange({ ...settings, ...changedSettings });\n },\n [onChange, settings]\n );\n const changeAggregations = useCallback(\n newAggregations => {\n changeSettings({ aggregations: newAggregations });\n },\n [changeSettings]\n );\n\n const changeShowOnTop = useCallback(\n newShowOnTop => {\n changeSettings({ showOnTop: newShowOnTop });\n },\n [changeSettings]\n );\n\n const handleDragStart = useCallback(() => {\n log.debug('handleDragStart');\n\n DragUtils.startDragging();\n }, []);\n\n const handleDragEnd = useCallback(\n ({ destination, source }) => {\n log.debug('handleDragEnd', destination, source);\n\n DragUtils.stopDragging();\n\n if (destination === null) {\n return;\n }\n\n let destinationIndex = destination.index;\n if (source.index < destination.index) {\n destinationIndex += 1;\n }\n\n const newAggregations = [...aggregations];\n const draggedItems = DragUtils.reorder(\n newAggregations,\n selectedRanges,\n newAggregations,\n destinationIndex\n );\n const insertIndex = DragUtils.adjustDestinationIndex(\n destinationIndex,\n selectedRanges\n );\n const newSelectedRanges: Range[] = [\n [insertIndex, insertIndex + draggedItems.length - 1],\n ];\n changeAggregations(newAggregations);\n setSelectedRanges(newSelectedRanges);\n },\n [changeAggregations, aggregations, selectedRanges, setSelectedRanges]\n );\n\n const handleOperationChange = useCallback(\n operation => {\n setSelectedOperation(operation);\n },\n [setSelectedOperation]\n );\n\n const handleAdd = useCallback(() => {\n changeAggregations([\n ...aggregations,\n { operation: selectedOperation, selected: [], invert: true },\n ]);\n }, [aggregations, selectedOperation, changeAggregations]);\n\n const handleDeleteClicked = useCallback(\n (itemIndex: ModelIndex) => {\n changeAggregations(\n aggregations.filter((aggregation, index) => index !== itemIndex)\n );\n },\n [aggregations, changeAggregations]\n );\n\n const handleAggregationSelectionChange = useCallback(\n newSelectedRanges => {\n setSelectedRanges(newSelectedRanges);\n },\n [setSelectedRanges]\n );\n\n const handleAggregationSelect = useCallback(\n itemIndex => {\n const aggregation = aggregations[itemIndex];\n if (!AggregationUtils.isRollupOperation(aggregation.operation)) {\n onEdit(aggregation);\n }\n },\n [aggregations, onEdit]\n );\n\n const handleShowOnTopChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n changeShowOnTop(event.target.value === 'true');\n },\n [changeShowOnTop]\n );\n\n useEffect(\n function setDefaultOperation() {\n if (options.length > 0 && !options.includes(selectedOperation)) {\n setSelectedOperation(options[0]);\n }\n },\n [options, selectedOperation]\n );\n\n const renderAggregation = useCallback(\n ({\n item,\n itemIndex,\n isClone = false,\n selectedCount,\n }: DraggableRenderItemProps<Aggregation>) => {\n const text = item.operation;\n const badgeText = isClone ? `${selectedCount}` : undefined;\n const className = isClone ? 'item-list-item-clone' : undefined;\n const isRollupOperation = AggregationUtils.isRollupOperation(\n item.operation\n );\n const isEditable = !isClone && !isRollupOperation;\n return (\n <>\n <div\n className={classNames(\n 'item-list-item-content',\n 'draggable-item-list-item-content',\n className\n )}\n >\n <span className=\"title\">\n {text}\n {!isRollup && isRollupOperation && (\n <span className=\"small text-warning\">\n <FontAwesomeIcon icon={dhWarningFilled} /> Requires rollup\n </span>\n )}\n </span>\n {DraggableItemList.renderBadge({ text: badgeText })}\n {DraggableItemList.renderHandle()}\n </div>\n {!isClone && (\n <>\n <Button\n kind=\"ghost\"\n className=\"btn-edit\"\n icon={vsEdit}\n tooltip=\"Edit Columns\"\n onClick={() => onEdit(item)}\n disabled={!isEditable}\n />\n <Button\n kind=\"ghost\"\n className=\"btn-delete\"\n icon={vsTrash}\n tooltip=\"Delete Aggregation\"\n onClick={() => handleDeleteClicked(itemIndex)}\n />\n </>\n )}\n </>\n );\n },\n [handleDeleteClicked, onEdit, isRollup]\n );\n\n const isOptionsShown = options.length > 0;\n const isAggregationsShown = aggregations.length > 0;\n\n return (\n <div className=\"aggregations\">\n {isOptionsShown && (\n <div className=\"form-inline\">\n <Select onChange={handleOperationChange} value={selectedOperation}>\n {options.map(option => (\n <Option value={option} key={option}>\n {option}\n </Option>\n ))}\n </Select>\n <button\n type=\"button\"\n className=\"btn btn-link btn-add\"\n onClick={handleAdd}\n >\n <FontAwesomeIcon icon={dhNewCircleLargeFilled} />\n Add Aggregation\n </button>\n </div>\n )}\n {isOptionsShown && isAggregationsShown && <hr />}\n {isAggregationsShown && (\n <>\n {!isRollup && (\n <div className=\"form-inline\">\n <label>Placement: </label>\n <RadioGroup\n onChange={handleShowOnTopChange}\n value={`${showOnTop}`}\n >\n <RadioItem value=\"true\">Top</RadioItem>\n <RadioItem value=\"false\">Bottom</RadioItem>\n </RadioGroup>\n </div>\n )}\n <DragDropContext\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n >\n <DraggableItemList<Aggregation>\n className=\"selected-aggregations\"\n itemCount={aggregations.length}\n items={aggregations}\n renderItem={renderAggregation}\n offset={0}\n onSelectionChange={handleAggregationSelectionChange}\n onSelect={handleAggregationSelect}\n selectedRanges={selectedRanges}\n isMultiSelect\n />\n </DragDropContext>\n </>\n )}\n </div>\n );\n};\n\nexport default Aggregations;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Aggregations.js","names":["React","useCallback","useEffect","useMemo","useState","DragDropContext","classNames","FontAwesomeIcon","dhNewCircleLargeFilled","vsTrash","vsEdit","dhWarningFilled","Log","DraggableItemList","DragUtils","Option","Select","RadioItem","RadioGroup","Button","AggregationOperation","AggregationUtils","log","module","SELECTABLE_OPTIONS","SUM","ABS_SUM","MIN","MAX","VAR","AVG","STD","FIRST","LAST","COUNT_DISTINCT","DISTINCT","COUNT","UNIQUE","Aggregations","isRollup","settings","onChange","onEdit","aggregations","showOnTop","options","filter","option","some","aggregation","operation","selectedOperation","setSelectedOperation","selectedRanges","setSelectedRanges","changeSettings","changedSettings","changeAggregations","newAggregations","changeShowOnTop","newShowOnTop","handleDragStart","debug","startDragging","handleDragEnd","destination","source","stopDragging","destinationIndex","index","draggedItems","reorder","insertIndex","adjustDestinationIndex","newSelectedRanges","length","handleOperationChange","handleAdd","selected","invert","handleDeleteClicked","itemIndex","handleAggregationSelectionChange","handleAggregationSelect","isRollupOperation","handleShowOnTopChange","event","target","value","setDefaultOperation","includes","renderAggregation","item","isClone","selectedCount","text","badgeText","undefined","className","isEditable","renderBadge","renderHandle","isOptionsShown","isAggregationsShown","map"],"sources":["../../../src/sidebar/aggregations/Aggregations.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { DragDropContext } from 'react-beautiful-dnd';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n dhNewCircleLargeFilled,\n vsTrash,\n vsEdit,\n dhWarningFilled,\n} from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport {\n DraggableItemList,\n DragUtils,\n Option,\n Select,\n RadioItem,\n RadioGroup,\n Button,\n} from '@deephaven/components';\nimport type { DraggableRenderItemProps, Range } from '@deephaven/components';\nimport { ModelIndex } from '@deephaven/grid';\nimport AggregationOperation from './AggregationOperation';\nimport AggregationUtils from './AggregationUtils';\nimport './Aggregations.scss';\n\nconst log = Log.module('Aggregations');\n\nexport type Aggregation = {\n operation: AggregationOperation;\n selected: string[];\n invert: boolean;\n};\n\nexport type AggregationSettings = {\n aggregations: Aggregation[];\n showOnTop: boolean;\n};\n\nexport type AggregationsProps = {\n isRollup: boolean;\n settings: AggregationSettings;\n onChange: (settings: AggregationSettings) => void;\n onEdit: (aggregation: Aggregation) => void;\n};\n\nexport const SELECTABLE_OPTIONS = [\n AggregationOperation.SUM,\n AggregationOperation.ABS_SUM,\n AggregationOperation.MIN,\n AggregationOperation.MAX,\n AggregationOperation.VAR,\n AggregationOperation.AVG,\n AggregationOperation.STD,\n AggregationOperation.FIRST,\n AggregationOperation.LAST,\n AggregationOperation.COUNT_DISTINCT,\n AggregationOperation.DISTINCT,\n AggregationOperation.COUNT,\n AggregationOperation.UNIQUE,\n];\n\nfunction Aggregations({\n isRollup,\n settings,\n onChange,\n onEdit,\n}: AggregationsProps): JSX.Element {\n const { aggregations, showOnTop } = settings;\n const options = useMemo(\n () =>\n SELECTABLE_OPTIONS.filter(\n option =>\n !aggregations.some(aggregation => aggregation.operation === option)\n ),\n [aggregations]\n );\n const [selectedOperation, setSelectedOperation] = useState(options[0]);\n const [selectedRanges, setSelectedRanges] = useState<Range[]>([]);\n const changeSettings = useCallback(\n changedSettings => {\n onChange({ ...settings, ...changedSettings });\n },\n [onChange, settings]\n );\n const changeAggregations = useCallback(\n newAggregations => {\n changeSettings({ aggregations: newAggregations });\n },\n [changeSettings]\n );\n\n const changeShowOnTop = useCallback(\n newShowOnTop => {\n changeSettings({ showOnTop: newShowOnTop });\n },\n [changeSettings]\n );\n\n const handleDragStart = useCallback(() => {\n log.debug('handleDragStart');\n\n DragUtils.startDragging();\n }, []);\n\n const handleDragEnd = useCallback(\n ({ destination, source }) => {\n log.debug('handleDragEnd', destination, source);\n\n DragUtils.stopDragging();\n\n if (destination === null) {\n return;\n }\n\n let destinationIndex = destination.index;\n if (source.index < destination.index) {\n destinationIndex += 1;\n }\n\n const newAggregations = [...aggregations];\n const draggedItems = DragUtils.reorder(\n newAggregations,\n selectedRanges,\n newAggregations,\n destinationIndex\n );\n const insertIndex = DragUtils.adjustDestinationIndex(\n destinationIndex,\n selectedRanges\n );\n const newSelectedRanges: Range[] = [\n [insertIndex, insertIndex + draggedItems.length - 1],\n ];\n changeAggregations(newAggregations);\n setSelectedRanges(newSelectedRanges);\n },\n [changeAggregations, aggregations, selectedRanges, setSelectedRanges]\n );\n\n const handleOperationChange = useCallback(\n operation => {\n setSelectedOperation(operation);\n },\n [setSelectedOperation]\n );\n\n const handleAdd = useCallback(() => {\n changeAggregations([\n ...aggregations,\n { operation: selectedOperation, selected: [], invert: true },\n ]);\n }, [aggregations, selectedOperation, changeAggregations]);\n\n const handleDeleteClicked = useCallback(\n (itemIndex: ModelIndex) => {\n changeAggregations(\n aggregations.filter((aggregation, index) => index !== itemIndex)\n );\n },\n [aggregations, changeAggregations]\n );\n\n const handleAggregationSelectionChange = useCallback(\n newSelectedRanges => {\n setSelectedRanges(newSelectedRanges);\n },\n [setSelectedRanges]\n );\n\n const handleAggregationSelect = useCallback(\n itemIndex => {\n const aggregation = aggregations[itemIndex];\n if (!AggregationUtils.isRollupOperation(aggregation.operation)) {\n onEdit(aggregation);\n }\n },\n [aggregations, onEdit]\n );\n\n const handleShowOnTopChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n changeShowOnTop(event.target.value === 'true');\n },\n [changeShowOnTop]\n );\n\n useEffect(\n function setDefaultOperation() {\n if (options.length > 0 && !options.includes(selectedOperation)) {\n setSelectedOperation(options[0]);\n }\n },\n [options, selectedOperation]\n );\n\n const renderAggregation = useCallback(\n ({\n item,\n itemIndex,\n isClone = false,\n selectedCount,\n }: DraggableRenderItemProps<Aggregation>) => {\n const text = item.operation;\n const badgeText = isClone ? `${selectedCount}` : undefined;\n const className = isClone ? 'item-list-item-clone' : undefined;\n const isRollupOperation = AggregationUtils.isRollupOperation(\n item.operation\n );\n const isEditable = !isClone && !isRollupOperation;\n return (\n <>\n <div\n className={classNames(\n 'item-list-item-content',\n 'draggable-item-list-item-content',\n className\n )}\n >\n <span className=\"title\">\n {text}\n {!isRollup && isRollupOperation && (\n <span className=\"small text-warning\">\n <FontAwesomeIcon icon={dhWarningFilled} /> Requires rollup\n </span>\n )}\n </span>\n {DraggableItemList.renderBadge({ text: badgeText })}\n {DraggableItemList.renderHandle()}\n </div>\n {!isClone && (\n <>\n <Button\n kind=\"ghost\"\n className=\"btn-edit\"\n icon={vsEdit}\n tooltip=\"Edit Columns\"\n onClick={() => onEdit(item)}\n disabled={!isEditable}\n />\n <Button\n kind=\"ghost\"\n className=\"btn-delete\"\n icon={vsTrash}\n tooltip=\"Delete Aggregation\"\n onClick={() => handleDeleteClicked(itemIndex)}\n />\n </>\n )}\n </>\n );\n },\n [handleDeleteClicked, onEdit, isRollup]\n );\n\n const isOptionsShown = options.length > 0;\n const isAggregationsShown = aggregations.length > 0;\n\n return (\n <div className=\"aggregations\">\n {isOptionsShown && (\n <div className=\"form-inline\">\n <Select onChange={handleOperationChange} value={selectedOperation}>\n {options.map(option => (\n <Option value={option} key={option}>\n {option}\n </Option>\n ))}\n </Select>\n <button\n type=\"button\"\n className=\"btn btn-link btn-add\"\n onClick={handleAdd}\n >\n <FontAwesomeIcon icon={dhNewCircleLargeFilled} />\n Add Aggregation\n </button>\n </div>\n )}\n {isOptionsShown && isAggregationsShown && <hr />}\n {isAggregationsShown && (\n <>\n {!isRollup && (\n <div className=\"form-inline\">\n <label>Placement: </label>\n <RadioGroup\n onChange={handleShowOnTopChange}\n value={`${showOnTop}`}\n >\n <RadioItem value=\"true\">Top</RadioItem>\n <RadioItem value=\"false\">Bottom</RadioItem>\n </RadioGroup>\n </div>\n )}\n <DragDropContext\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n >\n <DraggableItemList<Aggregation>\n className=\"selected-aggregations\"\n itemCount={aggregations.length}\n items={aggregations}\n renderItem={renderAggregation}\n offset={0}\n onSelectionChange={handleAggregationSelectionChange}\n onSelect={handleAggregationSelect}\n selectedRanges={selectedRanges}\n isMultiSelect\n />\n </DragDropContext>\n </>\n )}\n </div>\n );\n}\n\nexport default Aggregations;\n"],"mappings":"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"}
|
|
@@ -5,6 +5,6 @@ export interface ColumnFormatEditorProps {
|
|
|
5
5
|
config?: BaseFormatConfig;
|
|
6
6
|
onChange?: ChangeCallback;
|
|
7
7
|
}
|
|
8
|
-
declare
|
|
8
|
+
declare function ColumnFormatEditor(props: ColumnFormatEditorProps): JSX.Element;
|
|
9
9
|
export default ColumnFormatEditor;
|
|
10
10
|
//# sourceMappingURL=ColumnFormatEditor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnFormatEditor.d.ts","sourceRoot":"","sources":["../../../src/sidebar/conditional-formatting/ColumnFormatEditor.tsx"],"names":[],"mappings":";AAGA,OAAO,EACL,gBAAgB,EAChB,cAAc,EAId,WAAW,EACZ,MAAM,8BAA8B,CAAC;AAMtC,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAeD,
|
|
1
|
+
{"version":3,"file":"ColumnFormatEditor.d.ts","sourceRoot":"","sources":["../../../src/sidebar/conditional-formatting/ColumnFormatEditor.tsx"],"names":[],"mappings":";AAGA,OAAO,EACL,gBAAgB,EAChB,cAAc,EAId,WAAW,EACZ,MAAM,8BAA8B,CAAC;AAMtC,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAeD,iBAAS,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,GAAG,CAAC,OAAO,CAuGvE;AAED,eAAe,kBAAkB,CAAC"}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
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; }
|
|
2
|
-
|
|
3
2
|
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; }
|
|
4
|
-
|
|
5
3
|
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; }
|
|
6
|
-
|
|
7
4
|
import React, { useCallback, useEffect, useState } from 'react';
|
|
8
5
|
import Log from '@deephaven/log';
|
|
9
6
|
import { ComboBox } from '@deephaven/components';
|
|
@@ -11,9 +8,7 @@ import { getDefaultConditionConfigForType, getConditionConfig, getDefaultStyleCo
|
|
|
11
8
|
import ConditionEditor from "./ConditionEditor.js";
|
|
12
9
|
import StyleEditor from "./StyleEditor.js";
|
|
13
10
|
var log = Log.module('ColumnFormatEditor');
|
|
14
|
-
|
|
15
11
|
var DEFAULT_CALLBACK = () => undefined;
|
|
16
|
-
|
|
17
12
|
function makeDefaultConfig(columns) {
|
|
18
13
|
var {
|
|
19
14
|
type,
|
|
@@ -23,18 +18,14 @@ function makeDefaultConfig(columns) {
|
|
|
23
18
|
type,
|
|
24
19
|
name
|
|
25
20
|
};
|
|
26
|
-
|
|
27
21
|
var config = _objectSpread({
|
|
28
22
|
column,
|
|
29
23
|
style: getDefaultStyleConfig()
|
|
30
24
|
}, getDefaultConditionConfigForType(type));
|
|
31
|
-
|
|
32
25
|
return config;
|
|
33
26
|
}
|
|
34
|
-
|
|
35
|
-
var ColumnFormatEditor = props => {
|
|
27
|
+
function ColumnFormatEditor(props) {
|
|
36
28
|
var _columns$find;
|
|
37
|
-
|
|
38
29
|
var {
|
|
39
30
|
columns,
|
|
40
31
|
config = makeDefaultConfig(columns),
|
|
@@ -51,10 +42,8 @@ var ColumnFormatEditor = props => {
|
|
|
51
42
|
} = _ref;
|
|
52
43
|
return name === value;
|
|
53
44
|
});
|
|
54
|
-
|
|
55
45
|
if (newColumn !== undefined) {
|
|
56
46
|
setColumn(newColumn);
|
|
57
|
-
|
|
58
47
|
if (selectedColumn.type !== newColumn.type) {
|
|
59
48
|
setConditionConfig(getDefaultConditionConfigForType(newColumn.type));
|
|
60
49
|
setConditionValid(false);
|
|
@@ -77,12 +66,10 @@ var ColumnFormatEditor = props => {
|
|
|
77
66
|
log.debug('Column is not selected, skip update.');
|
|
78
67
|
return;
|
|
79
68
|
}
|
|
80
|
-
|
|
81
69
|
if (selectedStyle === undefined) {
|
|
82
70
|
log.debug('Style is not selected, skip update.');
|
|
83
71
|
return;
|
|
84
72
|
}
|
|
85
|
-
|
|
86
73
|
var {
|
|
87
74
|
type,
|
|
88
75
|
name
|
|
@@ -126,7 +113,6 @@ var ColumnFormatEditor = props => {
|
|
|
126
113
|
config: selectedStyle,
|
|
127
114
|
onChange: handleStyleChange
|
|
128
115
|
})));
|
|
129
|
-
}
|
|
130
|
-
|
|
116
|
+
}
|
|
131
117
|
export default ColumnFormatEditor;
|
|
132
118
|
//# sourceMappingURL=ColumnFormatEditor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnFormatEditor.js","names":["React","useCallback","useEffect","useState","Log","ComboBox","getDefaultConditionConfigForType","getConditionConfig","getDefaultStyleConfig","ConditionEditor","StyleEditor","log","module","DEFAULT_CALLBACK","undefined","makeDefaultConfig","columns","type","name","column","config","style","ColumnFormatEditor","props","onChange","selectedColumn","setColumn","find","c","conditionConfig","setConditionConfig","conditionValid","setConditionValid","selectedStyle","setStyle","handleColumnChange","value","newColumn","error","handleConditionChange","updatedConditionConfig","isValid","debug","handleStyleChange","updatedStyleConfig","updateColumnFormat","columnInputOptions","map","title"],"sources":["../../../src/sidebar/conditional-formatting/ColumnFormatEditor.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react';\nimport Log from '@deephaven/log';\nimport { ComboBox } from '@deephaven/components';\nimport {\n BaseFormatConfig,\n ChangeCallback,\n getDefaultConditionConfigForType,\n getConditionConfig,\n getDefaultStyleConfig,\n ModelColumn,\n} from './ConditionalFormattingUtils';\nimport ConditionEditor from './ConditionEditor';\nimport StyleEditor from './StyleEditor';\n\nconst log = Log.module('ColumnFormatEditor');\n\nexport interface ColumnFormatEditorProps {\n columns: ModelColumn[];\n config?: BaseFormatConfig;\n onChange?: ChangeCallback;\n}\n\nconst DEFAULT_CALLBACK = () => undefined;\n\nfunction makeDefaultConfig(columns: ModelColumn[]): BaseFormatConfig {\n const { type, name } = columns[0];\n const column = { type, name };\n const config = {\n column,\n style: getDefaultStyleConfig(),\n ...getDefaultConditionConfigForType(type),\n };\n return config;\n}\n\
|
|
1
|
+
{"version":3,"file":"ColumnFormatEditor.js","names":["React","useCallback","useEffect","useState","Log","ComboBox","getDefaultConditionConfigForType","getConditionConfig","getDefaultStyleConfig","ConditionEditor","StyleEditor","log","module","DEFAULT_CALLBACK","undefined","makeDefaultConfig","columns","type","name","column","config","style","ColumnFormatEditor","props","onChange","selectedColumn","setColumn","find","c","conditionConfig","setConditionConfig","conditionValid","setConditionValid","selectedStyle","setStyle","handleColumnChange","value","newColumn","error","handleConditionChange","updatedConditionConfig","isValid","debug","handleStyleChange","updatedStyleConfig","updateColumnFormat","columnInputOptions","map","title"],"sources":["../../../src/sidebar/conditional-formatting/ColumnFormatEditor.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react';\nimport Log from '@deephaven/log';\nimport { ComboBox } from '@deephaven/components';\nimport {\n BaseFormatConfig,\n ChangeCallback,\n getDefaultConditionConfigForType,\n getConditionConfig,\n getDefaultStyleConfig,\n ModelColumn,\n} from './ConditionalFormattingUtils';\nimport ConditionEditor from './ConditionEditor';\nimport StyleEditor from './StyleEditor';\n\nconst log = Log.module('ColumnFormatEditor');\n\nexport interface ColumnFormatEditorProps {\n columns: ModelColumn[];\n config?: BaseFormatConfig;\n onChange?: ChangeCallback;\n}\n\nconst DEFAULT_CALLBACK = () => undefined;\n\nfunction makeDefaultConfig(columns: ModelColumn[]): BaseFormatConfig {\n const { type, name } = columns[0];\n const column = { type, name };\n const config = {\n column,\n style: getDefaultStyleConfig(),\n ...getDefaultConditionConfigForType(type),\n };\n return config;\n}\n\nfunction ColumnFormatEditor(props: ColumnFormatEditorProps): JSX.Element {\n const {\n columns,\n config = makeDefaultConfig(columns),\n onChange = DEFAULT_CALLBACK,\n } = props;\n\n const [selectedColumn, setColumn] = useState(\n columns.find(\n c => c.name === config.column.name && c.type === config.column.type\n ) ?? columns[0]\n );\n const [conditionConfig, setConditionConfig] = useState(\n getConditionConfig(config)\n );\n const [conditionValid, setConditionValid] = useState(false);\n const [selectedStyle, setStyle] = useState(config.style);\n\n const handleColumnChange = useCallback(\n value => {\n const newColumn = columns.find(({ name }) => name === value);\n if (newColumn !== undefined) {\n setColumn(newColumn);\n if (selectedColumn.type !== newColumn.type) {\n setConditionConfig(getDefaultConditionConfigForType(newColumn.type));\n setConditionValid(false);\n }\n } else {\n log.error(`Column ${value} not found.`);\n }\n },\n [columns, selectedColumn]\n );\n\n const handleConditionChange = useCallback(\n (updatedConditionConfig, isValid) => {\n log.debug('handleConditionChange', updatedConditionConfig, isValid);\n setConditionConfig(updatedConditionConfig);\n setConditionValid(isValid);\n },\n []\n );\n\n const handleStyleChange = useCallback(updatedStyleConfig => {\n log.debug('handleStyleChange', updatedStyleConfig);\n setStyle(updatedStyleConfig);\n }, []);\n\n useEffect(\n function updateColumnFormat() {\n if (selectedColumn === undefined) {\n log.debug('Column is not selected, skip update.');\n return;\n }\n if (selectedStyle === undefined) {\n log.debug('Style is not selected, skip update.');\n return;\n }\n const { type, name } = selectedColumn;\n const column = { type, name };\n onChange(\n {\n column,\n style: selectedStyle,\n ...conditionConfig,\n },\n conditionValid\n );\n },\n [onChange, selectedColumn, selectedStyle, conditionConfig, conditionValid]\n );\n\n const columnInputOptions = columns.map(({ name }) => ({\n title: name,\n value: name,\n }));\n\n return (\n <div className=\"conditional-rule-editor form\">\n <div className=\"mb-2\">\n <label className=\"mb-0\">Format Cell If</label>\n <ComboBox\n defaultValue={selectedColumn?.name}\n options={columnInputOptions}\n inputPlaceholder=\"Select a column\"\n spellCheck={false}\n onChange={handleColumnChange}\n searchPlaceholder=\"Filter columns\"\n />\n </div>\n\n {selectedColumn !== undefined && (\n <>\n <ConditionEditor\n column={selectedColumn}\n config={conditionConfig}\n onChange={handleConditionChange}\n />\n <StyleEditor config={selectedStyle} onChange={handleStyleChange} />\n </>\n )}\n </div>\n );\n}\n\nexport default ColumnFormatEditor;\n"],"mappings":"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"}
|
|
@@ -5,6 +5,6 @@ export interface ConditionEditorProps {
|
|
|
5
5
|
config: ConditionConfig;
|
|
6
6
|
onChange?: (config: ConditionConfig, isValid: boolean) => void;
|
|
7
7
|
}
|
|
8
|
-
declare
|
|
8
|
+
declare function ConditionEditor(props: ConditionEditorProps): JSX.Element;
|
|
9
9
|
export default ConditionEditor;
|
|
10
10
|
//# sourceMappingURL=ConditionEditor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionEditor.d.ts","sourceRoot":"","sources":["../../../src/sidebar/conditional-formatting/ConditionEditor.tsx"],"names":[],"mappings":";AAGA,OAAO,EAOL,WAAW,EACX,eAAe,EAMhB,MAAM,8BAA8B,CAAC;AAItC,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CAChE;AAmOD,
|
|
1
|
+
{"version":3,"file":"ConditionEditor.d.ts","sourceRoot":"","sources":["../../../src/sidebar/conditional-formatting/ConditionEditor.tsx"],"names":[],"mappings":";AAGA,OAAO,EAOL,WAAW,EACX,eAAe,EAMhB,MAAM,8BAA8B,CAAC;AAItC,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CAChE;AAmOD,iBAAS,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,GAAG,CAAC,OAAO,CA6KjE;AAED,eAAe,eAAe,CAAC"}
|
|
@@ -3,9 +3,7 @@ import { TableUtils } from '@deephaven/jsapi-utils';
|
|
|
3
3
|
import Log from '@deephaven/log';
|
|
4
4
|
import { StringCondition, DateCondition, getLabelForNumberCondition, getLabelForDateCondition, getLabelForStringCondition, NumberCondition, getDefaultConditionForType, getLabelForBooleanCondition, BooleanCondition, CharCondition, getLabelForCharCondition } from "./ConditionalFormattingUtils.js";
|
|
5
5
|
var log = Log.module('ConditionEditor');
|
|
6
|
-
|
|
7
6
|
var DEFAULT_CALLBACK = () => undefined;
|
|
8
|
-
|
|
9
7
|
var numberConditionOptions = [NumberCondition.IS_EQUAL, NumberCondition.IS_NOT_EQUAL, NumberCondition.IS_BETWEEN, NumberCondition.GREATER_THAN, NumberCondition.GREATER_THAN_OR_EQUAL, NumberCondition.LESS_THAN, NumberCondition.LESS_THAN_OR_EQUAL, NumberCondition.IS_NULL, NumberCondition.IS_NOT_NULL].map(option => /*#__PURE__*/React.createElement("option", {
|
|
10
8
|
key: option,
|
|
11
9
|
value: option
|
|
@@ -26,23 +24,18 @@ var charConditions = [CharCondition.IS_EQUAL, CharCondition.IS_NOT_EQUAL, CharCo
|
|
|
26
24
|
key: option,
|
|
27
25
|
value: option
|
|
28
26
|
}, getLabelForCharCondition(option)));
|
|
29
|
-
|
|
30
27
|
function isNumberConditionValid(condition, value, startValue, endValue) {
|
|
31
28
|
if (condition === NumberCondition.IS_NULL || condition === NumberCondition.IS_NOT_NULL) {
|
|
32
29
|
return true;
|
|
33
30
|
}
|
|
34
|
-
|
|
35
31
|
if (condition === NumberCondition.IS_BETWEEN && startValue != null && startValue !== '' && !Number.isNaN(Number.parseFloat(startValue)) && endValue != null && endValue !== '' && !Number.isNaN(Number.parseFloat(endValue))) {
|
|
36
32
|
return true;
|
|
37
33
|
}
|
|
38
|
-
|
|
39
34
|
if (condition !== NumberCondition.IS_BETWEEN && value !== undefined && value !== '' && !Number.isNaN(Number.parseFloat(value))) {
|
|
40
35
|
return true;
|
|
41
36
|
}
|
|
42
|
-
|
|
43
37
|
return false;
|
|
44
38
|
}
|
|
45
|
-
|
|
46
39
|
function getNumberInputs(selectedCondition, handleValueChange, handleStartValueChange, handleEndValueChange, conditionValue, startValue, endValue) {
|
|
47
40
|
switch (selectedCondition) {
|
|
48
41
|
case NumberCondition.IS_EQUAL:
|
|
@@ -58,7 +51,6 @@ function getNumberInputs(selectedCondition, handleValueChange, handleStartValueC
|
|
|
58
51
|
value: conditionValue !== null && conditionValue !== void 0 ? conditionValue : '',
|
|
59
52
|
onChange: handleValueChange
|
|
60
53
|
});
|
|
61
|
-
|
|
62
54
|
case NumberCondition.IS_BETWEEN:
|
|
63
55
|
return /*#__PURE__*/React.createElement("div", {
|
|
64
56
|
className: "d-flex flex-row"
|
|
@@ -75,19 +67,16 @@ function getNumberInputs(selectedCondition, handleValueChange, handleStartValueC
|
|
|
75
67
|
value: endValue !== null && endValue !== void 0 ? endValue : '',
|
|
76
68
|
onChange: handleEndValueChange
|
|
77
69
|
}));
|
|
78
|
-
|
|
79
70
|
case NumberCondition.IS_NULL:
|
|
80
71
|
case NumberCondition.IS_NOT_NULL:
|
|
81
72
|
return null;
|
|
82
73
|
}
|
|
83
74
|
}
|
|
84
|
-
|
|
85
75
|
function getStringInputs(selectedCondition, handleValueChange, conditionValue) {
|
|
86
76
|
switch (selectedCondition) {
|
|
87
77
|
case StringCondition.IS_NULL:
|
|
88
78
|
case StringCondition.IS_NOT_NULL:
|
|
89
79
|
return null;
|
|
90
|
-
|
|
91
80
|
default:
|
|
92
81
|
return /*#__PURE__*/React.createElement("input", {
|
|
93
82
|
type: "text",
|
|
@@ -98,13 +87,11 @@ function getStringInputs(selectedCondition, handleValueChange, conditionValue) {
|
|
|
98
87
|
});
|
|
99
88
|
}
|
|
100
89
|
}
|
|
101
|
-
|
|
102
90
|
function getDateInputs(selectedCondition, handleValueChange, conditionValue) {
|
|
103
91
|
switch (selectedCondition) {
|
|
104
92
|
case DateCondition.IS_NULL:
|
|
105
93
|
case DateCondition.IS_NOT_NULL:
|
|
106
94
|
return null;
|
|
107
|
-
|
|
108
95
|
default:
|
|
109
96
|
return /*#__PURE__*/React.createElement("input", {
|
|
110
97
|
type: "text",
|
|
@@ -115,17 +102,14 @@ function getDateInputs(selectedCondition, handleValueChange, conditionValue) {
|
|
|
115
102
|
});
|
|
116
103
|
}
|
|
117
104
|
}
|
|
118
|
-
|
|
119
105
|
function getBooleanInputs() {
|
|
120
106
|
return null;
|
|
121
107
|
}
|
|
122
|
-
|
|
123
108
|
function getCharInputs(selectedCondition, handleValueChange, conditionValue) {
|
|
124
109
|
switch (selectedCondition) {
|
|
125
110
|
case CharCondition.IS_NULL:
|
|
126
111
|
case CharCondition.IS_NOT_NULL:
|
|
127
112
|
return null;
|
|
128
|
-
|
|
129
113
|
default:
|
|
130
114
|
return /*#__PURE__*/React.createElement("input", {
|
|
131
115
|
type: "text",
|
|
@@ -137,8 +121,7 @@ function getCharInputs(selectedCondition, handleValueChange, conditionValue) {
|
|
|
137
121
|
});
|
|
138
122
|
}
|
|
139
123
|
}
|
|
140
|
-
|
|
141
|
-
var ConditionEditor = props => {
|
|
124
|
+
function ConditionEditor(props) {
|
|
142
125
|
var {
|
|
143
126
|
column,
|
|
144
127
|
config,
|
|
@@ -150,7 +133,6 @@ var ConditionEditor = props => {
|
|
|
150
133
|
var [conditionValue, setValue] = useState(config.value);
|
|
151
134
|
var [startValue, setStartValue] = useState(config.start);
|
|
152
135
|
var [endValue, setEndValue] = useState(config.end);
|
|
153
|
-
|
|
154
136
|
if (selectedColumnType !== prevColumnType) {
|
|
155
137
|
// Column type changed, reset condition and value fields
|
|
156
138
|
setCondition(getDefaultConditionForType(selectedColumnType));
|
|
@@ -159,28 +141,22 @@ var ConditionEditor = props => {
|
|
|
159
141
|
setEndValue(undefined);
|
|
160
142
|
setPrevColumnType(selectedColumnType);
|
|
161
143
|
}
|
|
162
|
-
|
|
163
144
|
var conditions = useMemo(() => {
|
|
164
145
|
if (selectedColumnType === undefined) {
|
|
165
146
|
return [];
|
|
166
147
|
}
|
|
167
|
-
|
|
168
148
|
if (TableUtils.isNumberType(selectedColumnType)) {
|
|
169
149
|
return numberConditionOptions;
|
|
170
150
|
}
|
|
171
|
-
|
|
172
151
|
if (TableUtils.isCharType(selectedColumnType)) {
|
|
173
152
|
return charConditions;
|
|
174
153
|
}
|
|
175
|
-
|
|
176
154
|
if (TableUtils.isStringType(selectedColumnType)) {
|
|
177
155
|
return stringConditions;
|
|
178
156
|
}
|
|
179
|
-
|
|
180
157
|
if (TableUtils.isDateType(selectedColumnType)) {
|
|
181
158
|
return dateConditions;
|
|
182
159
|
}
|
|
183
|
-
|
|
184
160
|
if (TableUtils.isBooleanType(selectedColumnType)) {
|
|
185
161
|
return booleanConditions;
|
|
186
162
|
}
|
|
@@ -215,17 +191,14 @@ var ConditionEditor = props => {
|
|
|
215
191
|
}, []);
|
|
216
192
|
useEffect(function changeCondition() {
|
|
217
193
|
var isValid = true;
|
|
218
|
-
|
|
219
194
|
if (selectedCondition === undefined) {
|
|
220
195
|
log.debug('Unable to create formatting rule. Condition is not selected.');
|
|
221
196
|
isValid = false;
|
|
222
197
|
}
|
|
223
|
-
|
|
224
198
|
if (TableUtils.isNumberType(column.type) && !isNumberConditionValid(selectedCondition, conditionValue, startValue, endValue)) {
|
|
225
199
|
log.debug('Unable to create formatting rule. Invalid value', conditionValue);
|
|
226
200
|
isValid = false;
|
|
227
201
|
}
|
|
228
|
-
|
|
229
202
|
onChange({
|
|
230
203
|
condition: selectedCondition,
|
|
231
204
|
value: conditionValue,
|
|
@@ -238,23 +211,18 @@ var ConditionEditor = props => {
|
|
|
238
211
|
// Column not selected
|
|
239
212
|
return null;
|
|
240
213
|
}
|
|
241
|
-
|
|
242
214
|
if (TableUtils.isNumberType(selectedColumnType)) {
|
|
243
215
|
return getNumberInputs(selectedCondition, handleValueChange, handleStartValueChange, handleEndValueChange, conditionValue, startValue, endValue);
|
|
244
216
|
}
|
|
245
|
-
|
|
246
217
|
if (TableUtils.isCharType(selectedColumnType)) {
|
|
247
218
|
return getCharInputs(selectedCondition, handleValueChange, conditionValue);
|
|
248
219
|
}
|
|
249
|
-
|
|
250
220
|
if (TableUtils.isStringType(selectedColumnType)) {
|
|
251
221
|
return getStringInputs(selectedCondition, handleValueChange, conditionValue);
|
|
252
222
|
}
|
|
253
|
-
|
|
254
223
|
if (TableUtils.isDateType(selectedColumnType)) {
|
|
255
224
|
return getDateInputs(selectedCondition, handleValueChange, conditionValue);
|
|
256
225
|
}
|
|
257
|
-
|
|
258
226
|
if (TableUtils.isBooleanType(selectedColumnType)) {
|
|
259
227
|
return getBooleanInputs();
|
|
260
228
|
}
|
|
@@ -267,7 +235,6 @@ var ConditionEditor = props => {
|
|
|
267
235
|
className: "custom-select mb-2",
|
|
268
236
|
onChange: handleConditionChange
|
|
269
237
|
}, conditions), conditionInputs);
|
|
270
|
-
}
|
|
271
|
-
|
|
238
|
+
}
|
|
272
239
|
export default ConditionEditor;
|
|
273
240
|
//# sourceMappingURL=ConditionEditor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionEditor.js","names":["React","useCallback","useEffect","useMemo","useState","TableUtils","Log","StringCondition","DateCondition","getLabelForNumberCondition","getLabelForDateCondition","getLabelForStringCondition","NumberCondition","getDefaultConditionForType","getLabelForBooleanCondition","BooleanCondition","CharCondition","getLabelForCharCondition","log","module","DEFAULT_CALLBACK","undefined","numberConditionOptions","IS_EQUAL","IS_NOT_EQUAL","IS_BETWEEN","GREATER_THAN","GREATER_THAN_OR_EQUAL","LESS_THAN","LESS_THAN_OR_EQUAL","IS_NULL","IS_NOT_NULL","map","option","stringConditions","IS_EXACTLY","IS_NOT_EXACTLY","CONTAINS","DOES_NOT_CONTAIN","STARTS_WITH","ENDS_WITH","dateConditions","IS_BEFORE","IS_BEFORE_OR_EQUAL","IS_AFTER","IS_AFTER_OR_EQUAL","booleanConditions","IS_TRUE","IS_FALSE","charConditions","isNumberConditionValid","condition","value","startValue","endValue","Number","isNaN","parseFloat","getNumberInputs","selectedCondition","handleValueChange","handleStartValueChange","handleEndValueChange","conditionValue","getStringInputs","getDateInputs","getBooleanInputs","getCharInputs","ConditionEditor","props","column","config","onChange","selectedColumnType","type","prevColumnType","setPrevColumnType","setCondition","setValue","setStartValue","start","setEndValue","end","conditions","isNumberType","isCharType","isStringType","isDateType","isBooleanType","handleConditionChange","e","target","debug","changeCondition","isValid","conditionInputs"],"sources":["../../../src/sidebar/conditional-formatting/ConditionEditor.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport {\n StringCondition,\n DateCondition,\n getLabelForNumberCondition,\n getLabelForDateCondition,\n getLabelForStringCondition,\n NumberCondition,\n ModelColumn,\n ConditionConfig,\n getDefaultConditionForType,\n getLabelForBooleanCondition,\n BooleanCondition,\n CharCondition,\n getLabelForCharCondition,\n} from './ConditionalFormattingUtils';\n\nconst log = Log.module('ConditionEditor');\n\nexport interface ConditionEditorProps {\n column: ModelColumn;\n config: ConditionConfig;\n onChange?: (config: ConditionConfig, isValid: boolean) => void;\n}\n\nconst DEFAULT_CALLBACK = () => undefined;\n\nconst numberConditionOptions = [\n NumberCondition.IS_EQUAL,\n NumberCondition.IS_NOT_EQUAL,\n NumberCondition.IS_BETWEEN,\n NumberCondition.GREATER_THAN,\n NumberCondition.GREATER_THAN_OR_EQUAL,\n NumberCondition.LESS_THAN,\n NumberCondition.LESS_THAN_OR_EQUAL,\n NumberCondition.IS_NULL,\n NumberCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForNumberCondition(option)}\n </option>\n));\n\nconst stringConditions = [\n StringCondition.IS_EXACTLY,\n StringCondition.IS_NOT_EXACTLY,\n StringCondition.CONTAINS,\n StringCondition.DOES_NOT_CONTAIN,\n StringCondition.STARTS_WITH,\n StringCondition.ENDS_WITH,\n StringCondition.IS_NULL,\n StringCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForStringCondition(option)}\n </option>\n));\n\nconst dateConditions = [\n DateCondition.IS_EXACTLY,\n DateCondition.IS_NOT_EXACTLY,\n DateCondition.IS_BEFORE,\n DateCondition.IS_BEFORE_OR_EQUAL,\n DateCondition.IS_AFTER,\n DateCondition.IS_AFTER_OR_EQUAL,\n DateCondition.IS_NULL,\n DateCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForDateCondition(option)}\n </option>\n));\n\nconst booleanConditions = [\n BooleanCondition.IS_TRUE,\n BooleanCondition.IS_FALSE,\n BooleanCondition.IS_NULL,\n BooleanCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForBooleanCondition(option)}\n </option>\n));\n\nconst charConditions = [\n CharCondition.IS_EQUAL,\n CharCondition.IS_NOT_EQUAL,\n CharCondition.IS_NULL,\n CharCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForCharCondition(option)}\n </option>\n));\n\nfunction isNumberConditionValid(\n condition: NumberCondition,\n value?: string,\n startValue?: string,\n endValue?: string\n) {\n if (\n condition === NumberCondition.IS_NULL ||\n condition === NumberCondition.IS_NOT_NULL\n ) {\n return true;\n }\n if (\n condition === NumberCondition.IS_BETWEEN &&\n startValue != null &&\n startValue !== '' &&\n !Number.isNaN(Number.parseFloat(startValue)) &&\n endValue != null &&\n endValue !== '' &&\n !Number.isNaN(Number.parseFloat(endValue))\n ) {\n return true;\n }\n if (\n condition !== NumberCondition.IS_BETWEEN &&\n value !== undefined &&\n value !== '' &&\n !Number.isNaN(Number.parseFloat(value))\n ) {\n return true;\n }\n return false;\n}\n\nfunction getNumberInputs(\n selectedCondition: NumberCondition,\n handleValueChange: (e: unknown) => void,\n handleStartValueChange: (e: unknown) => void,\n handleEndValueChange: (e: unknown) => void,\n conditionValue?: string,\n startValue?: string,\n endValue?: string\n) {\n switch (selectedCondition) {\n case NumberCondition.IS_EQUAL:\n case NumberCondition.IS_NOT_EQUAL:\n case NumberCondition.GREATER_THAN:\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n case NumberCondition.LESS_THAN:\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return (\n <input\n type=\"number\"\n className=\"form-control\"\n placeholder=\"Enter value\"\n value={conditionValue ?? ''}\n onChange={handleValueChange}\n />\n );\n case NumberCondition.IS_BETWEEN:\n return (\n <div className=\"d-flex flex-row\">\n <input\n type=\"number\"\n className=\"form-control d-flex mr-2\"\n placeholder=\"Start value\"\n value={startValue ?? ''}\n onChange={handleStartValueChange}\n />\n <input\n type=\"number\"\n className=\"form-control d-flex\"\n placeholder=\"End value\"\n value={endValue ?? ''}\n onChange={handleEndValueChange}\n />\n </div>\n );\n case NumberCondition.IS_NULL:\n case NumberCondition.IS_NOT_NULL:\n return null;\n }\n}\n\nfunction getStringInputs(\n selectedCondition: StringCondition,\n handleValueChange: (e: unknown) => void,\n conditionValue?: string\n) {\n switch (selectedCondition) {\n case StringCondition.IS_NULL:\n case StringCondition.IS_NOT_NULL:\n return null;\n default:\n return (\n <input\n type=\"text\"\n className=\"form-control\"\n placeholder=\"Enter value\"\n value={conditionValue ?? ''}\n onChange={handleValueChange}\n />\n );\n }\n}\n\nfunction getDateInputs(\n selectedCondition: DateCondition,\n handleValueChange: (e: unknown) => void,\n conditionValue?: string\n) {\n switch (selectedCondition) {\n case DateCondition.IS_NULL:\n case DateCondition.IS_NOT_NULL:\n return null;\n default:\n return (\n <input\n type=\"text\"\n className=\"form-control\"\n placeholder=\"Enter value\"\n value={conditionValue ?? ''}\n onChange={handleValueChange}\n />\n );\n }\n}\n\nfunction getBooleanInputs() {\n return null;\n}\n\nfunction getCharInputs(\n selectedCondition: CharCondition,\n handleValueChange: (e: unknown) => void,\n conditionValue?: string\n) {\n switch (selectedCondition) {\n case CharCondition.IS_NULL:\n case CharCondition.IS_NOT_NULL:\n return null;\n default:\n return (\n <input\n type=\"text\"\n className=\"form-control\"\n maxLength={1}\n placeholder=\"Enter value\"\n value={conditionValue ?? ''}\n onChange={handleValueChange}\n />\n );\n }\n}\n\nconst ConditionEditor = (props: ConditionEditorProps): JSX.Element => {\n const { column, config, onChange = DEFAULT_CALLBACK } = props;\n const selectedColumnType = column.type;\n const [prevColumnType, setPrevColumnType] = useState(selectedColumnType);\n const [selectedCondition, setCondition] = useState(config.condition);\n const [conditionValue, setValue] = useState(config.value);\n const [startValue, setStartValue] = useState(config.start);\n const [endValue, setEndValue] = useState(config.end);\n\n if (selectedColumnType !== prevColumnType) {\n // Column type changed, reset condition and value fields\n setCondition(getDefaultConditionForType(selectedColumnType));\n setValue(undefined);\n setStartValue(undefined);\n setEndValue(undefined);\n setPrevColumnType(selectedColumnType);\n }\n\n const conditions = useMemo(() => {\n if (selectedColumnType === undefined) {\n return [];\n }\n if (TableUtils.isNumberType(selectedColumnType)) {\n return numberConditionOptions;\n }\n if (TableUtils.isCharType(selectedColumnType)) {\n return charConditions;\n }\n if (TableUtils.isStringType(selectedColumnType)) {\n return stringConditions;\n }\n if (TableUtils.isDateType(selectedColumnType)) {\n return dateConditions;\n }\n if (TableUtils.isBooleanType(selectedColumnType)) {\n return booleanConditions;\n }\n }, [selectedColumnType]);\n\n const handleConditionChange = useCallback(e => {\n const { value } = e.target;\n log.debug('handleConditionChange', value);\n setCondition(value);\n }, []);\n\n const handleValueChange = useCallback(e => {\n const { value } = e.target;\n log.debug('handleValueChange', value);\n setValue(value);\n }, []);\n\n const handleStartValueChange = useCallback(e => {\n const { value } = e.target;\n log.debug('handleStartValueChange', value);\n setStartValue(value);\n }, []);\n\n const handleEndValueChange = useCallback(e => {\n const { value } = e.target;\n log.debug('handleEndValueChange', value);\n setEndValue(value);\n }, []);\n\n useEffect(\n function changeCondition() {\n let isValid = true;\n\n if (selectedCondition === undefined) {\n log.debug(\n 'Unable to create formatting rule. Condition is not selected.'\n );\n isValid = false;\n }\n\n if (\n TableUtils.isNumberType(column.type) &&\n !isNumberConditionValid(\n selectedCondition as NumberCondition,\n conditionValue,\n startValue,\n endValue\n )\n ) {\n log.debug(\n 'Unable to create formatting rule. Invalid value',\n conditionValue\n );\n isValid = false;\n }\n onChange(\n {\n condition: selectedCondition,\n value: conditionValue,\n start: startValue,\n end: endValue,\n },\n isValid\n );\n },\n [\n onChange,\n column.type,\n selectedCondition,\n conditionValue,\n startValue,\n endValue,\n ]\n );\n\n const conditionInputs = useMemo(() => {\n if (selectedColumnType === undefined) {\n // Column not selected\n return null;\n }\n if (TableUtils.isNumberType(selectedColumnType)) {\n return getNumberInputs(\n selectedCondition as NumberCondition,\n handleValueChange,\n handleStartValueChange,\n handleEndValueChange,\n conditionValue,\n startValue,\n endValue\n );\n }\n if (TableUtils.isCharType(selectedColumnType)) {\n return getCharInputs(\n selectedCondition as CharCondition,\n handleValueChange,\n conditionValue\n );\n }\n if (TableUtils.isStringType(selectedColumnType)) {\n return getStringInputs(\n selectedCondition as StringCondition,\n handleValueChange,\n conditionValue\n );\n }\n if (TableUtils.isDateType(selectedColumnType)) {\n return getDateInputs(\n selectedCondition as DateCondition,\n handleValueChange,\n conditionValue\n );\n }\n if (TableUtils.isBooleanType(selectedColumnType)) {\n return getBooleanInputs();\n }\n }, [\n selectedColumnType,\n selectedCondition,\n conditionValue,\n startValue,\n endValue,\n handleValueChange,\n handleStartValueChange,\n handleEndValueChange,\n ]);\n\n return (\n <div className=\"condition-editor mb-2\">\n <select\n value={selectedCondition}\n id=\"condition-select\"\n className=\"custom-select mb-2\"\n onChange={handleConditionChange}\n >\n {conditions}\n </select>\n {conditionInputs}\n </div>\n );\n};\n\nexport default ConditionEditor;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConditionEditor.js","names":["React","useCallback","useEffect","useMemo","useState","TableUtils","Log","StringCondition","DateCondition","getLabelForNumberCondition","getLabelForDateCondition","getLabelForStringCondition","NumberCondition","getDefaultConditionForType","getLabelForBooleanCondition","BooleanCondition","CharCondition","getLabelForCharCondition","log","module","DEFAULT_CALLBACK","undefined","numberConditionOptions","IS_EQUAL","IS_NOT_EQUAL","IS_BETWEEN","GREATER_THAN","GREATER_THAN_OR_EQUAL","LESS_THAN","LESS_THAN_OR_EQUAL","IS_NULL","IS_NOT_NULL","map","option","stringConditions","IS_EXACTLY","IS_NOT_EXACTLY","CONTAINS","DOES_NOT_CONTAIN","STARTS_WITH","ENDS_WITH","dateConditions","IS_BEFORE","IS_BEFORE_OR_EQUAL","IS_AFTER","IS_AFTER_OR_EQUAL","booleanConditions","IS_TRUE","IS_FALSE","charConditions","isNumberConditionValid","condition","value","startValue","endValue","Number","isNaN","parseFloat","getNumberInputs","selectedCondition","handleValueChange","handleStartValueChange","handleEndValueChange","conditionValue","getStringInputs","getDateInputs","getBooleanInputs","getCharInputs","ConditionEditor","props","column","config","onChange","selectedColumnType","type","prevColumnType","setPrevColumnType","setCondition","setValue","setStartValue","start","setEndValue","end","conditions","isNumberType","isCharType","isStringType","isDateType","isBooleanType","handleConditionChange","e","target","debug","changeCondition","isValid","conditionInputs"],"sources":["../../../src/sidebar/conditional-formatting/ConditionEditor.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport {\n StringCondition,\n DateCondition,\n getLabelForNumberCondition,\n getLabelForDateCondition,\n getLabelForStringCondition,\n NumberCondition,\n ModelColumn,\n ConditionConfig,\n getDefaultConditionForType,\n getLabelForBooleanCondition,\n BooleanCondition,\n CharCondition,\n getLabelForCharCondition,\n} from './ConditionalFormattingUtils';\n\nconst log = Log.module('ConditionEditor');\n\nexport interface ConditionEditorProps {\n column: ModelColumn;\n config: ConditionConfig;\n onChange?: (config: ConditionConfig, isValid: boolean) => void;\n}\n\nconst DEFAULT_CALLBACK = () => undefined;\n\nconst numberConditionOptions = [\n NumberCondition.IS_EQUAL,\n NumberCondition.IS_NOT_EQUAL,\n NumberCondition.IS_BETWEEN,\n NumberCondition.GREATER_THAN,\n NumberCondition.GREATER_THAN_OR_EQUAL,\n NumberCondition.LESS_THAN,\n NumberCondition.LESS_THAN_OR_EQUAL,\n NumberCondition.IS_NULL,\n NumberCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForNumberCondition(option)}\n </option>\n));\n\nconst stringConditions = [\n StringCondition.IS_EXACTLY,\n StringCondition.IS_NOT_EXACTLY,\n StringCondition.CONTAINS,\n StringCondition.DOES_NOT_CONTAIN,\n StringCondition.STARTS_WITH,\n StringCondition.ENDS_WITH,\n StringCondition.IS_NULL,\n StringCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForStringCondition(option)}\n </option>\n));\n\nconst dateConditions = [\n DateCondition.IS_EXACTLY,\n DateCondition.IS_NOT_EXACTLY,\n DateCondition.IS_BEFORE,\n DateCondition.IS_BEFORE_OR_EQUAL,\n DateCondition.IS_AFTER,\n DateCondition.IS_AFTER_OR_EQUAL,\n DateCondition.IS_NULL,\n DateCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForDateCondition(option)}\n </option>\n));\n\nconst booleanConditions = [\n BooleanCondition.IS_TRUE,\n BooleanCondition.IS_FALSE,\n BooleanCondition.IS_NULL,\n BooleanCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForBooleanCondition(option)}\n </option>\n));\n\nconst charConditions = [\n CharCondition.IS_EQUAL,\n CharCondition.IS_NOT_EQUAL,\n CharCondition.IS_NULL,\n CharCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForCharCondition(option)}\n </option>\n));\n\nfunction isNumberConditionValid(\n condition: NumberCondition,\n value?: string,\n startValue?: string,\n endValue?: string\n) {\n if (\n condition === NumberCondition.IS_NULL ||\n condition === NumberCondition.IS_NOT_NULL\n ) {\n return true;\n }\n if (\n condition === NumberCondition.IS_BETWEEN &&\n startValue != null &&\n startValue !== '' &&\n !Number.isNaN(Number.parseFloat(startValue)) &&\n endValue != null &&\n endValue !== '' &&\n !Number.isNaN(Number.parseFloat(endValue))\n ) {\n return true;\n }\n if (\n condition !== NumberCondition.IS_BETWEEN &&\n value !== undefined &&\n value !== '' &&\n !Number.isNaN(Number.parseFloat(value))\n ) {\n return true;\n }\n return false;\n}\n\nfunction getNumberInputs(\n selectedCondition: NumberCondition,\n handleValueChange: (e: unknown) => void,\n handleStartValueChange: (e: unknown) => void,\n handleEndValueChange: (e: unknown) => void,\n conditionValue?: string,\n startValue?: string,\n endValue?: string\n) {\n switch (selectedCondition) {\n case NumberCondition.IS_EQUAL:\n case NumberCondition.IS_NOT_EQUAL:\n case NumberCondition.GREATER_THAN:\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n case NumberCondition.LESS_THAN:\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return (\n <input\n type=\"number\"\n className=\"form-control\"\n placeholder=\"Enter value\"\n value={conditionValue ?? ''}\n onChange={handleValueChange}\n />\n );\n case NumberCondition.IS_BETWEEN:\n return (\n <div className=\"d-flex flex-row\">\n <input\n type=\"number\"\n className=\"form-control d-flex mr-2\"\n placeholder=\"Start value\"\n value={startValue ?? ''}\n onChange={handleStartValueChange}\n />\n <input\n type=\"number\"\n className=\"form-control d-flex\"\n placeholder=\"End value\"\n value={endValue ?? ''}\n onChange={handleEndValueChange}\n />\n </div>\n );\n case NumberCondition.IS_NULL:\n case NumberCondition.IS_NOT_NULL:\n return null;\n }\n}\n\nfunction getStringInputs(\n selectedCondition: StringCondition,\n handleValueChange: (e: unknown) => void,\n conditionValue?: string\n) {\n switch (selectedCondition) {\n case StringCondition.IS_NULL:\n case StringCondition.IS_NOT_NULL:\n return null;\n default:\n return (\n <input\n type=\"text\"\n className=\"form-control\"\n placeholder=\"Enter value\"\n value={conditionValue ?? ''}\n onChange={handleValueChange}\n />\n );\n }\n}\n\nfunction getDateInputs(\n selectedCondition: DateCondition,\n handleValueChange: (e: unknown) => void,\n conditionValue?: string\n) {\n switch (selectedCondition) {\n case DateCondition.IS_NULL:\n case DateCondition.IS_NOT_NULL:\n return null;\n default:\n return (\n <input\n type=\"text\"\n className=\"form-control\"\n placeholder=\"Enter value\"\n value={conditionValue ?? ''}\n onChange={handleValueChange}\n />\n );\n }\n}\n\nfunction getBooleanInputs() {\n return null;\n}\n\nfunction getCharInputs(\n selectedCondition: CharCondition,\n handleValueChange: (e: unknown) => void,\n conditionValue?: string\n) {\n switch (selectedCondition) {\n case CharCondition.IS_NULL:\n case CharCondition.IS_NOT_NULL:\n return null;\n default:\n return (\n <input\n type=\"text\"\n className=\"form-control\"\n maxLength={1}\n placeholder=\"Enter value\"\n value={conditionValue ?? ''}\n onChange={handleValueChange}\n />\n );\n }\n}\n\nfunction ConditionEditor(props: ConditionEditorProps): JSX.Element {\n const { column, config, onChange = DEFAULT_CALLBACK } = props;\n const selectedColumnType = column.type;\n const [prevColumnType, setPrevColumnType] = useState(selectedColumnType);\n const [selectedCondition, setCondition] = useState(config.condition);\n const [conditionValue, setValue] = useState(config.value);\n const [startValue, setStartValue] = useState(config.start);\n const [endValue, setEndValue] = useState(config.end);\n\n if (selectedColumnType !== prevColumnType) {\n // Column type changed, reset condition and value fields\n setCondition(getDefaultConditionForType(selectedColumnType));\n setValue(undefined);\n setStartValue(undefined);\n setEndValue(undefined);\n setPrevColumnType(selectedColumnType);\n }\n\n const conditions = useMemo(() => {\n if (selectedColumnType === undefined) {\n return [];\n }\n if (TableUtils.isNumberType(selectedColumnType)) {\n return numberConditionOptions;\n }\n if (TableUtils.isCharType(selectedColumnType)) {\n return charConditions;\n }\n if (TableUtils.isStringType(selectedColumnType)) {\n return stringConditions;\n }\n if (TableUtils.isDateType(selectedColumnType)) {\n return dateConditions;\n }\n if (TableUtils.isBooleanType(selectedColumnType)) {\n return booleanConditions;\n }\n }, [selectedColumnType]);\n\n const handleConditionChange = useCallback(e => {\n const { value } = e.target;\n log.debug('handleConditionChange', value);\n setCondition(value);\n }, []);\n\n const handleValueChange = useCallback(e => {\n const { value } = e.target;\n log.debug('handleValueChange', value);\n setValue(value);\n }, []);\n\n const handleStartValueChange = useCallback(e => {\n const { value } = e.target;\n log.debug('handleStartValueChange', value);\n setStartValue(value);\n }, []);\n\n const handleEndValueChange = useCallback(e => {\n const { value } = e.target;\n log.debug('handleEndValueChange', value);\n setEndValue(value);\n }, []);\n\n useEffect(\n function changeCondition() {\n let isValid = true;\n\n if (selectedCondition === undefined) {\n log.debug(\n 'Unable to create formatting rule. Condition is not selected.'\n );\n isValid = false;\n }\n\n if (\n TableUtils.isNumberType(column.type) &&\n !isNumberConditionValid(\n selectedCondition as NumberCondition,\n conditionValue,\n startValue,\n endValue\n )\n ) {\n log.debug(\n 'Unable to create formatting rule. Invalid value',\n conditionValue\n );\n isValid = false;\n }\n onChange(\n {\n condition: selectedCondition,\n value: conditionValue,\n start: startValue,\n end: endValue,\n },\n isValid\n );\n },\n [\n onChange,\n column.type,\n selectedCondition,\n conditionValue,\n startValue,\n endValue,\n ]\n );\n\n const conditionInputs = useMemo(() => {\n if (selectedColumnType === undefined) {\n // Column not selected\n return null;\n }\n if (TableUtils.isNumberType(selectedColumnType)) {\n return getNumberInputs(\n selectedCondition as NumberCondition,\n handleValueChange,\n handleStartValueChange,\n handleEndValueChange,\n conditionValue,\n startValue,\n endValue\n );\n }\n if (TableUtils.isCharType(selectedColumnType)) {\n return getCharInputs(\n selectedCondition as CharCondition,\n handleValueChange,\n conditionValue\n );\n }\n if (TableUtils.isStringType(selectedColumnType)) {\n return getStringInputs(\n selectedCondition as StringCondition,\n handleValueChange,\n conditionValue\n );\n }\n if (TableUtils.isDateType(selectedColumnType)) {\n return getDateInputs(\n selectedCondition as DateCondition,\n handleValueChange,\n conditionValue\n );\n }\n if (TableUtils.isBooleanType(selectedColumnType)) {\n return getBooleanInputs();\n }\n }, [\n selectedColumnType,\n selectedCondition,\n conditionValue,\n startValue,\n endValue,\n handleValueChange,\n handleStartValueChange,\n handleEndValueChange,\n ]);\n\n return (\n <div className=\"condition-editor mb-2\">\n <select\n value={selectedCondition}\n id=\"condition-select\"\n className=\"custom-select mb-2\"\n onChange={handleConditionChange}\n >\n {conditions}\n </select>\n {conditionInputs}\n </div>\n );\n}\n\nexport default ConditionEditor;\n"],"mappings":"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"}
|
|
@@ -11,6 +11,6 @@ export interface ConditionalFormatEditorProps {
|
|
|
11
11
|
onSave?: SaveCallback;
|
|
12
12
|
onUpdate?: UpdateCallback;
|
|
13
13
|
}
|
|
14
|
-
declare
|
|
14
|
+
declare function ConditionalFormatEditor(props: ConditionalFormatEditorProps): JSX.Element;
|
|
15
15
|
export default ConditionalFormatEditor;
|
|
16
16
|
//# sourceMappingURL=ConditionalFormatEditor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionalFormatEditor.d.ts","sourceRoot":"","sources":["../../../src/sidebar/conditional-formatting/ConditionalFormatEditor.tsx"],"names":[],"mappings":";AAOA,OAAO,EAGL,cAAc,EAEd,WAAW,EACZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,gCAAgC,CAAC;AAIxC,oBAAY,YAAY,GAAG,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;AAE1D,oBAAY,cAAc,GAAG,CAAC,IAAI,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;AAE7D,oBAAY,cAAc,GAAG,MAAM,IAAI,CAAC;AAExC,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAwBD,
|
|
1
|
+
{"version":3,"file":"ConditionalFormatEditor.d.ts","sourceRoot":"","sources":["../../../src/sidebar/conditional-formatting/ConditionalFormatEditor.tsx"],"names":[],"mappings":";AAOA,OAAO,EAGL,cAAc,EAEd,WAAW,EACZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,gCAAgC,CAAC;AAIxC,oBAAY,YAAY,GAAG,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;AAE1D,oBAAY,cAAc,GAAG,CAAC,IAAI,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;AAE7D,oBAAY,cAAc,GAAG,MAAM,IAAI,CAAC;AAExC,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAwBD,iBAAS,uBAAuB,CAC9B,KAAK,EAAE,4BAA4B,GAClC,GAAG,CAAC,OAAO,CAsGb;AAED,eAAe,uBAAuB,CAAC"}
|