@deephaven/iris-grid 0.12.1-beta.0 → 0.12.1-beta.5
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/IrisGrid.d.ts +1 -1
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +41 -44
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridModel.d.ts +17 -1
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js +36 -0
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridProxyModel.d.ts.map +1 -1
- package/dist/IrisGridProxyModel.js +20 -0
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts +0 -4
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +65 -48
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +3 -2
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/package.json +12 -12
|
@@ -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","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","canCopy","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","isColumnFrozen","GROUP_HIDE_COLUMNS","hideColumnByVisibleIndex","unFreezeColumnByColumnName","name","freezeColumnByColumnName","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","GROUP_COPY","copyToClipboard","textForColumnHeader","catch","e","error","isDateType","GROUP_FORMAT","dateFormatActions","isNumberType","numberFormatActions","filterMenu","andFilterMenu","numberValueText","numberFilterActions","isBooleanType","booleanFilterActions","dateValueText","format","previewValue","dateFilterActions","stringFilterActions","nullFilterActions","copyCell","selectedRanges","COPY","copyRanges","isEditable","GROUP_EDIT","deleteRanges","triggerMenu","gridWrapper","pageX","pageY","formatter","selectedFormat","getColumnFormat","formatOptions","getOptions","i","description","isSelected","getColumnIndexByName","isDecimalType","isIntegerType","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, canCopy } = 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 const isColumnFrozen = model.isColumnFrozen(columnIndex);\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: 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 ContextActionUtils.copyToClipboard(\n model.textForColumnHeader(modelColumn)\n ).catch(e => log.error('Unable to copy header', e));\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 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\n // data area, including blank space context menu options\n const { selectedRanges } = grid.state;\n if (selectedRanges.length > 0) {\n if (canCopy) {\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 (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"}
|
|
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","canCopy","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","isColumnFrozen","GROUP_HIDE_COLUMNS","hideColumnByVisibleIndex","unFreezeColumnByColumnName","name","freezeColumnByColumnName","isColumnMovable","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","GROUP_COPY","copyToClipboard","textForColumnHeader","catch","e","error","isDateType","GROUP_FORMAT","dateFormatActions","isNumberType","numberFormatActions","filterMenu","andFilterMenu","numberValueText","numberFilterActions","isBooleanType","booleanFilterActions","dateValueText","format","previewValue","dateFilterActions","stringFilterActions","nullFilterActions","copyCell","selectedRanges","COPY","copyRanges","isEditable","GROUP_EDIT","deleteRanges","triggerMenu","gridWrapper","pageX","pageY","formatter","selectedFormat","getColumnFormat","formatOptions","getOptions","i","description","isSelected","getColumnIndexByName","isDecimalType","isIntegerType","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, canCopy } = 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 const isColumnFrozen = model.isColumnFrozen(modelColumn);\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: 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 disabled: !model.isColumnMovable(modelColumn) && !isColumnFrozen,\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 ContextActionUtils.copyToClipboard(\n model.textForColumnHeader(modelColumn)\n ).catch(e => log.error('Unable to copy header', e));\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 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\n // data area, including blank space context menu options\n const { selectedRanges } = grid.state;\n if (selectedRanges.length > 0) {\n if (canCopy) {\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 (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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/iris-grid",
|
|
3
|
-
"version": "0.12.1-beta.
|
|
3
|
+
"version": "0.12.1-beta.5+08effea",
|
|
4
4
|
"description": "Deephaven Iris Grid",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -30,13 +30,13 @@
|
|
|
30
30
|
"start": "cross-env NODE_ENV=development npm run watch"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@deephaven/console": "^0.12.1-beta.
|
|
34
|
-
"@deephaven/grid": "^0.12.1-beta.
|
|
35
|
-
"@deephaven/icons": "^0.12.1-beta.
|
|
36
|
-
"@deephaven/jsapi-shim": "^0.12.1-beta.
|
|
37
|
-
"@deephaven/react-hooks": "^0.12.1-beta.
|
|
38
|
-
"@deephaven/storage": "^0.12.1-beta.
|
|
39
|
-
"@deephaven/utils": "^0.12.1-beta.
|
|
33
|
+
"@deephaven/console": "^0.12.1-beta.5+08effea",
|
|
34
|
+
"@deephaven/grid": "^0.12.1-beta.5+08effea",
|
|
35
|
+
"@deephaven/icons": "^0.12.1-beta.5+08effea",
|
|
36
|
+
"@deephaven/jsapi-shim": "^0.12.1-beta.5+08effea",
|
|
37
|
+
"@deephaven/react-hooks": "^0.12.1-beta.5+08effea",
|
|
38
|
+
"@deephaven/storage": "^0.12.1-beta.5+08effea",
|
|
39
|
+
"@deephaven/utils": "^0.12.1-beta.5+08effea",
|
|
40
40
|
"@fortawesome/react-fontawesome": "^0.1.15",
|
|
41
41
|
"classnames": "^2.3.1",
|
|
42
42
|
"deep-equal": "^2.0.5",
|
|
@@ -59,9 +59,9 @@
|
|
|
59
59
|
"react": "^17.x"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
|
-
"@deephaven/log": "^0.12.1-beta.
|
|
63
|
-
"@deephaven/mocks": "^0.12.1-beta.
|
|
64
|
-
"@deephaven/tsconfig": "^0.12.1-beta.
|
|
62
|
+
"@deephaven/log": "^0.12.1-beta.5+08effea",
|
|
63
|
+
"@deephaven/mocks": "^0.12.1-beta.5+08effea",
|
|
64
|
+
"@deephaven/tsconfig": "^0.12.1-beta.5+08effea"
|
|
65
65
|
},
|
|
66
66
|
"files": [
|
|
67
67
|
"dist"
|
|
@@ -72,5 +72,5 @@
|
|
|
72
72
|
"publishConfig": {
|
|
73
73
|
"access": "public"
|
|
74
74
|
},
|
|
75
|
-
"gitHead": "
|
|
75
|
+
"gitHead": "08effea68185e8cc6a86dfd0e2994f130ff68508"
|
|
76
76
|
}
|