@deephaven/iris-grid 0.67.1-beta.0 → 0.67.1-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AdvancedFilterCreator.d.ts +6 -6
- package/dist/AdvancedFilterCreator.d.ts.map +1 -1
- package/dist/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.d.ts +3 -3
- package/dist/AdvancedFilterCreatorFilterItem.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.d.ts +6 -6
- package/dist/AdvancedFilterCreatorSelectValue.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts +7 -7
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/ColumnHeaderGroup.d.ts +1 -1
- package/dist/ColumnHeaderGroup.d.ts.map +1 -1
- package/dist/ColumnHeaderGroup.js +1 -1
- package/dist/ColumnHeaderGroup.js.map +1 -1
- package/dist/ColumnStatistics.d.ts +3 -3
- package/dist/ColumnStatistics.d.ts.map +1 -1
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/CommonTypes.d.ts +5 -5
- package/dist/CommonTypes.d.ts.map +1 -1
- package/dist/CommonTypes.js.map +1 -1
- package/dist/CrossColumnSearch.d.ts +2 -2
- package/dist/CrossColumnSearch.d.ts.map +1 -1
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/EmptyIrisGridModel.d.ts +19 -19
- package/dist/EmptyIrisGridModel.d.ts.map +1 -1
- package/dist/EmptyIrisGridModel.js.map +1 -1
- package/dist/GotoRow.js.map +1 -1
- package/dist/IrisGrid.d.ts +32 -32
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +4 -1
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridMetricCalculator.d.ts +4 -4
- package/dist/IrisGridMetricCalculator.d.ts.map +1 -1
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridModel.d.ts +20 -20
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelFactory.d.ts +2 -2
- package/dist/IrisGridModelFactory.d.ts.map +1 -1
- package/dist/IrisGridModelFactory.js.map +1 -1
- package/dist/IrisGridModelUpdater.d.ts +6 -6
- package/dist/IrisGridModelUpdater.d.ts.map +1 -1
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridPartitionSelector.d.ts +5 -5
- package/dist/IrisGridPartitionSelector.d.ts.map +1 -1
- package/dist/IrisGridPartitionSelector.js.map +1 -1
- package/dist/IrisGridPartitionedTableModel.d.ts +8 -8
- package/dist/IrisGridPartitionedTableModel.d.ts.map +1 -1
- package/dist/IrisGridPartitionedTableModel.js.map +1 -1
- package/dist/IrisGridProxyModel.d.ts +26 -26
- package/dist/IrisGridProxyModel.d.ts.map +1 -1
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.d.ts +2 -2
- package/dist/IrisGridRenderer.d.ts.map +1 -1
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts +18 -18
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +8 -7
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.d.ts +41 -41
- package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
- package/dist/IrisGridTableModelTemplate.js +10 -11
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/IrisGridTestUtils.d.ts +16 -16
- package/dist/IrisGridTestUtils.d.ts.map +1 -1
- package/dist/IrisGridTestUtils.js +4 -2
- package/dist/IrisGridTestUtils.js.map +1 -1
- package/dist/IrisGridTreeTableModel.d.ts +13 -13
- package/dist/IrisGridTreeTableModel.d.ts.map +1 -1
- package/dist/IrisGridTreeTableModel.js +16 -6
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.d.ts +40 -40
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +17 -7
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/PartitionedGridModel.d.ts +5 -5
- package/dist/PartitionedGridModel.d.ts.map +1 -1
- package/dist/PartitionedGridModel.js.map +1 -1
- package/dist/TableViewportUpdater.d.ts +10 -10
- package/dist/TableViewportUpdater.d.ts.map +1 -1
- package/dist/TableViewportUpdater.js.map +1 -1
- package/dist/TreeTableViewportUpdater.d.ts +7 -7
- package/dist/TreeTableViewportUpdater.d.ts.map +1 -1
- package/dist/TreeTableViewportUpdater.js.map +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.d.ts +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.d.ts.map +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/FormatContextMenuUtils.js +2 -1
- package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.d.ts +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.d.ts.map +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts +17 -17
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/sidebar/ChartBuilder.d.ts +11 -11
- package/dist/sidebar/ChartBuilder.d.ts.map +1 -1
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/RollupRows.d.ts +8 -8
- package/dist/sidebar/RollupRows.d.ts.map +1 -1
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.d.ts +2 -2
- package/dist/sidebar/SelectDistinctBuilder.d.ts.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.d.ts +3 -3
- package/dist/sidebar/TableCsvExporter.d.ts.map +1 -1
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/TableSaver.d.ts +9 -9
- package/dist/sidebar/TableSaver.d.ts.map +1 -1
- package/dist/sidebar/TableSaver.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.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.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.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.d.ts +3 -3
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts +3 -3
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.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.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts +5 -5
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts +2 -2
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
- package/package.json +16 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdvancedFilterCreatorSelectValueList.js","names":["React","PureComponent","CSSTransition","LoadingSpinner","SelectValueList","Log","jsx","_jsx","jsxs","_jsxs","log","module","AdvancedFilterCreatorSelectValueList","indexOf","value","values","i","length","v","valueOf","constructor","props","_defineProperty","handleSelect","bind","handleViewportChange","handleSelectionUpdate","handleTableUpdate","selectedValues","dh","list","state","itemCount","items","offset","isLoading","componentDidMount","table","startListening","componentDidUpdate","prevProps","filters","invertSelection","stopListening","resetViewport","setState","applyFilter","componentWillUnmount","itemIndex","selectedIndex","splice","push","isSelected","visibleItemIndex","onChange","top","bottom","updateViewport","updateItemSelection","event","formatter","data","detail","column","columns","r","rows","row","get","displayValue","className","children","getFormattedString","type","name","isValueSelected","debug2","size","addEventListener","Table","EVENT_UPDATED","removeEventListener","topRow","bottomRow","item","arguments","undefined","viewportSize","Math","max","setViewport","render","onSelect","onViewportChange","ref","in","timeout","classNames","mountOnEnter","unmountOnExit"],"sources":["../src/AdvancedFilterCreatorSelectValueList.tsx"],"sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent, ReactElement } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport type {\n dh as DhType,\n FilterCondition,\n Table,\n} from '@deephaven/jsapi-types';\nimport { Formatter } from '@deephaven/jsapi-utils';\nimport {\n LoadingSpinner,\n SelectValueList,\n SelectItem,\n} from '@deephaven/components';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('AdvancedFilterCreatorSelectValueList');\n\ninterface AdvancedFilterCreatorSelectValueListProps<T> {\n dh: DhType;\n selectedValues: (T | null)[];\n table?: Table;\n filters: FilterCondition[];\n invertSelection: boolean;\n onChange: (selectedValues: (T | null)[], invertSelection: boolean) => void;\n formatter: Formatter;\n}\n\ninterface AdvancedFilterCreatorSelectValueListState<T> {\n itemCount: number;\n items: SelectItem<T>[];\n offset: number;\n selectedValues: (T | null)[];\n isLoading: boolean;\n}\n/**\n * Select values from a long scrollable list.\n * Swaps items in and out for infinite scrolling\n */\nclass AdvancedFilterCreatorSelectValueList<T = unknown> extends PureComponent<\n AdvancedFilterCreatorSelectValueListProps<T>,\n AdvancedFilterCreatorSelectValueListState<T>\n> {\n static defaultProps = {\n invertSelection: true,\n selectedValues: [],\n onChange: (): void => undefined,\n };\n\n /**\n * Get the index of a value in an array. Has some special handling for some types, like DateTimes and Longs.\n * @param value The value to search for\n * @param values The array of values to search within\n */\n static indexOf(value: unknown, values: unknown[]): number {\n for (let i = 0; i < values.length; i += 1) {\n const v = values[i];\n if (\n v === value ||\n (v != null &&\n v.valueOf != null &&\n value != null &&\n value.valueOf != null &&\n v.valueOf() === value.valueOf())\n ) {\n return i;\n }\n }\n\n return -1;\n }\n\n constructor(props: AdvancedFilterCreatorSelectValueListProps<T>) {\n super(props);\n\n this.handleSelect = this.handleSelect.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n this.handleSelectionUpdate = this.handleSelectionUpdate.bind(this);\n this.handleTableUpdate = this.handleTableUpdate.bind(this);\n\n const { selectedValues, dh } = this.props;\n\n this.dh = dh;\n this.list = null;\n\n this.state = {\n itemCount: 0,\n items: [],\n offset: 0,\n selectedValues,\n isLoading: true,\n };\n }\n\n componentDidMount(): void {\n const { table } = this.props;\n if (table) this.startListening(table);\n }\n\n componentDidUpdate(\n prevProps: AdvancedFilterCreatorSelectValueListProps<T>\n ): void {\n const { filters, invertSelection, selectedValues, table } = this.props;\n if (prevProps.table !== table) {\n if (prevProps.table) this.stopListening(prevProps.table);\n if (table) this.startListening(table);\n this.resetViewport();\n }\n\n if (prevProps.invertSelection !== invertSelection) {\n this.setState({ selectedValues: [] }, this.handleSelectionUpdate);\n }\n\n if (prevProps.selectedValues !== selectedValues) {\n this.setState({ selectedValues }, this.handleSelectionUpdate);\n }\n\n if (prevProps.filters !== filters) {\n table?.applyFilter(filters);\n this.resetViewport();\n }\n }\n\n componentWillUnmount(): void {\n const { table } = this.props;\n if (table) this.stopListening(table);\n }\n\n dh: DhType;\n\n list: SelectValueList<T> | null;\n\n handleSelect(itemIndex: number, value: T | null): void {\n const { invertSelection } = this.props;\n let { selectedValues } = this.state;\n selectedValues = [...selectedValues];\n const selectedIndex = AdvancedFilterCreatorSelectValueList.indexOf(\n value,\n selectedValues\n );\n if (selectedIndex >= 0) {\n selectedValues.splice(selectedIndex, 1);\n } else {\n selectedValues.push(value);\n }\n\n let isSelected = selectedIndex < 0;\n if (invertSelection) {\n isSelected = !isSelected;\n }\n\n const { offset } = this.state;\n let { items } = this.state;\n items = [...items];\n const visibleItemIndex = itemIndex - offset;\n if (visibleItemIndex >= 0 && visibleItemIndex < items.length) {\n items[visibleItemIndex].isSelected = isSelected;\n }\n\n this.setState({ items, selectedValues });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n handleViewportChange(top: number, bottom: number): void {\n this.updateViewport(top, bottom);\n }\n\n handleSelectionUpdate(): void {\n this.updateItemSelection();\n }\n\n handleTableUpdate(event: CustomEvent): void {\n const { table, formatter } = this.props;\n if (!table) return;\n\n const data = event.detail;\n const { offset } = data;\n const items = [];\n const column = table.columns[0];\n for (let r = 0; r < data.rows.length; r += 1) {\n const row = data.rows[r];\n const value = row.get(column);\n let displayValue: string | JSX.Element;\n if (value == null) {\n displayValue = <i className=\"text-muted\">null</i>;\n } else if (value === '') {\n displayValue = <i className=\"text-muted\">empty</i>;\n } else {\n displayValue = formatter.getFormattedString(\n value,\n column.type,\n column.name\n );\n }\n const isSelected = this.isValueSelected(value);\n items.push({\n displayValue,\n value,\n isSelected,\n });\n }\n\n log.debug2('Received table update:', offset, items.length);\n\n const itemCount = table.size;\n this.setState({ itemCount, items, offset, isLoading: false });\n }\n\n isValueSelected(value: T): boolean {\n const { invertSelection } = this.props;\n const { selectedValues } = this.state;\n\n // Need to check if any of the valueOf matches, timestamp value that is equal\n const selectedIndex = AdvancedFilterCreatorSelectValueList.indexOf(\n value,\n selectedValues\n );\n\n return invertSelection ? selectedIndex < 0 : selectedIndex >= 0;\n }\n\n startListening(table: Table): void {\n table.addEventListener(this.dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n }\n\n stopListening(table: Table): void {\n table.removeEventListener(\n this.dh.Table.EVENT_UPDATED,\n this.handleTableUpdate\n );\n }\n\n resetViewport(): void {\n if (this.list && this.list.topRow != null && this.list.bottomRow != null) {\n this.updateViewport(this.list.topRow, this.list.bottomRow, true);\n }\n }\n\n updateItemSelection(): void {\n let { items } = this.state;\n\n items = [...items];\n\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n const { value } = item;\n item.isSelected = this.isValueSelected(value);\n }\n\n this.setState({ items });\n }\n\n updateViewport(top: number, bottom: number, isLoading = false): void {\n const { table } = this.props;\n if (table == null) {\n return;\n }\n\n if (isLoading) {\n this.setState({ isLoading: true });\n }\n\n const viewportSize = bottom - top + 1;\n const topRow = Math.max(0, top - viewportSize * 3);\n const bottomRow = Math.max(topRow, bottom + viewportSize * 3);\n\n log.debug2('Setting viewport', topRow, ',', bottomRow);\n table.setViewport(topRow, bottomRow);\n }\n\n render(): ReactElement {\n const { offset, isLoading, items, itemCount } = this.state;\n\n return (\n <div className=\"select-value-list-wrapper\">\n <SelectValueList\n itemCount={itemCount}\n items={items}\n offset={offset}\n onSelect={this.handleSelect}\n onViewportChange={this.handleViewportChange}\n ref={list => {\n this.list = list;\n }}\n />\n <CSSTransition\n in={isLoading}\n timeout={250}\n classNames=\"fade\"\n mountOnEnter\n unmountOnExit\n >\n <div className=\"loading-list\">\n <LoadingSpinner className=\"loading-spinner-large\" />\n </div>\n </CSSTransition>\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreatorSelectValueList;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AdvancedFilterCreatorSelectValueList.js","names":["React","PureComponent","CSSTransition","LoadingSpinner","SelectValueList","Log","jsx","_jsx","jsxs","_jsxs","log","module","AdvancedFilterCreatorSelectValueList","indexOf","value","values","i","length","v","valueOf","constructor","props","_defineProperty","handleSelect","bind","handleViewportChange","handleSelectionUpdate","handleTableUpdate","selectedValues","dh","list","state","itemCount","items","offset","isLoading","componentDidMount","table","startListening","componentDidUpdate","prevProps","filters","invertSelection","stopListening","resetViewport","setState","applyFilter","componentWillUnmount","itemIndex","selectedIndex","splice","push","isSelected","visibleItemIndex","onChange","top","bottom","updateViewport","updateItemSelection","event","formatter","data","detail","column","columns","r","rows","row","get","displayValue","className","children","getFormattedString","type","name","isValueSelected","debug2","size","addEventListener","Table","EVENT_UPDATED","removeEventListener","topRow","bottomRow","item","arguments","undefined","viewportSize","Math","max","setViewport","render","onSelect","onViewportChange","ref","in","timeout","classNames","mountOnEnter","unmountOnExit"],"sources":["../src/AdvancedFilterCreatorSelectValueList.tsx"],"sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent, ReactElement } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { Formatter } from '@deephaven/jsapi-utils';\nimport {\n LoadingSpinner,\n SelectValueList,\n SelectItem,\n} from '@deephaven/components';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('AdvancedFilterCreatorSelectValueList');\n\ninterface AdvancedFilterCreatorSelectValueListProps<T> {\n dh: typeof DhType;\n selectedValues: (T | null)[];\n table?: DhType.Table;\n filters: DhType.FilterCondition[];\n invertSelection: boolean;\n onChange: (selectedValues: (T | null)[], invertSelection: boolean) => void;\n formatter: Formatter;\n}\n\ninterface AdvancedFilterCreatorSelectValueListState<T> {\n itemCount: number;\n items: SelectItem<T>[];\n offset: number;\n selectedValues: (T | null)[];\n isLoading: boolean;\n}\n/**\n * Select values from a long scrollable list.\n * Swaps items in and out for infinite scrolling\n */\nclass AdvancedFilterCreatorSelectValueList<T = unknown> extends PureComponent<\n AdvancedFilterCreatorSelectValueListProps<T>,\n AdvancedFilterCreatorSelectValueListState<T>\n> {\n static defaultProps = {\n invertSelection: true,\n selectedValues: [],\n onChange: (): void => undefined,\n };\n\n /**\n * Get the index of a value in an array. Has some special handling for some types, like DateTimes and Longs.\n * @param value The value to search for\n * @param values The array of values to search within\n */\n static indexOf(value: unknown, values: unknown[]): number {\n for (let i = 0; i < values.length; i += 1) {\n const v = values[i];\n if (\n v === value ||\n (v != null &&\n v.valueOf != null &&\n value != null &&\n value.valueOf != null &&\n v.valueOf() === value.valueOf())\n ) {\n return i;\n }\n }\n\n return -1;\n }\n\n constructor(props: AdvancedFilterCreatorSelectValueListProps<T>) {\n super(props);\n\n this.handleSelect = this.handleSelect.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n this.handleSelectionUpdate = this.handleSelectionUpdate.bind(this);\n this.handleTableUpdate = this.handleTableUpdate.bind(this);\n\n const { selectedValues, dh } = this.props;\n\n this.dh = dh;\n this.list = null;\n\n this.state = {\n itemCount: 0,\n items: [],\n offset: 0,\n selectedValues,\n isLoading: true,\n };\n }\n\n componentDidMount(): void {\n const { table } = this.props;\n if (table) this.startListening(table);\n }\n\n componentDidUpdate(\n prevProps: AdvancedFilterCreatorSelectValueListProps<T>\n ): void {\n const { filters, invertSelection, selectedValues, table } = this.props;\n if (prevProps.table !== table) {\n if (prevProps.table) this.stopListening(prevProps.table);\n if (table) this.startListening(table);\n this.resetViewport();\n }\n\n if (prevProps.invertSelection !== invertSelection) {\n this.setState({ selectedValues: [] }, this.handleSelectionUpdate);\n }\n\n if (prevProps.selectedValues !== selectedValues) {\n this.setState({ selectedValues }, this.handleSelectionUpdate);\n }\n\n if (prevProps.filters !== filters) {\n table?.applyFilter(filters);\n this.resetViewport();\n }\n }\n\n componentWillUnmount(): void {\n const { table } = this.props;\n if (table) this.stopListening(table);\n }\n\n dh: typeof DhType;\n\n list: SelectValueList<T> | null;\n\n handleSelect(itemIndex: number, value: T | null): void {\n const { invertSelection } = this.props;\n let { selectedValues } = this.state;\n selectedValues = [...selectedValues];\n const selectedIndex = AdvancedFilterCreatorSelectValueList.indexOf(\n value,\n selectedValues\n );\n if (selectedIndex >= 0) {\n selectedValues.splice(selectedIndex, 1);\n } else {\n selectedValues.push(value);\n }\n\n let isSelected = selectedIndex < 0;\n if (invertSelection) {\n isSelected = !isSelected;\n }\n\n const { offset } = this.state;\n let { items } = this.state;\n items = [...items];\n const visibleItemIndex = itemIndex - offset;\n if (visibleItemIndex >= 0 && visibleItemIndex < items.length) {\n items[visibleItemIndex].isSelected = isSelected;\n }\n\n this.setState({ items, selectedValues });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n handleViewportChange(top: number, bottom: number): void {\n this.updateViewport(top, bottom);\n }\n\n handleSelectionUpdate(): void {\n this.updateItemSelection();\n }\n\n handleTableUpdate(event: CustomEvent): void {\n const { table, formatter } = this.props;\n if (!table) return;\n\n const data = event.detail;\n const { offset } = data;\n const items = [];\n const column = table.columns[0];\n for (let r = 0; r < data.rows.length; r += 1) {\n const row = data.rows[r];\n const value = row.get(column);\n let displayValue: string | JSX.Element;\n if (value == null) {\n displayValue = <i className=\"text-muted\">null</i>;\n } else if (value === '') {\n displayValue = <i className=\"text-muted\">empty</i>;\n } else {\n displayValue = formatter.getFormattedString(\n value,\n column.type,\n column.name\n );\n }\n const isSelected = this.isValueSelected(value);\n items.push({\n displayValue,\n value,\n isSelected,\n });\n }\n\n log.debug2('Received table update:', offset, items.length);\n\n const itemCount = table.size;\n this.setState({ itemCount, items, offset, isLoading: false });\n }\n\n isValueSelected(value: T): boolean {\n const { invertSelection } = this.props;\n const { selectedValues } = this.state;\n\n // Need to check if any of the valueOf matches, timestamp value that is equal\n const selectedIndex = AdvancedFilterCreatorSelectValueList.indexOf(\n value,\n selectedValues\n );\n\n return invertSelection ? selectedIndex < 0 : selectedIndex >= 0;\n }\n\n startListening(table: DhType.Table): void {\n table.addEventListener(this.dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n }\n\n stopListening(table: DhType.Table): void {\n table.removeEventListener(\n this.dh.Table.EVENT_UPDATED,\n this.handleTableUpdate\n );\n }\n\n resetViewport(): void {\n if (this.list && this.list.topRow != null && this.list.bottomRow != null) {\n this.updateViewport(this.list.topRow, this.list.bottomRow, true);\n }\n }\n\n updateItemSelection(): void {\n let { items } = this.state;\n\n items = [...items];\n\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n const { value } = item;\n item.isSelected = this.isValueSelected(value);\n }\n\n this.setState({ items });\n }\n\n updateViewport(top: number, bottom: number, isLoading = false): void {\n const { table } = this.props;\n if (table == null) {\n return;\n }\n\n if (isLoading) {\n this.setState({ isLoading: true });\n }\n\n const viewportSize = bottom - top + 1;\n const topRow = Math.max(0, top - viewportSize * 3);\n const bottomRow = Math.max(topRow, bottom + viewportSize * 3);\n\n log.debug2('Setting viewport', topRow, ',', bottomRow);\n table.setViewport(topRow, bottomRow);\n }\n\n render(): ReactElement {\n const { offset, isLoading, items, itemCount } = this.state;\n\n return (\n <div className=\"select-value-list-wrapper\">\n <SelectValueList\n itemCount={itemCount}\n items={items}\n offset={offset}\n onSelect={this.handleSelect}\n onViewportChange={this.handleViewportChange}\n ref={list => {\n this.list = list;\n }}\n />\n <CSSTransition\n in={isLoading}\n timeout={250}\n classNames=\"fade\"\n mountOnEnter\n unmountOnExit\n >\n <div className=\"loading-list\">\n <LoadingSpinner className=\"loading-spinner-large\" />\n </div>\n </CSSTransition>\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreatorSelectValueList;\n"],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ export default class ColumnHeaderGroup implements IColumnHeaderGroup {
|
|
|
11
11
|
constructor({ name, children, color, depth, childIndexes, parent, }: {
|
|
12
12
|
name: string;
|
|
13
13
|
children: string[];
|
|
14
|
-
color?: string;
|
|
14
|
+
color?: string | null;
|
|
15
15
|
depth: number;
|
|
16
16
|
childIndexes: ModelIndex[];
|
|
17
17
|
parent?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnHeaderGroup.d.ts","sourceRoot":"","sources":["../src/ColumnHeaderGroup.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEb,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AAMzB,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,iBAAiB,CAEtE;AAED,MAAM,CAAC,OAAO,OAAO,iBAAkB,YAAW,kBAAkB;IAClE,MAAM,CAAC,gBAAgB,SAAe;IAEtC,IAAI,EAAE,MAAM,CAAC;IAEb,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,KAAK,EAAE,MAAM,CAAC;IAEd,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,YAAY,EAAE,UAAU,EAAE,CAAC;gBAEf,EACV,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,KAAK,EACL,YAAY,EACZ,MAAM,GACP,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ColumnHeaderGroup.d.ts","sourceRoot":"","sources":["../src/ColumnHeaderGroup.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEb,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AAMzB,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,iBAAiB,CAEtE;AAED,MAAM,CAAC,OAAO,OAAO,iBAAkB,YAAW,kBAAkB;IAClE,MAAM,CAAC,gBAAgB,SAAe;IAEtC,IAAI,EAAE,MAAM,CAAC;IAEb,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,KAAK,EAAE,MAAM,CAAC;IAEd,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,YAAY,EAAE,UAAU,EAAE,CAAC;gBAEf,EACV,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,KAAK,EACL,YAAY,EACZ,MAAM,GACP,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,UAAU,EAAE,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB;IASD,eAAe,eACA,SAAS,aAAa,EAAE,sBAgBrC;IAEF,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAI3C,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAKrC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAMxC,IAAI,KAAK,IAAI,OAAO,CAEnB;CACF"}
|
|
@@ -36,7 +36,7 @@ export default class ColumnHeaderGroup {
|
|
|
36
36
|
}));
|
|
37
37
|
this.name = name;
|
|
38
38
|
this.children = children;
|
|
39
|
-
this.color = color;
|
|
39
|
+
this.color = color !== null && color !== void 0 ? color : undefined;
|
|
40
40
|
this.depth = depth;
|
|
41
41
|
this.childIndexes = childIndexes;
|
|
42
42
|
this.parent = parent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnHeaderGroup.js","names":["GridUtils","memoizeOne","Log","log","module","isColumnHeaderGroup","x","ColumnHeaderGroup","constructor","_ref","name","children","color","depth","childIndexes","parent","_defineProperty","movedItems","flattenedIndexes","flat","visibleIndexes","getVisibleIndexes","start","Math","min","end","max","length","warn","concat","setParent","addChildren","newChildren","Set","removeChildren","forEach","delete","isNew","startsWith","NEW_GROUP_PREFIX"],"sources":["../src/ColumnHeaderGroup.ts"],"sourcesContent":["import {\n MoveOperation,\n GridUtils,\n ModelIndex,\n BoundedAxisRange,\n IColumnHeaderGroup,\n} from '@deephaven/grid';\nimport memoizeOne from 'memoize-one';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('ColumnHeaderGroup');\n\nexport function isColumnHeaderGroup(x: unknown): x is ColumnHeaderGroup {\n return x instanceof ColumnHeaderGroup;\n}\n\nexport default class ColumnHeaderGroup implements IColumnHeaderGroup {\n static NEW_GROUP_PREFIX = ':newGroup';\n\n name: string;\n\n children: string[];\n\n depth: number;\n\n parent?: string;\n\n color?: string;\n\n childIndexes: ModelIndex[];\n\n constructor({\n name,\n children,\n color,\n depth,\n childIndexes,\n parent,\n }: {\n name: string;\n children: string[];\n color?: string;\n depth: number;\n childIndexes: ModelIndex[];\n parent?: string;\n }) {\n this.name = name;\n this.children = children;\n this.color = color;\n this.depth = depth;\n this.childIndexes = childIndexes;\n this.parent = parent;\n }\n\n getVisibleRange = memoizeOne(\n (movedItems: readonly MoveOperation[]): BoundedAxisRange => {\n const flattenedIndexes = this.childIndexes.flat();\n const visibleIndexes = GridUtils.getVisibleIndexes(\n flattenedIndexes,\n movedItems\n );\n\n const start = Math.min(...visibleIndexes);\n const end = Math.max(...visibleIndexes);\n\n if (end - start !== flattenedIndexes.length - 1) {\n log.warn(`Column header group ${this.name} is not contiguous`);\n }\n\n return [start, end];\n }\n );\n\n setParent(parent: string | undefined): void {\n this.parent = parent;\n }\n\n addChildren(children: string[]): void {\n const newChildren = new Set(this.children.concat(children));\n this.children = [...newChildren];\n }\n\n removeChildren(children: string[]): void {\n const newChildren = new Set(this.children);\n children.forEach(name => newChildren.delete(name));\n this.children = [...newChildren];\n }\n\n get isNew(): boolean {\n return this.name.startsWith(ColumnHeaderGroup.NEW_GROUP_PREFIX);\n }\n}\n"],"mappings":";;;AAAA,SAEEA,SAAS,QAIJ,iBAAiB;AACxB,OAAOC,UAAU,MAAM,aAAa;AACpC,OAAOC,GAAG,MAAM,gBAAgB;AAEhC,IAAMC,GAAG,GAAGD,GAAG,CAACE,MAAM,CAAC,mBAAmB,CAAC;AAE3C,OAAO,SAASC,mBAAmBA,CAACC,CAAU,EAA0B;EACtE,OAAOA,CAAC,YAAYC,iBAAiB;AACvC;AAEA,eAAe,MAAMA,iBAAiB,CAA+B;EAenEC,WAAWA,CAAAC,IAAA,EAcR;IAAA,IAdS;MACVC,IAAI;MACJC,QAAQ;MACRC,KAAK;MACLC,KAAK;MACLC,YAAY;MACZC;IAQF,CAAC,GAAAN,IAAA;IAAAO,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA,0BASiBf,UAAU,CACzBgB,UAAoC,IAAuB;MAC1D,IAAMC,gBAAgB,GAAG,IAAI,CAACJ,YAAY,CAACK,IAAI,CAAC,CAAC;MACjD,IAAMC,cAAc,GAAGpB,SAAS,CAACqB,iBAAiB,CAChDH,gBAAgB,EAChBD,UACF,CAAC;MAED,IAAMK,KAAK,GAAGC,IAAI,CAACC,GAAG,CAAC,GAAGJ,cAAc,CAAC;MACzC,IAAMK,GAAG,GAAGF,IAAI,CAACG,GAAG,CAAC,GAAGN,cAAc,CAAC;MAEvC,IAAIK,GAAG,GAAGH,KAAK,KAAKJ,gBAAgB,CAACS,MAAM,GAAG,CAAC,EAAE;QAC/CxB,GAAG,CAACyB,IAAI,wBAAAC,MAAA,CAAwB,IAAI,CAACnB,IAAI,uBAAoB,CAAC;MAChE;MAEA,OAAO,CAACY,KAAK,EAAEG,GAAG,CAAC;IACrB,CACF,CAAC;IAzBC,IAAI,CAACf,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,KAAK,GAAGA,KAAK;
|
|
1
|
+
{"version":3,"file":"ColumnHeaderGroup.js","names":["GridUtils","memoizeOne","Log","log","module","isColumnHeaderGroup","x","ColumnHeaderGroup","constructor","_ref","name","children","color","depth","childIndexes","parent","_defineProperty","movedItems","flattenedIndexes","flat","visibleIndexes","getVisibleIndexes","start","Math","min","end","max","length","warn","concat","undefined","setParent","addChildren","newChildren","Set","removeChildren","forEach","delete","isNew","startsWith","NEW_GROUP_PREFIX"],"sources":["../src/ColumnHeaderGroup.ts"],"sourcesContent":["import {\n MoveOperation,\n GridUtils,\n ModelIndex,\n BoundedAxisRange,\n IColumnHeaderGroup,\n} from '@deephaven/grid';\nimport memoizeOne from 'memoize-one';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('ColumnHeaderGroup');\n\nexport function isColumnHeaderGroup(x: unknown): x is ColumnHeaderGroup {\n return x instanceof ColumnHeaderGroup;\n}\n\nexport default class ColumnHeaderGroup implements IColumnHeaderGroup {\n static NEW_GROUP_PREFIX = ':newGroup';\n\n name: string;\n\n children: string[];\n\n depth: number;\n\n parent?: string;\n\n color?: string;\n\n childIndexes: ModelIndex[];\n\n constructor({\n name,\n children,\n color,\n depth,\n childIndexes,\n parent,\n }: {\n name: string;\n children: string[];\n color?: string | null;\n depth: number;\n childIndexes: ModelIndex[];\n parent?: string;\n }) {\n this.name = name;\n this.children = children;\n this.color = color ?? undefined;\n this.depth = depth;\n this.childIndexes = childIndexes;\n this.parent = parent;\n }\n\n getVisibleRange = memoizeOne(\n (movedItems: readonly MoveOperation[]): BoundedAxisRange => {\n const flattenedIndexes = this.childIndexes.flat();\n const visibleIndexes = GridUtils.getVisibleIndexes(\n flattenedIndexes,\n movedItems\n );\n\n const start = Math.min(...visibleIndexes);\n const end = Math.max(...visibleIndexes);\n\n if (end - start !== flattenedIndexes.length - 1) {\n log.warn(`Column header group ${this.name} is not contiguous`);\n }\n\n return [start, end];\n }\n );\n\n setParent(parent: string | undefined): void {\n this.parent = parent;\n }\n\n addChildren(children: string[]): void {\n const newChildren = new Set(this.children.concat(children));\n this.children = [...newChildren];\n }\n\n removeChildren(children: string[]): void {\n const newChildren = new Set(this.children);\n children.forEach(name => newChildren.delete(name));\n this.children = [...newChildren];\n }\n\n get isNew(): boolean {\n return this.name.startsWith(ColumnHeaderGroup.NEW_GROUP_PREFIX);\n }\n}\n"],"mappings":";;;AAAA,SAEEA,SAAS,QAIJ,iBAAiB;AACxB,OAAOC,UAAU,MAAM,aAAa;AACpC,OAAOC,GAAG,MAAM,gBAAgB;AAEhC,IAAMC,GAAG,GAAGD,GAAG,CAACE,MAAM,CAAC,mBAAmB,CAAC;AAE3C,OAAO,SAASC,mBAAmBA,CAACC,CAAU,EAA0B;EACtE,OAAOA,CAAC,YAAYC,iBAAiB;AACvC;AAEA,eAAe,MAAMA,iBAAiB,CAA+B;EAenEC,WAAWA,CAAAC,IAAA,EAcR;IAAA,IAdS;MACVC,IAAI;MACJC,QAAQ;MACRC,KAAK;MACLC,KAAK;MACLC,YAAY;MACZC;IAQF,CAAC,GAAAN,IAAA;IAAAO,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA,0BASiBf,UAAU,CACzBgB,UAAoC,IAAuB;MAC1D,IAAMC,gBAAgB,GAAG,IAAI,CAACJ,YAAY,CAACK,IAAI,CAAC,CAAC;MACjD,IAAMC,cAAc,GAAGpB,SAAS,CAACqB,iBAAiB,CAChDH,gBAAgB,EAChBD,UACF,CAAC;MAED,IAAMK,KAAK,GAAGC,IAAI,CAACC,GAAG,CAAC,GAAGJ,cAAc,CAAC;MACzC,IAAMK,GAAG,GAAGF,IAAI,CAACG,GAAG,CAAC,GAAGN,cAAc,CAAC;MAEvC,IAAIK,GAAG,GAAGH,KAAK,KAAKJ,gBAAgB,CAACS,MAAM,GAAG,CAAC,EAAE;QAC/CxB,GAAG,CAACyB,IAAI,wBAAAC,MAAA,CAAwB,IAAI,CAACnB,IAAI,uBAAoB,CAAC;MAChE;MAEA,OAAO,CAACY,KAAK,EAAEG,GAAG,CAAC;IACrB,CACF,CAAC;IAzBC,IAAI,CAACf,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,KAAK,GAAGA,KAAK,aAALA,KAAK,cAALA,KAAK,GAAIkB,SAAS;IAC/B,IAAI,CAACjB,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,YAAY,GAAGA,YAAY;IAChC,IAAI,CAACC,MAAM,GAAGA,MAAM;EACtB;EAqBAgB,SAASA,CAAChB,MAA0B,EAAQ;IAC1C,IAAI,CAACA,MAAM,GAAGA,MAAM;EACtB;EAEAiB,WAAWA,CAACrB,QAAkB,EAAQ;IACpC,IAAMsB,WAAW,GAAG,IAAIC,GAAG,CAAC,IAAI,CAACvB,QAAQ,CAACkB,MAAM,CAAClB,QAAQ,CAAC,CAAC;IAC3D,IAAI,CAACA,QAAQ,GAAG,CAAC,GAAGsB,WAAW,CAAC;EAClC;EAEAE,cAAcA,CAACxB,QAAkB,EAAQ;IACvC,IAAMsB,WAAW,GAAG,IAAIC,GAAG,CAAC,IAAI,CAACvB,QAAQ,CAAC;IAC1CA,QAAQ,CAACyB,OAAO,CAAC1B,IAAI,IAAIuB,WAAW,CAACI,MAAM,CAAC3B,IAAI,CAAC,CAAC;IAClD,IAAI,CAACC,QAAQ,GAAG,CAAC,GAAGsB,WAAW,CAAC;EAClC;EAEA,IAAIK,KAAKA,CAAA,EAAY;IACnB,OAAO,IAAI,CAAC5B,IAAI,CAAC6B,UAAU,CAAChC,iBAAiB,CAACiC,gBAAgB,CAAC;EACjE;AACF;AAACxB,eAAA,CA3EoBT,iBAAiB,sBACV,WAAW"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { Component, Key } from 'react';
|
|
2
|
-
import type {
|
|
2
|
+
import type { dh } from '@deephaven/jsapi-types';
|
|
3
3
|
import { CancelablePromise } from '@deephaven/utils';
|
|
4
4
|
import './ColumnStatistics.scss';
|
|
5
5
|
import IrisGridModel, { DisplayColumn } from './IrisGridModel';
|
|
@@ -27,10 +27,10 @@ declare class ColumnStatistics extends Component<ColumnStatisticsProps, ColumnSt
|
|
|
27
27
|
constructor(props: ColumnStatisticsProps);
|
|
28
28
|
componentDidMount(): void;
|
|
29
29
|
componentWillUnmount(): void;
|
|
30
|
-
cancelablePromise: CancelablePromise<
|
|
30
|
+
cancelablePromise: CancelablePromise<dh.ColumnStatistics> | null;
|
|
31
31
|
maybeGenerateStatistics(): void;
|
|
32
32
|
handleGenerateStatistics(): void;
|
|
33
|
-
handleStatistics(stats:
|
|
33
|
+
handleStatistics(stats: dh.ColumnStatistics): void;
|
|
34
34
|
handleError(error: Error): void;
|
|
35
35
|
render(): React.ReactElement;
|
|
36
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnStatistics.d.ts","sourceRoot":"","sources":["../src/ColumnStatistics.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAK9C,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"ColumnStatistics.d.ts","sourceRoot":"","sources":["../src/ColumnStatistics.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAK9C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAgB,MAAM,kBAAkB,CAAC;AAEnE,OAAO,yBAAyB,CAAC;AACjC,OAAO,aAAa,EAAE,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAO/D,UAAU,SAAS;IACjB,SAAS,EAAE,GAAG,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,qBAAqB;IAC7B,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,aAAa,CAAC;IACrB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AACD,UAAU,qBAAqB;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,SAAS,SAAS,EAAE,GAAG,IAAI,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,cAAM,gBAAiB,SAAQ,SAAS,CACtC,qBAAqB,EACrB,qBAAqB,CACtB;IACC,uFAAuF;IACvF,MAAM,CAAC,mBAAmB,SAAU;IAEpC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;gBAUnC,KAAK,EAAE,qBAAqB;IAiBxC,iBAAiB,IAAI,IAAI;IAIzB,oBAAoB,IAAI,IAAI;IAM5B,iBAAiB,EAAE,iBAAiB,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;IAEjE,uBAAuB,IAAI,IAAI;IAgB/B,wBAAwB,IAAI,IAAI;IAYhC,gBAAgB,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,GAAG,IAAI;IAoClD,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAc/B,MAAM,IAAI,KAAK,CAAC,YAAY;CAwG7B;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnStatistics.js","names":["React","Component","classNames","FontAwesomeIcon","Button","CopyButton","LoadingSpinner","dhFreeze","dhRefresh","dhSortSlash","vsLock","Log","PromiseUtils","isExpandableGridModel","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","log","module","STATS_LABEL_OVERRIDES","SIZE","ColumnStatistics","getStatsLabel","operation","_STATS_LABEL_OVERRIDE","split","map","w","toUpperCase","substr","toLowerCase","join","constructor","props","_defineProperty","handleError","bind","handleGenerateStatistics","handleStatistics","cancelablePromise","state","error","loading","statistics","numRows","componentDidMount","maybeGenerateStatistics","componentWillUnmount","cancel","column","model","rowCount","pendingRowCount","floatingBottomRowCount","floatingTopRowCount","setState","isColumnStatisticsAvailable","isProxy","AUTO_GENERATE_LIMIT","makeCancelable","columnStatistics","then","catch","stats","debug","onStatistics","statisticsMap","forEach","value","push","type","getType","uniqueValues","className","isCanceled","render","_column$displayName","showGenerateStatistics","statisticElements","columnType","substring","lastIndexOf","description","i","length","formattedValue","displayString","name","statisticElement","children","rowCountLabel","hasExpandableRows","formattedRowCount","columnIndex","getColumnIndexByName","displayName","tooltip","copy","isColumnSortable","icon","isColumnMovable","isColumnFrozen","kind","onClick","concat"],"sources":["../src/ColumnStatistics.tsx"],"sourcesContent":["import React, { Component, Key } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, CopyButton, LoadingSpinner } from '@deephaven/components';\nimport { dhFreeze, dhRefresh, dhSortSlash, vsLock } from '@deephaven/icons';\nimport type { ColumnStatistics as APIColumnStatistics } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport { CancelablePromise, PromiseUtils } from '@deephaven/utils';\nimport { isExpandableGridModel } from '@deephaven/grid';\nimport './ColumnStatistics.scss';\nimport IrisGridModel, { DisplayColumn } from './IrisGridModel';\n\nconst log = Log.module('ColumnStatistics');\nconst STATS_LABEL_OVERRIDES: Record<string, string> = {\n SIZE: 'Number of Rows',\n};\n\ninterface Statistic {\n operation: Key;\n className?: string;\n value: unknown;\n type: string;\n}\n\ninterface ColumnStatisticsProps {\n column: DisplayColumn;\n model: IrisGridModel;\n onStatistics: () => void;\n}\ninterface ColumnStatisticsState {\n error: unknown;\n loading: boolean;\n statistics: readonly Statistic[] | null;\n numRows: number;\n}\n\nclass ColumnStatistics extends Component<\n ColumnStatisticsProps,\n ColumnStatisticsState\n> {\n /** Automatically generate the statistics when the row count is below this threshold */\n static AUTO_GENERATE_LIMIT = 100000;\n\n static getStatsLabel(operation: string): string {\n return (\n STATS_LABEL_OVERRIDES[operation] ??\n operation\n .split(' ')\n .map(w => w[0].toUpperCase() + w.substr(1).toLowerCase())\n .join(' ')\n );\n }\n\n constructor(props: ColumnStatisticsProps) {\n super(props);\n\n this.handleError = this.handleError.bind(this);\n this.handleGenerateStatistics = this.handleGenerateStatistics.bind(this);\n this.handleStatistics = this.handleStatistics.bind(this);\n\n this.cancelablePromise = null;\n\n this.state = {\n error: null,\n loading: false,\n statistics: null,\n numRows: 0,\n };\n }\n\n componentDidMount(): void {\n this.maybeGenerateStatistics();\n }\n\n componentWillUnmount(): void {\n if (this.cancelablePromise) {\n this.cancelablePromise.cancel();\n }\n }\n\n cancelablePromise: CancelablePromise<APIColumnStatistics> | null;\n\n maybeGenerateStatistics(): void {\n const { column, model } = this.props;\n\n const numRows =\n model.rowCount -\n model.pendingRowCount -\n model.floatingBottomRowCount -\n model.floatingTopRowCount;\n this.setState({ numRows });\n if (!model.isColumnStatisticsAvailable || column.isProxy === true) {\n this.setState({ loading: false });\n } else if (numRows < ColumnStatistics.AUTO_GENERATE_LIMIT) {\n this.handleGenerateStatistics();\n }\n }\n\n handleGenerateStatistics(): void {\n this.setState({ loading: true });\n\n const { column, model } = this.props;\n\n this.cancelablePromise = PromiseUtils.makeCancelable(\n model.columnStatistics(column)\n );\n\n this.cancelablePromise.then(this.handleStatistics).catch(this.handleError);\n }\n\n handleStatistics(stats: APIColumnStatistics): void {\n log.debug('Received statistics', stats);\n\n const { model, onStatistics } = this.props;\n const statistics: Statistic[] = [];\n\n stats.statisticsMap.forEach((value, operation) => {\n statistics.push({\n operation: ColumnStatistics.getStatsLabel(operation),\n value,\n type: stats.getType(operation),\n });\n });\n\n stats.uniqueValues.forEach((value, operation) => {\n statistics.push({\n operation,\n className: 'column-statistics-unique-value',\n value,\n type: 'long',\n });\n });\n\n this.setState({\n loading: false,\n statistics,\n numRows:\n model.rowCount -\n model.pendingRowCount -\n model.floatingBottomRowCount -\n model.floatingTopRowCount,\n });\n\n onStatistics();\n }\n\n handleError(error: Error): void {\n if (error != null && PromiseUtils.isCanceled(error)) {\n log.debug('Called handleError on a cancelled promise result');\n return;\n }\n\n log.error('Error generating statistics', error);\n this.setState({\n error,\n loading: false,\n statistics: null,\n });\n }\n\n render(): React.ReactElement {\n const { column, model } = this.props;\n const { error, loading, statistics, numRows } = this.state;\n const showGenerateStatistics =\n !loading &&\n error == null &&\n statistics == null &&\n model.isColumnStatisticsAvailable;\n const statisticElements = [];\n const columnType = column.type.substring(column.type.lastIndexOf('.') + 1);\n const description = column.description === null ? null : column.description;\n if (statistics != null) {\n for (let i = 0; i < statistics.length; i += 1) {\n const { operation, className, value, type } = statistics[i];\n const formattedValue = !type\n ? model.displayString(value, column.type, column.name)\n : model.displayString(value, type);\n const statisticElement = (\n <React.Fragment key={operation}>\n <div\n className={classNames('column-statistic-operation', className)}\n >\n {operation}\n </div>\n <div className=\"column-statistic-value\">{formattedValue}</div>\n </React.Fragment>\n );\n statisticElements.push(statisticElement);\n }\n }\n const rowCountLabel =\n isExpandableGridModel(model) && model.hasExpandableRows\n ? 'Expanded Rows'\n : 'Number of Rows';\n const formattedRowCount = model.displayString(numRows, 'long');\n const columnIndex = model.getColumnIndexByName(column.name);\n return (\n <div className=\"column-statistics\">\n <div className=\"column-statistics-title\">\n {column.displayName ?? column.name}\n <span className=\"column-statistics-type\"> ({columnType})</span>\n <CopyButton\n className=\"column-statistics-copy\"\n tooltip=\"Copy column name\"\n copy={column.name}\n />\n </div>\n {description != null && (\n <div className=\"column-statistics-description\">{description}</div>\n )}\n {columnIndex != null && !model.isColumnSortable(columnIndex) && (\n <div className=\"column-statistics-status\">\n <FontAwesomeIcon icon={dhSortSlash} className=\"mr-1\" />\n Not sortable\n </div>\n )}\n {columnIndex != null && !model.isColumnMovable(columnIndex) && (\n <div className=\"column-statistics-status\">\n <FontAwesomeIcon\n icon={model.isColumnFrozen(columnIndex) ? dhFreeze : vsLock}\n className=\"mr-1\"\n />\n {model.isColumnFrozen(columnIndex) ? 'Frozen' : 'Not movable'}\n </div>\n )}\n <div className=\"column-statistics-grid\">\n {statistics == null && (\n <>\n <div className=\"column-statistic-operation\">{rowCountLabel}</div>\n <div className=\"column-statistic-value\">{formattedRowCount}</div>\n </>\n )}\n\n {statisticElements}\n </div>\n {showGenerateStatistics && (\n <Button\n kind=\"ghost\"\n className=\"px-0\"\n onClick={this.handleGenerateStatistics}\n >\n Generate Stats\n </Button>\n )}\n {error != null && <div className=\"error-message\">{`${error}`}</div>}\n {statistics && !loading && (\n <Button\n kind=\"ghost\"\n className=\"px-0\"\n onClick={this.handleGenerateStatistics}\n icon={<FontAwesomeIcon icon={dhRefresh} className=\"mr-1\" />}\n >\n Refresh\n </Button>\n )}\n {loading && (\n <div className=\"column-statistics-loading\">\n <LoadingSpinner className=\"loading-spinner-vertical-align\" />\n Calculating Stats...\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default ColumnStatistics;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ColumnStatistics.js","names":["React","Component","classNames","FontAwesomeIcon","Button","CopyButton","LoadingSpinner","dhFreeze","dhRefresh","dhSortSlash","vsLock","Log","PromiseUtils","isExpandableGridModel","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","log","module","STATS_LABEL_OVERRIDES","SIZE","ColumnStatistics","getStatsLabel","operation","_STATS_LABEL_OVERRIDE","split","map","w","toUpperCase","substr","toLowerCase","join","constructor","props","_defineProperty","handleError","bind","handleGenerateStatistics","handleStatistics","cancelablePromise","state","error","loading","statistics","numRows","componentDidMount","maybeGenerateStatistics","componentWillUnmount","cancel","column","model","rowCount","pendingRowCount","floatingBottomRowCount","floatingTopRowCount","setState","isColumnStatisticsAvailable","isProxy","AUTO_GENERATE_LIMIT","makeCancelable","columnStatistics","then","catch","stats","debug","onStatistics","statisticsMap","forEach","value","push","type","getType","uniqueValues","className","isCanceled","render","_column$displayName","showGenerateStatistics","statisticElements","columnType","substring","lastIndexOf","description","i","length","formattedValue","displayString","name","statisticElement","children","rowCountLabel","hasExpandableRows","formattedRowCount","columnIndex","getColumnIndexByName","displayName","tooltip","copy","isColumnSortable","icon","isColumnMovable","isColumnFrozen","kind","onClick","concat"],"sources":["../src/ColumnStatistics.tsx"],"sourcesContent":["import React, { Component, Key } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, CopyButton, LoadingSpinner } from '@deephaven/components';\nimport { dhFreeze, dhRefresh, dhSortSlash, vsLock } from '@deephaven/icons';\nimport type { dh } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport { CancelablePromise, PromiseUtils } from '@deephaven/utils';\nimport { isExpandableGridModel } from '@deephaven/grid';\nimport './ColumnStatistics.scss';\nimport IrisGridModel, { DisplayColumn } from './IrisGridModel';\n\nconst log = Log.module('ColumnStatistics');\nconst STATS_LABEL_OVERRIDES: Record<string, string> = {\n SIZE: 'Number of Rows',\n};\n\ninterface Statistic {\n operation: Key;\n className?: string;\n value: unknown;\n type: string;\n}\n\ninterface ColumnStatisticsProps {\n column: DisplayColumn;\n model: IrisGridModel;\n onStatistics: () => void;\n}\ninterface ColumnStatisticsState {\n error: unknown;\n loading: boolean;\n statistics: readonly Statistic[] | null;\n numRows: number;\n}\n\nclass ColumnStatistics extends Component<\n ColumnStatisticsProps,\n ColumnStatisticsState\n> {\n /** Automatically generate the statistics when the row count is below this threshold */\n static AUTO_GENERATE_LIMIT = 100000;\n\n static getStatsLabel(operation: string): string {\n return (\n STATS_LABEL_OVERRIDES[operation] ??\n operation\n .split(' ')\n .map(w => w[0].toUpperCase() + w.substr(1).toLowerCase())\n .join(' ')\n );\n }\n\n constructor(props: ColumnStatisticsProps) {\n super(props);\n\n this.handleError = this.handleError.bind(this);\n this.handleGenerateStatistics = this.handleGenerateStatistics.bind(this);\n this.handleStatistics = this.handleStatistics.bind(this);\n\n this.cancelablePromise = null;\n\n this.state = {\n error: null,\n loading: false,\n statistics: null,\n numRows: 0,\n };\n }\n\n componentDidMount(): void {\n this.maybeGenerateStatistics();\n }\n\n componentWillUnmount(): void {\n if (this.cancelablePromise) {\n this.cancelablePromise.cancel();\n }\n }\n\n cancelablePromise: CancelablePromise<dh.ColumnStatistics> | null;\n\n maybeGenerateStatistics(): void {\n const { column, model } = this.props;\n\n const numRows =\n model.rowCount -\n model.pendingRowCount -\n model.floatingBottomRowCount -\n model.floatingTopRowCount;\n this.setState({ numRows });\n if (!model.isColumnStatisticsAvailable || column.isProxy === true) {\n this.setState({ loading: false });\n } else if (numRows < ColumnStatistics.AUTO_GENERATE_LIMIT) {\n this.handleGenerateStatistics();\n }\n }\n\n handleGenerateStatistics(): void {\n this.setState({ loading: true });\n\n const { column, model } = this.props;\n\n this.cancelablePromise = PromiseUtils.makeCancelable(\n model.columnStatistics(column)\n );\n\n this.cancelablePromise.then(this.handleStatistics).catch(this.handleError);\n }\n\n handleStatistics(stats: dh.ColumnStatistics): void {\n log.debug('Received statistics', stats);\n\n const { model, onStatistics } = this.props;\n const statistics: Statistic[] = [];\n\n stats.statisticsMap.forEach((value, operation) => {\n statistics.push({\n operation: ColumnStatistics.getStatsLabel(operation),\n value,\n type: stats.getType(operation),\n });\n });\n\n stats.uniqueValues.forEach((value, operation) => {\n statistics.push({\n operation,\n className: 'column-statistics-unique-value',\n value,\n type: 'long',\n });\n });\n\n this.setState({\n loading: false,\n statistics,\n numRows:\n model.rowCount -\n model.pendingRowCount -\n model.floatingBottomRowCount -\n model.floatingTopRowCount,\n });\n\n onStatistics();\n }\n\n handleError(error: Error): void {\n if (error != null && PromiseUtils.isCanceled(error)) {\n log.debug('Called handleError on a cancelled promise result');\n return;\n }\n\n log.error('Error generating statistics', error);\n this.setState({\n error,\n loading: false,\n statistics: null,\n });\n }\n\n render(): React.ReactElement {\n const { column, model } = this.props;\n const { error, loading, statistics, numRows } = this.state;\n const showGenerateStatistics =\n !loading &&\n error == null &&\n statistics == null &&\n model.isColumnStatisticsAvailable;\n const statisticElements = [];\n const columnType = column.type.substring(column.type.lastIndexOf('.') + 1);\n const description = column.description === null ? null : column.description;\n if (statistics != null) {\n for (let i = 0; i < statistics.length; i += 1) {\n const { operation, className, value, type } = statistics[i];\n const formattedValue = !type\n ? model.displayString(value, column.type, column.name)\n : model.displayString(value, type);\n const statisticElement = (\n <React.Fragment key={operation}>\n <div\n className={classNames('column-statistic-operation', className)}\n >\n {operation}\n </div>\n <div className=\"column-statistic-value\">{formattedValue}</div>\n </React.Fragment>\n );\n statisticElements.push(statisticElement);\n }\n }\n const rowCountLabel =\n isExpandableGridModel(model) && model.hasExpandableRows\n ? 'Expanded Rows'\n : 'Number of Rows';\n const formattedRowCount = model.displayString(numRows, 'long');\n const columnIndex = model.getColumnIndexByName(column.name);\n return (\n <div className=\"column-statistics\">\n <div className=\"column-statistics-title\">\n {column.displayName ?? column.name}\n <span className=\"column-statistics-type\"> ({columnType})</span>\n <CopyButton\n className=\"column-statistics-copy\"\n tooltip=\"Copy column name\"\n copy={column.name}\n />\n </div>\n {description != null && (\n <div className=\"column-statistics-description\">{description}</div>\n )}\n {columnIndex != null && !model.isColumnSortable(columnIndex) && (\n <div className=\"column-statistics-status\">\n <FontAwesomeIcon icon={dhSortSlash} className=\"mr-1\" />\n Not sortable\n </div>\n )}\n {columnIndex != null && !model.isColumnMovable(columnIndex) && (\n <div className=\"column-statistics-status\">\n <FontAwesomeIcon\n icon={model.isColumnFrozen(columnIndex) ? dhFreeze : vsLock}\n className=\"mr-1\"\n />\n {model.isColumnFrozen(columnIndex) ? 'Frozen' : 'Not movable'}\n </div>\n )}\n <div className=\"column-statistics-grid\">\n {statistics == null && (\n <>\n <div className=\"column-statistic-operation\">{rowCountLabel}</div>\n <div className=\"column-statistic-value\">{formattedRowCount}</div>\n </>\n )}\n\n {statisticElements}\n </div>\n {showGenerateStatistics && (\n <Button\n kind=\"ghost\"\n className=\"px-0\"\n onClick={this.handleGenerateStatistics}\n >\n Generate Stats\n </Button>\n )}\n {error != null && <div className=\"error-message\">{`${error}`}</div>}\n {statistics && !loading && (\n <Button\n kind=\"ghost\"\n className=\"px-0\"\n onClick={this.handleGenerateStatistics}\n icon={<FontAwesomeIcon icon={dhRefresh} className=\"mr-1\" />}\n >\n Refresh\n </Button>\n )}\n {loading && (\n <div className=\"column-statistics-loading\">\n <LoadingSpinner className=\"loading-spinner-vertical-align\" />\n Calculating Stats...\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default ColumnStatistics;\n"],"mappings":"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"}
|
package/dist/CommonTypes.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AdvancedFilterOptions } from '@deephaven/jsapi-utils';
|
|
2
2
|
import { ModelIndex } from '@deephaven/grid';
|
|
3
|
-
import type {
|
|
3
|
+
import type { dh } from '@deephaven/jsapi-types';
|
|
4
4
|
import { Shortcut } from '@deephaven/components';
|
|
5
5
|
import { IconDefinition } from '@deephaven/icons';
|
|
6
6
|
import AggregationOperation from './sidebar/aggregations/AggregationOperation';
|
|
@@ -17,10 +17,10 @@ export type OperationMap = Record<ColumnName, readonly AggregationOperation[]>;
|
|
|
17
17
|
export type ReadonlyOperationMap = Readonly<Record<ColumnName, readonly AggregationOperation[]>>;
|
|
18
18
|
export type QuickFilter = {
|
|
19
19
|
text: string;
|
|
20
|
-
filter: FilterCondition | null;
|
|
20
|
+
filter: dh.FilterCondition | null;
|
|
21
21
|
};
|
|
22
22
|
export type AdvancedFilter = {
|
|
23
|
-
filter: FilterCondition | null;
|
|
23
|
+
filter: dh.FilterCondition | null;
|
|
24
24
|
options: AdvancedFilterOptions;
|
|
25
25
|
};
|
|
26
26
|
export type Action = {
|
|
@@ -35,7 +35,7 @@ export type OptionItem = {
|
|
|
35
35
|
isOn?: boolean;
|
|
36
36
|
onChange?: () => void;
|
|
37
37
|
};
|
|
38
|
-
export interface UITotalsTableConfig extends TotalsTableConfig {
|
|
38
|
+
export interface UITotalsTableConfig extends dh.TotalsTableConfig {
|
|
39
39
|
operationOrder: AggregationOperation[];
|
|
40
40
|
showOnTop: boolean;
|
|
41
41
|
}
|
|
@@ -57,7 +57,7 @@ export type RowData<T = unknown> = Map<number, {
|
|
|
57
57
|
}>;
|
|
58
58
|
export type CellData = {
|
|
59
59
|
value: unknown;
|
|
60
|
-
format?: Format;
|
|
60
|
+
format?: dh.Format;
|
|
61
61
|
};
|
|
62
62
|
export type PendingDataMap<R extends UIRow = UIRow> = ReadonlyMap<RowIndex, R>;
|
|
63
63
|
/** Maps from a row index to the errors for that row */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommonTypes.d.ts","sourceRoot":"","sources":["../src/CommonTypes.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"CommonTypes.d.ts","sourceRoot":"","sources":["../src/CommonTypes.tsx"],"names":[],"mappings":"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"}
|
package/dist/CommonTypes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommonTypes.js","names":[],"sources":["../src/CommonTypes.tsx"],"sourcesContent":["import { AdvancedFilterOptions } from '@deephaven/jsapi-utils';\nimport { ModelIndex } from '@deephaven/grid';\nimport type {
|
|
1
|
+
{"version":3,"file":"CommonTypes.js","names":[],"sources":["../src/CommonTypes.tsx"],"sourcesContent":["import { AdvancedFilterOptions } from '@deephaven/jsapi-utils';\nimport { ModelIndex } from '@deephaven/grid';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { Shortcut } from '@deephaven/components';\nimport { IconDefinition } from '@deephaven/icons';\nimport AggregationOperation from './sidebar/aggregations/AggregationOperation';\nimport { OptionType } from './sidebar';\n\nexport type RowIndex = ModelIndex;\n\nexport type { AdvancedFilterOptions };\nexport type ColumnName = string;\nexport type AdvancedFilterMap = Map<ModelIndex, AdvancedFilter>;\nexport type QuickFilterMap = Map<ModelIndex, QuickFilter>;\nexport type ReadonlyAdvancedFilterMap = ReadonlyMap<ModelIndex, AdvancedFilter>;\nexport type ReadonlyQuickFilterMap = ReadonlyMap<ModelIndex, QuickFilter>;\nexport type ReadonlyAggregationMap = Readonly<\n Record<AggregationOperation, readonly ColumnName[]>\n>;\nexport type OperationMap = Record<ColumnName, readonly AggregationOperation[]>;\nexport type ReadonlyOperationMap = Readonly<\n Record<ColumnName, readonly AggregationOperation[]>\n>;\n\nexport type QuickFilter = {\n text: string;\n filter: dh.FilterCondition | null;\n};\n\nexport type AdvancedFilter = {\n filter: dh.FilterCondition | null;\n options: AdvancedFilterOptions;\n};\n\nexport type Action = {\n action: () => void;\n shortcut: Shortcut;\n};\n\nexport type OptionItem = {\n type: OptionType;\n title: string;\n subtitle?: string;\n icon?: IconDefinition;\n isOn?: boolean;\n onChange?: () => void;\n};\n\nexport interface UITotalsTableConfig extends dh.TotalsTableConfig {\n operationOrder: AggregationOperation[];\n showOnTop: boolean;\n}\n\nexport type InputFilter = {\n name: string;\n type: string;\n value: string;\n excludePanelIds?: (string | string[])[];\n};\n\nexport interface UIRow {\n data: Map<ModelIndex, CellData>;\n}\n\nexport type UIViewportData<R extends UIRow = UIRow> = {\n offset: number;\n rows: R[];\n};\nexport type RowData<T = unknown> = Map<number, { value: T }>;\n\nexport type CellData = {\n value: unknown;\n format?: dh.Format;\n};\nexport type PendingDataMap<R extends UIRow = UIRow> = ReadonlyMap<RowIndex, R>;\n\n/** Maps from a row index to the errors for that row */\nexport type PendingDataErrorMap<T extends Error = Error> = ReadonlyMap<\n RowIndex,\n readonly T[]\n>;\n"],"mappings":""}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { PureComponent } from 'react';
|
|
2
2
|
import { SearchInput } from '@deephaven/components';
|
|
3
|
-
import type {
|
|
3
|
+
import type { dh as DhType } from '@deephaven/jsapi-types';
|
|
4
4
|
import './CrossColumnSearch.scss';
|
|
5
5
|
import { ColumnName } from './CommonTypes';
|
|
6
6
|
import { DisplayColumn } from './IrisGridModel';
|
|
@@ -15,7 +15,7 @@ interface CrossColumnSearchState {
|
|
|
15
15
|
isConfigureColumnsShown: boolean;
|
|
16
16
|
}
|
|
17
17
|
declare class CrossColumnSearch extends PureComponent<CrossColumnSearchProps, CrossColumnSearchState> {
|
|
18
|
-
static createSearchFilter(dh: DhType, searchValue: string, selectedColumns: readonly ColumnName[], columns: readonly Column[], invertSelection: boolean): FilterCondition | undefined;
|
|
18
|
+
static createSearchFilter(dh: typeof DhType, searchValue: string, selectedColumns: readonly ColumnName[], columns: readonly DhType.Column[], invertSelection: boolean): DhType.FilterCondition | undefined;
|
|
19
19
|
constructor(props: CrossColumnSearchProps);
|
|
20
20
|
searchField: React.RefObject<SearchInput>;
|
|
21
21
|
focus(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CrossColumnSearch.d.ts","sourceRoot":"","sources":["../src/CrossColumnSearch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,EAAoB,WAAW,EAAW,MAAM,uBAAuB,CAAC;AAS/E,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"CrossColumnSearch.d.ts","sourceRoot":"","sources":["../src/CrossColumnSearch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,EAAoB,WAAW,EAAW,MAAM,uBAAuB,CAAC;AAS/E,OAAO,KAAK,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,UAAU,sBAAsB;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,CACR,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,SAAS,UAAU,EAAE,EACtC,eAAe,EAAE,OAAO,KACrB,IAAI,CAAC;IACV,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;CACnC;AAED,UAAU,sBAAsB;IAC9B,uBAAuB,EAAE,OAAO,CAAC;CAClC;AACD,cAAM,iBAAkB,SAAQ,aAAa,CAC3C,sBAAsB,EACtB,sBAAsB,CACvB;IACC,MAAM,CAAC,kBAAkB,CACvB,EAAE,EAAE,OAAO,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,SAAS,UAAU,EAAE,EACtC,OAAO,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,EACjC,eAAe,EAAE,OAAO,GACvB,MAAM,CAAC,eAAe,GAAG,SAAS;gBAsBzB,KAAK,EAAE,sBAAsB;IAezC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAE1C,KAAK,IAAI,IAAI;IAIb,uBAAuB,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAKzE,gBAAgB,CACd,eAAe,EAAE,SAAS,UAAU,EAAE,EACtC,eAAe,EAAE,OAAO,GACvB,IAAI;IAKP,kBAAkB,CAAC,eAAe,EAAE,OAAO,GAAG,IAAI;IAKlD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAchC,SAAS,IAAI,IAAI;IAIjB,KAAK,IAAI,IAAI;IAIb,aAAa,IAAI,IAAI;IAUrB,MAAM,IAAI,KAAK,CAAC,YAAY;CA0J7B;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CrossColumnSearch.js","names":["React","PureComponent","FontAwesomeIcon","Checkbox","Popper","SearchInput","Tooltip","dhGearFilled","dhCheckSquare","dhSquareFilled","dhRemoveSquareFilled","dhWarningCircleFilled","vsCircleLargeFilled","TableUtils","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","CrossColumnSearch","createSearchFilter","dh","searchValue","selectedColumns","columns","invertSelection","filterColumns","filter","column","includes","name","map","length","filterValue","FilterValue","ofString","searchFilter","FilterCondition","search","undefined","constructor","props","_defineProperty","handleSearchValueChange","bind","toggleColumn","selectAll","clear","selectNumbers","searchField","createRef","state","isConfigureColumnsShown","focus","_this$searchField$cur","current","event","onChange","target","value","sendColumnChange","setInvertSelection","c","update","slice","push","isNumberType","type","render","hasAllColumnsSelected","hasNoColumnsSelected","icon","children","mask","transform","className","placeholder","ref","onClick","setState","isShown","onExited","closeOnBlur","interactive","isProxy","checked","substring","lastIndexOf"],"sources":["../src/CrossColumnSearch.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Checkbox, Popper, SearchInput, Tooltip } from '@deephaven/components';\nimport {\n dhGearFilled,\n dhCheckSquare,\n dhSquareFilled,\n dhRemoveSquareFilled,\n dhWarningCircleFilled,\n vsCircleLargeFilled,\n} from '@deephaven/icons';\nimport type {\n Column,\n dh as DhType,\n FilterCondition,\n} from '@deephaven/jsapi-types';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport './CrossColumnSearch.scss';\nimport { ColumnName } from './CommonTypes';\nimport { DisplayColumn } from './IrisGridModel';\n\ninterface CrossColumnSearchProps {\n value: string;\n selectedColumns: readonly ColumnName[];\n invertSelection: boolean;\n onChange: (\n value: string,\n selectedColumns: readonly ColumnName[],\n invertSelection: boolean\n ) => void;\n columns: readonly DisplayColumn[];\n}\n\ninterface CrossColumnSearchState {\n isConfigureColumnsShown: boolean;\n}\nclass CrossColumnSearch extends PureComponent<\n CrossColumnSearchProps,\n CrossColumnSearchState\n> {\n static createSearchFilter(\n dh: DhType,\n searchValue: string,\n selectedColumns: readonly ColumnName[],\n columns: readonly Column[],\n invertSelection: boolean\n ): FilterCondition | undefined {\n const filterColumns = invertSelection\n ? columns\n .filter(column => !selectedColumns.includes(column.name))\n .map(column => column.name)\n : selectedColumns;\n if (searchValue && filterColumns.length > 0) {\n const filterValue = dh.FilterValue.ofString(searchValue);\n const searchFilter =\n filterColumns.length === columns.length\n ? dh.FilterCondition.search(filterValue)\n : dh.FilterCondition.search(\n filterValue,\n columns\n .filter(column => filterColumns.includes(column.name))\n .map(column => column.filter())\n );\n return searchFilter;\n }\n return undefined;\n }\n\n constructor(props: CrossColumnSearchProps) {\n super(props);\n this.handleSearchValueChange = this.handleSearchValueChange.bind(this);\n this.toggleColumn = this.toggleColumn.bind(this);\n this.selectAll = this.selectAll.bind(this);\n this.clear = this.clear.bind(this);\n this.selectNumbers = this.selectNumbers.bind(this);\n\n this.searchField = React.createRef();\n\n this.state = {\n isConfigureColumnsShown: false,\n };\n }\n\n searchField: React.RefObject<SearchInput>;\n\n focus(): void {\n this.searchField.current?.focus();\n }\n\n handleSearchValueChange(event: React.ChangeEvent<HTMLInputElement>): void {\n const { onChange, selectedColumns, invertSelection } = this.props;\n onChange(event.target.value, selectedColumns, invertSelection);\n }\n\n sendColumnChange(\n selectedColumns: readonly ColumnName[],\n invertSelection: boolean\n ): void {\n const { onChange, value } = this.props;\n onChange(value, selectedColumns, invertSelection);\n }\n\n setInvertSelection(invertSelection: boolean): void {\n const { onChange, value } = this.props;\n onChange(value, [], invertSelection);\n }\n\n toggleColumn(name: string): void {\n const { selectedColumns, invertSelection } = this.props;\n if (selectedColumns.includes(name)) {\n this.sendColumnChange(\n selectedColumns.filter(c => c !== name),\n invertSelection\n );\n } else {\n const update = selectedColumns.slice();\n update.push(name);\n this.sendColumnChange(update, invertSelection);\n }\n }\n\n selectAll(): void {\n this.setInvertSelection(true);\n }\n\n clear(): void {\n this.setInvertSelection(false);\n }\n\n selectNumbers(): void {\n const { columns } = this.props;\n this.sendColumnChange(\n columns\n .filter(c => TableUtils.isNumberType(c.type))\n .map(column => column.name),\n false\n );\n }\n\n render(): React.ReactElement {\n const { value, selectedColumns, invertSelection, columns } = this.props;\n const { isConfigureColumnsShown } = this.state;\n const hasAllColumnsSelected =\n (selectedColumns.length === 0 && invertSelection === true) ||\n (selectedColumns.length === columns.length && invertSelection === false);\n const hasNoColumnsSelected =\n (selectedColumns.length === 0 && invertSelection === false) ||\n (selectedColumns.length === columns.length && invertSelection === true);\n\n // set icon layers\n let icon;\n if (hasAllColumnsSelected) {\n // icon if all columns selected for search\n icon = (\n <>\n <FontAwesomeIcon\n icon={dhSquareFilled}\n mask={dhGearFilled}\n transform=\"shrink-2 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhCheckSquare}\n className=\"text-primary\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n } else if (hasNoColumnsSelected) {\n // icon error, no columns selected for searching\n icon = (\n <>\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={dhGearFilled}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhWarningCircleFilled}\n className=\"text-danger\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n } else {\n // icon if some columns selected, but not all\n icon = (\n <>\n <FontAwesomeIcon\n icon={dhSquareFilled}\n mask={dhGearFilled}\n transform=\"shrink-2 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhRemoveSquareFilled}\n className=\"text-primary\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n }\n\n return (\n <div className=\"cross-column-container\">\n <SearchInput\n className=\"cross-column-search\"\n placeholder=\"Search Data...\"\n data-testid=\"cross-column-search\"\n value={value}\n onChange={this.handleSearchValueChange}\n ref={this.searchField}\n />\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon px-2\"\n onClick={() => {\n if (isConfigureColumnsShown) {\n this.setState({ isConfigureColumnsShown: false });\n } else {\n this.setState({ isConfigureColumnsShown: true });\n }\n }}\n >\n <div className=\"fa-layers\">{icon}</div>\n <Tooltip>Configure Columns</Tooltip>\n <Popper\n isShown={isConfigureColumnsShown}\n className=\"cross-column-popper\"\n onExited={() => {\n this.setState({ isConfigureColumnsShown: false });\n }}\n closeOnBlur\n interactive\n >\n <div className=\"cross-column-popup\">\n Searched Columns\n <div className=\"cross-column-scroll\">\n {columns.map(column => {\n if (column.isProxy === true) return null;\n\n return (\n <React.Fragment key={column.name}>\n <Checkbox\n className=\"cross-column-checkbox\"\n checked={\n invertSelection\n ? !selectedColumns.includes(column.name)\n : selectedColumns.includes(column.name)\n }\n onChange={() => this.toggleColumn(column.name)}\n >\n {column.name}\n </Checkbox>\n\n {column.type.substring(column.type.lastIndexOf('.') + 1)}\n </React.Fragment>\n );\n })}\n </div>\n <div className=\"cross-column-button-bar\">\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.selectAll}\n >\n Select All\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.clear}\n >\n Clear\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.selectNumbers}\n >\n Numbers Only\n </button>\n </div>\n {hasNoColumnsSelected && (\n <p className=\"text-danger\">\n <FontAwesomeIcon icon={dhWarningCircleFilled} /> Select at\n least one column to search.\n </p>\n )}\n </div>\n </Popper>\n </button>\n </div>\n );\n }\n}\n\nexport default CrossColumnSearch;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CrossColumnSearch.js","names":["React","PureComponent","FontAwesomeIcon","Checkbox","Popper","SearchInput","Tooltip","dhGearFilled","dhCheckSquare","dhSquareFilled","dhRemoveSquareFilled","dhWarningCircleFilled","vsCircleLargeFilled","TableUtils","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","CrossColumnSearch","createSearchFilter","dh","searchValue","selectedColumns","columns","invertSelection","filterColumns","filter","column","includes","name","map","length","filterValue","FilterValue","ofString","searchFilter","FilterCondition","search","undefined","constructor","props","_defineProperty","handleSearchValueChange","bind","toggleColumn","selectAll","clear","selectNumbers","searchField","createRef","state","isConfigureColumnsShown","focus","_this$searchField$cur","current","event","onChange","target","value","sendColumnChange","setInvertSelection","c","update","slice","push","isNumberType","type","render","hasAllColumnsSelected","hasNoColumnsSelected","icon","children","mask","transform","className","placeholder","ref","onClick","setState","isShown","onExited","closeOnBlur","interactive","isProxy","checked","substring","lastIndexOf"],"sources":["../src/CrossColumnSearch.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Checkbox, Popper, SearchInput, Tooltip } from '@deephaven/components';\nimport {\n dhGearFilled,\n dhCheckSquare,\n dhSquareFilled,\n dhRemoveSquareFilled,\n dhWarningCircleFilled,\n vsCircleLargeFilled,\n} from '@deephaven/icons';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport './CrossColumnSearch.scss';\nimport { ColumnName } from './CommonTypes';\nimport { DisplayColumn } from './IrisGridModel';\n\ninterface CrossColumnSearchProps {\n value: string;\n selectedColumns: readonly ColumnName[];\n invertSelection: boolean;\n onChange: (\n value: string,\n selectedColumns: readonly ColumnName[],\n invertSelection: boolean\n ) => void;\n columns: readonly DisplayColumn[];\n}\n\ninterface CrossColumnSearchState {\n isConfigureColumnsShown: boolean;\n}\nclass CrossColumnSearch extends PureComponent<\n CrossColumnSearchProps,\n CrossColumnSearchState\n> {\n static createSearchFilter(\n dh: typeof DhType,\n searchValue: string,\n selectedColumns: readonly ColumnName[],\n columns: readonly DhType.Column[],\n invertSelection: boolean\n ): DhType.FilterCondition | undefined {\n const filterColumns = invertSelection\n ? columns\n .filter(column => !selectedColumns.includes(column.name))\n .map(column => column.name)\n : selectedColumns;\n if (searchValue && filterColumns.length > 0) {\n const filterValue = dh.FilterValue.ofString(searchValue);\n const searchFilter =\n filterColumns.length === columns.length\n ? dh.FilterCondition.search(filterValue)\n : dh.FilterCondition.search(\n filterValue,\n columns\n .filter(column => filterColumns.includes(column.name))\n .map(column => column.filter())\n );\n return searchFilter;\n }\n return undefined;\n }\n\n constructor(props: CrossColumnSearchProps) {\n super(props);\n this.handleSearchValueChange = this.handleSearchValueChange.bind(this);\n this.toggleColumn = this.toggleColumn.bind(this);\n this.selectAll = this.selectAll.bind(this);\n this.clear = this.clear.bind(this);\n this.selectNumbers = this.selectNumbers.bind(this);\n\n this.searchField = React.createRef();\n\n this.state = {\n isConfigureColumnsShown: false,\n };\n }\n\n searchField: React.RefObject<SearchInput>;\n\n focus(): void {\n this.searchField.current?.focus();\n }\n\n handleSearchValueChange(event: React.ChangeEvent<HTMLInputElement>): void {\n const { onChange, selectedColumns, invertSelection } = this.props;\n onChange(event.target.value, selectedColumns, invertSelection);\n }\n\n sendColumnChange(\n selectedColumns: readonly ColumnName[],\n invertSelection: boolean\n ): void {\n const { onChange, value } = this.props;\n onChange(value, selectedColumns, invertSelection);\n }\n\n setInvertSelection(invertSelection: boolean): void {\n const { onChange, value } = this.props;\n onChange(value, [], invertSelection);\n }\n\n toggleColumn(name: string): void {\n const { selectedColumns, invertSelection } = this.props;\n if (selectedColumns.includes(name)) {\n this.sendColumnChange(\n selectedColumns.filter(c => c !== name),\n invertSelection\n );\n } else {\n const update = selectedColumns.slice();\n update.push(name);\n this.sendColumnChange(update, invertSelection);\n }\n }\n\n selectAll(): void {\n this.setInvertSelection(true);\n }\n\n clear(): void {\n this.setInvertSelection(false);\n }\n\n selectNumbers(): void {\n const { columns } = this.props;\n this.sendColumnChange(\n columns\n .filter(c => TableUtils.isNumberType(c.type))\n .map(column => column.name),\n false\n );\n }\n\n render(): React.ReactElement {\n const { value, selectedColumns, invertSelection, columns } = this.props;\n const { isConfigureColumnsShown } = this.state;\n const hasAllColumnsSelected =\n (selectedColumns.length === 0 && invertSelection === true) ||\n (selectedColumns.length === columns.length && invertSelection === false);\n const hasNoColumnsSelected =\n (selectedColumns.length === 0 && invertSelection === false) ||\n (selectedColumns.length === columns.length && invertSelection === true);\n\n // set icon layers\n let icon;\n if (hasAllColumnsSelected) {\n // icon if all columns selected for search\n icon = (\n <>\n <FontAwesomeIcon\n icon={dhSquareFilled}\n mask={dhGearFilled}\n transform=\"shrink-2 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhCheckSquare}\n className=\"text-primary\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n } else if (hasNoColumnsSelected) {\n // icon error, no columns selected for searching\n icon = (\n <>\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={dhGearFilled}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhWarningCircleFilled}\n className=\"text-danger\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n } else {\n // icon if some columns selected, but not all\n icon = (\n <>\n <FontAwesomeIcon\n icon={dhSquareFilled}\n mask={dhGearFilled}\n transform=\"shrink-2 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhRemoveSquareFilled}\n className=\"text-primary\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n }\n\n return (\n <div className=\"cross-column-container\">\n <SearchInput\n className=\"cross-column-search\"\n placeholder=\"Search Data...\"\n data-testid=\"cross-column-search\"\n value={value}\n onChange={this.handleSearchValueChange}\n ref={this.searchField}\n />\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon px-2\"\n onClick={() => {\n if (isConfigureColumnsShown) {\n this.setState({ isConfigureColumnsShown: false });\n } else {\n this.setState({ isConfigureColumnsShown: true });\n }\n }}\n >\n <div className=\"fa-layers\">{icon}</div>\n <Tooltip>Configure Columns</Tooltip>\n <Popper\n isShown={isConfigureColumnsShown}\n className=\"cross-column-popper\"\n onExited={() => {\n this.setState({ isConfigureColumnsShown: false });\n }}\n closeOnBlur\n interactive\n >\n <div className=\"cross-column-popup\">\n Searched Columns\n <div className=\"cross-column-scroll\">\n {columns.map(column => {\n if (column.isProxy === true) return null;\n\n return (\n <React.Fragment key={column.name}>\n <Checkbox\n className=\"cross-column-checkbox\"\n checked={\n invertSelection\n ? !selectedColumns.includes(column.name)\n : selectedColumns.includes(column.name)\n }\n onChange={() => this.toggleColumn(column.name)}\n >\n {column.name}\n </Checkbox>\n\n {column.type.substring(column.type.lastIndexOf('.') + 1)}\n </React.Fragment>\n );\n })}\n </div>\n <div className=\"cross-column-button-bar\">\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.selectAll}\n >\n Select All\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.clear}\n >\n Clear\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.selectNumbers}\n >\n Numbers Only\n </button>\n </div>\n {hasNoColumnsSelected && (\n <p className=\"text-danger\">\n <FontAwesomeIcon icon={dhWarningCircleFilled} /> Select at\n least one column to search.\n </p>\n )}\n </div>\n </Popper>\n </button>\n </div>\n );\n }\n}\n\nexport default CrossColumnSearch;\n"],"mappings":"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"}
|
|
@@ -1,44 +1,44 @@
|
|
|
1
1
|
import { GridRange, ModelIndex, MoveOperation, VisibleIndex } from '@deephaven/grid';
|
|
2
|
-
import {
|
|
2
|
+
import { dh as DhType } from '@deephaven/jsapi-types';
|
|
3
3
|
import { ColumnName, Formatter } from '@deephaven/jsapi-utils';
|
|
4
4
|
import IrisGridModel from './IrisGridModel';
|
|
5
5
|
import ColumnHeaderGroup from './ColumnHeaderGroup';
|
|
6
6
|
import { PendingDataErrorMap, PendingDataMap, UITotalsTableConfig } from './CommonTypes';
|
|
7
7
|
declare class EmptyIrisGridModel extends IrisGridModel {
|
|
8
|
-
constructor(dh: DhType, formatter?: Formatter);
|
|
8
|
+
constructor(dh: typeof DhType, formatter?: Formatter);
|
|
9
9
|
modelFormatter: Formatter;
|
|
10
10
|
get rowCount(): number;
|
|
11
11
|
get columnCount(): number;
|
|
12
12
|
textForCell(column: number, row: number): string;
|
|
13
13
|
textForColumnHeader(column: ModelIndex, depth?: number): string | undefined;
|
|
14
|
-
get columns(): readonly Column[];
|
|
14
|
+
get columns(): readonly DhType.Column[];
|
|
15
15
|
getColumnIndexByName(name: string): ModelIndex | undefined;
|
|
16
16
|
get initialMovedColumns(): readonly MoveOperation[];
|
|
17
17
|
get initialMovedRows(): readonly MoveOperation[];
|
|
18
18
|
get initialColumnHeaderGroups(): readonly ColumnHeaderGroup[];
|
|
19
|
-
get groupedColumns(): readonly Column[];
|
|
20
|
-
formatForCell(column: ModelIndex, row: ModelIndex): Format | undefined;
|
|
19
|
+
get groupedColumns(): readonly DhType.Column[];
|
|
20
|
+
formatForCell(column: ModelIndex, row: ModelIndex): DhType.Format | undefined;
|
|
21
21
|
valueForCell(column: ModelIndex, row: ModelIndex): unknown;
|
|
22
|
-
get filter(): readonly FilterCondition[];
|
|
23
|
-
set filter(filter: readonly FilterCondition[]);
|
|
22
|
+
get filter(): readonly DhType.FilterCondition[];
|
|
23
|
+
set filter(filter: readonly DhType.FilterCondition[]);
|
|
24
24
|
get partition(): readonly unknown[];
|
|
25
25
|
set partition(partition: readonly unknown[]);
|
|
26
|
-
get partitionColumns(): readonly Column[];
|
|
26
|
+
get partitionColumns(): readonly DhType.Column[];
|
|
27
27
|
get formatter(): Formatter;
|
|
28
28
|
set formatter(formatter: Formatter);
|
|
29
29
|
displayString(value: unknown, columnType: string, columnName?: ColumnName): string;
|
|
30
|
-
get sort(): readonly Sort[];
|
|
31
|
-
set sort(sort: readonly Sort[]);
|
|
30
|
+
get sort(): readonly DhType.Sort[];
|
|
31
|
+
set sort(sort: readonly DhType.Sort[]);
|
|
32
32
|
get customColumns(): readonly ColumnName[];
|
|
33
33
|
set customColumns(customColumns: readonly ColumnName[]);
|
|
34
|
-
get formatColumns(): readonly CustomColumn[];
|
|
34
|
+
get formatColumns(): readonly DhType.CustomColumn[];
|
|
35
35
|
updateFrozenColumns(columns: readonly ColumnName[]): void;
|
|
36
|
-
get rollupConfig(): RollupConfig | null;
|
|
37
|
-
set rollupConfig(rollupConfig: RollupConfig | null);
|
|
36
|
+
get rollupConfig(): DhType.RollupConfig | null;
|
|
37
|
+
set rollupConfig(rollupConfig: DhType.RollupConfig | null);
|
|
38
38
|
get totalsConfig(): UITotalsTableConfig | null;
|
|
39
39
|
set totalsConfig(totalsConfig: UITotalsTableConfig | null);
|
|
40
|
-
export(): Promise<Table>;
|
|
41
|
-
columnStatistics(column: Column): Promise<ColumnStatistics>;
|
|
40
|
+
export(): Promise<DhType.Table>;
|
|
41
|
+
columnStatistics(column: DhType.Column): Promise<DhType.ColumnStatistics>;
|
|
42
42
|
get selectDistinctColumns(): readonly ColumnName[];
|
|
43
43
|
set selectDistinctColumns(selectDistinctColumns: readonly ColumnName[]);
|
|
44
44
|
get pendingDataMap(): PendingDataMap;
|
|
@@ -47,12 +47,12 @@ declare class EmptyIrisGridModel extends IrisGridModel {
|
|
|
47
47
|
set pendingRowCount(count: number);
|
|
48
48
|
get pendingDataErrors(): PendingDataErrorMap;
|
|
49
49
|
commitPending(): Promise<void>;
|
|
50
|
-
setViewport(top: VisibleIndex, bottom: VisibleIndex, columns?: Column[]): void;
|
|
50
|
+
setViewport(top: VisibleIndex, bottom: VisibleIndex, columns?: DhType.Column[]): void;
|
|
51
51
|
snapshot(ranges: readonly GridRange[]): Promise<readonly unknown[][]>;
|
|
52
|
-
textSnapshot(ranges: readonly GridRange[], includeHeaders?: boolean, formatValue?: (value: unknown, column: Column, row?: Row) => string): Promise<string>;
|
|
53
|
-
valuesTable(columns: Column | readonly Column[]): Promise<Table>;
|
|
52
|
+
textSnapshot(ranges: readonly GridRange[], includeHeaders?: boolean, formatValue?: (value: unknown, column: DhType.Column, row?: DhType.Row) => string): Promise<string>;
|
|
53
|
+
valuesTable(columns: DhType.Column | readonly DhType.Column[]): Promise<DhType.Table>;
|
|
54
54
|
delete(ranges: readonly GridRange[]): Promise<void>;
|
|
55
|
-
seekRow(startRow: number, column: Column, valueType: unknown, value: unknown, insensitive?: boolean, contains?: boolean, isBackwards?: boolean): Promise<number>;
|
|
55
|
+
seekRow(startRow: number, column: DhType.Column, valueType: unknown, value: unknown, insensitive?: boolean, contains?: boolean, isBackwards?: boolean): Promise<number>;
|
|
56
56
|
get columnHeaderGroups(): readonly ColumnHeaderGroup[];
|
|
57
57
|
set columnHeaderGroups(groups: readonly ColumnHeaderGroup[]);
|
|
58
58
|
get columnHeaderGroupMap(): ReadonlyMap<string, ColumnHeaderGroup>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyIrisGridModel.d.ts","sourceRoot":"","sources":["../src/EmptyIrisGridModel.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EACT,UAAU,EACV,aAAa,EACb,YAAY,EACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,
|
|
1
|
+
{"version":3,"file":"EmptyIrisGridModel.d.ts","sourceRoot":"","sources":["../src/EmptyIrisGridModel.ts"],"names":[],"mappings":"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"}
|