@deephaven/iris-grid 0.6.1-beta.0 → 0.6.1-demo.8
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/AdvancedFilterCreatorFilterItem.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.js +4 -4
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js +4 -1
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/TableUtils.d.ts +9 -0
- package/dist/TableUtils.d.ts.map +1 -1
- package/dist/TableUtils.js +112 -28
- package/dist/TableUtils.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts +1 -0
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +17 -6
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +29 -61
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mousehandlers/IrisGridContextMenuHandler.jsx"],"names":["React","FontAwesomeIcon","dhFilterFilled","vsRemove","vsCheck","vsFilter","debounce","ContextActions","ContextActionUtils","GLOBAL_SHORTCUTS","GridMouseHandler","dh","Log","DateTimeFormatContextMenu","DecimalFormatContextMenu","IntegerFormatContextMenu","TableUtils","TableColumnFormatter","DateTimeColumnFormatter","SHORTCUTS","log","module","DEBOUNCE_UPDATE_FORMAT","CONTEXT_MENU_DATE_FORMAT","IrisGridContextMenuHandler","getQuickFilterCondition","columnFilter","newColumnFilter","additive","and","getQuickFilterText","filterText","newFilterText","getNumberValueEqualsFilter","column","value","filter","Number","POSITIVE_INFINITY","FilterCondition","invoke","greaterThan","FilterValue","ofNumber","NEGATIVE_INFINITY","lessThan","isNaN","eq","constructor","irisGrid","debouncedUpdateCustomFormat","handleFormatSelection","componentWillUnmount","flush","onContextMenu","gridPoint","grid","event","y","columnIndex","row","rowIndex","modelColumn","getModelColumn","modelRow","getModelRow","model","props","columns","valueForCell","valueText","textForCell","actions","metrics","isFilterBarShown","reverseType","quickFilters","advancedFilters","searchFilter","state","theme","getTheme","columnHeaderHeight","gridY","filterIconColor","filterBarActiveColor","contextMenuSortIconColor","contextMenuReverseIconColor","settings","modelSort","sort","columnSort","getSortForColumn","hasReverse","REVERSE_TYPE","NONE","dateFilterFormatter","timeZone","showTimeZone","showTSeparator","defaultDateTimeFormatString","previewFilterFormatter","table","push","isFilterable","title","group","GROUP_FILTER","order","action","removeColumnFilter","disabled","has","userColumnWidths","isColumnHidden","values","some","columnWidth","GROUP_HIDE_COLUMNS","hideColumnByVisibleIndex","showAllColumns","icon","iconColor","shortcut","TABLE","TOGGLE_QUICK_FILTER","toggleFilterBar","get","handleAdvancedMenuOpened","CLEAR_FILTERS","clearAllFilters","size","GROUP_SORT","sortByActions","length","additionalSortActions","sortColumn","COLUMN_SORT_DIRECTION","none","isReversible","REVERSE","reverse","POST_SORT","isDateType","type","GROUP_FORMAT","dateFormatActions","isNumberType","numberFormatActions","filterMenu","andFilterMenu","numberFilterActions","isBooleanType","booleanFilterActions","dateValueText","format","previewValue","dateFilterActions","stringFilterActions","nullFilterActions","GROUP_COPY","copyCell","selectedRanges","COPY","copyRanges","isEditable","GROUP_EDIT","deleteRanges","triggerMenu","gridWrapper","pageX","pageY","formatter","selectedFormat","getColumnFormat","name","formatOptions","getOptions","i","description","isSelected","getColumnIndexByName","isDecimalType","isIntegerType","error","TYPE_CONTEXT_CUSTOM","quickFilter","filterValue","ofString","text","menuElement","setQuickFilter","notEq","contains","not","isFinite","valueFilter","greaterThanOrEqualTo","lessThanOrEqualTo","isTrue","isFalse","isNull","sortActions","ascending","checkColumnSort","descending","color","isMacPlatform","direction","isAbs","groups","high"],"mappings":"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","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhFilterFilled, vsRemove, vsCheck, vsFilter } from '@deephaven/icons';\nimport debounce from 'lodash.debounce';\nimport {\n ContextActions,\n ContextActionUtils,\n GLOBAL_SHORTCUTS,\n} from '@deephaven/components';\nimport { GridMouseHandler } from '@deephaven/grid';\nimport dh from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport {\n DateTimeFormatContextMenu,\n DecimalFormatContextMenu,\n IntegerFormatContextMenu,\n} from '../format-context-menus';\nimport './IrisGridContextMenuHandler.scss';\nimport TableUtils from '../TableUtils';\nimport { TableColumnFormatter, DateTimeColumnFormatter } from '../formatters';\nimport SHORTCUTS from '../IrisGridShortcuts';\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_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 };\n\n /**\n * Get filter condition for quick filter with existed column filter and the new filter to be applied,\n * returns new filter if filters are not additive.\n * if filters are additive, returns filter conditions combined with 'and'.\n * @param {FilterCondition} columnFilter\n * @param {FilterCondition} newColumnFilter\n * @param {boolean} additive\n */\n static getQuickFilterCondition(\n columnFilter,\n newColumnFilter,\n additive = false\n ) {\n if (!additive || !columnFilter) {\n return newColumnFilter;\n }\n return columnFilter.and(newColumnFilter);\n }\n\n /**\n * combines filter text with '&&' if filters are additive\n * @param {String} filterText\n * @param {String} newFilterText\n * @param {boolean} additive\n */\n static getQuickFilterText(filterText, newFilterText, additive = false) {\n return additive && filterText\n ? `${filterText} && ${newFilterText}`\n : newFilterText;\n }\n\n /**\n * Gets an equality filter for the provided numeric value\n * @param {dh.Column} column The column to make the filter for\n * @param {Number} value The value to get the equality filter for\n */\n static getNumberValueEqualsFilter(column, value) {\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 return columnFilter.eq(dh.FilterValue.ofNumber(value));\n }\n\n constructor(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() {\n this.debouncedUpdateCustomFormat.flush();\n }\n\n onContextMenu(gridPoint, grid, event) {\n const { irisGrid } = this;\n const { y, column: columnIndex, row: rowIndex } = gridPoint;\n const modelColumn = irisGrid.getModelColumn(columnIndex);\n const modelRow = irisGrid.getModelRow(rowIndex);\n const { model } = irisGrid.props;\n const { columns } = model;\n const value = model.valueForCell(modelColumn, modelRow);\n const valueText = model.textForCell(modelColumn, modelRow);\n const column = columns[modelColumn];\n\n const actions = [];\n\n const {\n metrics,\n isFilterBarShown,\n reverseType,\n quickFilters,\n advancedFilters,\n searchFilter,\n } = irisGrid.state;\n const theme = irisGrid.getTheme();\n const { columnHeaderHeight, gridY } = metrics;\n const {\n filterIconColor,\n filterBarActiveColor,\n contextMenuSortIconColor,\n contextMenuReverseIconColor,\n } = theme;\n const { onContextMenu, settings } = irisGrid.props;\n\n const modelSort = model.sort;\n const columnSort = TableUtils.getSortForColumn(modelSort, modelColumn);\n const hasReverse = reverseType !== TableUtils.REVERSE_TYPE.NONE;\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) {\n const { table } = model;\n actions.push(\n onContextMenu({\n table,\n model,\n value,\n valueText,\n column,\n rowIndex,\n columnIndex,\n modelRow,\n modelColumn,\n })\n );\n }\n\n if (column != null && model.isFilterable(modelColumn)) {\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 (isFilterBarShown ? y <= gridY : y <= columnHeaderHeight) {\n // grid header context menu options\n if (column != null) {\n const { userColumnWidths } = metrics;\n const isColumnHidden = [...userColumnWidths.values()].some(\n columnWidth => columnWidth === 0\n );\n actions.push({\n title: 'Hide Column',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n action: () => {\n this.irisGrid.hideColumnByVisibleIndex(columnIndex);\n },\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\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),\n });\n }\n }\n } else {\n // grid data area context menu options\n if (column != null && rowIndex != null) {\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: null,\n };\n\n const andFilterMenu = {\n title: 'Add Filter By Value',\n icon: vsRemove,\n iconColor: filterIconColor,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 20,\n actions: null,\n disabled: !quickFilters.get(modelColumn),\n };\n\n if (value != null) {\n if (TableUtils.isNumberType(column.type)) {\n filterMenu.actions = this.numberFilterActions(\n column,\n `${value}`,\n value\n );\n andFilterMenu.actions = this.numberFilterActions(\n column,\n `${value}`,\n value,\n quickFilters.get(modelColumn),\n true\n );\n } else if (TableUtils.isBooleanType(column.type)) {\n filterMenu.actions = this.booleanFilterActions(column, valueText);\n andFilterMenu.actions = this.booleanFilterActions(\n column,\n valueText,\n quickFilters.get(modelColumn),\n true\n );\n } else if (TableUtils.isDateType(column.type)) {\n const dateValueText = dateFilterFormatter.format(value);\n const previewValue = previewFilterFormatter.format(value);\n filterMenu.actions = this.dateFilterActions(\n column,\n dateValueText,\n previewValue,\n value\n );\n andFilterMenu.actions = this.dateFilterActions(\n column,\n dateValueText,\n previewValue,\n value,\n quickFilters.get(modelColumn),\n true\n );\n } else {\n filterMenu.actions = this.stringFilterActions(\n column,\n valueText,\n value\n );\n andFilterMenu.actions = this.stringFilterActions(\n column,\n valueText,\n value,\n quickFilters.get(modelColumn),\n true\n );\n }\n } else {\n filterMenu.actions = this.nullFilterActions(column);\n andFilterMenu.actions = this.nullFilterActions(\n column,\n quickFilters.get(modelColumn),\n true\n );\n }\n\n if (filterMenu.actions != null && filterMenu.actions.length > 0) {\n actions.push(filterMenu);\n }\n if (\n andFilterMenu.actions != null &&\n andFilterMenu.actions.length > 0\n ) {\n actions.push(andFilterMenu);\n }\n }\n\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 // data area, including blank space context menu options\n const { selectedRanges } = grid.state;\n if (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 if (model.isEditable) {\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\n if (actions.length === 0) {\n return false;\n }\n\n ContextActions.triggerMenu(\n irisGrid.gridWrapper,\n event.pageX,\n event.pageY,\n actions\n );\n return true;\n }\n\n dateFormatActions(column) {\n const { model } = this.irisGrid.props;\n const { formatter } = model;\n const selectedFormat = formatter.getColumnFormat(column.type, column.name);\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 : null,\n group,\n order: i,\n action: () => {\n this.irisGrid.handleFormatSelection(\n model.getColumnIndexByName(column.name),\n format\n );\n },\n });\n }\n return actions;\n }\n\n numberFormatActions(column) {\n const { model } = this.irisGrid.props;\n const { formatter } = model;\n const selectedFormat = formatter.getColumnFormat(column.type, column.name);\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 this.debouncedUpdateCustomFormat(columnIndex, format);\n }\n );\n } else if (TableUtils.isIntegerType(column.type)) {\n formatOptions = IntegerFormatContextMenu.getOptions(\n selectedFormat,\n format => {\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 : null,\n order: i,\n action: () => {\n if (\n format &&\n format.type === TableColumnFormatter.TYPE_CONTEXT_CUSTOM\n ) {\n return;\n }\n this.irisGrid.handleFormatSelection(columnIndex, format);\n },\n });\n }\n return actions;\n }\n\n stringFilterActions(\n column,\n valueText,\n value,\n quickFilter = {},\n additive = false\n ) {\n const filterValue = dh.FilterValue.ofString(value);\n const { filter, text: filterText } = quickFilter;\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n "{valueText}"\n </div>\n ),\n order: 1,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=${valueText}`,\n additive\n )\n );\n },\n order: 10,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${valueText}`,\n additive\n )\n );\n },\n order: 20,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `~${valueText}`,\n additive\n )\n );\n },\n order: 30,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!~${valueText}`,\n additive\n )\n );\n },\n order: 40,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `${valueText}*`,\n additive\n )\n );\n },\n order: 50,\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 quickFilter,\n column.filter().invoke('endsWith', filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `*${valueText}`,\n additive\n )\n );\n },\n order: 60,\n });\n return actions;\n }\n\n numberFilterActions(\n column,\n valueText,\n value,\n quickFilter = {},\n additive = false\n ) {\n const filterValue = dh.FilterValue.ofNumber(value);\n const { filter, text: filterText } = quickFilter;\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\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {additive ? ' AND ' : ''}"{valueText}"\n </div>\n ),\n order: 1,\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\n );\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n valueFilter,\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=${valueText}`,\n additive\n )\n );\n },\n order: 10,\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\n ).not();\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n valueFilter,\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${valueText}`,\n additive\n )\n );\n },\n order: 20,\n });\n\n // IDS-6092 Less/greater than filters don't make sense for Infinite/NaN\n if (isFinite) {\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>${valueText}`,\n additive\n )\n );\n },\n order: 30,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>=${valueText}`,\n additive\n )\n );\n },\n order: 40,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<${valueText}`,\n additive\n )\n );\n },\n order: 50,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<=${valueText}`,\n additive\n )\n );\n },\n order: 60,\n });\n }\n return actions;\n }\n\n booleanFilterActions(column, valueText, quickFilter = {}, additive = false) {\n const actions = [];\n const { filter, text: filterText } = quickFilter;\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {additive ? 'AND ' : ''}"{valueText}"\n </div>\n ),\n order: 1,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'true',\n additive\n )\n );\n },\n order: 10,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'false',\n additive\n )\n );\n },\n order: 20,\n });\n actions.push({\n title: 'null',\n description: `Show only rows where ${column.name} is null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n quickFilter,\n column.filter().isNull(),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'null',\n additive\n )\n );\n },\n order: 30,\n });\n\n return actions;\n }\n\n dateFilterActions(\n column,\n valueText,\n previewValue,\n value,\n quickFilter = {},\n additive = false\n ) {\n const filterValue = dh.FilterValue.ofNumber(value);\n const { filter, text: filterText } = quickFilter;\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n\n const actions = [];\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {additive ? ' AND ' : ''}"{previewValue}"\n </div>\n ),\n order: 1,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=${valueText}`,\n additive\n )\n );\n },\n order: 10,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${valueText}`,\n additive\n )\n );\n },\n order: 20,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<${valueText}`,\n additive\n )\n );\n },\n order: 30,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<=${valueText}`,\n additive\n )\n );\n },\n order: 40,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>${valueText}`,\n additive\n )\n );\n },\n order: 50,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>=${valueText}`,\n additive\n )\n );\n },\n order: 60,\n });\n return actions;\n }\n\n nullFilterActions(column, quickFilter = {}, additive = false) {\n const { filter, text: filterText } = quickFilter;\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {additive ? ' AND ' : ''}"null"\n </div>\n ),\n order: 1,\n });\n actions.push({\n title: 'equals 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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'null',\n additive\n )\n );\n },\n order: 10,\n });\n actions.push({\n title: 'not equals 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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n '!null',\n additive\n )\n );\n },\n order: 20,\n });\n\n return actions;\n }\n\n sortByActions(column, modelColumn, columnSort) {\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 : null,\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 : null,\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 : null,\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 : null,\n iconColor: contextMenuSortIconColor,\n });\n }\n return sortActions;\n }\n\n additionalSortActions(column, columnIndex) {\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 }}\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(columnSort, direction = null, isAbs = false) {\n if (!columnSort) {\n return false;\n }\n return columnSort.direction === direction && columnSort.isAbs === isAbs;\n }\n}\n\nexport default IrisGridContextMenuHandler;\n"],"file":"IrisGridContextMenuHandler.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/mousehandlers/IrisGridContextMenuHandler.jsx"],"names":["React","FontAwesomeIcon","dhFilterFilled","vsRemove","vsCheck","vsFilter","debounce","ContextActions","ContextActionUtils","GLOBAL_SHORTCUTS","GridMouseHandler","dh","Log","DateTimeFormatContextMenu","DecimalFormatContextMenu","IntegerFormatContextMenu","TableUtils","TableColumnFormatter","DateTimeColumnFormatter","SHORTCUTS","log","module","DEBOUNCE_UPDATE_FORMAT","CONTEXT_MENU_DATE_FORMAT","IrisGridContextMenuHandler","getQuickFilterCondition","columnFilter","newColumnFilter","additive","and","getQuickFilterText","filterText","newFilterText","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","onContextMenu","gridPoint","grid","event","y","columnIndex","row","rowIndex","modelColumn","getModelColumn","modelRow","getModelRow","model","props","columns","valueForCell","valueText","textForCell","actions","metrics","isFilterBarShown","reverseType","quickFilters","advancedFilters","searchFilter","state","theme","getTheme","columnHeaderHeight","gridY","filterIconColor","filterBarActiveColor","contextMenuSortIconColor","contextMenuReverseIconColor","settings","modelSort","sort","columnSort","getSortForColumn","hasReverse","REVERSE_TYPE","NONE","dateFilterFormatter","timeZone","showTimeZone","showTSeparator","defaultDateTimeFormatString","previewFilterFormatter","table","push","isFilterable","title","group","GROUP_FILTER","order","action","removeColumnFilter","disabled","has","userColumnWidths","isColumnHidden","values","some","columnWidth","GROUP_HIDE_COLUMNS","hideColumnByVisibleIndex","showAllColumns","icon","iconColor","shortcut","TABLE","TOGGLE_QUICK_FILTER","toggleFilterBar","get","handleAdvancedMenuOpened","CLEAR_FILTERS","clearAllFilters","size","GROUP_SORT","sortByActions","length","additionalSortActions","sortColumn","COLUMN_SORT_DIRECTION","none","isReversible","REVERSE","reverse","POST_SORT","isDateType","GROUP_FORMAT","dateFormatActions","isNumberType","numberFormatActions","filterMenu","andFilterMenu","numberValueText","numberFilterActions","isBooleanType","booleanFilterActions","dateValueText","format","previewValue","dateFilterActions","stringFilterActions","nullFilterActions","GROUP_COPY","copyCell","selectedRanges","COPY","copyRanges","isEditable","GROUP_EDIT","deleteRanges","triggerMenu","gridWrapper","pageX","pageY","formatter","selectedFormat","getColumnFormat","name","formatOptions","getOptions","i","description","isSelected","getColumnIndexByName","isDecimalType","isIntegerType","error","TYPE_CONTEXT_CUSTOM","quickFilter","text","menuElement","setQuickFilter","notEq","contains","not","isFinite","valueFilter","greaterThanOrEqualTo","lessThanOrEqualTo","isTrue","isFalse","isNull","sortActions","ascending","checkColumnSort","descending","color","isMacPlatform","direction","isAbs","groups","high"],"mappings":"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","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhFilterFilled, vsRemove, vsCheck, vsFilter } from '@deephaven/icons';\nimport debounce from 'lodash.debounce';\nimport {\n ContextActions,\n ContextActionUtils,\n GLOBAL_SHORTCUTS,\n} from '@deephaven/components';\nimport { GridMouseHandler } from '@deephaven/grid';\nimport dh from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport {\n DateTimeFormatContextMenu,\n DecimalFormatContextMenu,\n IntegerFormatContextMenu,\n} from '../format-context-menus';\nimport './IrisGridContextMenuHandler.scss';\nimport TableUtils from '../TableUtils';\nimport { TableColumnFormatter, DateTimeColumnFormatter } from '../formatters';\nimport SHORTCUTS from '../IrisGridShortcuts';\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_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 };\n\n /**\n * Get filter condition for quick filter with existed column filter and the new filter to be applied,\n * returns new filter if filters are not additive.\n * if filters are additive, returns filter conditions combined with 'and'.\n * @param {FilterCondition} columnFilter\n * @param {FilterCondition} newColumnFilter\n * @param {boolean} additive\n */\n static getQuickFilterCondition(\n columnFilter,\n newColumnFilter,\n additive = false\n ) {\n if (!additive || !columnFilter) {\n return newColumnFilter;\n }\n return columnFilter.and(newColumnFilter);\n }\n\n /**\n * combines filter text with '&&' if filters are additive\n * @param {String} filterText\n * @param {String} newFilterText\n * @param {boolean} additive\n */\n static getQuickFilterText(filterText, newFilterText, additive = false) {\n return additive && filterText\n ? `${filterText} && ${newFilterText}`\n : newFilterText;\n }\n\n /**\n * Gets an equality filter for the provided numeric value\n * @param {dh.Column} column The column to make the filter for\n * @param {Number} value The value to get the equality filter for\n */\n static getNumberValueEqualsFilter(column, value) {\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(columnType, value) {\n return TableUtils.isCharType(columnType)\n ? dh.FilterValue.ofString(String.fromCharCode(value))\n : dh.FilterValue.ofNumber(value);\n }\n\n constructor(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() {\n this.debouncedUpdateCustomFormat.flush();\n }\n\n onContextMenu(gridPoint, grid, event) {\n const { irisGrid } = this;\n const { y, column: columnIndex, row: rowIndex } = gridPoint;\n const modelColumn = irisGrid.getModelColumn(columnIndex);\n const modelRow = irisGrid.getModelRow(rowIndex);\n const { model } = irisGrid.props;\n const { columns } = model;\n const value = model.valueForCell(modelColumn, modelRow);\n const valueText = model.textForCell(modelColumn, modelRow);\n const column = columns[modelColumn];\n\n const actions = [];\n\n const {\n metrics,\n isFilterBarShown,\n reverseType,\n quickFilters,\n advancedFilters,\n searchFilter,\n } = irisGrid.state;\n const theme = irisGrid.getTheme();\n const { columnHeaderHeight, gridY } = metrics;\n const {\n filterIconColor,\n filterBarActiveColor,\n contextMenuSortIconColor,\n contextMenuReverseIconColor,\n } = theme;\n const { onContextMenu, settings } = irisGrid.props;\n\n const modelSort = model.sort;\n const columnSort = TableUtils.getSortForColumn(modelSort, modelColumn);\n const hasReverse = reverseType !== TableUtils.REVERSE_TYPE.NONE;\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) {\n const { table } = model;\n actions.push(\n onContextMenu({\n table,\n model,\n value,\n valueText,\n column,\n rowIndex,\n columnIndex,\n modelRow,\n modelColumn,\n })\n );\n }\n\n if (column != null && model.isFilterable(modelColumn)) {\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 (isFilterBarShown ? y <= gridY : y <= columnHeaderHeight) {\n // grid header context menu options\n if (column != null) {\n const { userColumnWidths } = metrics;\n const isColumnHidden = [...userColumnWidths.values()].some(\n columnWidth => columnWidth === 0\n );\n actions.push({\n title: 'Hide Column',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n action: () => {\n this.irisGrid.hideColumnByVisibleIndex(columnIndex);\n },\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\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),\n });\n }\n }\n } else {\n // grid data area context menu options\n if (column != null && rowIndex != null) {\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: null,\n };\n\n const andFilterMenu = {\n title: 'Add Filter By Value',\n icon: vsRemove,\n iconColor: filterIconColor,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 20,\n actions: null,\n disabled: !quickFilters.get(modelColumn),\n };\n\n if (value != null) {\n // Chars get treated like numbers in terms of which filters are available\n if (\n TableUtils.isNumberType(column.type) ||\n TableUtils.isCharType(column.type)\n ) {\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)\n : `${value}`;\n filterMenu.actions = this.numberFilterActions(\n column,\n numberValueText,\n value\n );\n andFilterMenu.actions = this.numberFilterActions(\n column,\n numberValueText,\n value,\n quickFilters.get(modelColumn),\n true\n );\n } else if (TableUtils.isBooleanType(column.type)) {\n filterMenu.actions = this.booleanFilterActions(column, valueText);\n andFilterMenu.actions = this.booleanFilterActions(\n column,\n valueText,\n quickFilters.get(modelColumn),\n true\n );\n } else if (TableUtils.isDateType(column.type)) {\n const dateValueText = dateFilterFormatter.format(value);\n const previewValue = previewFilterFormatter.format(value);\n filterMenu.actions = this.dateFilterActions(\n column,\n dateValueText,\n previewValue,\n value\n );\n andFilterMenu.actions = this.dateFilterActions(\n column,\n dateValueText,\n previewValue,\n value,\n quickFilters.get(modelColumn),\n true\n );\n } else {\n filterMenu.actions = this.stringFilterActions(\n column,\n valueText,\n value\n );\n andFilterMenu.actions = this.stringFilterActions(\n column,\n valueText,\n value,\n quickFilters.get(modelColumn),\n true\n );\n }\n } else {\n filterMenu.actions = this.nullFilterActions(column);\n andFilterMenu.actions = this.nullFilterActions(\n column,\n quickFilters.get(modelColumn),\n true\n );\n }\n\n if (filterMenu.actions != null && filterMenu.actions.length > 0) {\n actions.push(filterMenu);\n }\n if (\n andFilterMenu.actions != null &&\n andFilterMenu.actions.length > 0\n ) {\n actions.push(andFilterMenu);\n }\n }\n\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 // data area, including blank space context menu options\n const { selectedRanges } = grid.state;\n if (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 if (model.isEditable) {\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\n if (actions.length === 0) {\n return false;\n }\n\n ContextActions.triggerMenu(\n irisGrid.gridWrapper,\n event.pageX,\n event.pageY,\n actions\n );\n return true;\n }\n\n dateFormatActions(column) {\n const { model } = this.irisGrid.props;\n const { formatter } = model;\n const selectedFormat = formatter.getColumnFormat(column.type, column.name);\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 : null,\n group,\n order: i,\n action: () => {\n this.irisGrid.handleFormatSelection(\n model.getColumnIndexByName(column.name),\n format\n );\n },\n });\n }\n return actions;\n }\n\n numberFormatActions(column) {\n const { model } = this.irisGrid.props;\n const { formatter } = model;\n const selectedFormat = formatter.getColumnFormat(column.type, column.name);\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 this.debouncedUpdateCustomFormat(columnIndex, format);\n }\n );\n } else if (TableUtils.isIntegerType(column.type)) {\n formatOptions = IntegerFormatContextMenu.getOptions(\n selectedFormat,\n format => {\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 : null,\n order: i,\n action: () => {\n if (\n format &&\n format.type === TableColumnFormatter.TYPE_CONTEXT_CUSTOM\n ) {\n return;\n }\n this.irisGrid.handleFormatSelection(columnIndex, format);\n },\n });\n }\n return actions;\n }\n\n stringFilterActions(\n column,\n valueText,\n value,\n quickFilter = {},\n additive = false\n ) {\n const filterValue = dh.FilterValue.ofString(value);\n const { filter, text: filterText } = quickFilter;\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n "{valueText}"\n </div>\n ),\n order: 1,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=${valueText}`,\n additive\n )\n );\n },\n order: 10,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${valueText}`,\n additive\n )\n );\n },\n order: 20,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `~${valueText}`,\n additive\n )\n );\n },\n order: 30,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!~${valueText}`,\n additive\n )\n );\n },\n order: 40,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `${valueText}*`,\n additive\n )\n );\n },\n order: 50,\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 quickFilter,\n column.filter().invoke('endsWith', filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `*${valueText}`,\n additive\n )\n );\n },\n order: 60,\n });\n return actions;\n }\n\n numberFilterActions(\n column,\n valueText,\n value,\n quickFilter = {},\n additive = false\n ) {\n const filterValue = IrisGridContextMenuHandler.getFilterValueForNumberOrChar(\n column.type,\n value\n );\n const { filter, text: filterText } = quickFilter;\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\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {additive ? ' AND ' : ''}"{valueText}"\n </div>\n ),\n order: 1,\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\n );\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n valueFilter,\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=${valueText}`,\n additive\n )\n );\n },\n order: 10,\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\n ).not();\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n valueFilter,\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${valueText}`,\n additive\n )\n );\n },\n order: 20,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>${valueText}`,\n additive\n )\n );\n },\n order: 30,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>=${valueText}`,\n additive\n )\n );\n },\n order: 40,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<${valueText}`,\n additive\n )\n );\n },\n order: 50,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<=${valueText}`,\n additive\n )\n );\n },\n order: 60,\n });\n }\n return actions;\n }\n\n booleanFilterActions(column, valueText, quickFilter = {}, additive = false) {\n const actions = [];\n const { filter, text: filterText } = quickFilter;\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {additive ? 'AND ' : ''}"{valueText}"\n </div>\n ),\n order: 1,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'true',\n additive\n )\n );\n },\n order: 10,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'false',\n additive\n )\n );\n },\n order: 20,\n });\n actions.push({\n title: 'null',\n description: `Show only rows where ${column.name} is null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n quickFilter,\n column.filter().isNull(),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'null',\n additive\n )\n );\n },\n order: 30,\n });\n\n return actions;\n }\n\n dateFilterActions(\n column,\n valueText,\n previewValue,\n value,\n quickFilter = {},\n additive = false\n ) {\n const filterValue = dh.FilterValue.ofNumber(value);\n const { filter, text: filterText } = quickFilter;\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n\n const actions = [];\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {additive ? ' AND ' : ''}"{previewValue}"\n </div>\n ),\n order: 1,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=${valueText}`,\n additive\n )\n );\n },\n order: 10,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${valueText}`,\n additive\n )\n );\n },\n order: 20,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<${valueText}`,\n additive\n )\n );\n },\n order: 30,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<=${valueText}`,\n additive\n )\n );\n },\n order: 40,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>${valueText}`,\n additive\n )\n );\n },\n order: 50,\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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>=${valueText}`,\n additive\n )\n );\n },\n order: 60,\n });\n return actions;\n }\n\n nullFilterActions(column, quickFilter = {}, additive = false) {\n const { filter, text: filterText } = quickFilter;\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {additive ? ' AND ' : ''}"null"\n </div>\n ),\n order: 1,\n });\n actions.push({\n title: 'equals 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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'null',\n additive\n )\n );\n },\n order: 10,\n });\n actions.push({\n title: 'not equals 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 additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n '!null',\n additive\n )\n );\n },\n order: 20,\n });\n\n return actions;\n }\n\n sortByActions(column, modelColumn, columnSort) {\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 : null,\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 : null,\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 : null,\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 : null,\n iconColor: contextMenuSortIconColor,\n });\n }\n return sortActions;\n }\n\n additionalSortActions(column, columnIndex) {\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 }}\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(columnSort, direction = null, isAbs = false) {\n if (!columnSort) {\n return false;\n }\n return columnSort.direction === direction && columnSort.isAbs === isAbs;\n }\n}\n\nexport default IrisGridContextMenuHandler;\n"],"file":"IrisGridContextMenuHandler.js"}
|