@deephaven/iris-grid 0.22.3-beta.18 → 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 +11 -5
- 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.js +7 -86
- package/dist/IrisGridTableModel.js.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 +8 -2
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +97 -195
- 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.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.js +10 -123
- package/dist/sidebar/TableSaver.js.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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RollupRows.js","names":["React","Component","classNames","FontAwesomeIcon","DragDropContext","Droppable","Checkbox","DraggableItemList","DragUtils","SearchInput","Tooltip","Button","vsTrash","dhSortAlphaDown","dhSortAlphaUp","TableUtils","memoize","debounce","Log","assertNotNull","log","module","DEBOUNCE_SEARCH","GROUPED_LIST_ID","UNGROUPED_LIST_ID","RollupRows","renderColumn","item","isClone","selectedCount","text","name","badgeText","undefined","className","renderTextItem","addGroupings","currentGroupings","newGroupings","index","length","insertIndex","groupings","filter","grouping","i","includes","splice","isGroupable","column","isDecimalType","type","constructor","props","searchFilter","columns","getSortedUngroupedColumns","selectedRanges","focusIndex","toLowerCase","push","setState","ungroupedSelectedRanges","ungroupedList","current","scrollToItem","groupedColumns","find","sort","sortColumns","SORT","ASCENDING","handleDeleteClicked","bind","handleSearchChange","handleUngroupedSelect","handleUngroupedSelectionChange","handleDragStart","handleDragEnd","handleGroupedSelectionChange","handleShowConstituentsChange","handleShowNonAggregatedColumnsChange","handleSortAscending","handleSortDescending","renderGroupedItem","createRef","groupedList","config","showConstituents","showNonAggregatedColumns","state","groupedSelectedRanges","dragSource","componentDidUpdate","prevProps","prevState","updateFromConfig","sendChange","componentWillUnmount","search","cancel","event","target","value","resetSelection","DESCENDING","e","debug","document","documentElement","classList","add","source","remove","destination","droppableId","newColumns","reorder","isSameList","destinationIndex","sourceItems","map","c","sourceRanges","draggedItems","adjustDestinationIndex","newSelectedRanges","itemIndex","debug2","stateUngroupedSelectedRanges","stateGroupedSelectedRanges","slice","onChange","getUngroupedColumns","model","originalColumns","getCachedUngroupedColumns","getCachedSortedColumns","indent","repeat","render","ungroupedColumns","groupListHeight","DEFAULT_ROW_HEIGHT","ungroupMaxListHeight","ungroupMinListHeight","Math","min","provided","snapshot","draggingFromThisWith","isDraggingOver","draggingOverWith","innerRef","droppableProps","height","active","maxHeight","minHeight","Object","freeze"],"sources":["../../src/sidebar/RollupRows.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React, { ChangeEvent, Component, ReactElement, RefObject } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n DragDropContext,\n DraggableLocation,\n DragStart,\n Droppable,\n DropResult,\n} from 'react-beautiful-dnd';\nimport {\n Checkbox,\n DraggableItemList,\n DragUtils,\n SearchInput,\n Tooltip,\n Range,\n RenderItemProps,\n Button,\n} from '@deephaven/components';\nimport { vsTrash, dhSortAlphaDown, dhSortAlphaUp } from '@deephaven/icons';\nimport { TableUtils, SortDirection } from '@deephaven/jsapi-utils';\nimport memoize from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport { assertNotNull } from '@deephaven/utils';\nimport './RollupRows.scss';\nimport { Column } from '@deephaven/jsapi-shim';\nimport IrisGridModel from '../IrisGridModel';\nimport { ColumnName } from '../CommonTypes';\n\nconst log = Log.module('RollupRows');\nconst DEBOUNCE_SEARCH = 150;\nconst GROUPED_LIST_ID = 'grouped-rollup-rows';\nconst UNGROUPED_LIST_ID = 'ungrouped-rollup-rows';\n\nexport interface UIRollupConfig {\n columns: ColumnName[];\n showConstituents: boolean;\n showNonAggregatedColumns: boolean;\n includeDescriptions: true;\n}\n\ninterface RollupRowsProps {\n model: IrisGridModel;\n onChange: (rollupConfig: UIRollupConfig) => void;\n config: UIRollupConfig | null;\n}\n\ninterface RollupRowsState {\n ungroupedSelectedRanges: Range[];\n columns: ColumnName[];\n groupedSelectedRanges: Range[];\n searchFilter: string;\n showConstituents: boolean;\n showNonAggregatedColumns: boolean;\n dragSource: DraggableLocation | null;\n sort: SortDirection;\n}\n\nclass RollupRows extends Component<RollupRowsProps, RollupRowsState> {\n static SORT = Object.freeze({\n ASCENDING: 'ASC',\n DESCENDING: 'DESC',\n });\n\n static defaultProps = {\n config: null,\n onChange: (): void => undefined,\n };\n\n static renderColumn({\n item,\n isClone,\n selectedCount,\n }: RenderItemProps<Column> & {\n isClone?: boolean;\n selectedCount?: number;\n }): ReactElement {\n const text = item?.name;\n const badgeText =\n isClone !== undefined && isClone ? `${selectedCount}` : undefined;\n const className =\n isClone !== undefined && isClone ? 'item-list-item-clone' : '';\n return DraggableItemList.renderTextItem({ text, badgeText, className });\n }\n\n static addGroupings(\n currentGroupings: string[],\n newGroupings: string[],\n index: number = currentGroupings.length\n ): string[] {\n if (newGroupings == null || newGroupings.length === 0) {\n return currentGroupings;\n }\n\n let insertIndex = index;\n const groupings = currentGroupings.filter((grouping, i) => {\n if (newGroupings.includes(grouping)) {\n if (i < insertIndex) {\n insertIndex -= 1;\n }\n return false;\n }\n return true;\n });\n groupings.splice(insertIndex, 0, ...newGroupings);\n return groupings;\n }\n\n static isGroupable(column: Column): boolean {\n return !TableUtils.isDecimalType(column.type);\n }\n\n constructor(props: RollupRowsProps) {\n super(props);\n\n this.handleDeleteClicked = this.handleDeleteClicked.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleUngroupedSelect = this.handleUngroupedSelect.bind(this);\n this.handleUngroupedSelectionChange = this.handleUngroupedSelectionChange.bind(\n this\n );\n this.handleDragStart = this.handleDragStart.bind(this);\n this.handleDragEnd = this.handleDragEnd.bind(this);\n this.handleGroupedSelectionChange = this.handleGroupedSelectionChange.bind(\n this\n );\n this.handleShowConstituentsChange = this.handleShowConstituentsChange.bind(\n this\n );\n this.handleShowNonAggregatedColumnsChange = this.handleShowNonAggregatedColumnsChange.bind(\n this\n );\n this.handleSortAscending = this.handleSortAscending.bind(this);\n this.handleSortDescending = this.handleSortDescending.bind(this);\n this.renderGroupedItem = this.renderGroupedItem.bind(this);\n\n this.ungroupedList = React.createRef();\n this.groupedList = React.createRef();\n\n const { config } = props;\n const {\n columns = [],\n showConstituents = true,\n showNonAggregatedColumns = true,\n } = config ?? {};\n\n this.state = {\n ungroupedSelectedRanges: [],\n columns,\n groupedSelectedRanges: [],\n searchFilter: '',\n showConstituents,\n showNonAggregatedColumns,\n dragSource: null,\n sort: null,\n };\n }\n\n componentDidUpdate(\n prevProps: RollupRowsProps,\n prevState: RollupRowsState\n ): void {\n const { config } = this.props;\n const { columns, showConstituents, showNonAggregatedColumns } = this.state;\n if (config !== prevProps.config) {\n this.updateFromConfig();\n } else if (\n columns !== prevState.columns ||\n showConstituents !== prevState.showConstituents ||\n showNonAggregatedColumns !== prevState.showNonAggregatedColumns\n ) {\n if (\n config == null ||\n columns !== config.columns ||\n showConstituents !== config.showConstituents ||\n showNonAggregatedColumns !== config.showNonAggregatedColumns\n ) {\n this.sendChange();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.search.cancel();\n }\n\n ungroupedList: RefObject<DraggableItemList<Column>>;\n\n groupedList: RefObject<DraggableItemList<string>>;\n\n handleSearchChange(event: ChangeEvent<HTMLInputElement>): void {\n const searchFilter = event.target.value;\n this.setState({ searchFilter });\n if (!searchFilter) {\n this.search.cancel();\n this.resetSelection();\n return;\n }\n this.search(searchFilter);\n }\n\n handleSortAscending(): void {\n this.setState(({ sort }) => ({\n sort:\n sort === RollupRows.SORT.ASCENDING\n ? null\n : (RollupRows.SORT.ASCENDING as SortDirection),\n }));\n }\n\n handleSortDescending(): void {\n this.setState(({ sort }) => ({\n sort:\n sort === RollupRows.SORT.DESCENDING\n ? null\n : (RollupRows.SORT.DESCENDING as SortDirection),\n }));\n }\n\n resetSelection(): void {\n this.setState({ ungroupedSelectedRanges: [], groupedSelectedRanges: [] });\n }\n\n search = debounce((searchFilter: string) => {\n const columns = this.getSortedUngroupedColumns();\n const selectedRanges = [] as Range[];\n let focusIndex = null;\n for (let i = 0; i < columns.length; i += 1) {\n const column = columns[i];\n if (column.name.toLowerCase().includes(searchFilter.toLowerCase())) {\n if (focusIndex == null) {\n focusIndex = i;\n }\n selectedRanges.push([i, i]);\n }\n }\n assertNotNull(focusIndex);\n this.setState({ ungroupedSelectedRanges: selectedRanges });\n\n if (selectedRanges.length > 0 && this.ungroupedList.current) {\n this.ungroupedList.current.scrollToItem(focusIndex);\n }\n }, DEBOUNCE_SEARCH);\n\n handleDragStart(e: DragStart): void {\n log.debug('handleDragStart', e);\n\n document.documentElement.classList.add('drag-pointer-events-none');\n\n this.setState({ dragSource: e.source });\n }\n\n handleDragEnd(e: DropResult): void {\n log.debug('handleDragEnd', e);\n\n document.documentElement.classList.remove('drag-pointer-events-none');\n\n this.setState({ dragSource: null });\n\n const { destination, source } = e;\n if (destination == null || source == null) {\n return;\n }\n\n // We don't allow dragging within the ungrouped list, so if we're dragging into the ungrouped list,\n // it must have came from the grouped list. Remove those grouped columns.\n if (destination.droppableId === UNGROUPED_LIST_ID) {\n this.setState(({ groupedSelectedRanges, columns }) => {\n const newColumns = [...columns];\n DragUtils.reorder(newColumns, groupedSelectedRanges, [], 0);\n return {\n columns: newColumns,\n ungroupedSelectedRanges: [],\n groupedSelectedRanges: [],\n };\n });\n return;\n }\n\n // Otherwise, it must be dropping into the grouped list, so we just need to check the source\n const isSameList = source.droppableId === GROUPED_LIST_ID;\n let destinationIndex = destination.index;\n if (isSameList && source.index < destination.index) {\n // react-beautiful-dnd adjusts the index when dragging within a list already, however that only supports single selection\n // We need to change it back to the index we actually want it to drop at before adjusting for the removed source index, as\n // we adjust the index based on all the selected ranges, not just the source.index.\n destinationIndex += 1;\n }\n this.setState(\n ({ columns, ungroupedSelectedRanges, groupedSelectedRanges }) => {\n const newColumns = [...columns];\n const sourceItems = isSameList\n ? newColumns\n : this.getSortedUngroupedColumns().map(c => c.name);\n const sourceRanges = isSameList\n ? groupedSelectedRanges\n : ungroupedSelectedRanges;\n const draggedItems = DragUtils.reorder(\n sourceItems,\n sourceRanges,\n newColumns,\n destinationIndex\n );\n\n // Select the newly dropped items\n const insertIndex = isSameList\n ? DragUtils.adjustDestinationIndex(\n destinationIndex,\n groupedSelectedRanges\n )\n : destinationIndex;\n const newSelectedRanges = [\n [insertIndex, insertIndex + draggedItems.length - 1] as Range,\n ];\n return {\n columns: newColumns,\n ungroupedSelectedRanges: [] as Range[],\n groupedSelectedRanges: newSelectedRanges,\n };\n }\n );\n this.resetSelection();\n }\n\n handleUngroupedSelect(itemIndex: number): void {\n log.debug('handleUngroupedSelect');\n\n this.setState(({ columns }) => ({\n columns: RollupRows.addGroupings(columns, [\n this.getSortedUngroupedColumns()[itemIndex].name,\n ]),\n ungroupedSelectedRanges: [],\n groupedSelectedRanges: [],\n }));\n }\n\n handleUngroupedSelectionChange(ungroupedSelectedRanges: Range[]): void {\n log.debug2('handleUngroupedSelectionChange', ungroupedSelectedRanges);\n this.setState(\n ({ ungroupedSelectedRanges: stateUngroupedSelectedRanges }) => {\n if (ungroupedSelectedRanges === stateUngroupedSelectedRanges) {\n return null;\n }\n\n return { ungroupedSelectedRanges, groupedSelectedRanges: [] };\n }\n );\n }\n\n handleGroupedSelectionChange(groupedSelectedRanges: Range[]): void {\n log.debug2('handleGroupedSelectedRanges', groupedSelectedRanges);\n this.setState(({ groupedSelectedRanges: stateGroupedSelectedRanges }) => {\n if (groupedSelectedRanges === stateGroupedSelectedRanges) {\n return null;\n }\n\n return { groupedSelectedRanges, ungroupedSelectedRanges: [] };\n });\n }\n\n handleDeleteClicked(index: number): void {\n this.setState(({ columns }) => {\n const newColumns = columns.slice();\n newColumns.splice(index, 1);\n return { columns: newColumns };\n });\n }\n\n handleShowConstituentsChange(): void {\n this.setState(({ showConstituents }) => ({\n showConstituents: !showConstituents,\n }));\n }\n\n handleShowNonAggregatedColumnsChange(): void {\n this.setState(({ showNonAggregatedColumns }) => ({\n showNonAggregatedColumns: !showNonAggregatedColumns,\n }));\n }\n\n updateFromConfig(): void {\n const { config } = this.props;\n const {\n columns = [],\n showConstituents = true,\n showNonAggregatedColumns = true,\n } = config ?? {};\n this.setState({ columns, showConstituents, showNonAggregatedColumns });\n }\n\n sendChange(): void {\n const { onChange } = this.props;\n const { columns, showConstituents, showNonAggregatedColumns } = this.state;\n onChange({\n columns,\n showConstituents,\n showNonAggregatedColumns,\n } as UIRollupConfig);\n }\n\n getCachedUngroupedColumns = memoize(\n (columns: Column[], groupedColumns: ColumnName[]): Column[] =>\n columns.filter(\n column =>\n RollupRows.isGroupable(column) &&\n groupedColumns.find(name => name === column.name) == null\n )\n );\n\n getCachedSortedColumns = memoize(\n (columns: Column[], sort?: SortDirection): Column[] =>\n sort == null\n ? [...columns]\n : TableUtils.sortColumns(columns, sort === RollupRows.SORT.ASCENDING)\n );\n\n getUngroupedColumns(): Column[] {\n const { model } = this.props;\n const { columns } = this.state;\n const { originalColumns } = model;\n\n return this.getCachedUngroupedColumns(originalColumns, columns);\n }\n\n getSortedUngroupedColumns(): Column[] {\n const { sort } = this.state;\n const columns = this.getUngroupedColumns();\n return this.getCachedSortedColumns(columns, sort);\n }\n\n renderGroupedItem({\n item,\n itemIndex,\n isClone,\n selectedCount,\n }: RenderItemProps<string> & {\n isClone?: boolean;\n selectedCount?: number;\n }): ReactElement {\n const indent =\n isClone !== undefined && isClone ? '' : '\\u00A0\\u00A0'.repeat(itemIndex);\n const text = `${indent}${item}`;\n const badgeText =\n isClone !== undefined && isClone ? `${selectedCount}` : undefined;\n const className =\n isClone !== undefined && isClone ? 'item-list-item-clone' : '';\n return (\n <>\n {DraggableItemList.renderTextItem({ text, badgeText, className })}\n {(isClone === undefined || !isClone) && (\n <Button\n kind=\"ghost\"\n className=\"btn btn-link btn-link-icon btn-delete-grouping float-right\"\n onClick={() => this.handleDeleteClicked(itemIndex)}\n >\n <FontAwesomeIcon icon={vsTrash} />\n </Button>\n )}\n </>\n );\n }\n\n render(): ReactElement {\n const {\n columns,\n dragSource,\n searchFilter,\n groupedSelectedRanges,\n ungroupedSelectedRanges,\n showConstituents,\n showNonAggregatedColumns,\n sort,\n } = this.state;\n\n const ungroupedColumns = this.getSortedUngroupedColumns();\n let groupListHeight = columns.length * DraggableItemList.DEFAULT_ROW_HEIGHT;\n if (dragSource?.droppableId === UNGROUPED_LIST_ID) {\n groupListHeight += DraggableItemList.DEFAULT_ROW_HEIGHT;\n }\n const ungroupMaxListHeight =\n ungroupedColumns.length * DraggableItemList.DEFAULT_ROW_HEIGHT + 10;\n const ungroupMinListHeight = Math.min(\n 3 * DraggableItemList.DEFAULT_ROW_HEIGHT,\n ungroupMaxListHeight\n );\n\n return (\n <div\n role=\"menu\"\n className={classNames('rollup-rows', {\n 'is-dragging': dragSource != null,\n })}\n tabIndex={0}\n >\n <DragDropContext\n onDragEnd={this.handleDragEnd}\n onDragStart={this.handleDragStart}\n >\n <div className=\"rollup-rows-group-by\">\n <div className=\"section-title\">Group By</div>\n {columns.length === 0 && (\n <Droppable droppableId=\"placeholder\">\n {(provided, snapshot) => (\n <div\n className={classNames('placeholder', 'text-muted', {\n 'is-dragging-from-this': snapshot.draggingFromThisWith,\n 'is-dragging-over': snapshot.isDraggingOver,\n 'is-dropping': snapshot.draggingOverWith,\n })}\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n >\n Create rollup by dragging columns here, from the available\n columns list below.\n </div>\n )}\n </Droppable>\n )}\n {columns.length > 0 && (\n <DraggableItemList\n draggingItemClassName=\"rollup-rows-dragging-grouped-item\"\n draggablePrefix={GROUPED_LIST_ID}\n droppableId={GROUPED_LIST_ID}\n itemCount={columns.length}\n items={columns}\n offset={0}\n onSelectionChange={this.handleGroupedSelectionChange}\n ref={this.groupedList}\n renderItem={this.renderGroupedItem}\n selectedRanges={groupedSelectedRanges}\n style={{ height: groupListHeight }}\n isMultiSelect\n />\n )}\n </div>\n <div className=\"rollup-rows-available-columns\">\n <div className=\"section-title\">Available Grouping Columns</div>\n <div className=\"top-menu\">\n <SearchInput\n className=\"w-100\"\n value={searchFilter}\n matchCount={\n searchFilter ? ungroupedSelectedRanges.length : undefined\n }\n placeholder=\"Find column...\"\n onChange={this.handleSearchChange}\n />\n <Button\n kind=\"ghost\"\n className={classNames('btn-link btn-link-icon', {\n active: sort === RollupRows.SORT.ASCENDING,\n })}\n onClick={this.handleSortAscending}\n >\n <FontAwesomeIcon icon={dhSortAlphaDown} />\n <Tooltip>Sort ascending</Tooltip>\n </Button>\n <Button\n kind=\"ghost\"\n className={classNames('btn-link btn-link-icon', {\n active: sort === RollupRows.SORT.DESCENDING,\n })}\n onClick={this.handleSortDescending}\n >\n <FontAwesomeIcon icon={dhSortAlphaUp} />\n <Tooltip>Sort descending</Tooltip>\n </Button>\n </div>\n <DraggableItemList\n className=\"rollup-available-grouping-columns\"\n draggablePrefix={UNGROUPED_LIST_ID}\n droppableId={UNGROUPED_LIST_ID}\n itemCount={ungroupedColumns.length}\n items={ungroupedColumns}\n renderItem={RollupRows.renderColumn}\n offset={0}\n onSelect={this.handleUngroupedSelect}\n onSelectionChange={this.handleUngroupedSelectionChange}\n ref={this.ungroupedList}\n selectedRanges={ungroupedSelectedRanges}\n style={{\n maxHeight: ungroupMaxListHeight,\n minHeight: ungroupMinListHeight,\n }}\n isDropDisabled={dragSource?.droppableId !== GROUPED_LIST_ID}\n isMultiSelect\n />\n <div className=\"bottom-menu\">\n <div className=\"label\">Show:</div>\n <Checkbox\n checked={showConstituents}\n onChange={this.handleShowConstituentsChange}\n >\n Constituents\n </Checkbox>\n <Checkbox\n checked={showNonAggregatedColumns}\n onChange={this.handleShowNonAggregatedColumnsChange}\n >\n Non-Aggregated Columns\n </Checkbox>\n </div>\n </div>\n </DragDropContext>\n </div>\n );\n }\n}\n\nexport default RollupRows;\n"],"mappings":";;;;AAAA;AACA,OAAOA,KAAP,IAA6BC,SAA7B,QAAuE,OAAvE;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SACEC,eADF,EAIEC,SAJF,QAMO,qBANP;AAOA,SACEC,QADF,EAEEC,iBAFF,EAGEC,SAHF,EAIEC,WAJF,EAKEC,OALF,EAQEC,MARF,QASO,uBATP;AAUA,SAASC,OAAT,EAAkBC,eAAlB,EAAmCC,aAAnC,QAAwD,kBAAxD;AACA,SAASC,UAAT,QAA0C,wBAA1C;AACA,OAAOC,OAAP,MAAoB,UAApB;AACA,OAAOC,QAAP,MAAqB,iBAArB;AACA,OAAOC,GAAP,MAAgB,gBAAhB;AACA,SAASC,aAAT,QAA8B,kBAA9B;;AAMA,IAAMC,GAAG,GAAGF,GAAG,CAACG,MAAJ,CAAW,YAAX,CAAZ;AACA,IAAMC,eAAe,GAAG,GAAxB;AACA,IAAMC,eAAe,GAAG,qBAAxB;AACA,IAAMC,iBAAiB,GAAG,uBAA1B;;AA0BA,MAAMC,UAAN,SAAyBxB,SAAzB,CAAqE;EAWhD,OAAZyB,YAAY,OAOF;IAAA,IAPG;MAClBC,IADkB;MAElBC,OAFkB;MAGlBC;IAHkB,CAOH;IACf,IAAMC,IAAI,GAAGH,IAAH,aAAGA,IAAH,uBAAGA,IAAI,CAAEI,IAAnB;IACA,IAAMC,SAAS,GACbJ,OAAO,KAAKK,SAAZ,IAAyBL,OAAzB,aAAsCC,aAAtC,IAAwDI,SAD1D;IAEA,IAAMC,SAAS,GACbN,OAAO,KAAKK,SAAZ,IAAyBL,OAAzB,GAAmC,sBAAnC,GAA4D,EAD9D;IAEA,OAAOrB,iBAAiB,CAAC4B,cAAlB,CAAiC;MAAEL,IAAF;MAAQE,SAAR;MAAmBE;IAAnB,CAAjC,CAAP;EACD;;EAEkB,OAAZE,YAAY,CACjBC,gBADiB,EAEjBC,YAFiB,EAIP;IAAA,IADVC,KACU,uEADMF,gBAAgB,CAACG,MACvB;;IACV,IAAIF,YAAY,IAAI,IAAhB,IAAwBA,YAAY,CAACE,MAAb,KAAwB,CAApD,EAAuD;MACrD,OAAOH,gBAAP;IACD;;IAED,IAAII,WAAW,GAAGF,KAAlB;IACA,IAAMG,SAAS,GAAGL,gBAAgB,CAACM,MAAjB,CAAwB,CAACC,QAAD,EAAWC,CAAX,KAAiB;MACzD,IAAIP,YAAY,CAACQ,QAAb,CAAsBF,QAAtB,CAAJ,EAAqC;QACnC,IAAIC,CAAC,GAAGJ,WAAR,EAAqB;UACnBA,WAAW,IAAI,CAAf;QACD;;QACD,OAAO,KAAP;MACD;;MACD,OAAO,IAAP;IACD,CARiB,CAAlB;IASAC,SAAS,CAACK,MAAV,CAAiBN,WAAjB,EAA8B,CAA9B,EAAiC,GAAGH,YAApC;IACA,OAAOI,SAAP;EACD;;EAEiB,OAAXM,WAAW,CAACC,MAAD,EAA0B;IAC1C,OAAO,CAAClC,UAAU,CAACmC,aAAX,CAAyBD,MAAM,CAACE,IAAhC,CAAR;EACD;;EAEDC,WAAW,CAACC,KAAD,EAAyB;IAClC,MAAMA,KAAN;;IADkC;;IAAA;;IAAA,gCA+G3BpC,QAAQ,CAAEqC,YAAD,IAA0B;MAC1C,IAAMC,OAAO,GAAG,KAAKC,yBAAL,EAAhB;MACA,IAAMC,cAAc,GAAG,EAAvB;MACA,IAAIC,UAAU,GAAG,IAAjB;;MACA,KAAK,IAAIb,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGU,OAAO,CAACf,MAA5B,EAAoCK,CAAC,IAAI,CAAzC,EAA4C;QAC1C,IAAMI,MAAM,GAAGM,OAAO,CAACV,CAAD,CAAtB;;QACA,IAAII,MAAM,CAAClB,IAAP,CAAY4B,WAAZ,GAA0Bb,QAA1B,CAAmCQ,YAAY,CAACK,WAAb,EAAnC,CAAJ,EAAoE;UAClE,IAAID,UAAU,IAAI,IAAlB,EAAwB;YACtBA,UAAU,GAAGb,CAAb;UACD;;UACDY,cAAc,CAACG,IAAf,CAAoB,CAACf,CAAD,EAAIA,CAAJ,CAApB;QACD;MACF;;MACD1B,aAAa,CAACuC,UAAD,CAAb;MACA,KAAKG,QAAL,CAAc;QAAEC,uBAAuB,EAAEL;MAA3B,CAAd;;MAEA,IAAIA,cAAc,CAACjB,MAAf,GAAwB,CAAxB,IAA6B,KAAKuB,aAAL,CAAmBC,OAApD,EAA6D;QAC3D,KAAKD,aAAL,CAAmBC,OAAnB,CAA2BC,YAA3B,CAAwCP,UAAxC;MACD;IACF,CAnBgB,EAmBdpC,eAnBc,CA/GmB;;IAAA,mDAgSRN,OAAO,CACjC,CAACuC,OAAD,EAAoBW,cAApB,KACEX,OAAO,CAACZ,MAAR,CACEM,MAAM,IACJxB,UAAU,CAACuB,WAAX,CAAuBC,MAAvB,KACAiB,cAAc,CAACC,IAAf,CAAoBpC,IAAI,IAAIA,IAAI,KAAKkB,MAAM,CAAClB,IAA5C,KAAqD,IAHzD,CAF+B,CAhSC;;IAAA,gDAySXf,OAAO,CAC9B,CAACuC,OAAD,EAAoBa,IAApB,KACEA,IAAI,IAAI,IAAR,GACI,CAAC,GAAGb,OAAJ,CADJ,GAEIxC,UAAU,CAACsD,WAAX,CAAuBd,OAAvB,EAAgCa,IAAI,KAAK3C,UAAU,CAAC6C,IAAX,CAAgBC,SAAzD,CAJwB,CAzSI;;IAGlC,KAAKC,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBC,IAAzB,CAA8B,IAA9B,CAA3B;IACA,KAAKC,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBD,IAAxB,CAA6B,IAA7B,CAA1B;IACA,KAAKE,qBAAL,GAA6B,KAAKA,qBAAL,CAA2BF,IAA3B,CAAgC,IAAhC,CAA7B;IACA,KAAKG,8BAAL,GAAsC,KAAKA,8BAAL,CAAoCH,IAApC,CACpC,IADoC,CAAtC;IAGA,KAAKI,eAAL,GAAuB,KAAKA,eAAL,CAAqBJ,IAArB,CAA0B,IAA1B,CAAvB;IACA,KAAKK,aAAL,GAAqB,KAAKA,aAAL,CAAmBL,IAAnB,CAAwB,IAAxB,CAArB;IACA,KAAKM,4BAAL,GAAoC,KAAKA,4BAAL,CAAkCN,IAAlC,CAClC,IADkC,CAApC;IAGA,KAAKO,4BAAL,GAAoC,KAAKA,4BAAL,CAAkCP,IAAlC,CAClC,IADkC,CAApC;IAGA,KAAKQ,oCAAL,GAA4C,KAAKA,oCAAL,CAA0CR,IAA1C,CAC1C,IAD0C,CAA5C;IAGA,KAAKS,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBT,IAAzB,CAA8B,IAA9B,CAA3B;IACA,KAAKU,oBAAL,GAA4B,KAAKA,oBAAL,CAA0BV,IAA1B,CAA+B,IAA/B,CAA5B;IACA,KAAKW,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBX,IAAvB,CAA4B,IAA5B,CAAzB;IAEA,KAAKV,aAAL,gBAAqB/D,KAAK,CAACqF,SAAN,EAArB;IACA,KAAKC,WAAL,gBAAmBtF,KAAK,CAACqF,SAAN,EAAnB;IAEA,IAAM;MAAEE;IAAF,IAAalC,KAAnB;IACA,IAAM;MACJE,OAAO,EAAPA,QAAO,GAAG,EADN;MAEJiC,gBAAgB,GAAG,IAFf;MAGJC,wBAAwB,GAAG;IAHvB,IAIFF,MAJE,aAIFA,MAJE,cAIFA,MAJE,GAIQ,EAJd;IAMA,KAAKG,KAAL,GAAa;MACX5B,uBAAuB,EAAE,EADd;MAEXP,OAAO,EAAPA,QAFW;MAGXoC,qBAAqB,EAAE,EAHZ;MAIXrC,YAAY,EAAE,EAJH;MAKXkC,gBALW;MAMXC,wBANW;MAOXG,UAAU,EAAE,IAPD;MAQXxB,IAAI,EAAE;IARK,CAAb;EAUD;;EAEDyB,kBAAkB,CAChBC,SADgB,EAEhBC,SAFgB,EAGV;IACN,IAAM;MAAER;IAAF,IAAa,KAAKlC,KAAxB;IACA,IAAM;MAAEE,OAAF;MAAWiC,gBAAX;MAA6BC;IAA7B,IAA0D,KAAKC,KAArE;;IACA,IAAIH,MAAM,KAAKO,SAAS,CAACP,MAAzB,EAAiC;MAC/B,KAAKS,gBAAL;IACD,CAFD,MAEO,IACLzC,OAAO,KAAKwC,SAAS,CAACxC,OAAtB,IACAiC,gBAAgB,KAAKO,SAAS,CAACP,gBAD/B,IAEAC,wBAAwB,KAAKM,SAAS,CAACN,wBAHlC,EAIL;MACA,IACEF,MAAM,IAAI,IAAV,IACAhC,OAAO,KAAKgC,MAAM,CAAChC,OADnB,IAEAiC,gBAAgB,KAAKD,MAAM,CAACC,gBAF5B,IAGAC,wBAAwB,KAAKF,MAAM,CAACE,wBAJtC,EAKE;QACA,KAAKQ,UAAL;MACD;IACF;EACF;;EAEDC,oBAAoB,GAAS;IAC3B,KAAKC,MAAL,CAAYC,MAAZ;EACD;;EAMD1B,kBAAkB,CAAC2B,KAAD,EAA6C;IAC7D,IAAM/C,YAAY,GAAG+C,KAAK,CAACC,MAAN,CAAaC,KAAlC;IACA,KAAK1C,QAAL,CAAc;MAAEP;IAAF,CAAd;;IACA,IAAI,CAACA,YAAL,EAAmB;MACjB,KAAK6C,MAAL,CAAYC,MAAZ;MACA,KAAKI,cAAL;MACA;IACD;;IACD,KAAKL,MAAL,CAAY7C,YAAZ;EACD;;EAED4B,mBAAmB,GAAS;IAC1B,KAAKrB,QAAL,CAAc;MAAA,IAAC;QAAEO;MAAF,CAAD;MAAA,OAAe;QAC3BA,IAAI,EACFA,IAAI,KAAK3C,UAAU,CAAC6C,IAAX,CAAgBC,SAAzB,GACI,IADJ,GAEK9C,UAAU,CAAC6C,IAAX,CAAgBC;MAJI,CAAf;IAAA,CAAd;EAMD;;EAEDY,oBAAoB,GAAS;IAC3B,KAAKtB,QAAL,CAAc;MAAA,IAAC;QAAEO;MAAF,CAAD;MAAA,OAAe;QAC3BA,IAAI,EACFA,IAAI,KAAK3C,UAAU,CAAC6C,IAAX,CAAgBmC,UAAzB,GACI,IADJ,GAEKhF,UAAU,CAAC6C,IAAX,CAAgBmC;MAJI,CAAf;IAAA,CAAd;EAMD;;EAEDD,cAAc,GAAS;IACrB,KAAK3C,QAAL,CAAc;MAAEC,uBAAuB,EAAE,EAA3B;MAA+B6B,qBAAqB,EAAE;IAAtD,CAAd;EACD;;EAuBDd,eAAe,CAAC6B,CAAD,EAAqB;IAClCtF,GAAG,CAACuF,KAAJ,CAAU,iBAAV,EAA6BD,CAA7B;IAEAE,QAAQ,CAACC,eAAT,CAAyBC,SAAzB,CAAmCC,GAAnC,CAAuC,0BAAvC;IAEA,KAAKlD,QAAL,CAAc;MAAE+B,UAAU,EAAEc,CAAC,CAACM;IAAhB,CAAd;EACD;;EAEDlC,aAAa,CAAC4B,CAAD,EAAsB;IACjCtF,GAAG,CAACuF,KAAJ,CAAU,eAAV,EAA2BD,CAA3B;IAEAE,QAAQ,CAACC,eAAT,CAAyBC,SAAzB,CAAmCG,MAAnC,CAA0C,0BAA1C;IAEA,KAAKpD,QAAL,CAAc;MAAE+B,UAAU,EAAE;IAAd,CAAd;IAEA,IAAM;MAAEsB,WAAF;MAAeF;IAAf,IAA0BN,CAAhC;;IACA,IAAIQ,WAAW,IAAI,IAAf,IAAuBF,MAAM,IAAI,IAArC,EAA2C;MACzC;IACD,CAVgC,CAYjC;IACA;;;IACA,IAAIE,WAAW,CAACC,WAAZ,KAA4B3F,iBAAhC,EAAmD;MACjD,KAAKqC,QAAL,CAAc,SAAwC;QAAA,IAAvC;UAAE8B,qBAAF;UAAyBpC;QAAzB,CAAuC;QACpD,IAAM6D,UAAU,GAAG,CAAC,GAAG7D,OAAJ,CAAnB;QACA/C,SAAS,CAAC6G,OAAV,CAAkBD,UAAlB,EAA8BzB,qBAA9B,EAAqD,EAArD,EAAyD,CAAzD;QACA,OAAO;UACLpC,OAAO,EAAE6D,UADJ;UAELtD,uBAAuB,EAAE,EAFpB;UAGL6B,qBAAqB,EAAE;QAHlB,CAAP;MAKD,CARD;MASA;IACD,CAzBgC,CA2BjC;;;IACA,IAAM2B,UAAU,GAAGN,MAAM,CAACG,WAAP,KAAuB5F,eAA1C;IACA,IAAIgG,gBAAgB,GAAGL,WAAW,CAAC3E,KAAnC;;IACA,IAAI+E,UAAU,IAAIN,MAAM,CAACzE,KAAP,GAAe2E,WAAW,CAAC3E,KAA7C,EAAoD;MAClD;MACA;MACA;MACAgF,gBAAgB,IAAI,CAApB;IACD;;IACD,KAAK1D,QAAL,CACE,SAAiE;MAAA,IAAhE;QAAEN,OAAF;QAAWO,uBAAX;QAAoC6B;MAApC,CAAgE;MAC/D,IAAMyB,UAAU,GAAG,CAAC,GAAG7D,OAAJ,CAAnB;MACA,IAAMiE,WAAW,GAAGF,UAAU,GAC1BF,UAD0B,GAE1B,KAAK5D,yBAAL,GAAiCiE,GAAjC,CAAqCC,CAAC,IAAIA,CAAC,CAAC3F,IAA5C,CAFJ;MAGA,IAAM4F,YAAY,GAAGL,UAAU,GAC3B3B,qBAD2B,GAE3B7B,uBAFJ;MAGA,IAAM8D,YAAY,GAAGpH,SAAS,CAAC6G,OAAV,CACnBG,WADmB,EAEnBG,YAFmB,EAGnBP,UAHmB,EAInBG,gBAJmB,CAArB,CAR+D,CAe/D;;MACA,IAAM9E,WAAW,GAAG6E,UAAU,GAC1B9G,SAAS,CAACqH,sBAAV,CACEN,gBADF,EAEE5B,qBAFF,CAD0B,GAK1B4B,gBALJ;MAMA,IAAMO,iBAAiB,GAAG,CACxB,CAACrF,WAAD,EAAcA,WAAW,GAAGmF,YAAY,CAACpF,MAA3B,GAAoC,CAAlD,CADwB,CAA1B;MAGA,OAAO;QACLe,OAAO,EAAE6D,UADJ;QAELtD,uBAAuB,EAAE,EAFpB;QAGL6B,qBAAqB,EAAEmC;MAHlB,CAAP;IAKD,CA/BH;IAiCA,KAAKtB,cAAL;EACD;;EAED7B,qBAAqB,CAACoD,SAAD,EAA0B;IAC7C3G,GAAG,CAACuF,KAAJ,CAAU,uBAAV;IAEA,KAAK9C,QAAL,CAAc;MAAA,IAAC;QAAEN;MAAF,CAAD;MAAA,OAAkB;QAC9BA,OAAO,EAAE9B,UAAU,CAACW,YAAX,CAAwBmB,OAAxB,EAAiC,CACxC,KAAKC,yBAAL,GAAiCuE,SAAjC,EAA4ChG,IADJ,CAAjC,CADqB;QAI9B+B,uBAAuB,EAAE,EAJK;QAK9B6B,qBAAqB,EAAE;MALO,CAAlB;IAAA,CAAd;EAOD;;EAEDf,8BAA8B,CAACd,uBAAD,EAAyC;IACrE1C,GAAG,CAAC4G,MAAJ,CAAW,gCAAX,EAA6ClE,uBAA7C;IACA,KAAKD,QAAL,CACE,SAA+D;MAAA,IAA9D;QAAEC,uBAAuB,EAAEmE;MAA3B,CAA8D;;MAC7D,IAAInE,uBAAuB,KAAKmE,4BAAhC,EAA8D;QAC5D,OAAO,IAAP;MACD;;MAED,OAAO;QAAEnE,uBAAF;QAA2B6B,qBAAqB,EAAE;MAAlD,CAAP;IACD,CAPH;EASD;;EAEDZ,4BAA4B,CAACY,qBAAD,EAAuC;IACjEvE,GAAG,CAAC4G,MAAJ,CAAW,6BAAX,EAA0CrC,qBAA1C;IACA,KAAK9B,QAAL,CAAc,SAA2D;MAAA,IAA1D;QAAE8B,qBAAqB,EAAEuC;MAAzB,CAA0D;;MACvE,IAAIvC,qBAAqB,KAAKuC,0BAA9B,EAA0D;QACxD,OAAO,IAAP;MACD;;MAED,OAAO;QAAEvC,qBAAF;QAAyB7B,uBAAuB,EAAE;MAAlD,CAAP;IACD,CAND;EAOD;;EAEDU,mBAAmB,CAACjC,KAAD,EAAsB;IACvC,KAAKsB,QAAL,CAAc,SAAiB;MAAA,IAAhB;QAAEN;MAAF,CAAgB;MAC7B,IAAM6D,UAAU,GAAG7D,OAAO,CAAC4E,KAAR,EAAnB;MACAf,UAAU,CAACrE,MAAX,CAAkBR,KAAlB,EAAyB,CAAzB;MACA,OAAO;QAAEgB,OAAO,EAAE6D;MAAX,CAAP;IACD,CAJD;EAKD;;EAEDpC,4BAA4B,GAAS;IACnC,KAAKnB,QAAL,CAAc;MAAA,IAAC;QAAE2B;MAAF,CAAD;MAAA,OAA2B;QACvCA,gBAAgB,EAAE,CAACA;MADoB,CAA3B;IAAA,CAAd;EAGD;;EAEDP,oCAAoC,GAAS;IAC3C,KAAKpB,QAAL,CAAc;MAAA,IAAC;QAAE4B;MAAF,CAAD;MAAA,OAAmC;QAC/CA,wBAAwB,EAAE,CAACA;MADoB,CAAnC;IAAA,CAAd;EAGD;;EAEDO,gBAAgB,GAAS;IACvB,IAAM;MAAET;IAAF,IAAa,KAAKlC,KAAxB;IACA,IAAM;MACJE,OAAO,GAAG,EADN;MAEJiC,gBAAgB,GAAG,IAFf;MAGJC,wBAAwB,GAAG;IAHvB,IAIFF,MAJE,aAIFA,MAJE,cAIFA,MAJE,GAIQ,EAJd;IAKA,KAAK1B,QAAL,CAAc;MAAEN,OAAF;MAAWiC,gBAAX;MAA6BC;IAA7B,CAAd;EACD;;EAEDQ,UAAU,GAAS;IACjB,IAAM;MAAEmC;IAAF,IAAe,KAAK/E,KAA1B;IACA,IAAM;MAAEE,OAAF;MAAWiC,gBAAX;MAA6BC;IAA7B,IAA0D,KAAKC,KAArE;IACA0C,QAAQ,CAAC;MACP7E,OADO;MAEPiC,gBAFO;MAGPC;IAHO,CAAD,CAAR;EAKD;;EAkBD4C,mBAAmB,GAAa;IAC9B,IAAM;MAAEC;IAAF,IAAY,KAAKjF,KAAvB;IACA,IAAM;MAAEE;IAAF,IAAc,KAAKmC,KAAzB;IACA,IAAM;MAAE6C;IAAF,IAAsBD,KAA5B;IAEA,OAAO,KAAKE,yBAAL,CAA+BD,eAA/B,EAAgDhF,OAAhD,CAAP;EACD;;EAEDC,yBAAyB,GAAa;IACpC,IAAM;MAAEY;IAAF,IAAW,KAAKsB,KAAtB;IACA,IAAMnC,OAAO,GAAG,KAAK8E,mBAAL,EAAhB;IACA,OAAO,KAAKI,sBAAL,CAA4BlF,OAA5B,EAAqCa,IAArC,CAAP;EACD;;EAEDgB,iBAAiB,SAQA;IAAA,IARC;MAChBzD,IADgB;MAEhBoG,SAFgB;MAGhBnG,OAHgB;MAIhBC;IAJgB,CAQD;IACf,IAAM6G,MAAM,GACV9G,OAAO,KAAKK,SAAZ,IAAyBL,OAAzB,GAAmC,EAAnC,GAAwC,eAAe+G,MAAf,CAAsBZ,SAAtB,CAD1C;IAEA,IAAMjG,IAAI,aAAM4G,MAAN,SAAe/G,IAAf,CAAV;IACA,IAAMK,SAAS,GACbJ,OAAO,KAAKK,SAAZ,IAAyBL,OAAzB,aAAsCC,aAAtC,IAAwDI,SAD1D;IAEA,IAAMC,SAAS,GACbN,OAAO,KAAKK,SAAZ,IAAyBL,OAAzB,GAAmC,sBAAnC,GAA4D,EAD9D;IAEA,oBACE,0CACGrB,iBAAiB,CAAC4B,cAAlB,CAAiC;MAAEL,IAAF;MAAQE,SAAR;MAAmBE;IAAnB,CAAjC,CADH,EAEG,CAACN,OAAO,KAAKK,SAAZ,IAAyB,CAACL,OAA3B,kBACC,oBAAC,MAAD;MACE,IAAI,EAAC,OADP;MAEE,SAAS,EAAC,4DAFZ;MAGE,OAAO,EAAE,MAAM,KAAK4C,mBAAL,CAAyBuD,SAAzB;IAHjB,gBAKE,oBAAC,eAAD;MAAiB,IAAI,EAAEnH;IAAvB,EALF,CAHJ,CADF;EAcD;;EAEDgI,MAAM,GAAiB;IACrB,IAAM;MACJrF,OADI;MAEJqC,UAFI;MAGJtC,YAHI;MAIJqC,qBAJI;MAKJ7B,uBALI;MAMJ0B,gBANI;MAOJC,wBAPI;MAQJrB;IARI,IASF,KAAKsB,KATT;IAWA,IAAMmD,gBAAgB,GAAG,KAAKrF,yBAAL,EAAzB;IACA,IAAIsF,eAAe,GAAGvF,OAAO,CAACf,MAAR,GAAiBjC,iBAAiB,CAACwI,kBAAzD;;IACA,IAAI,CAAAnD,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAEuB,WAAZ,MAA4B3F,iBAAhC,EAAmD;MACjDsH,eAAe,IAAIvI,iBAAiB,CAACwI,kBAArC;IACD;;IACD,IAAMC,oBAAoB,GACxBH,gBAAgB,CAACrG,MAAjB,GAA0BjC,iBAAiB,CAACwI,kBAA5C,GAAiE,EADnE;IAEA,IAAME,oBAAoB,GAAGC,IAAI,CAACC,GAAL,CAC3B,IAAI5I,iBAAiB,CAACwI,kBADK,EAE3BC,oBAF2B,CAA7B;IAKA,oBACE;MACE,IAAI,EAAC,MADP;MAEE,SAAS,EAAE9I,UAAU,CAAC,aAAD,EAAgB;QACnC,eAAe0F,UAAU,IAAI;MADM,CAAhB,CAFvB;MAKE,QAAQ,EAAE;IALZ,gBAOE,oBAAC,eAAD;MACE,SAAS,EAAE,KAAKd,aADlB;MAEE,WAAW,EAAE,KAAKD;IAFpB,gBAIE;MAAK,SAAS,EAAC;IAAf,gBACE;MAAK,SAAS,EAAC;IAAf,cADF,EAEGtB,OAAO,CAACf,MAAR,KAAmB,CAAnB,iBACC,oBAAC,SAAD;MAAW,WAAW,EAAC;IAAvB,GACG,CAAC4G,QAAD,EAAWC,QAAX,kBACC;MACE,SAAS,EAAEnJ,UAAU,CAAC,aAAD,EAAgB,YAAhB,EAA8B;QACjD,yBAAyBmJ,QAAQ,CAACC,oBADe;QAEjD,oBAAoBD,QAAQ,CAACE,cAFoB;QAGjD,eAAeF,QAAQ,CAACG;MAHyB,CAA9B,CADvB;MAME,GAAG,EAAEJ,QAAQ,CAACK,QANhB,CAOE;;IAPF,GAQML,QAAQ,CAACM,cARf,oFAFJ,CAHJ,EAqBGnG,OAAO,CAACf,MAAR,GAAiB,CAAjB,iBACC,oBAAC,iBAAD;MACE,qBAAqB,EAAC,mCADxB;MAEE,eAAe,EAAEjB,eAFnB;MAGE,WAAW,EAAEA,eAHf;MAIE,SAAS,EAAEgC,OAAO,CAACf,MAJrB;MAKE,KAAK,EAAEe,OALT;MAME,MAAM,EAAE,CANV;MAOE,iBAAiB,EAAE,KAAKwB,4BAP1B;MAQE,GAAG,EAAE,KAAKO,WARZ;MASE,UAAU,EAAE,KAAKF,iBATnB;MAUE,cAAc,EAAEO,qBAVlB;MAWE,KAAK,EAAE;QAAEgE,MAAM,EAAEb;MAAV,CAXT;MAYE,aAAa;IAZf,EAtBJ,CAJF,eA0CE;MAAK,SAAS,EAAC;IAAf,gBACE;MAAK,SAAS,EAAC;IAAf,gCADF,eAEE;MAAK,SAAS,EAAC;IAAf,gBACE,oBAAC,WAAD;MACE,SAAS,EAAC,OADZ;MAEE,KAAK,EAAExF,YAFT;MAGE,UAAU,EACRA,YAAY,GAAGQ,uBAAuB,CAACtB,MAA3B,GAAoCP,SAJpD;MAME,WAAW,EAAC,gBANd;MAOE,QAAQ,EAAE,KAAKyC;IAPjB,EADF,eAUE,oBAAC,MAAD;MACE,IAAI,EAAC,OADP;MAEE,SAAS,EAAExE,UAAU,CAAC,wBAAD,EAA2B;QAC9C0J,MAAM,EAAExF,IAAI,KAAK3C,UAAU,CAAC6C,IAAX,CAAgBC;MADa,CAA3B,CAFvB;MAKE,OAAO,EAAE,KAAKW;IALhB,gBAOE,oBAAC,eAAD;MAAiB,IAAI,EAAErE;IAAvB,EAPF,eAQE,oBAAC,OAAD,yBARF,CAVF,eAoBE,oBAAC,MAAD;MACE,IAAI,EAAC,OADP;MAEE,SAAS,EAAEX,UAAU,CAAC,wBAAD,EAA2B;QAC9C0J,MAAM,EAAExF,IAAI,KAAK3C,UAAU,CAAC6C,IAAX,CAAgBmC;MADa,CAA3B,CAFvB;MAKE,OAAO,EAAE,KAAKtB;IALhB,gBAOE,oBAAC,eAAD;MAAiB,IAAI,EAAErE;IAAvB,EAPF,eAQE,oBAAC,OAAD,0BARF,CApBF,CAFF,eAiCE,oBAAC,iBAAD;MACE,SAAS,EAAC,mCADZ;MAEE,eAAe,EAAEU,iBAFnB;MAGE,WAAW,EAAEA,iBAHf;MAIE,SAAS,EAAEqH,gBAAgB,CAACrG,MAJ9B;MAKE,KAAK,EAAEqG,gBALT;MAME,UAAU,EAAEpH,UAAU,CAACC,YANzB;MAOE,MAAM,EAAE,CAPV;MAQE,QAAQ,EAAE,KAAKiD,qBARjB;MASE,iBAAiB,EAAE,KAAKC,8BAT1B;MAUE,GAAG,EAAE,KAAKb,aAVZ;MAWE,cAAc,EAAED,uBAXlB;MAYE,KAAK,EAAE;QACL+F,SAAS,EAAEb,oBADN;QAELc,SAAS,EAAEb;MAFN,CAZT;MAgBE,cAAc,EAAE,CAAArD,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAEuB,WAAZ,MAA4B5F,eAhB9C;MAiBE,aAAa;IAjBf,EAjCF,eAoDE;MAAK,SAAS,EAAC;IAAf,gBACE;MAAK,SAAS,EAAC;IAAf,WADF,eAEE,oBAAC,QAAD;MACE,OAAO,EAAEiE,gBADX;MAEE,QAAQ,EAAE,KAAKR;IAFjB,kBAFF,eAQE,oBAAC,QAAD;MACE,OAAO,EAAES,wBADX;MAEE,QAAQ,EAAE,KAAKR;IAFjB,4BARF,CApDF,CA1CF,CAPF,CADF;EAyHD;;AAriBkE;;gBAA/DxD,U,UACUsI,MAAM,CAACC,MAAP,CAAc;EAC1BzF,SAAS,EAAE,KADe;EAE1BkC,UAAU,EAAE;AAFc,CAAd,C;;gBADVhF,U,kBAMkB;EACpB8D,MAAM,EAAE,IADY;EAEpB6C,QAAQ,EAAE,MAAYnG;AAFF,C;;AAkiBxB,eAAeR,UAAf"}
|
|
1
|
+
{"version":3,"file":"RollupRows.js","names":["React","Component","classNames","FontAwesomeIcon","DragDropContext","Droppable","Checkbox","DraggableItemList","DragUtils","SearchInput","Tooltip","Button","vsTrash","dhSortAlphaDown","dhSortAlphaUp","TableUtils","memoize","debounce","Log","assertNotNull","log","module","DEBOUNCE_SEARCH","GROUPED_LIST_ID","UNGROUPED_LIST_ID","RollupRows","renderColumn","item","isClone","selectedCount","text","name","badgeText","undefined","className","renderTextItem","addGroupings","currentGroupings","newGroupings","index","length","insertIndex","groupings","filter","grouping","i","includes","splice","isGroupable","column","isDecimalType","type","constructor","props","searchFilter","columns","getSortedUngroupedColumns","selectedRanges","focusIndex","toLowerCase","push","setState","ungroupedSelectedRanges","ungroupedList","current","scrollToItem","groupedColumns","find","sort","sortColumns","SORT","ASCENDING","handleDeleteClicked","bind","handleSearchChange","handleUngroupedSelect","handleUngroupedSelectionChange","handleDragStart","handleDragEnd","handleGroupedSelectionChange","handleShowConstituentsChange","handleShowNonAggregatedColumnsChange","handleSortAscending","handleSortDescending","renderGroupedItem","createRef","groupedList","config","showConstituents","showNonAggregatedColumns","state","groupedSelectedRanges","dragSource","componentDidUpdate","prevProps","prevState","updateFromConfig","sendChange","componentWillUnmount","search","cancel","event","target","value","resetSelection","DESCENDING","e","debug","document","documentElement","classList","add","source","remove","destination","droppableId","newColumns","reorder","isSameList","destinationIndex","sourceItems","map","c","sourceRanges","draggedItems","adjustDestinationIndex","newSelectedRanges","itemIndex","debug2","stateUngroupedSelectedRanges","stateGroupedSelectedRanges","slice","onChange","getUngroupedColumns","model","originalColumns","getCachedUngroupedColumns","getCachedSortedColumns","indent","repeat","render","ungroupedColumns","groupListHeight","DEFAULT_ROW_HEIGHT","ungroupMaxListHeight","ungroupMinListHeight","Math","min","provided","snapshot","draggingFromThisWith","isDraggingOver","draggingOverWith","innerRef","droppableProps","height","active","maxHeight","minHeight","Object","freeze"],"sources":["../../src/sidebar/RollupRows.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React, { ChangeEvent, Component, ReactElement, RefObject } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n DragDropContext,\n DraggableLocation,\n DragStart,\n Droppable,\n DropResult,\n} from 'react-beautiful-dnd';\nimport {\n Checkbox,\n DraggableItemList,\n DragUtils,\n SearchInput,\n Tooltip,\n Range,\n RenderItemProps,\n Button,\n} from '@deephaven/components';\nimport { vsTrash, dhSortAlphaDown, dhSortAlphaUp } from '@deephaven/icons';\nimport { TableUtils, SortDirection } from '@deephaven/jsapi-utils';\nimport memoize from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport { assertNotNull } from '@deephaven/utils';\nimport './RollupRows.scss';\nimport { Column } from '@deephaven/jsapi-shim';\nimport IrisGridModel from '../IrisGridModel';\nimport { ColumnName } from '../CommonTypes';\n\nconst log = Log.module('RollupRows');\nconst DEBOUNCE_SEARCH = 150;\nconst GROUPED_LIST_ID = 'grouped-rollup-rows';\nconst UNGROUPED_LIST_ID = 'ungrouped-rollup-rows';\n\nexport interface UIRollupConfig {\n columns: ColumnName[];\n showConstituents: boolean;\n showNonAggregatedColumns: boolean;\n includeDescriptions: true;\n}\n\ninterface RollupRowsProps {\n model: IrisGridModel;\n onChange: (rollupConfig: UIRollupConfig) => void;\n config: UIRollupConfig | null;\n}\n\ninterface RollupRowsState {\n ungroupedSelectedRanges: Range[];\n columns: ColumnName[];\n groupedSelectedRanges: Range[];\n searchFilter: string;\n showConstituents: boolean;\n showNonAggregatedColumns: boolean;\n dragSource: DraggableLocation | null;\n sort: SortDirection;\n}\n\nclass RollupRows extends Component<RollupRowsProps, RollupRowsState> {\n static SORT = Object.freeze({\n ASCENDING: 'ASC',\n DESCENDING: 'DESC',\n });\n\n static defaultProps = {\n config: null,\n onChange: (): void => undefined,\n };\n\n static renderColumn({\n item,\n isClone,\n selectedCount,\n }: RenderItemProps<Column> & {\n isClone?: boolean;\n selectedCount?: number;\n }): ReactElement {\n const text = item?.name;\n const badgeText =\n isClone !== undefined && isClone ? `${selectedCount}` : undefined;\n const className =\n isClone !== undefined && isClone ? 'item-list-item-clone' : '';\n return DraggableItemList.renderTextItem({ text, badgeText, className });\n }\n\n static addGroupings(\n currentGroupings: string[],\n newGroupings: string[],\n index: number = currentGroupings.length\n ): string[] {\n if (newGroupings == null || newGroupings.length === 0) {\n return currentGroupings;\n }\n\n let insertIndex = index;\n const groupings = currentGroupings.filter((grouping, i) => {\n if (newGroupings.includes(grouping)) {\n if (i < insertIndex) {\n insertIndex -= 1;\n }\n return false;\n }\n return true;\n });\n groupings.splice(insertIndex, 0, ...newGroupings);\n return groupings;\n }\n\n static isGroupable(column: Column): boolean {\n return !TableUtils.isDecimalType(column.type);\n }\n\n constructor(props: RollupRowsProps) {\n super(props);\n\n this.handleDeleteClicked = this.handleDeleteClicked.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleUngroupedSelect = this.handleUngroupedSelect.bind(this);\n this.handleUngroupedSelectionChange = this.handleUngroupedSelectionChange.bind(\n this\n );\n this.handleDragStart = this.handleDragStart.bind(this);\n this.handleDragEnd = this.handleDragEnd.bind(this);\n this.handleGroupedSelectionChange = this.handleGroupedSelectionChange.bind(\n this\n );\n this.handleShowConstituentsChange = this.handleShowConstituentsChange.bind(\n this\n );\n this.handleShowNonAggregatedColumnsChange = this.handleShowNonAggregatedColumnsChange.bind(\n this\n );\n this.handleSortAscending = this.handleSortAscending.bind(this);\n this.handleSortDescending = this.handleSortDescending.bind(this);\n this.renderGroupedItem = this.renderGroupedItem.bind(this);\n\n this.ungroupedList = React.createRef();\n this.groupedList = React.createRef();\n\n const { config } = props;\n const {\n columns = [],\n showConstituents = true,\n showNonAggregatedColumns = true,\n } = config ?? {};\n\n this.state = {\n ungroupedSelectedRanges: [],\n columns,\n groupedSelectedRanges: [],\n searchFilter: '',\n showConstituents,\n showNonAggregatedColumns,\n dragSource: null,\n sort: null,\n };\n }\n\n componentDidUpdate(\n prevProps: RollupRowsProps,\n prevState: RollupRowsState\n ): void {\n const { config } = this.props;\n const { columns, showConstituents, showNonAggregatedColumns } = this.state;\n if (config !== prevProps.config) {\n this.updateFromConfig();\n } else if (\n columns !== prevState.columns ||\n showConstituents !== prevState.showConstituents ||\n showNonAggregatedColumns !== prevState.showNonAggregatedColumns\n ) {\n if (\n config == null ||\n columns !== config.columns ||\n showConstituents !== config.showConstituents ||\n showNonAggregatedColumns !== config.showNonAggregatedColumns\n ) {\n this.sendChange();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.search.cancel();\n }\n\n ungroupedList: RefObject<DraggableItemList<Column>>;\n\n groupedList: RefObject<DraggableItemList<string>>;\n\n handleSearchChange(event: ChangeEvent<HTMLInputElement>): void {\n const searchFilter = event.target.value;\n this.setState({ searchFilter });\n if (!searchFilter) {\n this.search.cancel();\n this.resetSelection();\n return;\n }\n this.search(searchFilter);\n }\n\n handleSortAscending(): void {\n this.setState(({ sort }) => ({\n sort:\n sort === RollupRows.SORT.ASCENDING\n ? null\n : (RollupRows.SORT.ASCENDING as SortDirection),\n }));\n }\n\n handleSortDescending(): void {\n this.setState(({ sort }) => ({\n sort:\n sort === RollupRows.SORT.DESCENDING\n ? null\n : (RollupRows.SORT.DESCENDING as SortDirection),\n }));\n }\n\n resetSelection(): void {\n this.setState({ ungroupedSelectedRanges: [], groupedSelectedRanges: [] });\n }\n\n search = debounce((searchFilter: string) => {\n const columns = this.getSortedUngroupedColumns();\n const selectedRanges = [] as Range[];\n let focusIndex = null;\n for (let i = 0; i < columns.length; i += 1) {\n const column = columns[i];\n if (column.name.toLowerCase().includes(searchFilter.toLowerCase())) {\n if (focusIndex == null) {\n focusIndex = i;\n }\n selectedRanges.push([i, i]);\n }\n }\n assertNotNull(focusIndex);\n this.setState({ ungroupedSelectedRanges: selectedRanges });\n\n if (selectedRanges.length > 0 && this.ungroupedList.current) {\n this.ungroupedList.current.scrollToItem(focusIndex);\n }\n }, DEBOUNCE_SEARCH);\n\n handleDragStart(e: DragStart): void {\n log.debug('handleDragStart', e);\n\n document.documentElement.classList.add('drag-pointer-events-none');\n\n this.setState({ dragSource: e.source });\n }\n\n handleDragEnd(e: DropResult): void {\n log.debug('handleDragEnd', e);\n\n document.documentElement.classList.remove('drag-pointer-events-none');\n\n this.setState({ dragSource: null });\n\n const { destination, source } = e;\n if (destination == null || source == null) {\n return;\n }\n\n // We don't allow dragging within the ungrouped list, so if we're dragging into the ungrouped list,\n // it must have came from the grouped list. Remove those grouped columns.\n if (destination.droppableId === UNGROUPED_LIST_ID) {\n this.setState(({ groupedSelectedRanges, columns }) => {\n const newColumns = [...columns];\n DragUtils.reorder(newColumns, groupedSelectedRanges, [], 0);\n return {\n columns: newColumns,\n ungroupedSelectedRanges: [],\n groupedSelectedRanges: [],\n };\n });\n return;\n }\n\n // Otherwise, it must be dropping into the grouped list, so we just need to check the source\n const isSameList = source.droppableId === GROUPED_LIST_ID;\n let destinationIndex = destination.index;\n if (isSameList && source.index < destination.index) {\n // react-beautiful-dnd adjusts the index when dragging within a list already, however that only supports single selection\n // We need to change it back to the index we actually want it to drop at before adjusting for the removed source index, as\n // we adjust the index based on all the selected ranges, not just the source.index.\n destinationIndex += 1;\n }\n this.setState(\n ({ columns, ungroupedSelectedRanges, groupedSelectedRanges }) => {\n const newColumns = [...columns];\n const sourceItems = isSameList\n ? newColumns\n : this.getSortedUngroupedColumns().map(c => c.name);\n const sourceRanges = isSameList\n ? groupedSelectedRanges\n : ungroupedSelectedRanges;\n const draggedItems = DragUtils.reorder(\n sourceItems,\n sourceRanges,\n newColumns,\n destinationIndex\n );\n\n // Select the newly dropped items\n const insertIndex = isSameList\n ? DragUtils.adjustDestinationIndex(\n destinationIndex,\n groupedSelectedRanges\n )\n : destinationIndex;\n const newSelectedRanges = [\n [insertIndex, insertIndex + draggedItems.length - 1] as Range,\n ];\n return {\n columns: newColumns,\n ungroupedSelectedRanges: [] as Range[],\n groupedSelectedRanges: newSelectedRanges,\n };\n }\n );\n this.resetSelection();\n }\n\n handleUngroupedSelect(itemIndex: number): void {\n log.debug('handleUngroupedSelect');\n\n this.setState(({ columns }) => ({\n columns: RollupRows.addGroupings(columns, [\n this.getSortedUngroupedColumns()[itemIndex].name,\n ]),\n ungroupedSelectedRanges: [],\n groupedSelectedRanges: [],\n }));\n }\n\n handleUngroupedSelectionChange(ungroupedSelectedRanges: Range[]): void {\n log.debug2('handleUngroupedSelectionChange', ungroupedSelectedRanges);\n this.setState(\n ({ ungroupedSelectedRanges: stateUngroupedSelectedRanges }) => {\n if (ungroupedSelectedRanges === stateUngroupedSelectedRanges) {\n return null;\n }\n\n return { ungroupedSelectedRanges, groupedSelectedRanges: [] };\n }\n );\n }\n\n handleGroupedSelectionChange(groupedSelectedRanges: Range[]): void {\n log.debug2('handleGroupedSelectedRanges', groupedSelectedRanges);\n this.setState(({ groupedSelectedRanges: stateGroupedSelectedRanges }) => {\n if (groupedSelectedRanges === stateGroupedSelectedRanges) {\n return null;\n }\n\n return { groupedSelectedRanges, ungroupedSelectedRanges: [] };\n });\n }\n\n handleDeleteClicked(index: number): void {\n this.setState(({ columns }) => {\n const newColumns = columns.slice();\n newColumns.splice(index, 1);\n return { columns: newColumns };\n });\n }\n\n handleShowConstituentsChange(): void {\n this.setState(({ showConstituents }) => ({\n showConstituents: !showConstituents,\n }));\n }\n\n handleShowNonAggregatedColumnsChange(): void {\n this.setState(({ showNonAggregatedColumns }) => ({\n showNonAggregatedColumns: !showNonAggregatedColumns,\n }));\n }\n\n updateFromConfig(): void {\n const { config } = this.props;\n const {\n columns = [],\n showConstituents = true,\n showNonAggregatedColumns = true,\n } = config ?? {};\n this.setState({ columns, showConstituents, showNonAggregatedColumns });\n }\n\n sendChange(): void {\n const { onChange } = this.props;\n const { columns, showConstituents, showNonAggregatedColumns } = this.state;\n onChange({\n columns,\n showConstituents,\n showNonAggregatedColumns,\n } as UIRollupConfig);\n }\n\n getCachedUngroupedColumns = memoize(\n (columns: Column[], groupedColumns: ColumnName[]): Column[] =>\n columns.filter(\n column =>\n RollupRows.isGroupable(column) &&\n groupedColumns.find(name => name === column.name) == null\n )\n );\n\n getCachedSortedColumns = memoize(\n (columns: Column[], sort?: SortDirection): Column[] =>\n sort == null\n ? [...columns]\n : TableUtils.sortColumns(columns, sort === RollupRows.SORT.ASCENDING)\n );\n\n getUngroupedColumns(): Column[] {\n const { model } = this.props;\n const { columns } = this.state;\n const { originalColumns } = model;\n\n return this.getCachedUngroupedColumns(originalColumns, columns);\n }\n\n getSortedUngroupedColumns(): Column[] {\n const { sort } = this.state;\n const columns = this.getUngroupedColumns();\n return this.getCachedSortedColumns(columns, sort);\n }\n\n renderGroupedItem({\n item,\n itemIndex,\n isClone,\n selectedCount,\n }: RenderItemProps<string> & {\n isClone?: boolean;\n selectedCount?: number;\n }): ReactElement {\n const indent =\n isClone !== undefined && isClone ? '' : '\\u00A0\\u00A0'.repeat(itemIndex);\n const text = `${indent}${item}`;\n const badgeText =\n isClone !== undefined && isClone ? `${selectedCount}` : undefined;\n const className =\n isClone !== undefined && isClone ? 'item-list-item-clone' : '';\n return (\n <>\n {DraggableItemList.renderTextItem({ text, badgeText, className })}\n {(isClone === undefined || !isClone) && (\n <Button\n kind=\"ghost\"\n className=\"btn btn-link btn-link-icon btn-delete-grouping float-right\"\n onClick={() => this.handleDeleteClicked(itemIndex)}\n >\n <FontAwesomeIcon icon={vsTrash} />\n </Button>\n )}\n </>\n );\n }\n\n render(): ReactElement {\n const {\n columns,\n dragSource,\n searchFilter,\n groupedSelectedRanges,\n ungroupedSelectedRanges,\n showConstituents,\n showNonAggregatedColumns,\n sort,\n } = this.state;\n\n const ungroupedColumns = this.getSortedUngroupedColumns();\n let groupListHeight = columns.length * DraggableItemList.DEFAULT_ROW_HEIGHT;\n if (dragSource?.droppableId === UNGROUPED_LIST_ID) {\n groupListHeight += DraggableItemList.DEFAULT_ROW_HEIGHT;\n }\n const ungroupMaxListHeight =\n ungroupedColumns.length * DraggableItemList.DEFAULT_ROW_HEIGHT + 10;\n const ungroupMinListHeight = Math.min(\n 3 * DraggableItemList.DEFAULT_ROW_HEIGHT,\n ungroupMaxListHeight\n );\n\n return (\n <div\n role=\"menu\"\n className={classNames('rollup-rows', {\n 'is-dragging': dragSource != null,\n })}\n tabIndex={0}\n >\n <DragDropContext\n onDragEnd={this.handleDragEnd}\n onDragStart={this.handleDragStart}\n >\n <div className=\"rollup-rows-group-by\">\n <div className=\"section-title\">Group By</div>\n {columns.length === 0 && (\n <Droppable droppableId=\"placeholder\">\n {(provided, snapshot) => (\n <div\n className={classNames('placeholder', 'text-muted', {\n 'is-dragging-from-this': snapshot.draggingFromThisWith,\n 'is-dragging-over': snapshot.isDraggingOver,\n 'is-dropping': snapshot.draggingOverWith,\n })}\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n >\n Create rollup by dragging columns here, from the available\n columns list below.\n </div>\n )}\n </Droppable>\n )}\n {columns.length > 0 && (\n <DraggableItemList\n draggingItemClassName=\"rollup-rows-dragging-grouped-item\"\n draggablePrefix={GROUPED_LIST_ID}\n droppableId={GROUPED_LIST_ID}\n itemCount={columns.length}\n items={columns}\n offset={0}\n onSelectionChange={this.handleGroupedSelectionChange}\n ref={this.groupedList}\n renderItem={this.renderGroupedItem}\n selectedRanges={groupedSelectedRanges}\n style={{ height: groupListHeight }}\n isMultiSelect\n />\n )}\n </div>\n <div className=\"rollup-rows-available-columns\">\n <div className=\"section-title\">Available Grouping Columns</div>\n <div className=\"top-menu\">\n <SearchInput\n className=\"w-100\"\n value={searchFilter}\n matchCount={\n searchFilter ? ungroupedSelectedRanges.length : undefined\n }\n placeholder=\"Find column...\"\n onChange={this.handleSearchChange}\n />\n <Button\n kind=\"ghost\"\n className={classNames('btn-link btn-link-icon', {\n active: sort === RollupRows.SORT.ASCENDING,\n })}\n onClick={this.handleSortAscending}\n >\n <FontAwesomeIcon icon={dhSortAlphaDown} />\n <Tooltip>Sort ascending</Tooltip>\n </Button>\n <Button\n kind=\"ghost\"\n className={classNames('btn-link btn-link-icon', {\n active: sort === RollupRows.SORT.DESCENDING,\n })}\n onClick={this.handleSortDescending}\n >\n <FontAwesomeIcon icon={dhSortAlphaUp} />\n <Tooltip>Sort descending</Tooltip>\n </Button>\n </div>\n <DraggableItemList\n className=\"rollup-available-grouping-columns\"\n draggablePrefix={UNGROUPED_LIST_ID}\n droppableId={UNGROUPED_LIST_ID}\n itemCount={ungroupedColumns.length}\n items={ungroupedColumns}\n renderItem={RollupRows.renderColumn}\n offset={0}\n onSelect={this.handleUngroupedSelect}\n onSelectionChange={this.handleUngroupedSelectionChange}\n ref={this.ungroupedList}\n selectedRanges={ungroupedSelectedRanges}\n style={{\n maxHeight: ungroupMaxListHeight,\n minHeight: ungroupMinListHeight,\n }}\n isDropDisabled={dragSource?.droppableId !== GROUPED_LIST_ID}\n isMultiSelect\n />\n <div className=\"bottom-menu\">\n <div className=\"label\">Show:</div>\n <Checkbox\n checked={showConstituents}\n onChange={this.handleShowConstituentsChange}\n >\n Constituents\n </Checkbox>\n <Checkbox\n checked={showNonAggregatedColumns}\n onChange={this.handleShowNonAggregatedColumnsChange}\n >\n Non-Aggregated Columns\n </Checkbox>\n </div>\n </div>\n </DragDropContext>\n </div>\n );\n }\n}\n\nexport default RollupRows;\n"],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
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; }
|
|
2
|
-
|
|
3
2
|
import React, { Component } from 'react';
|
|
4
3
|
import deepEqual from 'deep-equal';
|
|
5
4
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
@@ -8,7 +7,6 @@ import { Button } from '@deephaven/components';
|
|
|
8
7
|
import Log from '@deephaven/log';
|
|
9
8
|
import "./SelectDistinctBuilder.css";
|
|
10
9
|
var log = Log.module('SelectDistinctBuilder');
|
|
11
|
-
|
|
12
10
|
class SelectDistinctBuilder extends Component {
|
|
13
11
|
constructor(props) {
|
|
14
12
|
super(props);
|
|
@@ -24,7 +22,6 @@ class SelectDistinctBuilder extends Component {
|
|
|
24
22
|
columns: model.originalColumns
|
|
25
23
|
};
|
|
26
24
|
}
|
|
27
|
-
|
|
28
25
|
componentDidUpdate(prevProps, prevState) {
|
|
29
26
|
var {
|
|
30
27
|
inputs
|
|
@@ -32,16 +29,13 @@ class SelectDistinctBuilder extends Component {
|
|
|
32
29
|
var {
|
|
33
30
|
onChange
|
|
34
31
|
} = this.props;
|
|
35
|
-
|
|
36
32
|
if (prevState.inputs !== inputs) {
|
|
37
33
|
var filteredInputs = inputs.filter(val => val !== '');
|
|
38
|
-
|
|
39
34
|
if (!deepEqual(prevState.inputs.filter(val => val !== ''), filteredInputs)) {
|
|
40
35
|
onChange(filteredInputs);
|
|
41
36
|
}
|
|
42
37
|
}
|
|
43
38
|
}
|
|
44
|
-
|
|
45
39
|
handleAddColumnClick() {
|
|
46
40
|
this.setState(_ref => {
|
|
47
41
|
var {
|
|
@@ -52,7 +46,6 @@ class SelectDistinctBuilder extends Component {
|
|
|
52
46
|
};
|
|
53
47
|
});
|
|
54
48
|
}
|
|
55
|
-
|
|
56
49
|
handleDeleteColumn(index) {
|
|
57
50
|
this.setState(_ref2 => {
|
|
58
51
|
var {
|
|
@@ -63,7 +56,6 @@ class SelectDistinctBuilder extends Component {
|
|
|
63
56
|
};
|
|
64
57
|
});
|
|
65
58
|
}
|
|
66
|
-
|
|
67
59
|
handleDropdownChanged(index, event) {
|
|
68
60
|
log.debug('handleDropdownChanged', index, event);
|
|
69
61
|
var {
|
|
@@ -80,7 +72,6 @@ class SelectDistinctBuilder extends Component {
|
|
|
80
72
|
};
|
|
81
73
|
});
|
|
82
74
|
}
|
|
83
|
-
|
|
84
75
|
renderInputs() {
|
|
85
76
|
var {
|
|
86
77
|
columns,
|
|
@@ -128,7 +119,6 @@ class SelectDistinctBuilder extends Component {
|
|
|
128
119
|
);
|
|
129
120
|
});
|
|
130
121
|
}
|
|
131
|
-
|
|
132
122
|
render() {
|
|
133
123
|
var {
|
|
134
124
|
columns,
|
|
@@ -156,13 +146,10 @@ class SelectDistinctBuilder extends Component {
|
|
|
156
146
|
className: "inline-code-snippet"
|
|
157
147
|
}, "selectDistinct(\"Column\")"), ". Filters will be reset and the resulting table will contain only the selected columns above.")));
|
|
158
148
|
}
|
|
159
|
-
|
|
160
149
|
}
|
|
161
|
-
|
|
162
150
|
_defineProperty(SelectDistinctBuilder, "defaultProps", {
|
|
163
151
|
selectDistinctColumns: [],
|
|
164
152
|
onChange: () => undefined
|
|
165
153
|
});
|
|
166
|
-
|
|
167
154
|
export default SelectDistinctBuilder;
|
|
168
155
|
//# sourceMappingURL=SelectDistinctBuilder.js.map
|
|
@@ -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
|