@deephaven/iris-grid 0.22.3-deep-bot-test.14 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AdvancedFilterCreator.d.ts +1 -1
- package/dist/AdvancedFilterCreator.d.ts.map +1 -1
- package/dist/AdvancedFilterCreator.js +7 -65
- package/dist/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.d.ts +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.js +0 -23
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js +0 -52
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts +1 -5
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js +2 -42
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/ColumnHeaderGroup.js +0 -11
- package/dist/ColumnHeaderGroup.js.map +1 -1
- package/dist/ColumnStatistics.js +1 -20
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/CommonTypes.d.ts +14 -14
- package/dist/CommonTypes.d.ts.map +1 -1
- package/dist/CrossColumnSearch.js +2 -23
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/FilterInputField.js +2 -36
- package/dist/FilterInputField.js.map +1 -1
- package/dist/GotoRow.d.ts +1 -1
- package/dist/GotoRow.d.ts.map +1 -1
- package/dist/GotoRow.js +2 -7
- package/dist/GotoRow.js.map +1 -1
- package/dist/IrisGrid.d.ts +45 -39
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +77 -519
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridBottomBar.d.ts +2 -2
- package/dist/IrisGridBottomBar.d.ts.map +1 -1
- package/dist/IrisGridBottomBar.js +2 -2
- package/dist/IrisGridBottomBar.js.map +1 -1
- package/dist/IrisGridCellOverflowModal.js +6 -21
- package/dist/IrisGridCellOverflowModal.js.map +1 -1
- package/dist/IrisGridCopyHandler.d.ts +3 -3
- package/dist/IrisGridCopyHandler.d.ts.map +1 -1
- package/dist/IrisGridCopyHandler.js +3 -50
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridMetricCalculator.js +2 -12
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridModel.d.ts +3 -3
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js +32 -58
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelFactory.js +0 -7
- package/dist/IrisGridModelFactory.js.map +1 -1
- package/dist/IrisGridModelUpdater.js +0 -4
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridPartitionSelector.js +0 -23
- package/dist/IrisGridPartitionSelector.js.map +1 -1
- package/dist/IrisGridProxyModel.js +9 -153
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.d.ts +1 -1
- package/dist/IrisGridRenderer.d.ts.map +1 -1
- package/dist/IrisGridRenderer.js +41 -183
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridShortcuts.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts +3 -3
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +10 -90
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.d.ts +3 -3
- package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
- package/dist/IrisGridTableModelTemplate.js +70 -461
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/IrisGridTestUtils.js +0 -23
- package/dist/IrisGridTestUtils.js.map +1 -1
- package/dist/IrisGridTheme.d.ts +1 -1
- package/dist/IrisGridTheme.d.ts.map +1 -1
- package/dist/IrisGridTheme.js.map +1 -1
- package/dist/IrisGridTreeTableModel.js +3 -42
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.d.ts +13 -7
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +98 -196
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/MissingKeyError.js +0 -7
- package/dist/MissingKeyError.js.map +1 -1
- package/dist/PartitionSelectorSearch.d.ts +2 -2
- package/dist/PartitionSelectorSearch.js +2 -48
- package/dist/PartitionSelectorSearch.js.map +1 -1
- package/dist/PendingDataBottomBar.d.ts +2 -2
- package/dist/PendingDataBottomBar.d.ts.map +1 -1
- package/dist/PendingDataBottomBar.js +2 -7
- package/dist/PendingDataBottomBar.js.map +1 -1
- package/dist/TableViewportUpdater.d.ts +2 -2
- package/dist/TableViewportUpdater.d.ts.map +1 -1
- package/dist/TableViewportUpdater.js +3 -29
- package/dist/TableViewportUpdater.js.map +1 -1
- package/dist/ToastBottomBar.d.ts +2 -2
- package/dist/ToastBottomBar.d.ts.map +1 -1
- package/dist/ToastBottomBar.js +2 -4
- package/dist/ToastBottomBar.js.map +1 -1
- package/dist/TreeTableViewportUpdater.js +0 -21
- package/dist/TreeTableViewportUpdater.js.map +1 -1
- package/dist/format-context-menus/CustomFormatAction.d.ts +1 -1
- package/dist/format-context-menus/CustomFormatAction.d.ts.map +1 -1
- package/dist/format-context-menus/CustomFormatAction.js +4 -25
- package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
- package/dist/format-context-menus/DateTimeFormatContextMenu.js +0 -7
- package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.js +0 -9
- package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/FormatContextMenuUtils.js +3 -9
- package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.js +0 -8
- package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/index.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/key-handlers/ClearFilterKeyHandler.js +0 -8
- package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -1
- package/dist/key-handlers/CopyKeyHandler.js +1 -10
- package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
- package/dist/key-handlers/ReverseKeyHandler.js +0 -11
- package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
- package/dist/key-handlers/index.js.map +1 -1
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +2 -32
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +4 -34
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +0 -20
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +15 -105
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +0 -9
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js +0 -17
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridSortMouseHandler.js +2 -15
- package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
- package/dist/mousehandlers/PendingMouseHandler.js +0 -6
- package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
- package/dist/mousehandlers/index.js.map +1 -1
- package/dist/sidebar/AdvancedSettings.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.d.ts +6 -6
- package/dist/sidebar/AdvancedSettingsMenu.d.ts.map +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.js +2 -6
- package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsType.js +0 -2
- package/dist/sidebar/AdvancedSettingsType.js.map +1 -1
- package/dist/sidebar/ChartBuilder.d.ts +2 -2
- package/dist/sidebar/ChartBuilder.d.ts.map +1 -1
- package/dist/sidebar/ChartBuilder.js +2 -46
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.d.ts +2 -2
- package/dist/sidebar/CustomColumnBuilder.d.ts.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +6 -58
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +4 -15
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/InputEditor.js +5 -36
- package/dist/sidebar/InputEditor.js.map +1 -1
- package/dist/sidebar/OptionType.js +0 -2
- package/dist/sidebar/OptionType.js.map +1 -1
- package/dist/sidebar/RollupRows.d.ts +3 -3
- package/dist/sidebar/RollupRows.d.ts.map +1 -1
- package/dist/sidebar/RollupRows.js +9 -65
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js +0 -13
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +0 -52
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/TableSaver.d.ts +1 -1
- package/dist/sidebar/TableSaver.d.ts.map +1 -1
- package/dist/sidebar/TableSaver.js +10 -123
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts +5 -4
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.js +37 -116
- package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.d.ts +2 -2
- package/dist/sidebar/aggregations/AggregationEdit.d.ts.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js +2 -14
- package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationOperation.js +0 -2
- package/dist/sidebar/aggregations/AggregationOperation.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js +2 -5
- package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.d.ts +4 -4
- package/dist/sidebar/aggregations/Aggregations.d.ts.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.js +2 -12
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +2 -16
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.js +2 -35
- package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts +4 -4
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +2 -12
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js +0 -3
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts +5 -5
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +16 -26
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts +3 -3
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +9 -172
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js +2 -16
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.js +2 -12
- package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
- package/dist/sidebar/icons/BarIcon.js +0 -3
- package/dist/sidebar/icons/BarIcon.js.map +1 -1
- package/dist/sidebar/icons/FormatColumnWhereIcon.js +2 -5
- package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -1
- package/dist/sidebar/icons/FormatRowWhereIcon.js +2 -5
- package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -1
- package/dist/sidebar/icons/HistogramIcon.js +0 -3
- package/dist/sidebar/icons/HistogramIcon.js.map +1 -1
- package/dist/sidebar/icons/LineIcon.js +0 -3
- package/dist/sidebar/icons/LineIcon.js.map +1 -1
- package/dist/sidebar/icons/PieIcon.js +0 -3
- package/dist/sidebar/icons/PieIcon.js.map +1 -1
- package/dist/sidebar/icons/ScatterIcon.js +0 -3
- package/dist/sidebar/icons/ScatterIcon.js.map +1 -1
- package/dist/sidebar/icons/index.js.map +1 -1
- package/dist/sidebar/index.js.map +1 -1
- package/package.json +15 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridContextMenuHandler.js","names":["React","FontAwesomeIcon","dhFilterFilled","vsRemove","vsCheck","vsFilter","debounce","ContextActions","ContextActionUtils","GLOBAL_SHORTCUTS","GridMouseHandler","isEditableGridModel","dh","TableColumnFormatter","DateTimeColumnFormatter","TableUtils","Log","assertNotNull","copyToClipboard","DateTimeFormatContextMenu","DecimalFormatContextMenu","IntegerFormatContextMenu","SHORTCUTS","log","module","DEBOUNCE_UPDATE_FORMAT","CONTEXT_MENU_DATE_FORMAT","IrisGridContextMenuHandler","getQuickFilterCondition","columnFilter","newColumnFilter","operator","and","or","getQuickFilterText","filterText","newFilterText","getOperatorAsText","getNumberValueEqualsFilter","column","value","filter","Number","POSITIVE_INFINITY","FilterCondition","invoke","greaterThan","FilterValue","ofNumber","NEGATIVE_INFINITY","lessThan","isNaN","filterValue","getFilterValueForNumberOrChar","type","eq","columnType","isCharType","ofString","String","fromCharCode","constructor","irisGrid","debouncedUpdateCustomFormat","handleFormatSelection","componentWillUnmount","flush","getHeaderActions","modelColumn","gridPoint","columnIndex","model","props","columns","actions","metrics","reverseType","quickFilters","advancedFilters","searchFilter","state","theme","getTheme","filterIconColor","filterBarActiveColor","contextMenuSortIconColor","contextMenuReverseIconColor","modelSort","sort","columnSort","getSortForColumn","hasReverse","REVERSE_TYPE","NONE","userColumnWidths","isColumnHidden","values","some","columnWidth","isColumnFrozen","push","title","group","GROUP_HIDE_COLUMNS","action","hideColumnByVisibleIndex","unFreezeColumnByColumnName","name","freezeColumnByColumnName","order","showAllColumns","disabled","icon","iconColor","shortcut","TABLE","TOGGLE_QUICK_FILTER","GROUP_FILTER","toggleFilterBar","get","handleAdvancedMenuOpened","CLEAR_FILTERS","clearAllFilters","size","GROUP_SORT","sortByActions","length","additionalSortActions","sortColumn","COLUMN_SORT_DIRECTION","none","isReversible","REVERSE","reverse","POST_SORT","GROUP_COPY","textForColumnHeader","catch","e","error","isDateType","GROUP_FORMAT","dateFormatActions","isNumberType","numberFormatActions","undefined","getCellActions","grid","row","rowIndex","canCopy","modelRow","getModelRow","valueForCell","valueText","textForCell","settings","dateFilterFormatter","timeZone","showTimeZone","showTSeparator","defaultDateTimeFormatString","previewFilterFormatter","isFilterable","filterMenu","nullFilterActions","groups","high","isBooleanType","booleanFilterActions","numberValueText","numberFilterActions","dateValueText","format","previewValue","dateFilterActions","stringFilterActions","gotoRow","GOTO_ROW","GROUP_GOTO","toggleGotoRow","copyCell","onContextMenu","event","y","columnHeaderDepth","getModelColumn","isFilterBarShown","selectedRanges","columnHeaderHeight","gridY","columnHeaderMaxDepth","removeColumnFilter","has","COPY","copyRanges","isEditable","GROUP_EDIT","deleteRanges","gridWrapper","triggerMenu","pageX","pageY","formatter","selectedFormat","getColumnFormat","formatOptions","getOptions","i","description","isSelected","modelIndex","getColumnIndexByName","isDecimalType","isIntegerType","TYPE_CONTEXT_CUSTOM","quickFilter","newQuickFilter","text","menuElement","setQuickFilter","low","notEq","contains","not","isFinite","valueFilter","greaterThanOrEqualTo","lessThanOrEqualTo","isTrue","isFalse","isNull","sortActions","ascending","checkColumnSort","descending","color","isMacPlatform","direction","isAbs"],"sources":["../../src/mousehandlers/IrisGridContextMenuHandler.tsx"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n dhFilterFilled,\n vsRemove,\n vsCheck,\n vsFilter,\n IconDefinition,\n} from '@deephaven/icons';\nimport debounce from 'lodash.debounce';\nimport {\n ContextAction,\n ContextActions,\n ContextActionUtils,\n GLOBAL_SHORTCUTS,\n} from '@deephaven/components';\nimport {\n EventHandlerResult,\n Grid,\n GridMouseHandler,\n GridPoint,\n isEditableGridModel,\n ModelIndex,\n VisibleIndex,\n} from '@deephaven/grid';\nimport dh, {\n Column,\n FilterCondition,\n FilterValue,\n Sort,\n} from '@deephaven/jsapi-shim';\nimport {\n TableColumnFormatter,\n DateTimeColumnFormatter,\n TableUtils,\n TableColumnFormat,\n IntegerColumnFormat,\n SortDirection,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport type { DebouncedFunc } from 'lodash';\nimport { assertNotNull, copyToClipboard } from '@deephaven/utils';\nimport {\n DateTimeFormatContextMenu,\n DecimalFormatContextMenu,\n IntegerFormatContextMenu,\n} from '../format-context-menus';\nimport './IrisGridContextMenuHandler.scss';\nimport SHORTCUTS from '../IrisGridShortcuts';\nimport IrisGrid from '../IrisGrid';\nimport { QuickFilter } from '../CommonTypes';\n\nconst log = Log.module('IrisGridContextMenuHandler');\n\nconst DEBOUNCE_UPDATE_FORMAT = 150;\nconst CONTEXT_MENU_DATE_FORMAT = 'yyyy-MM-dd HH:mm:ss.SSSSSSSSS';\n\n/**\n * Used to eat the mouse event in the bottom right corner of the scroll bar\n */\nclass IrisGridContextMenuHandler extends GridMouseHandler {\n static GROUP_EDIT = ContextActions.groups.high + 10;\n\n static GROUP_HIDE_COLUMNS = ContextActions.groups.high + 25;\n\n static GROUP_FILTER = ContextActions.groups.high + 50;\n\n static GROUP_GOTO = ContextActions.groups.high + 51;\n\n static GROUP_SORT = ContextActions.groups.high + 75;\n\n static GROUP_COPY = ContextActions.groups.high + 100;\n\n static GROUP_FORMAT = ContextActions.groups.high + 150;\n\n static COLUMN_SORT_DIRECTION = {\n ascending: 'ASC',\n descending: 'DESC',\n none: null,\n } as const;\n\n /**\n * Get filter condition for quick filter and combines with a new filter using the operator specified,\n * returns new filter if no operator supplied.\n * @param columnFilter\n * @param newColumnFilter\n * @param operator\n */\n static getQuickFilterCondition(\n columnFilter: FilterCondition | null | undefined,\n newColumnFilter: FilterCondition,\n operator?: '&&' | '||' | null\n ): FilterCondition {\n if (columnFilter && operator === '&&') {\n return columnFilter.and(newColumnFilter);\n }\n if (columnFilter && operator === '||') {\n return columnFilter.or(newColumnFilter);\n }\n return newColumnFilter;\n }\n\n /**\n * combines filter text with operator if declared\n * @param filterText\n * @param newFilterText\n * @param operator\n */\n static getQuickFilterText(\n filterText: string | null | undefined,\n newFilterText: string,\n operator?: '&&' | '||' | null\n ): string {\n return operator && filterText != null\n ? `${filterText} ${operator} ${newFilterText}`\n : newFilterText;\n }\n\n /**\n * Converts operator to text string,\n */\n static getOperatorAsText(operator: '&&' | '||'): 'And' | 'Or' {\n return operator === '&&' ? 'And' : 'Or';\n }\n\n /**\n * Gets an equality filter for the provided numeric value\n * @param column The column to make the filter for\n * @param value The value to get the equality filter for\n */\n static getNumberValueEqualsFilter(\n column: Column,\n value: number\n ): FilterCondition {\n const columnFilter = column.filter();\n if (value === Number.POSITIVE_INFINITY) {\n return dh.FilterCondition.invoke('isInf', columnFilter).and(\n columnFilter.greaterThan(dh.FilterValue.ofNumber(0))\n );\n }\n if (value === Number.NEGATIVE_INFINITY) {\n return dh.FilterCondition.invoke('isInf', columnFilter).and(\n columnFilter.lessThan(dh.FilterValue.ofNumber(0))\n );\n }\n if (Number.isNaN(value)) {\n return dh.FilterCondition.invoke('isNaN', columnFilter);\n }\n\n const filterValue = IrisGridContextMenuHandler.getFilterValueForNumberOrChar(\n column.type,\n value\n );\n return columnFilter.eq(filterValue);\n }\n\n static getFilterValueForNumberOrChar(\n columnType: string,\n value: unknown\n ): FilterValue {\n return TableUtils.isCharType(columnType)\n ? dh.FilterValue.ofString(String.fromCharCode(value as number))\n : dh.FilterValue.ofNumber(value);\n }\n\n irisGrid: IrisGrid;\n\n debouncedUpdateCustomFormat: DebouncedFunc<\n (modelIndex: number, selectedFormat: TableColumnFormat | null) => void\n >;\n\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.debouncedUpdateCustomFormat = debounce(\n irisGrid.handleFormatSelection,\n DEBOUNCE_UPDATE_FORMAT\n );\n\n this.irisGrid = irisGrid;\n }\n\n componentWillUnmount(): void {\n this.debouncedUpdateCustomFormat.flush();\n }\n\n getHeaderActions(modelColumn: number, gridPoint: GridPoint): ContextAction[] {\n const { irisGrid } = this;\n const { column: columnIndex } = gridPoint;\n assertNotNull(columnIndex);\n const { model } = irisGrid.props;\n const { columns } = model;\n const column = columns[modelColumn];\n\n const actions = [] as ContextAction[];\n\n const {\n metrics,\n reverseType,\n quickFilters,\n advancedFilters,\n searchFilter,\n } = irisGrid.state;\n const theme = irisGrid.getTheme();\n assertNotNull(metrics);\n const {\n filterIconColor,\n filterBarActiveColor,\n contextMenuSortIconColor,\n contextMenuReverseIconColor,\n } = theme;\n\n const modelSort = model.sort;\n const columnSort = TableUtils.getSortForColumn(modelSort, modelColumn);\n const hasReverse = reverseType !== TableUtils.REVERSE_TYPE.NONE;\n const { userColumnWidths } = metrics;\n const isColumnHidden = [...userColumnWidths.values()].some(\n columnWidth => columnWidth === 0\n );\n const isColumnFrozen = model.isColumnFrozen(columnIndex as VisibleIndex);\n actions.push({\n title: 'Hide Column',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n action: () => {\n this.irisGrid.hideColumnByVisibleIndex(columnIndex as VisibleIndex);\n },\n });\n actions.push({\n title: isColumnFrozen ? 'Unfreeze Column' : 'Freeze Column',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n action: () => {\n if (isColumnFrozen) {\n this.irisGrid.unFreezeColumnByColumnName(column.name);\n } else {\n this.irisGrid.freezeColumnByColumnName(column.name);\n }\n },\n order: 10,\n });\n actions.push({\n title: 'Show All Columns',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n action: () => {\n this.irisGrid.showAllColumns();\n },\n disabled: !isColumnHidden,\n });\n actions.push({\n title: 'Quick Filters',\n icon: vsRemove,\n iconColor: filterBarActiveColor,\n shortcut: SHORTCUTS.TABLE.TOGGLE_QUICK_FILTER,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 10,\n action: () => {\n this.irisGrid.toggleFilterBar(columnIndex);\n },\n });\n actions.push({\n title: 'Advanced Filters',\n icon: advancedFilters.get(modelColumn) ? dhFilterFilled : vsFilter,\n iconColor: filterIconColor,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 20,\n action: () => {\n this.irisGrid.handleAdvancedMenuOpened(columnIndex);\n },\n });\n actions.push({\n title: 'Clear Table Filters',\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 40,\n // this just displays the shortcut, the actual listener is in irisgrid handleKeyDown\n shortcut: SHORTCUTS.TABLE.CLEAR_FILTERS,\n action: () => {\n this.irisGrid.clearAllFilters();\n },\n disabled: !(\n quickFilters.size > 0 ||\n advancedFilters.size > 0 ||\n searchFilter != null\n ),\n });\n actions.push({\n title: 'Sort by',\n icon: vsRemove,\n iconColor: contextMenuSortIconColor,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 10,\n actions: this.sortByActions(column, modelColumn, columnSort),\n });\n actions.push({\n title: 'Add Additional Sort',\n /**\n * disable conditions:\n * 1. table is sorted only by this column\n * 2. table is only reversed\n * 3. 1 & 2 combined\n * 4. table has no sort\n * reverse is a type of sort, so needs to be accounted for in exclusions\n * */\n disabled:\n (columnSort && modelSort.length === 1) ||\n (hasReverse && modelSort.length === 1) ||\n (columnSort && hasReverse && modelSort.length === 2) ||\n modelSort.length === 0,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 20,\n actions: this.additionalSortActions(column, modelColumn),\n });\n actions.push({\n title: 'Clear Table Sorting',\n disabled:\n // reverse is a type of sort, but special and needs to be exluded despite being part of model.sort\n modelSort.length === 0 || (hasReverse && modelSort.length === 1),\n group: IrisGridContextMenuHandler.GROUP_SORT,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.none\n );\n },\n order: 30,\n });\n actions.push({\n title:\n reverseType === TableUtils.REVERSE_TYPE.NONE\n ? 'Reverse Table'\n : 'Clear Reverse Table',\n icon: vsRemove,\n iconColor: contextMenuReverseIconColor,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 40,\n disabled: !model.isReversible,\n // this just displays the shortcut, the actual listener is in irisgrid handleKeyDown\n shortcut: SHORTCUTS.TABLE.REVERSE,\n action: () => {\n if (reverseType === TableUtils.REVERSE_TYPE.NONE) {\n this.irisGrid.reverse(TableUtils.REVERSE_TYPE.POST_SORT);\n } else {\n this.irisGrid.reverse(TableUtils.REVERSE_TYPE.NONE);\n }\n },\n });\n actions.push({\n title: 'Copy Column Name',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n action: () => {\n copyToClipboard(model.textForColumnHeader(modelColumn) ?? '').catch(e =>\n log.error('Unable to copy header', e)\n );\n },\n });\n\n if (TableUtils.isDateType(column.type)) {\n actions.push({\n title: 'Date/Time Format',\n group: IrisGridContextMenuHandler.GROUP_FORMAT,\n actions: this.dateFormatActions(column),\n });\n } else if (TableUtils.isNumberType(column.type)) {\n actions.push({\n title: 'Number Format',\n group: IrisGridContextMenuHandler.GROUP_FORMAT,\n actions: this.numberFormatActions(column) ?? undefined,\n });\n }\n return actions;\n }\n\n getCellActions(\n modelColumn: number | undefined | null,\n grid: Grid,\n gridPoint: GridPoint\n ): ContextAction[] {\n assertNotNull(modelColumn);\n const { irisGrid } = this;\n const { column: columnIndex, row: rowIndex } = gridPoint;\n const { model, canCopy } = irisGrid.props;\n const { columns } = model;\n const modelRow = irisGrid.getModelRow(rowIndex);\n assertNotNull(modelRow);\n const value = model.valueForCell(modelColumn, modelRow);\n\n const valueText = model.textForCell(modelColumn, modelRow);\n const column = columns[modelColumn];\n\n const actions = [] as ContextAction[];\n\n const { quickFilters } = irisGrid.state;\n const theme = irisGrid.getTheme();\n const { filterIconColor } = theme;\n const { settings } = irisGrid.props;\n\n const dateFilterFormatter = new DateTimeColumnFormatter({\n timeZone: settings?.timeZone,\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: CONTEXT_MENU_DATE_FORMAT,\n });\n const previewFilterFormatter = new DateTimeColumnFormatter({\n timeZone: settings?.timeZone,\n showTimeZone: settings?.showTimeZone,\n showTSeparator: settings?.showTSeparator,\n defaultDateTimeFormatString: CONTEXT_MENU_DATE_FORMAT,\n });\n\n if (column == null || rowIndex == null) return actions;\n\n // grid data area context menu options\n if (model.isFilterable(modelColumn)) {\n // cell data area contextmenu options\n const filterMenu = {\n title: 'Filter By Value',\n icon: vsRemove,\n iconColor: filterIconColor,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 10,\n actions: [],\n } as {\n title: string;\n icon: IconDefinition;\n iconColor: string;\n group: number;\n order: number;\n actions: ContextAction[];\n };\n\n if (value == null) {\n if (quickFilters.get(modelColumn)) {\n filterMenu.actions.push({\n title: 'And',\n actions: this.nullFilterActions(\n column,\n quickFilters.get(modelColumn),\n '&&'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(...this.nullFilterActions(column));\n } else if (TableUtils.isBooleanType(column.type)) {\n // boolean should have OR condition, and handles it's own null menu options\n if (quickFilters.get(modelColumn)) {\n filterMenu.actions.push({\n title: 'Or',\n actions: this.booleanFilterActions(\n column,\n valueText,\n quickFilters.get(modelColumn),\n '||'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(\n ...this.booleanFilterActions(column, valueText)\n );\n } else if (\n TableUtils.isNumberType(column.type) ||\n TableUtils.isCharType(column.type)\n ) {\n // Chars get treated like numbers in terms of which filters are available\n assertNotNull(modelColumn);\n // We want to show the full unformatted value if it's a number, so user knows which value they are matching\n // If it's a Char we just show the char\n const numberValueText = TableUtils.isCharType(column.type)\n ? String.fromCharCode(value as number)\n : `${value}`;\n\n if (quickFilters.get(modelColumn)) {\n filterMenu.actions.push({\n title: 'And',\n actions: this.numberFilterActions(\n column,\n numberValueText,\n value,\n quickFilters.get(modelColumn),\n '&&'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(\n ...this.numberFilterActions(\n column,\n numberValueText,\n value,\n quickFilters.get(modelColumn)\n )\n );\n } else if (TableUtils.isDateType(column.type)) {\n const dateValueText = dateFilterFormatter.format(value as Date);\n const previewValue = previewFilterFormatter.format(value as Date);\n if (quickFilters.get(modelColumn)) {\n filterMenu.actions.push({\n title: 'And',\n actions: this.dateFilterActions(\n column,\n dateValueText,\n previewValue,\n value,\n quickFilters.get(modelColumn),\n '&&'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(\n ...this.dateFilterActions(\n column,\n dateValueText,\n previewValue,\n value,\n quickFilters.get(modelColumn)\n )\n );\n } else {\n if (quickFilters.get(modelColumn)) {\n filterMenu.actions.push({\n title: 'And',\n\n actions: this.stringFilterActions(\n column,\n valueText,\n value,\n quickFilters.get(modelColumn),\n '&&'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(\n ...this.stringFilterActions(column, valueText, value)\n );\n }\n\n if (filterMenu.actions != null && filterMenu.actions.length > 0) {\n actions.push(filterMenu);\n }\n }\n\n const gotoRow = {\n title: 'Go to',\n iconColor: filterIconColor,\n shortcut: SHORTCUTS.TABLE.GOTO_ROW,\n group: IrisGridContextMenuHandler.GROUP_GOTO,\n order: 10,\n action: () => this.irisGrid.toggleGotoRow(`${rowIndex + 1}`),\n };\n actions.push(gotoRow);\n\n if (canCopy) {\n actions.push({\n title: 'Copy Cell',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 10,\n action: () => {\n irisGrid.copyCell(columnIndex, rowIndex);\n },\n });\n\n actions.push({\n title: 'Copy Cell Unformatted',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 20,\n action: () => {\n irisGrid.copyCell(columnIndex, rowIndex, true);\n },\n });\n }\n\n return actions;\n }\n\n onContextMenu(\n gridPoint: GridPoint,\n grid: Grid,\n event: React.MouseEvent<Element, MouseEvent>\n ): EventHandlerResult {\n const { irisGrid } = this;\n const {\n y,\n column: columnIndex,\n row: rowIndex,\n columnHeaderDepth,\n } = gridPoint;\n const modelColumn = irisGrid.getModelColumn(columnIndex);\n const modelRow = irisGrid.getModelRow(rowIndex);\n\n const { model, canCopy } = irisGrid.props;\n const { columns } = model;\n\n const {\n metrics,\n isFilterBarShown,\n quickFilters,\n advancedFilters,\n selectedRanges,\n } = irisGrid.state;\n\n assertNotNull(metrics);\n\n const { columnHeaderHeight, gridY, columnHeaderMaxDepth } = metrics;\n\n const actions = [] as ContextAction[];\n\n if (modelColumn != null && modelRow != null) {\n const value = model.valueForCell(modelColumn, modelRow);\n\n const valueText = model.textForCell(modelColumn, modelRow);\n const column = columns[modelColumn];\n\n const { onContextMenu } = irisGrid.props;\n\n if (column != null) {\n actions.push(\n onContextMenu({\n model,\n value,\n valueText,\n column,\n rowIndex,\n columnIndex,\n modelRow,\n modelColumn,\n })\n );\n }\n }\n\n if (modelColumn != null && model.isFilterable(modelColumn)) {\n // Clear column filter should still be available after last row\n // And should be available in both header and body context menus\n actions.push({\n title: 'Clear Column Filter',\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 30,\n action: () => {\n this.irisGrid.removeColumnFilter(modelColumn);\n },\n disabled: !(\n quickFilters.has(modelColumn) || advancedFilters.has(modelColumn)\n ),\n });\n }\n\n if (\n isFilterBarShown\n ? y <= gridY\n : y <= columnHeaderHeight * columnHeaderMaxDepth &&\n columnHeaderDepth === 0\n ) {\n // grid header context menu options\n if (modelColumn != null) {\n actions.push(...this.getHeaderActions(modelColumn, gridPoint));\n }\n } else {\n // grid body context menu options\n if (modelColumn != null && modelRow != null) {\n actions.push(...this.getCellActions(modelColumn, grid, gridPoint));\n }\n\n // blank space context menu options\n if (canCopy && selectedRanges.length > 0) {\n actions.push({\n title: 'Copy Selection',\n shortcut: GLOBAL_SHORTCUTS.COPY,\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 30,\n action: () => {\n irisGrid.copyRanges(selectedRanges);\n },\n });\n\n actions.push({\n title: 'Copy Selection w/ Headers',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 40,\n action: () => {\n irisGrid.copyRanges(selectedRanges, true);\n },\n });\n }\n\n if (\n isEditableGridModel(model) &&\n model.isEditable &&\n selectedRanges.length > 0\n ) {\n actions.push({\n title: 'Delete Selected Rows',\n group: IrisGridContextMenuHandler.GROUP_EDIT,\n order: 50,\n action: () => {\n this.irisGrid.deleteRanges(selectedRanges);\n },\n });\n }\n }\n\n if (actions.length === 0) {\n return false;\n }\n\n assertNotNull(irisGrid.gridWrapper);\n\n ContextActions.triggerMenu(\n irisGrid.gridWrapper,\n event.pageX,\n event.pageY,\n actions\n );\n return true;\n }\n\n dateFormatActions(column: Column): ContextAction[] {\n const { model } = this.irisGrid.props;\n const { formatter } = model;\n const selectedFormat = formatter.getColumnFormat(column.type, column.name);\n\n const formatOptions = DateTimeFormatContextMenu.getOptions(\n formatter,\n selectedFormat\n );\n\n const actions = [];\n\n for (let i = 0; i < formatOptions.length; i += 1) {\n const { description, format, group, isSelected, title } = formatOptions[\n i\n ];\n actions.push({\n title,\n description,\n icon: isSelected ? vsCheck : undefined,\n group,\n order: i,\n action: () => {\n const modelIndex = model.getColumnIndexByName(column.name);\n assertNotNull(modelIndex);\n this.irisGrid.handleFormatSelection(modelIndex, format);\n },\n });\n }\n return actions;\n }\n\n numberFormatActions(column: Column): ContextAction[] | null {\n const { model } = this.irisGrid.props;\n const { formatter } = model;\n const selectedFormat = formatter.getColumnFormat(\n column.type,\n column.name\n ) as IntegerColumnFormat;\n let formatOptions;\n\n const columnIndex = model.getColumnIndexByName(column.name);\n if (TableUtils.isDecimalType(column.type)) {\n formatOptions = DecimalFormatContextMenu.getOptions(\n selectedFormat,\n format => {\n assertNotNull(columnIndex);\n this.debouncedUpdateCustomFormat(columnIndex, format);\n }\n );\n } else if (TableUtils.isIntegerType(column.type)) {\n formatOptions = IntegerFormatContextMenu.getOptions(\n selectedFormat,\n format => {\n assertNotNull(columnIndex);\n this.debouncedUpdateCustomFormat(columnIndex, format);\n }\n );\n } else {\n log.error('Invalid column type in numberFormatActions');\n return null;\n }\n\n const actions = [];\n\n for (let i = 0; i < formatOptions.length; i += 1) {\n const { format, isSelected } = formatOptions[i];\n actions.push({\n ...formatOptions[i],\n icon: isSelected ? vsCheck : undefined,\n order: i,\n action: () => {\n if (\n columnIndex === undefined &&\n format &&\n format.type === TableColumnFormatter.TYPE_CONTEXT_CUSTOM\n ) {\n return;\n }\n assertNotNull(columnIndex);\n this.irisGrid.handleFormatSelection(columnIndex, format);\n },\n });\n }\n return actions;\n }\n\n stringFilterActions(\n column: Column,\n valueText: string | null,\n value?: unknown,\n quickFilter?: QuickFilter,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const filterValue = dh.FilterValue.ofString(value);\n let newQuickFilter:\n | {\n filter: null | FilterCondition | undefined;\n text: string | null;\n }\n | undefined\n | null = quickFilter;\n if (!newQuickFilter) {\n newQuickFilter = { filter: null, text: null };\n }\n const { filter, text: filterText } = newQuickFilter;\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n "{valueText}"\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n\n actions.push({\n title: 'text is exactly',\n description: `Show only rows where ${column.name} is ${value} (case sensitive)`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().eq(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=${valueText}`,\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'text is not exactly',\n description: `Show only rows where ${column.name} is not ${valueText} (case sensitive)`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().notEq(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${valueText}`,\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: `text contains`,\n description: `Show only rows where ${column.name} contains ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().contains(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `~${valueText}`,\n operator\n )\n );\n },\n order: 30,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'text does not contain',\n description: `Show only rows where ${column.name} does not contain ${value}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().contains(filterValue).not(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!~${valueText}`,\n operator\n )\n );\n },\n order: 40,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'text starts with',\n description: `Show only rows where ${column.name} starts with ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().invoke('startsWith', filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `${valueText}*`,\n operator\n )\n );\n },\n order: 50,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'text ends with',\n description: `Show only rows where ${column.name} ends with ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().invoke('endsWith', filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `*${valueText}`,\n operator\n )\n );\n },\n order: 60,\n group: ContextActions.groups.low,\n });\n return actions;\n }\n\n numberFilterActions(\n column: Column,\n valueText: string,\n value: unknown,\n quickFilter?: QuickFilter | null,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const filterValue = IrisGridContextMenuHandler.getFilterValueForNumberOrChar(\n column.type,\n value\n );\n let filter: FilterCondition | null = null;\n let filterText: string | null = null;\n if (quickFilter) {\n filter = quickFilter.filter;\n filterText = quickFilter.text;\n }\n const actions = [];\n const isFinite =\n value !== Number.POSITIVE_INFINITY &&\n value !== Number.NEGATIVE_INFINITY &&\n !Number.isNaN(value);\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n "{valueText}"\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n actions.push({\n title: 'is equal to',\n description: `Show only rows where ${column.name} is ${valueText}`,\n action: () => {\n const valueFilter = IrisGridContextMenuHandler.getNumberValueEqualsFilter(\n column,\n value as number\n );\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n valueFilter,\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=${valueText}`,\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'is not equal to',\n description: `Show only rows where ${column.name} is not ${valueText}`,\n action: () => {\n const valueFilter = IrisGridContextMenuHandler.getNumberValueEqualsFilter(\n column,\n value as number\n ).not();\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n valueFilter,\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${valueText}`,\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n\n // IDS-6092 Less/greater than filters don't make sense for Infinite/NaN\n // TODO (DH-11799): These char filters should work in Bard, with the merge for DH-11040: https://gitlab.eng.illumon.com/illumon/iris/merge_requests/5801\n // They do not work in Powell though, so disable them.\n if (isFinite && !TableUtils.isCharType(column.type)) {\n actions.push({\n title: 'greater than',\n description: `Show only rows where ${column.name} is greater than ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThan(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>${valueText}`,\n operator\n )\n );\n },\n order: 30,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'greater than or equal to',\n description: `Show only rows where ${column.name} is greater than or equal to ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThanOrEqualTo(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>=${valueText}`,\n operator\n )\n );\n },\n order: 40,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'less than',\n description: `Show only rows where ${column.name} is less than ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThan(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<${valueText}`,\n operator\n )\n );\n },\n order: 50,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'less than or equal to',\n description: `Show only rows where ${column.name} is less than or equal to ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThanOrEqualTo(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<=${valueText}`,\n operator\n )\n );\n },\n order: 60,\n group: ContextActions.groups.low,\n });\n }\n return actions;\n }\n\n booleanFilterActions(\n column: Column,\n valueText: string | null,\n quickFilter?: QuickFilter | null,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const actions: ContextAction[] = [];\n\n const { model } = this.irisGrid.props;\n const { filter, text: filterText } = quickFilter || {};\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n "{valueText ?? 'null'}"\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n\n actions.push({\n title: 'true',\n description: `Show only rows where ${column.name} is true`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isTrue(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'true',\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'false',\n description: `Show only rows where ${column.name} is false`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isFalse(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'false',\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'is null',\n description: `Show only rows where ${column.name} is null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'null',\n operator\n )\n );\n },\n order: 30,\n group: ContextActions.groups.low,\n });\n\n actions.push({\n title: 'is not null',\n description: `Show only rows where ${column.name} is not null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull().not(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n '!null',\n operator\n )\n );\n },\n order: 40,\n group: ContextActions.groups.low,\n });\n\n return actions;\n }\n\n dateFilterActions(\n column: Column,\n valueText: string,\n previewValue: unknown,\n value: unknown,\n quickFilter?: QuickFilter | null,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const filterValue = dh.FilterValue.ofNumber(value);\n\n let filter: FilterCondition | null = null;\n let filterText: string | null = null;\n if (quickFilter) {\n filter = quickFilter.filter;\n filterText = quickFilter.text;\n }\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n const actions = [];\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n "{previewValue}"\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n actions.push({\n title: 'date is',\n description: `Show only rows where ${column.name} is ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().eq(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=${valueText}`,\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is not',\n description: `Show only rows where ${column.name} is not ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().notEq(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${valueText}`,\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is before',\n description: `Show only rows where ${column.name} is before ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThan(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<${valueText}`,\n operator\n )\n );\n },\n order: 30,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is before or equal',\n description: `Show only rows where ${column.name} is before or equal to ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThanOrEqualTo(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<=${valueText}`,\n operator\n )\n );\n },\n order: 40,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is after',\n description: `Show only rows where ${column.name} is greater than ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThan(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>${valueText}`,\n operator\n )\n );\n },\n order: 50,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is after or equal',\n description: `Show only rows where ${column.name} is after or equal to ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThanOrEqualTo(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>=${valueText}`,\n operator\n )\n );\n },\n order: 60,\n group: ContextActions.groups.low,\n });\n return actions;\n }\n\n nullFilterActions(\n column: Column,\n quickFilter?: QuickFilter,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n let filter: FilterCondition | null = null;\n let filterText: string | null = null;\n if (quickFilter) {\n filter = quickFilter.filter;\n filterText = quickFilter.text;\n }\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n "null"\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n actions.push({\n title: 'is null',\n description: `Show only rows where ${column.name} is null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'null',\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'is not null',\n description: `Show only rows where ${column.name} is not null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull().not(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n '!null',\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n\n return actions;\n }\n\n sortByActions(\n column: Column,\n modelColumn: ModelIndex,\n columnSort: Sort | null\n ): ContextAction[] {\n const theme = this.irisGrid.getTheme();\n const { contextMenuSortIconColor } = theme;\n const sortActions = [\n {\n title: `${column.name} Ascending`,\n order: 10,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n },\n {\n title: `${column.name} Descending`,\n order: 20,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n },\n {\n title: `Remove Sort`,\n order: 50,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.none,\n false,\n true\n );\n },\n disabled: !columnSort,\n },\n ];\n if (TableUtils.isNumberType(column.type)) {\n sortActions.push({\n title: `ABS(${column.name}) Ascending`,\n order: 30,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n });\n sortActions.push({\n title: `ABS(${column.name}) Descending`,\n order: 40,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n });\n }\n return sortActions;\n }\n\n additionalSortActions(\n column: Column,\n columnIndex: ModelIndex\n ): ContextAction[] {\n const theme = this.irisGrid.getTheme();\n const { contextMenuSortIconColor } = theme;\n const additionalSortActions = [\n {\n title: 'Add Sort By',\n menuElement: (\n <div className=\"btn-context-menu menu-title\">\n <span className=\"icon\">\n <FontAwesomeIcon\n icon={vsRemove}\n style={{ color: contextMenuSortIconColor ?? undefined }}\n />\n </span>\n <span className=\"title\">Add Additional Sort</span>\n <span className=\"shortcut\">\n {ContextActionUtils.isMacPlatform() ? '⌘Click' : '^Click'}\n </span>\n </div>\n ),\n order: 1,\n },\n {\n title: `${column.name} Ascending`,\n order: 10,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n false,\n true\n );\n },\n },\n {\n title: `${column.name} Descending`,\n order: 20,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n false,\n true\n );\n },\n },\n ];\n if (TableUtils.isNumberType(column.type)) {\n additionalSortActions.push({\n title: `ABS(${column.name}) Ascending`,\n order: 30,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true,\n true\n );\n },\n });\n additionalSortActions.push({\n title: `ABS(${column.name}) Descending`,\n order: 40,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true,\n true\n );\n },\n });\n }\n return additionalSortActions;\n }\n\n checkColumnSort(\n columnSort?: Sort | null,\n direction: SortDirection = null,\n isAbs = false\n ): boolean {\n if (!columnSort) {\n return false;\n }\n return columnSort.direction === direction && columnSort.isAbs === isAbs;\n }\n}\n\nexport default IrisGridContextMenuHandler;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"IrisGridContextMenuHandler.js","names":["React","FontAwesomeIcon","dhFilterFilled","vsRemove","vsCheck","vsFilter","debounce","ContextActions","ContextActionUtils","GLOBAL_SHORTCUTS","GridMouseHandler","isEditableGridModel","dh","TableColumnFormatter","DateTimeColumnFormatter","TableUtils","Log","assertNotNull","copyToClipboard","DateTimeFormatContextMenu","DecimalFormatContextMenu","IntegerFormatContextMenu","SHORTCUTS","log","module","DEBOUNCE_UPDATE_FORMAT","CONTEXT_MENU_DATE_FORMAT","IrisGridContextMenuHandler","getQuickFilterCondition","columnFilter","newColumnFilter","operator","and","or","getQuickFilterText","filterText","newFilterText","getOperatorAsText","getNumberValueEqualsFilter","column","value","filter","Number","POSITIVE_INFINITY","FilterCondition","invoke","greaterThan","FilterValue","ofNumber","NEGATIVE_INFINITY","lessThan","isNaN","filterValue","getFilterValueForNumberOrChar","type","eq","columnType","isCharType","ofString","String","fromCharCode","constructor","irisGrid","debouncedUpdateCustomFormat","handleFormatSelection","componentWillUnmount","flush","getHeaderActions","modelColumn","gridPoint","columnIndex","model","props","columns","actions","metrics","reverseType","quickFilters","advancedFilters","searchFilter","state","theme","getTheme","filterIconColor","filterBarActiveColor","contextMenuSortIconColor","contextMenuReverseIconColor","modelSort","sort","columnSort","getSortForColumn","hasReverse","REVERSE_TYPE","NONE","userColumnWidths","isColumnHidden","values","some","columnWidth","isColumnFrozen","push","title","group","GROUP_HIDE_COLUMNS","action","hideColumnByVisibleIndex","unFreezeColumnByColumnName","name","freezeColumnByColumnName","order","showAllColumns","disabled","icon","iconColor","shortcut","TABLE","TOGGLE_QUICK_FILTER","GROUP_FILTER","toggleFilterBar","get","handleAdvancedMenuOpened","CLEAR_FILTERS","clearAllFilters","size","GROUP_SORT","sortByActions","length","additionalSortActions","sortColumn","COLUMN_SORT_DIRECTION","none","isReversible","REVERSE","reverse","POST_SORT","GROUP_COPY","textForColumnHeader","catch","e","error","isDateType","GROUP_FORMAT","dateFormatActions","isNumberType","numberFormatActions","undefined","getCellActions","grid","row","rowIndex","canCopy","modelRow","getModelRow","valueForCell","valueText","textForCell","settings","dateFilterFormatter","timeZone","showTimeZone","showTSeparator","defaultDateTimeFormatString","previewFilterFormatter","isFilterable","filterMenu","nullFilterActions","groups","high","isBooleanType","booleanFilterActions","numberValueText","numberFilterActions","dateValueText","format","previewValue","dateFilterActions","stringFilterActions","gotoRow","GOTO_ROW","GROUP_GOTO","toggleGotoRow","copyCell","onContextMenu","event","y","columnHeaderDepth","getModelColumn","isFilterBarShown","selectedRanges","columnHeaderHeight","gridY","columnHeaderMaxDepth","removeColumnFilter","has","COPY","copyRanges","isEditable","GROUP_EDIT","deleteRanges","gridWrapper","triggerMenu","pageX","pageY","formatter","selectedFormat","getColumnFormat","formatOptions","getOptions","i","description","isSelected","modelIndex","getColumnIndexByName","isDecimalType","isIntegerType","TYPE_CONTEXT_CUSTOM","quickFilter","newQuickFilter","text","menuElement","setQuickFilter","low","notEq","contains","not","isFinite","valueFilter","greaterThanOrEqualTo","lessThanOrEqualTo","isTrue","isFalse","isNull","sortActions","ascending","checkColumnSort","descending","color","isMacPlatform","direction","isAbs"],"sources":["../../src/mousehandlers/IrisGridContextMenuHandler.tsx"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n dhFilterFilled,\n vsRemove,\n vsCheck,\n vsFilter,\n IconDefinition,\n} from '@deephaven/icons';\nimport debounce from 'lodash.debounce';\nimport {\n ContextAction,\n ContextActions,\n ContextActionUtils,\n GLOBAL_SHORTCUTS,\n} from '@deephaven/components';\nimport {\n EventHandlerResult,\n Grid,\n GridMouseHandler,\n GridPoint,\n isEditableGridModel,\n ModelIndex,\n VisibleIndex,\n} from '@deephaven/grid';\nimport dh, {\n Column,\n FilterCondition,\n FilterValue,\n Sort,\n} from '@deephaven/jsapi-shim';\nimport {\n TableColumnFormatter,\n DateTimeColumnFormatter,\n TableUtils,\n TableColumnFormat,\n IntegerColumnFormat,\n SortDirection,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport type { DebouncedFunc } from 'lodash';\nimport { assertNotNull, copyToClipboard } from '@deephaven/utils';\nimport {\n DateTimeFormatContextMenu,\n DecimalFormatContextMenu,\n IntegerFormatContextMenu,\n} from '../format-context-menus';\nimport './IrisGridContextMenuHandler.scss';\nimport SHORTCUTS from '../IrisGridShortcuts';\nimport IrisGrid from '../IrisGrid';\nimport { QuickFilter } from '../CommonTypes';\n\nconst log = Log.module('IrisGridContextMenuHandler');\n\nconst DEBOUNCE_UPDATE_FORMAT = 150;\nconst CONTEXT_MENU_DATE_FORMAT = 'yyyy-MM-dd HH:mm:ss.SSSSSSSSS';\n\n/**\n * Used to eat the mouse event in the bottom right corner of the scroll bar\n */\nclass IrisGridContextMenuHandler extends GridMouseHandler {\n static GROUP_EDIT = ContextActions.groups.high + 10;\n\n static GROUP_HIDE_COLUMNS = ContextActions.groups.high + 25;\n\n static GROUP_FILTER = ContextActions.groups.high + 50;\n\n static GROUP_GOTO = ContextActions.groups.high + 51;\n\n static GROUP_SORT = ContextActions.groups.high + 75;\n\n static GROUP_COPY = ContextActions.groups.high + 100;\n\n static GROUP_FORMAT = ContextActions.groups.high + 150;\n\n static COLUMN_SORT_DIRECTION = {\n ascending: 'ASC',\n descending: 'DESC',\n none: null,\n } as const;\n\n /**\n * Get filter condition for quick filter and combines with a new filter using the operator specified,\n * returns new filter if no operator supplied.\n * @param columnFilter\n * @param newColumnFilter\n * @param operator\n */\n static getQuickFilterCondition(\n columnFilter: FilterCondition | null | undefined,\n newColumnFilter: FilterCondition,\n operator?: '&&' | '||' | null\n ): FilterCondition {\n if (columnFilter && operator === '&&') {\n return columnFilter.and(newColumnFilter);\n }\n if (columnFilter && operator === '||') {\n return columnFilter.or(newColumnFilter);\n }\n return newColumnFilter;\n }\n\n /**\n * combines filter text with operator if declared\n * @param filterText\n * @param newFilterText\n * @param operator\n */\n static getQuickFilterText(\n filterText: string | null | undefined,\n newFilterText: string,\n operator?: '&&' | '||' | null\n ): string {\n return operator && filterText != null\n ? `${filterText} ${operator} ${newFilterText}`\n : newFilterText;\n }\n\n /**\n * Converts operator to text string,\n */\n static getOperatorAsText(operator: '&&' | '||'): 'And' | 'Or' {\n return operator === '&&' ? 'And' : 'Or';\n }\n\n /**\n * Gets an equality filter for the provided numeric value\n * @param column The column to make the filter for\n * @param value The value to get the equality filter for\n */\n static getNumberValueEqualsFilter(\n column: Column,\n value: number\n ): FilterCondition {\n const columnFilter = column.filter();\n if (value === Number.POSITIVE_INFINITY) {\n return dh.FilterCondition.invoke('isInf', columnFilter).and(\n columnFilter.greaterThan(dh.FilterValue.ofNumber(0))\n );\n }\n if (value === Number.NEGATIVE_INFINITY) {\n return dh.FilterCondition.invoke('isInf', columnFilter).and(\n columnFilter.lessThan(dh.FilterValue.ofNumber(0))\n );\n }\n if (Number.isNaN(value)) {\n return dh.FilterCondition.invoke('isNaN', columnFilter);\n }\n\n const filterValue = IrisGridContextMenuHandler.getFilterValueForNumberOrChar(\n column.type,\n value\n );\n return columnFilter.eq(filterValue);\n }\n\n static getFilterValueForNumberOrChar(\n columnType: string,\n value: unknown\n ): FilterValue {\n return TableUtils.isCharType(columnType)\n ? dh.FilterValue.ofString(String.fromCharCode(value as number))\n : dh.FilterValue.ofNumber(value);\n }\n\n irisGrid: IrisGrid;\n\n debouncedUpdateCustomFormat: DebouncedFunc<\n (modelIndex: number, selectedFormat: TableColumnFormat | null) => void\n >;\n\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.debouncedUpdateCustomFormat = debounce(\n irisGrid.handleFormatSelection,\n DEBOUNCE_UPDATE_FORMAT\n );\n\n this.irisGrid = irisGrid;\n }\n\n componentWillUnmount(): void {\n this.debouncedUpdateCustomFormat.flush();\n }\n\n getHeaderActions(modelColumn: number, gridPoint: GridPoint): ContextAction[] {\n const { irisGrid } = this;\n const { column: columnIndex } = gridPoint;\n assertNotNull(columnIndex);\n const { model } = irisGrid.props;\n const { columns } = model;\n const column = columns[modelColumn];\n\n const actions = [] as ContextAction[];\n\n const {\n metrics,\n reverseType,\n quickFilters,\n advancedFilters,\n searchFilter,\n } = irisGrid.state;\n const theme = irisGrid.getTheme();\n assertNotNull(metrics);\n const {\n filterIconColor,\n filterBarActiveColor,\n contextMenuSortIconColor,\n contextMenuReverseIconColor,\n } = theme;\n\n const modelSort = model.sort;\n const columnSort = TableUtils.getSortForColumn(modelSort, modelColumn);\n const hasReverse = reverseType !== TableUtils.REVERSE_TYPE.NONE;\n const { userColumnWidths } = metrics;\n const isColumnHidden = [...userColumnWidths.values()].some(\n columnWidth => columnWidth === 0\n );\n const isColumnFrozen = model.isColumnFrozen(columnIndex as VisibleIndex);\n actions.push({\n title: 'Hide Column',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n action: () => {\n this.irisGrid.hideColumnByVisibleIndex(columnIndex as VisibleIndex);\n },\n });\n actions.push({\n title: isColumnFrozen ? 'Unfreeze Column' : 'Freeze Column',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n action: () => {\n if (isColumnFrozen) {\n this.irisGrid.unFreezeColumnByColumnName(column.name);\n } else {\n this.irisGrid.freezeColumnByColumnName(column.name);\n }\n },\n order: 10,\n });\n actions.push({\n title: 'Show All Columns',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n action: () => {\n this.irisGrid.showAllColumns();\n },\n disabled: !isColumnHidden,\n });\n actions.push({\n title: 'Quick Filters',\n icon: vsRemove,\n iconColor: filterBarActiveColor,\n shortcut: SHORTCUTS.TABLE.TOGGLE_QUICK_FILTER,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 10,\n action: () => {\n this.irisGrid.toggleFilterBar(columnIndex);\n },\n });\n actions.push({\n title: 'Advanced Filters',\n icon: advancedFilters.get(modelColumn) ? dhFilterFilled : vsFilter,\n iconColor: filterIconColor,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 20,\n action: () => {\n this.irisGrid.handleAdvancedMenuOpened(columnIndex);\n },\n });\n actions.push({\n title: 'Clear Table Filters',\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 40,\n // this just displays the shortcut, the actual listener is in irisgrid handleKeyDown\n shortcut: SHORTCUTS.TABLE.CLEAR_FILTERS,\n action: () => {\n this.irisGrid.clearAllFilters();\n },\n disabled: !(\n quickFilters.size > 0 ||\n advancedFilters.size > 0 ||\n searchFilter != null\n ),\n });\n actions.push({\n title: 'Sort by',\n icon: vsRemove,\n iconColor: contextMenuSortIconColor,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 10,\n actions: this.sortByActions(column, modelColumn, columnSort),\n });\n actions.push({\n title: 'Add Additional Sort',\n /**\n * disable conditions:\n * 1. table is sorted only by this column\n * 2. table is only reversed\n * 3. 1 & 2 combined\n * 4. table has no sort\n * reverse is a type of sort, so needs to be accounted for in exclusions\n * */\n disabled:\n (columnSort && modelSort.length === 1) ||\n (hasReverse && modelSort.length === 1) ||\n (columnSort && hasReverse && modelSort.length === 2) ||\n modelSort.length === 0,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 20,\n actions: this.additionalSortActions(column, modelColumn),\n });\n actions.push({\n title: 'Clear Table Sorting',\n disabled:\n // reverse is a type of sort, but special and needs to be exluded despite being part of model.sort\n modelSort.length === 0 || (hasReverse && modelSort.length === 1),\n group: IrisGridContextMenuHandler.GROUP_SORT,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.none\n );\n },\n order: 30,\n });\n actions.push({\n title:\n reverseType === TableUtils.REVERSE_TYPE.NONE\n ? 'Reverse Table'\n : 'Clear Reverse Table',\n icon: vsRemove,\n iconColor: contextMenuReverseIconColor,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 40,\n disabled: !model.isReversible,\n // this just displays the shortcut, the actual listener is in irisgrid handleKeyDown\n shortcut: SHORTCUTS.TABLE.REVERSE,\n action: () => {\n if (reverseType === TableUtils.REVERSE_TYPE.NONE) {\n this.irisGrid.reverse(TableUtils.REVERSE_TYPE.POST_SORT);\n } else {\n this.irisGrid.reverse(TableUtils.REVERSE_TYPE.NONE);\n }\n },\n });\n actions.push({\n title: 'Copy Column Name',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n action: () => {\n copyToClipboard(model.textForColumnHeader(modelColumn) ?? '').catch(e =>\n log.error('Unable to copy header', e)\n );\n },\n });\n\n if (TableUtils.isDateType(column.type)) {\n actions.push({\n title: 'Date/Time Format',\n group: IrisGridContextMenuHandler.GROUP_FORMAT,\n actions: this.dateFormatActions(column),\n });\n } else if (TableUtils.isNumberType(column.type)) {\n actions.push({\n title: 'Number Format',\n group: IrisGridContextMenuHandler.GROUP_FORMAT,\n actions: this.numberFormatActions(column) ?? undefined,\n });\n }\n return actions;\n }\n\n getCellActions(\n modelColumn: number | undefined | null,\n grid: Grid,\n gridPoint: GridPoint\n ): ContextAction[] {\n assertNotNull(modelColumn);\n const { irisGrid } = this;\n const { column: columnIndex, row: rowIndex } = gridPoint;\n const { model, canCopy } = irisGrid.props;\n const { columns } = model;\n const modelRow = irisGrid.getModelRow(rowIndex);\n assertNotNull(modelRow);\n const value = model.valueForCell(modelColumn, modelRow);\n\n const valueText = model.textForCell(modelColumn, modelRow);\n const column = columns[modelColumn];\n\n const actions = [] as ContextAction[];\n\n const { quickFilters } = irisGrid.state;\n const theme = irisGrid.getTheme();\n const { filterIconColor } = theme;\n const { settings } = irisGrid.props;\n\n const dateFilterFormatter = new DateTimeColumnFormatter({\n timeZone: settings?.timeZone,\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: CONTEXT_MENU_DATE_FORMAT,\n });\n const previewFilterFormatter = new DateTimeColumnFormatter({\n timeZone: settings?.timeZone,\n showTimeZone: settings?.showTimeZone,\n showTSeparator: settings?.showTSeparator,\n defaultDateTimeFormatString: CONTEXT_MENU_DATE_FORMAT,\n });\n\n if (column == null || rowIndex == null) return actions;\n\n // grid data area context menu options\n if (model.isFilterable(modelColumn)) {\n // cell data area contextmenu options\n const filterMenu = {\n title: 'Filter By Value',\n icon: vsRemove,\n iconColor: filterIconColor,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 10,\n actions: [],\n } as {\n title: string;\n icon: IconDefinition;\n iconColor: string;\n group: number;\n order: number;\n actions: ContextAction[];\n };\n\n if (value == null) {\n if (quickFilters.get(modelColumn)) {\n filterMenu.actions.push({\n title: 'And',\n actions: this.nullFilterActions(\n column,\n quickFilters.get(modelColumn),\n '&&'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(...this.nullFilterActions(column));\n } else if (TableUtils.isBooleanType(column.type)) {\n // boolean should have OR condition, and handles it's own null menu options\n if (quickFilters.get(modelColumn)) {\n filterMenu.actions.push({\n title: 'Or',\n actions: this.booleanFilterActions(\n column,\n valueText,\n quickFilters.get(modelColumn),\n '||'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(\n ...this.booleanFilterActions(column, valueText)\n );\n } else if (\n TableUtils.isNumberType(column.type) ||\n TableUtils.isCharType(column.type)\n ) {\n // Chars get treated like numbers in terms of which filters are available\n assertNotNull(modelColumn);\n // We want to show the full unformatted value if it's a number, so user knows which value they are matching\n // If it's a Char we just show the char\n const numberValueText = TableUtils.isCharType(column.type)\n ? String.fromCharCode(value as number)\n : `${value}`;\n\n if (quickFilters.get(modelColumn)) {\n filterMenu.actions.push({\n title: 'And',\n actions: this.numberFilterActions(\n column,\n numberValueText,\n value,\n quickFilters.get(modelColumn),\n '&&'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(\n ...this.numberFilterActions(\n column,\n numberValueText,\n value,\n quickFilters.get(modelColumn)\n )\n );\n } else if (TableUtils.isDateType(column.type)) {\n const dateValueText = dateFilterFormatter.format(value as Date);\n const previewValue = previewFilterFormatter.format(value as Date);\n if (quickFilters.get(modelColumn)) {\n filterMenu.actions.push({\n title: 'And',\n actions: this.dateFilterActions(\n column,\n dateValueText,\n previewValue,\n value,\n quickFilters.get(modelColumn),\n '&&'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(\n ...this.dateFilterActions(\n column,\n dateValueText,\n previewValue,\n value,\n quickFilters.get(modelColumn)\n )\n );\n } else {\n if (quickFilters.get(modelColumn)) {\n filterMenu.actions.push({\n title: 'And',\n\n actions: this.stringFilterActions(\n column,\n valueText,\n value,\n quickFilters.get(modelColumn),\n '&&'\n ),\n order: 2,\n group: ContextActions.groups.high,\n });\n }\n filterMenu.actions.push(\n ...this.stringFilterActions(column, valueText, value)\n );\n }\n\n if (filterMenu.actions != null && filterMenu.actions.length > 0) {\n actions.push(filterMenu);\n }\n }\n\n const gotoRow = {\n title: 'Go to',\n iconColor: filterIconColor,\n shortcut: SHORTCUTS.TABLE.GOTO_ROW,\n group: IrisGridContextMenuHandler.GROUP_GOTO,\n order: 10,\n action: () => this.irisGrid.toggleGotoRow(`${rowIndex + 1}`),\n };\n actions.push(gotoRow);\n\n if (canCopy) {\n actions.push({\n title: 'Copy Cell',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 10,\n action: () => {\n irisGrid.copyCell(columnIndex, rowIndex);\n },\n });\n\n actions.push({\n title: 'Copy Cell Unformatted',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 20,\n action: () => {\n irisGrid.copyCell(columnIndex, rowIndex, true);\n },\n });\n }\n\n return actions;\n }\n\n onContextMenu(\n gridPoint: GridPoint,\n grid: Grid,\n event: React.MouseEvent<Element, MouseEvent>\n ): EventHandlerResult {\n const { irisGrid } = this;\n const {\n y,\n column: columnIndex,\n row: rowIndex,\n columnHeaderDepth,\n } = gridPoint;\n const modelColumn = irisGrid.getModelColumn(columnIndex);\n const modelRow = irisGrid.getModelRow(rowIndex);\n\n const { model, canCopy } = irisGrid.props;\n const { columns } = model;\n\n const {\n metrics,\n isFilterBarShown,\n quickFilters,\n advancedFilters,\n selectedRanges,\n } = irisGrid.state;\n\n assertNotNull(metrics);\n\n const { columnHeaderHeight, gridY, columnHeaderMaxDepth } = metrics;\n\n const actions = [] as ContextAction[];\n\n if (modelColumn != null && modelRow != null) {\n const value = model.valueForCell(modelColumn, modelRow);\n\n const valueText = model.textForCell(modelColumn, modelRow);\n const column = columns[modelColumn];\n\n const { onContextMenu } = irisGrid.props;\n\n if (column != null) {\n actions.push(\n onContextMenu({\n model,\n value,\n valueText,\n column,\n rowIndex,\n columnIndex,\n modelRow,\n modelColumn,\n })\n );\n }\n }\n\n if (modelColumn != null && model.isFilterable(modelColumn)) {\n // Clear column filter should still be available after last row\n // And should be available in both header and body context menus\n actions.push({\n title: 'Clear Column Filter',\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 30,\n action: () => {\n this.irisGrid.removeColumnFilter(modelColumn);\n },\n disabled: !(\n quickFilters.has(modelColumn) || advancedFilters.has(modelColumn)\n ),\n });\n }\n\n if (\n isFilterBarShown\n ? y <= gridY\n : y <= columnHeaderHeight * columnHeaderMaxDepth &&\n columnHeaderDepth === 0\n ) {\n // grid header context menu options\n if (modelColumn != null) {\n actions.push(...this.getHeaderActions(modelColumn, gridPoint));\n }\n } else {\n // grid body context menu options\n if (modelColumn != null && modelRow != null) {\n actions.push(...this.getCellActions(modelColumn, grid, gridPoint));\n }\n\n // blank space context menu options\n if (canCopy && selectedRanges.length > 0) {\n actions.push({\n title: 'Copy Selection',\n shortcut: GLOBAL_SHORTCUTS.COPY,\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 30,\n action: () => {\n irisGrid.copyRanges(selectedRanges);\n },\n });\n\n actions.push({\n title: 'Copy Selection w/ Headers',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 40,\n action: () => {\n irisGrid.copyRanges(selectedRanges, true);\n },\n });\n }\n\n if (\n isEditableGridModel(model) &&\n model.isEditable &&\n selectedRanges.length > 0\n ) {\n actions.push({\n title: 'Delete Selected Rows',\n group: IrisGridContextMenuHandler.GROUP_EDIT,\n order: 50,\n action: () => {\n this.irisGrid.deleteRanges(selectedRanges);\n },\n });\n }\n }\n\n if (actions.length === 0) {\n return false;\n }\n\n assertNotNull(irisGrid.gridWrapper);\n\n ContextActions.triggerMenu(\n irisGrid.gridWrapper,\n event.pageX,\n event.pageY,\n actions\n );\n return true;\n }\n\n dateFormatActions(column: Column): ContextAction[] {\n const { model } = this.irisGrid.props;\n const { formatter } = model;\n const selectedFormat = formatter.getColumnFormat(column.type, column.name);\n\n const formatOptions = DateTimeFormatContextMenu.getOptions(\n formatter,\n selectedFormat\n );\n\n const actions = [];\n\n for (let i = 0; i < formatOptions.length; i += 1) {\n const { description, format, group, isSelected, title } = formatOptions[\n i\n ];\n actions.push({\n title,\n description,\n icon: isSelected ? vsCheck : undefined,\n group,\n order: i,\n action: () => {\n const modelIndex = model.getColumnIndexByName(column.name);\n assertNotNull(modelIndex);\n this.irisGrid.handleFormatSelection(modelIndex, format);\n },\n });\n }\n return actions;\n }\n\n numberFormatActions(column: Column): ContextAction[] | null {\n const { model } = this.irisGrid.props;\n const { formatter } = model;\n const selectedFormat = formatter.getColumnFormat(\n column.type,\n column.name\n ) as IntegerColumnFormat;\n let formatOptions;\n\n const columnIndex = model.getColumnIndexByName(column.name);\n if (TableUtils.isDecimalType(column.type)) {\n formatOptions = DecimalFormatContextMenu.getOptions(\n selectedFormat,\n format => {\n assertNotNull(columnIndex);\n this.debouncedUpdateCustomFormat(columnIndex, format);\n }\n );\n } else if (TableUtils.isIntegerType(column.type)) {\n formatOptions = IntegerFormatContextMenu.getOptions(\n selectedFormat,\n format => {\n assertNotNull(columnIndex);\n this.debouncedUpdateCustomFormat(columnIndex, format);\n }\n );\n } else {\n log.error('Invalid column type in numberFormatActions');\n return null;\n }\n\n const actions = [];\n\n for (let i = 0; i < formatOptions.length; i += 1) {\n const { format, isSelected } = formatOptions[i];\n actions.push({\n ...formatOptions[i],\n icon: isSelected ? vsCheck : undefined,\n order: i,\n action: () => {\n if (\n columnIndex === undefined &&\n format &&\n format.type === TableColumnFormatter.TYPE_CONTEXT_CUSTOM\n ) {\n return;\n }\n assertNotNull(columnIndex);\n this.irisGrid.handleFormatSelection(columnIndex, format);\n },\n });\n }\n return actions;\n }\n\n stringFilterActions(\n column: Column,\n valueText: string | null,\n value?: unknown,\n quickFilter?: QuickFilter,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const filterValue = dh.FilterValue.ofString(value);\n let newQuickFilter:\n | {\n filter: null | FilterCondition | undefined;\n text: string | null;\n }\n | undefined\n | null = quickFilter;\n if (!newQuickFilter) {\n newQuickFilter = { filter: null, text: null };\n }\n const { filter, text: filterText } = newQuickFilter;\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n "{valueText}"\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n\n actions.push({\n title: 'text is exactly',\n description: `Show only rows where ${column.name} is ${value} (case sensitive)`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().eq(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=${valueText}`,\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'text is not exactly',\n description: `Show only rows where ${column.name} is not ${valueText} (case sensitive)`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().notEq(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${valueText}`,\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: `text contains`,\n description: `Show only rows where ${column.name} contains ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().contains(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `~${valueText}`,\n operator\n )\n );\n },\n order: 30,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'text does not contain',\n description: `Show only rows where ${column.name} does not contain ${value}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().contains(filterValue).not(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!~${valueText}`,\n operator\n )\n );\n },\n order: 40,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'text starts with',\n description: `Show only rows where ${column.name} starts with ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().invoke('startsWith', filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `${valueText}*`,\n operator\n )\n );\n },\n order: 50,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'text ends with',\n description: `Show only rows where ${column.name} ends with ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().invoke('endsWith', filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `*${valueText}`,\n operator\n )\n );\n },\n order: 60,\n group: ContextActions.groups.low,\n });\n return actions;\n }\n\n numberFilterActions(\n column: Column,\n valueText: string,\n value: unknown,\n quickFilter?: QuickFilter | null,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const filterValue = IrisGridContextMenuHandler.getFilterValueForNumberOrChar(\n column.type,\n value\n );\n let filter: FilterCondition | null = null;\n let filterText: string | null = null;\n if (quickFilter) {\n filter = quickFilter.filter;\n filterText = quickFilter.text;\n }\n const actions = [];\n const isFinite =\n value !== Number.POSITIVE_INFINITY &&\n value !== Number.NEGATIVE_INFINITY &&\n !Number.isNaN(value);\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n "{valueText}"\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n actions.push({\n title: 'is equal to',\n description: `Show only rows where ${column.name} is ${valueText}`,\n action: () => {\n const valueFilter = IrisGridContextMenuHandler.getNumberValueEqualsFilter(\n column,\n value as number\n );\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n valueFilter,\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=${valueText}`,\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'is not equal to',\n description: `Show only rows where ${column.name} is not ${valueText}`,\n action: () => {\n const valueFilter = IrisGridContextMenuHandler.getNumberValueEqualsFilter(\n column,\n value as number\n ).not();\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n valueFilter,\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${valueText}`,\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n\n // IDS-6092 Less/greater than filters don't make sense for Infinite/NaN\n // TODO (DH-11799): These char filters should work in Bard, with the merge for DH-11040: https://gitlab.eng.illumon.com/illumon/iris/merge_requests/5801\n // They do not work in Powell though, so disable them.\n if (isFinite && !TableUtils.isCharType(column.type)) {\n actions.push({\n title: 'greater than',\n description: `Show only rows where ${column.name} is greater than ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThan(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>${valueText}`,\n operator\n )\n );\n },\n order: 30,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'greater than or equal to',\n description: `Show only rows where ${column.name} is greater than or equal to ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThanOrEqualTo(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>=${valueText}`,\n operator\n )\n );\n },\n order: 40,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'less than',\n description: `Show only rows where ${column.name} is less than ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThan(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<${valueText}`,\n operator\n )\n );\n },\n order: 50,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'less than or equal to',\n description: `Show only rows where ${column.name} is less than or equal to ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThanOrEqualTo(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<=${valueText}`,\n operator\n )\n );\n },\n order: 60,\n group: ContextActions.groups.low,\n });\n }\n return actions;\n }\n\n booleanFilterActions(\n column: Column,\n valueText: string | null,\n quickFilter?: QuickFilter | null,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const actions: ContextAction[] = [];\n\n const { model } = this.irisGrid.props;\n const { filter, text: filterText } = quickFilter || {};\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n "{valueText ?? 'null'}"\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n\n actions.push({\n title: 'true',\n description: `Show only rows where ${column.name} is true`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isTrue(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'true',\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'false',\n description: `Show only rows where ${column.name} is false`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isFalse(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'false',\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'is null',\n description: `Show only rows where ${column.name} is null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'null',\n operator\n )\n );\n },\n order: 30,\n group: ContextActions.groups.low,\n });\n\n actions.push({\n title: 'is not null',\n description: `Show only rows where ${column.name} is not null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull().not(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n '!null',\n operator\n )\n );\n },\n order: 40,\n group: ContextActions.groups.low,\n });\n\n return actions;\n }\n\n dateFilterActions(\n column: Column,\n valueText: string,\n previewValue: unknown,\n value: unknown,\n quickFilter?: QuickFilter | null,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n const filterValue = dh.FilterValue.ofNumber(value);\n\n let filter: FilterCondition | null = null;\n let filterText: string | null = null;\n if (quickFilter) {\n filter = quickFilter.filter;\n filterText = quickFilter.text;\n }\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n const actions = [];\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n "{previewValue}"\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n actions.push({\n title: 'date is',\n description: `Show only rows where ${column.name} is ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().eq(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=${valueText}`,\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is not',\n description: `Show only rows where ${column.name} is not ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().notEq(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${valueText}`,\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is before',\n description: `Show only rows where ${column.name} is before ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThan(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<${valueText}`,\n operator\n )\n );\n },\n order: 30,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is before or equal',\n description: `Show only rows where ${column.name} is before or equal to ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThanOrEqualTo(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<=${valueText}`,\n operator\n )\n );\n },\n order: 40,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is after',\n description: `Show only rows where ${column.name} is greater than ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThan(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>${valueText}`,\n operator\n )\n );\n },\n order: 50,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'date is after or equal',\n description: `Show only rows where ${column.name} is after or equal to ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThanOrEqualTo(filterValue),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>=${valueText}`,\n operator\n )\n );\n },\n order: 60,\n group: ContextActions.groups.low,\n });\n return actions;\n }\n\n nullFilterActions(\n column: Column,\n quickFilter?: QuickFilter,\n operator?: '&&' | '||' | null\n ): ContextAction[] {\n let filter: FilterCondition | null = null;\n let filterText: string | null = null;\n if (quickFilter) {\n filter = quickFilter.filter;\n filterText = quickFilter.text;\n }\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {operator\n ? IrisGridContextMenuHandler.getOperatorAsText(operator)\n : ''}{' '}\n "null"\n </div>\n ),\n order: 1,\n group: ContextActions.groups.high,\n });\n actions.push({\n title: 'is null',\n description: `Show only rows where ${column.name} is null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'null',\n operator\n )\n );\n },\n order: 10,\n group: ContextActions.groups.low,\n });\n actions.push({\n title: 'is not null',\n description: `Show only rows where ${column.name} is not null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull().not(),\n operator\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n '!null',\n operator\n )\n );\n },\n order: 20,\n group: ContextActions.groups.low,\n });\n\n return actions;\n }\n\n sortByActions(\n column: Column,\n modelColumn: ModelIndex,\n columnSort: Sort | null\n ): ContextAction[] {\n const theme = this.irisGrid.getTheme();\n const { contextMenuSortIconColor } = theme;\n const sortActions = [\n {\n title: `${column.name} Ascending`,\n order: 10,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n },\n {\n title: `${column.name} Descending`,\n order: 20,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n },\n {\n title: `Remove Sort`,\n order: 50,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.none,\n false,\n true\n );\n },\n disabled: !columnSort,\n },\n ];\n if (TableUtils.isNumberType(column.type)) {\n sortActions.push({\n title: `ABS(${column.name}) Ascending`,\n order: 30,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n });\n sortActions.push({\n title: `ABS(${column.name}) Descending`,\n order: 40,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n });\n }\n return sortActions;\n }\n\n additionalSortActions(\n column: Column,\n columnIndex: ModelIndex\n ): ContextAction[] {\n const theme = this.irisGrid.getTheme();\n const { contextMenuSortIconColor } = theme;\n const additionalSortActions = [\n {\n title: 'Add Sort By',\n menuElement: (\n <div className=\"btn-context-menu menu-title\">\n <span className=\"icon\">\n <FontAwesomeIcon\n icon={vsRemove}\n style={{ color: contextMenuSortIconColor ?? undefined }}\n />\n </span>\n <span className=\"title\">Add Additional Sort</span>\n <span className=\"shortcut\">\n {ContextActionUtils.isMacPlatform() ? '⌘Click' : '^Click'}\n </span>\n </div>\n ),\n order: 1,\n },\n {\n title: `${column.name} Ascending`,\n order: 10,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n false,\n true\n );\n },\n },\n {\n title: `${column.name} Descending`,\n order: 20,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n false,\n true\n );\n },\n },\n ];\n if (TableUtils.isNumberType(column.type)) {\n additionalSortActions.push({\n title: `ABS(${column.name}) Ascending`,\n order: 30,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true,\n true\n );\n },\n });\n additionalSortActions.push({\n title: `ABS(${column.name}) Descending`,\n order: 40,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true,\n true\n );\n },\n });\n }\n return additionalSortActions;\n }\n\n checkColumnSort(\n columnSort?: Sort | null,\n direction: SortDirection = null,\n isAbs = false\n ): boolean {\n if (!columnSort) {\n return false;\n }\n return columnSort.direction === direction && columnSort.isAbs === isAbs;\n }\n}\n\nexport default IrisGridContextMenuHandler;\n"],"mappings":"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"}
|
|
@@ -1,35 +1,26 @@
|
|
|
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
|
/* eslint class-methods-use-this: "off" */
|
|
4
3
|
import { GridMouseHandler } from '@deephaven/grid';
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* Handles sending data selected via double click
|
|
8
6
|
*/
|
|
9
7
|
class IrisGridDataSelectMouseHandler extends GridMouseHandler {
|
|
10
8
|
constructor(irisGrid) {
|
|
11
9
|
super();
|
|
12
|
-
|
|
13
10
|
_defineProperty(this, "irisGrid", void 0);
|
|
14
|
-
|
|
15
11
|
this.irisGrid = irisGrid;
|
|
16
12
|
}
|
|
17
|
-
|
|
18
13
|
onDoubleClick(gridPoint) {
|
|
19
14
|
var {
|
|
20
15
|
column,
|
|
21
16
|
row
|
|
22
17
|
} = gridPoint;
|
|
23
|
-
|
|
24
18
|
if (row == null || column == null) {
|
|
25
19
|
return false;
|
|
26
20
|
}
|
|
27
|
-
|
|
28
21
|
this.irisGrid.selectData(column, row);
|
|
29
22
|
return true;
|
|
30
23
|
}
|
|
31
|
-
|
|
32
24
|
}
|
|
33
|
-
|
|
34
25
|
export default IrisGridDataSelectMouseHandler;
|
|
35
26
|
//# sourceMappingURL=IrisGridDataSelectMouseHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridDataSelectMouseHandler.js","names":["GridMouseHandler","IrisGridDataSelectMouseHandler","constructor","irisGrid","onDoubleClick","gridPoint","column","row","selectData"],"sources":["../../src/mousehandlers/IrisGridDataSelectMouseHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport {\n GridMouseHandler,\n GridPoint,\n EventHandlerResult,\n} from '@deephaven/grid';\nimport type { IrisGrid } from '../IrisGrid';\n\n/**\n * Handles sending data selected via double click\n */\nclass IrisGridDataSelectMouseHandler extends GridMouseHandler {\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n }\n\n irisGrid: IrisGrid;\n\n onDoubleClick(gridPoint: GridPoint): EventHandlerResult {\n const { column, row } = gridPoint;\n if (row == null || column == null) {\n return false;\n }\n\n this.irisGrid.selectData(column, row);\n\n return true;\n }\n}\n\nexport default IrisGridDataSelectMouseHandler;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"IrisGridDataSelectMouseHandler.js","names":["GridMouseHandler","IrisGridDataSelectMouseHandler","constructor","irisGrid","onDoubleClick","gridPoint","column","row","selectData"],"sources":["../../src/mousehandlers/IrisGridDataSelectMouseHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport {\n GridMouseHandler,\n GridPoint,\n EventHandlerResult,\n} from '@deephaven/grid';\nimport type { IrisGrid } from '../IrisGrid';\n\n/**\n * Handles sending data selected via double click\n */\nclass IrisGridDataSelectMouseHandler extends GridMouseHandler {\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n }\n\n irisGrid: IrisGrid;\n\n onDoubleClick(gridPoint: GridPoint): EventHandlerResult {\n const { column, row } = gridPoint;\n if (row == null || column == null) {\n return false;\n }\n\n this.irisGrid.selectData(column, row);\n\n return true;\n }\n}\n\nexport default IrisGridDataSelectMouseHandler;\n"],"mappings":";AAAA;AACA,SACEA,gBAAgB,QAGX,iBAAiB;AAGxB;AACA;AACA;AACA,MAAMC,8BAA8B,SAASD,gBAAgB,CAAC;EAC5DE,WAAW,CAACC,QAAkB,EAAE;IAC9B,KAAK,EAAE;IAAC;IAER,IAAI,CAACA,QAAQ,GAAGA,QAAQ;EAC1B;EAIAC,aAAa,CAACC,SAAoB,EAAsB;IACtD,IAAM;MAAEC,MAAM;MAAEC;IAAI,CAAC,GAAGF,SAAS;IACjC,IAAIE,GAAG,IAAI,IAAI,IAAID,MAAM,IAAI,IAAI,EAAE;MACjC,OAAO,KAAK;IACd;IAEA,IAAI,CAACH,QAAQ,CAACK,UAAU,CAACF,MAAM,EAAEC,GAAG,CAAC;IAErC,OAAO,IAAI;EACb;AACF;AAEA,eAAeN,8BAA8B"}
|
|
@@ -1,27 +1,21 @@
|
|
|
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
|
/* eslint class-methods-use-this: "off" */
|
|
4
3
|
import { GridMouseHandler } from '@deephaven/grid';
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* Trigger quick filters and advanced filters
|
|
8
6
|
*/
|
|
9
7
|
class IrisGridFilterMouseHandler extends GridMouseHandler {
|
|
10
8
|
constructor(irisGrid) {
|
|
11
9
|
super();
|
|
12
|
-
|
|
13
10
|
_defineProperty(this, "irisGrid", void 0);
|
|
14
|
-
|
|
15
11
|
this.irisGrid = irisGrid;
|
|
16
12
|
}
|
|
17
|
-
|
|
18
13
|
onDown(gridPoint) {
|
|
19
14
|
var {
|
|
20
15
|
y,
|
|
21
16
|
column,
|
|
22
17
|
row
|
|
23
18
|
} = gridPoint;
|
|
24
|
-
|
|
25
19
|
if (column !== null && row === null) {
|
|
26
20
|
var {
|
|
27
21
|
isFilterBarShown,
|
|
@@ -32,16 +26,13 @@ class IrisGridFilterMouseHandler extends GridMouseHandler {
|
|
|
32
26
|
columnHeaderMaxDepth
|
|
33
27
|
} = metrics;
|
|
34
28
|
var theme = this.irisGrid.getTheme();
|
|
35
|
-
|
|
36
29
|
if (isFilterBarShown && theme.columnHeaderHeight != null && theme.filterBarHeight != null && y > theme.columnHeaderHeight * columnHeaderMaxDepth && y <= theme.columnHeaderHeight * columnHeaderMaxDepth + theme.filterBarHeight) {
|
|
37
30
|
this.irisGrid.focusFilterBar(column);
|
|
38
31
|
return true;
|
|
39
32
|
}
|
|
40
33
|
}
|
|
41
|
-
|
|
42
34
|
return false;
|
|
43
35
|
}
|
|
44
|
-
|
|
45
36
|
onMove(gridPoint) {
|
|
46
37
|
var {
|
|
47
38
|
y,
|
|
@@ -58,20 +49,16 @@ class IrisGridFilterMouseHandler extends GridMouseHandler {
|
|
|
58
49
|
} = metrics;
|
|
59
50
|
var theme = this.irisGrid.getTheme();
|
|
60
51
|
var newHoverAdvancedFilter = null;
|
|
61
|
-
|
|
62
52
|
if (isFilterBarShown && theme.columnHeaderHeight != null && theme.filterBarHeight != null && column !== null && y >= theme.columnHeaderHeight * columnHeaderMaxDepth && y <= theme.columnHeaderHeight * columnHeaderMaxDepth + theme.filterBarHeight) {
|
|
63
53
|
newHoverAdvancedFilter = column;
|
|
64
54
|
}
|
|
65
|
-
|
|
66
55
|
if (newHoverAdvancedFilter !== hoverAdvancedFilter) {
|
|
67
56
|
this.irisGrid.setState({
|
|
68
57
|
hoverAdvancedFilter: newHoverAdvancedFilter
|
|
69
58
|
});
|
|
70
59
|
}
|
|
71
|
-
|
|
72
60
|
return false;
|
|
73
61
|
}
|
|
74
|
-
|
|
75
62
|
onLeave(gridPoint) {
|
|
76
63
|
var {
|
|
77
64
|
column
|
|
@@ -79,17 +66,13 @@ class IrisGridFilterMouseHandler extends GridMouseHandler {
|
|
|
79
66
|
var {
|
|
80
67
|
hoverAdvancedFilter
|
|
81
68
|
} = this.irisGrid.state;
|
|
82
|
-
|
|
83
69
|
if (hoverAdvancedFilter !== null && column !== hoverAdvancedFilter) {
|
|
84
70
|
this.irisGrid.setState({
|
|
85
71
|
hoverAdvancedFilter: null
|
|
86
72
|
});
|
|
87
73
|
}
|
|
88
|
-
|
|
89
74
|
return false;
|
|
90
75
|
}
|
|
91
|
-
|
|
92
76
|
}
|
|
93
|
-
|
|
94
77
|
export default IrisGridFilterMouseHandler;
|
|
95
78
|
//# sourceMappingURL=IrisGridFilterMouseHandler.js.map
|