@deephaven/iris-grid 0.42.1-beta.2 → 0.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. package/dist/AdvancedFilterCreator.d.ts +1 -0
  2. package/dist/AdvancedFilterCreator.d.ts.map +1 -1
  3. package/dist/ColumnStatistics.d.ts.map +1 -1
  4. package/dist/IrisGrid.d.ts.map +1 -1
  5. package/dist/IrisGridModel.d.ts +5 -0
  6. package/dist/IrisGridModel.d.ts.map +1 -1
  7. package/dist/IrisGridProxyModel.d.ts +1 -0
  8. package/dist/IrisGridProxyModel.d.ts.map +1 -1
  9. package/dist/IrisGridTableModel.d.ts +1 -0
  10. package/dist/IrisGridTableModel.d.ts.map +1 -1
  11. package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
  12. package/package.json +15 -15
  13. package/dist/AdvancedFilterCreator.css +0 -106
  14. package/dist/AdvancedFilterCreator.css.map +0 -1
  15. package/dist/AdvancedFilterCreator.js +0 -524
  16. package/dist/AdvancedFilterCreator.js.map +0 -1
  17. package/dist/AdvancedFilterCreatorFilterItem.css +0 -9
  18. package/dist/AdvancedFilterCreatorFilterItem.css.map +0 -1
  19. package/dist/AdvancedFilterCreatorFilterItem.js +0 -184
  20. package/dist/AdvancedFilterCreatorFilterItem.js.map +0 -1
  21. package/dist/AdvancedFilterCreatorSelectValue.css +0 -50
  22. package/dist/AdvancedFilterCreatorSelectValue.css.map +0 -1
  23. package/dist/AdvancedFilterCreatorSelectValue.js +0 -301
  24. package/dist/AdvancedFilterCreatorSelectValue.js.map +0 -1
  25. package/dist/AdvancedFilterCreatorSelectValueList.js +0 -272
  26. package/dist/AdvancedFilterCreatorSelectValueList.js.map +0 -1
  27. package/dist/ColumnHeaderGroup.js +0 -61
  28. package/dist/ColumnHeaderGroup.js.map +0 -1
  29. package/dist/ColumnStatistics.css +0 -76
  30. package/dist/ColumnStatistics.css.map +0 -1
  31. package/dist/ColumnStatistics.js +0 -197
  32. package/dist/ColumnStatistics.js.map +0 -1
  33. package/dist/CommonTypes.js +0 -2
  34. package/dist/CommonTypes.js.map +0 -1
  35. package/dist/CrossColumnSearch.css +0 -35
  36. package/dist/CrossColumnSearch.css.map +0 -1
  37. package/dist/CrossColumnSearch.js +0 -199
  38. package/dist/CrossColumnSearch.js.map +0 -1
  39. package/dist/FilterInputField.css +0 -56
  40. package/dist/FilterInputField.css.map +0 -1
  41. package/dist/FilterInputField.js +0 -232
  42. package/dist/FilterInputField.js.map +0 -1
  43. package/dist/GotoRow.css +0 -45
  44. package/dist/GotoRow.css.map +0 -1
  45. package/dist/GotoRow.js +0 -298
  46. package/dist/GotoRow.js.map +0 -1
  47. package/dist/IrisGrid.css +0 -359
  48. package/dist/IrisGrid.css.map +0 -1
  49. package/dist/IrisGrid.js +0 -3647
  50. package/dist/IrisGrid.js.map +0 -1
  51. package/dist/IrisGridBottomBar.css +0 -85
  52. package/dist/IrisGridBottomBar.css.map +0 -1
  53. package/dist/IrisGridBottomBar.js +0 -36
  54. package/dist/IrisGridBottomBar.js.map +0 -1
  55. package/dist/IrisGridCellOverflowModal.css +0 -17
  56. package/dist/IrisGridCellOverflowModal.css.map +0 -1
  57. package/dist/IrisGridCellOverflowModal.js +0 -157
  58. package/dist/IrisGridCellOverflowModal.js.map +0 -1
  59. package/dist/IrisGridCellRendererUtils.js +0 -20
  60. package/dist/IrisGridCellRendererUtils.js.map +0 -1
  61. package/dist/IrisGridCopyHandler.css +0 -64
  62. package/dist/IrisGridCopyHandler.css.map +0 -1
  63. package/dist/IrisGridCopyHandler.js +0 -331
  64. package/dist/IrisGridCopyHandler.js.map +0 -1
  65. package/dist/IrisGridDataBarCellRenderer.js +0 -10
  66. package/dist/IrisGridDataBarCellRenderer.js.map +0 -1
  67. package/dist/IrisGridIcons.js +0 -25
  68. package/dist/IrisGridIcons.js.map +0 -1
  69. package/dist/IrisGridMetricCalculator.js +0 -33
  70. package/dist/IrisGridMetricCalculator.js.map +0 -1
  71. package/dist/IrisGridModel.js +0 -255
  72. package/dist/IrisGridModel.js.map +0 -1
  73. package/dist/IrisGridModelFactory.js +0 -27
  74. package/dist/IrisGridModelFactory.js.map +0 -1
  75. package/dist/IrisGridModelUpdater.js +0 -96
  76. package/dist/IrisGridModelUpdater.js.map +0 -1
  77. package/dist/IrisGridPartitionSelector.css +0 -48
  78. package/dist/IrisGridPartitionSelector.css.map +0 -1
  79. package/dist/IrisGridPartitionSelector.js +0 -198
  80. package/dist/IrisGridPartitionSelector.js.map +0 -1
  81. package/dist/IrisGridProxyModel.js +0 -527
  82. package/dist/IrisGridProxyModel.js.map +0 -1
  83. package/dist/IrisGridRenderer.js +0 -779
  84. package/dist/IrisGridRenderer.js.map +0 -1
  85. package/dist/IrisGridShortcuts.js +0 -59
  86. package/dist/IrisGridShortcuts.js.map +0 -1
  87. package/dist/IrisGridTableModel.js +0 -269
  88. package/dist/IrisGridTableModel.js.map +0 -1
  89. package/dist/IrisGridTableModelTemplate.js +0 -1589
  90. package/dist/IrisGridTableModelTemplate.js.map +0 -1
  91. package/dist/IrisGridTestUtils.js +0 -121
  92. package/dist/IrisGridTestUtils.js.map +0 -1
  93. package/dist/IrisGridTextCellRenderer.js +0 -139
  94. package/dist/IrisGridTextCellRenderer.js.map +0 -1
  95. package/dist/IrisGridTheme.js +0 -96
  96. package/dist/IrisGridTheme.js.map +0 -1
  97. package/dist/IrisGridTheme.module.css +0 -69
  98. package/dist/IrisGridTheme.module.css.map +0 -1
  99. package/dist/IrisGridTreeTableModel.js +0 -145
  100. package/dist/IrisGridTreeTableModel.js.map +0 -1
  101. package/dist/IrisGridUtils.js +0 -1279
  102. package/dist/IrisGridUtils.js.map +0 -1
  103. package/dist/MissingKeyError.js +0 -15
  104. package/dist/MissingKeyError.js.map +0 -1
  105. package/dist/PartitionSelectorSearch.css +0 -22
  106. package/dist/PartitionSelectorSearch.css.map +0 -1
  107. package/dist/PartitionSelectorSearch.js +0 -317
  108. package/dist/PartitionSelectorSearch.js.map +0 -1
  109. package/dist/PendingDataBottomBar.css +0 -13
  110. package/dist/PendingDataBottomBar.css.map +0 -1
  111. package/dist/PendingDataBottomBar.js +0 -98
  112. package/dist/PendingDataBottomBar.js.map +0 -1
  113. package/dist/TableViewportUpdater.js +0 -156
  114. package/dist/TableViewportUpdater.js.map +0 -1
  115. package/dist/ToastBottomBar.js +0 -42
  116. package/dist/ToastBottomBar.js.map +0 -1
  117. package/dist/TreeTableViewportUpdater.js +0 -96
  118. package/dist/TreeTableViewportUpdater.js.map +0 -1
  119. package/dist/declaration.d.js +0 -2
  120. package/dist/declaration.d.js.map +0 -1
  121. package/dist/format-context-menus/CustomFormatAction.css +0 -25
  122. package/dist/format-context-menus/CustomFormatAction.css.map +0 -1
  123. package/dist/format-context-menus/CustomFormatAction.js +0 -132
  124. package/dist/format-context-menus/CustomFormatAction.js.map +0 -1
  125. package/dist/format-context-menus/DateTimeFormatContextMenu.js +0 -53
  126. package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +0 -1
  127. package/dist/format-context-menus/DecimalFormatContextMenu.js +0 -59
  128. package/dist/format-context-menus/DecimalFormatContextMenu.js.map +0 -1
  129. package/dist/format-context-menus/FormatContextMenuUtils.js +0 -63
  130. package/dist/format-context-menus/FormatContextMenuUtils.js.map +0 -1
  131. package/dist/format-context-menus/IntegerFormatContextMenu.js +0 -43
  132. package/dist/format-context-menus/IntegerFormatContextMenu.js.map +0 -1
  133. package/dist/format-context-menus/index.js +0 -4
  134. package/dist/format-context-menus/index.js.map +0 -1
  135. package/dist/index.js +0 -24
  136. package/dist/index.js.map +0 -1
  137. package/dist/key-handlers/ClearFilterKeyHandler.js +0 -21
  138. package/dist/key-handlers/ClearFilterKeyHandler.js.map +0 -1
  139. package/dist/key-handlers/CopyKeyHandler.js +0 -31
  140. package/dist/key-handlers/CopyKeyHandler.js.map +0 -1
  141. package/dist/key-handlers/ReverseKeyHandler.js +0 -32
  142. package/dist/key-handlers/ReverseKeyHandler.js.map +0 -1
  143. package/dist/key-handlers/index.js +0 -4
  144. package/dist/key-handlers/index.js.map +0 -1
  145. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +0 -175
  146. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +0 -1
  147. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +0 -139
  148. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +0 -1
  149. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +0 -83
  150. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +0 -1
  151. package/dist/mousehandlers/IrisGridContextMenuHandler.css +0 -19
  152. package/dist/mousehandlers/IrisGridContextMenuHandler.css.map +0 -1
  153. package/dist/mousehandlers/IrisGridContextMenuHandler.js +0 -1218
  154. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +0 -1
  155. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +0 -28
  156. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +0 -1
  157. package/dist/mousehandlers/IrisGridFilterMouseHandler.js +0 -80
  158. package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +0 -1
  159. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js +0 -126
  160. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js.map +0 -1
  161. package/dist/mousehandlers/IrisGridSortMouseHandler.js +0 -46
  162. package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +0 -1
  163. package/dist/mousehandlers/IrisGridTokenMouseHandler.js +0 -151
  164. package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +0 -1
  165. package/dist/mousehandlers/PendingMouseHandler.js +0 -39
  166. package/dist/mousehandlers/PendingMouseHandler.js.map +0 -1
  167. package/dist/mousehandlers/index.js +0 -11
  168. package/dist/mousehandlers/index.js.map +0 -1
  169. package/dist/sidebar/AdvancedSettings.js +0 -6
  170. package/dist/sidebar/AdvancedSettings.js.map +0 -1
  171. package/dist/sidebar/AdvancedSettingsMenu.js +0 -29
  172. package/dist/sidebar/AdvancedSettingsMenu.js.map +0 -1
  173. package/dist/sidebar/AdvancedSettingsType.js +0 -7
  174. package/dist/sidebar/AdvancedSettingsType.js.map +0 -1
  175. package/dist/sidebar/ChartBuilder.css +0 -56
  176. package/dist/sidebar/ChartBuilder.css.map +0 -1
  177. package/dist/sidebar/ChartBuilder.js +0 -443
  178. package/dist/sidebar/ChartBuilder.js.map +0 -1
  179. package/dist/sidebar/CustomColumnBuilder.css +0 -58
  180. package/dist/sidebar/CustomColumnBuilder.css.map +0 -1
  181. package/dist/sidebar/CustomColumnBuilder.js +0 -384
  182. package/dist/sidebar/CustomColumnBuilder.js.map +0 -1
  183. package/dist/sidebar/CustomColumnInput.js +0 -90
  184. package/dist/sidebar/CustomColumnInput.js.map +0 -1
  185. package/dist/sidebar/InputEditor.css +0 -35
  186. package/dist/sidebar/InputEditor.css.map +0 -1
  187. package/dist/sidebar/InputEditor.js +0 -177
  188. package/dist/sidebar/InputEditor.js.map +0 -1
  189. package/dist/sidebar/OptionType.js +0 -19
  190. package/dist/sidebar/OptionType.js.map +0 -1
  191. package/dist/sidebar/RollupRows.css +0 -120
  192. package/dist/sidebar/RollupRows.css.map +0 -1
  193. package/dist/sidebar/RollupRows.js +0 -519
  194. package/dist/sidebar/RollupRows.js.map +0 -1
  195. package/dist/sidebar/SelectDistinctBuilder.css +0 -41
  196. package/dist/sidebar/SelectDistinctBuilder.css.map +0 -1
  197. package/dist/sidebar/SelectDistinctBuilder.js +0 -155
  198. package/dist/sidebar/SelectDistinctBuilder.js.map +0 -1
  199. package/dist/sidebar/TableCsvExporter.css +0 -32
  200. package/dist/sidebar/TableCsvExporter.css.map +0 -1
  201. package/dist/sidebar/TableCsvExporter.js +0 -399
  202. package/dist/sidebar/TableCsvExporter.js.map +0 -1
  203. package/dist/sidebar/TableSaver.js +0 -487
  204. package/dist/sidebar/TableSaver.js.map +0 -1
  205. package/dist/sidebar/aggregations/AggregationEdit.css +0 -61
  206. package/dist/sidebar/aggregations/AggregationEdit.css.map +0 -1
  207. package/dist/sidebar/aggregations/AggregationEdit.js +0 -155
  208. package/dist/sidebar/aggregations/AggregationEdit.js.map +0 -1
  209. package/dist/sidebar/aggregations/AggregationOperation.js +0 -19
  210. package/dist/sidebar/aggregations/AggregationOperation.js.map +0 -1
  211. package/dist/sidebar/aggregations/AggregationUtils.js +0 -59
  212. package/dist/sidebar/aggregations/AggregationUtils.js.map +0 -1
  213. package/dist/sidebar/aggregations/Aggregations.css +0 -43
  214. package/dist/sidebar/aggregations/Aggregations.css.map +0 -1
  215. package/dist/sidebar/aggregations/Aggregations.js +0 -178
  216. package/dist/sidebar/aggregations/Aggregations.js.map +0 -1
  217. package/dist/sidebar/aggregations/index.js +0 -2
  218. package/dist/sidebar/aggregations/index.js.map +0 -1
  219. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +0 -123
  220. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +0 -1
  221. package/dist/sidebar/conditional-formatting/ConditionEditor.js +0 -243
  222. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +0 -1
  223. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.css +0 -22
  224. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.css.map +0 -1
  225. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +0 -109
  226. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +0 -1
  227. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js +0 -18
  228. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +0 -1
  229. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.css +0 -57
  230. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.css.map +0 -1
  231. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +0 -150
  232. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +0 -1
  233. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +0 -635
  234. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +0 -1
  235. package/dist/sidebar/conditional-formatting/RowFormatEditor.js +0 -122
  236. package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +0 -1
  237. package/dist/sidebar/conditional-formatting/StyleEditor.css +0 -55
  238. package/dist/sidebar/conditional-formatting/StyleEditor.css.map +0 -1
  239. package/dist/sidebar/conditional-formatting/StyleEditor.js +0 -150
  240. package/dist/sidebar/conditional-formatting/StyleEditor.js.map +0 -1
  241. package/dist/sidebar/icons/BarIcon.js +0 -24
  242. package/dist/sidebar/icons/BarIcon.js.map +0 -1
  243. package/dist/sidebar/icons/FormatColumnWhereIcon.js +0 -42
  244. package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +0 -1
  245. package/dist/sidebar/icons/FormatRowWhereIcon.js +0 -36
  246. package/dist/sidebar/icons/FormatRowWhereIcon.js.map +0 -1
  247. package/dist/sidebar/icons/HistogramIcon.js +0 -24
  248. package/dist/sidebar/icons/HistogramIcon.js.map +0 -1
  249. package/dist/sidebar/icons/LineIcon.js +0 -27
  250. package/dist/sidebar/icons/LineIcon.js.map +0 -1
  251. package/dist/sidebar/icons/PieIcon.js +0 -24
  252. package/dist/sidebar/icons/PieIcon.js.map +0 -1
  253. package/dist/sidebar/icons/ScatterIcon.js +0 -74
  254. package/dist/sidebar/icons/ScatterIcon.js.map +0 -1
  255. package/dist/sidebar/icons/index.js +0 -8
  256. package/dist/sidebar/icons/index.js.map +0 -1
  257. package/dist/sidebar/index.js +0 -18
  258. package/dist/sidebar/index.js.map +0 -1
  259. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.css +0 -68
  260. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.css.map +0 -1
  261. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +0 -964
  262. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +0 -1
  263. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +0 -132
  264. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +0 -1
  265. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.css +0 -29
  266. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.css.map +0 -1
  267. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js +0 -188
  268. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +0 -1
  269. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +0 -81
  270. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +0 -1
  271. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js +0 -30
  272. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map +0 -1
  273. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js +0 -158
  274. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +0 -1
  275. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js +0 -146
  276. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js.map +0 -1
  277. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js +0 -59
  278. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +0 -1
  279. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.css +0 -139
  280. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.css.map +0 -1
  281. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js +0 -44
  282. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +0 -1
  283. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js +0 -129
  284. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +0 -1
  285. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js +0 -4
  286. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js.map +0 -1
  287. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js +0 -261
  288. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +0 -1
@@ -1,1218 +0,0 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
5
- function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
6
- /* eslint class-methods-use-this: "off" */
7
- import React from 'react';
8
- import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
9
- import { dhFilterFilled, vsRemove, vsCheck, vsFilter } from '@deephaven/icons';
10
- import debounce from 'lodash.debounce';
11
- import { ContextActions, ContextActionUtils, GLOBAL_SHORTCUTS } from '@deephaven/components';
12
- import { GridMouseHandler, GridRenderer, isEditableGridModel, isExpandableGridModel } from '@deephaven/grid';
13
- import { TableColumnFormatter, DateTimeColumnFormatter, TableUtils } from '@deephaven/jsapi-utils';
14
- import Log from '@deephaven/log';
15
- import { assertNotNull, copyToClipboard } from '@deephaven/utils';
16
- import { DateTimeFormatContextMenu, DecimalFormatContextMenu, IntegerFormatContextMenu } from "../format-context-menus/index.js";
17
- import "./IrisGridContextMenuHandler.css";
18
- import SHORTCUTS from "../IrisGridShortcuts.js";
19
- var log = Log.module('IrisGridContextMenuHandler');
20
- var DEBOUNCE_UPDATE_FORMAT = 150;
21
- var CONTEXT_MENU_DATE_FORMAT = 'yyyy-MM-dd HH:mm:ss.SSSSSSSSS';
22
-
23
- /**
24
- * Used to eat the mouse event in the bottom right corner of the scroll bar
25
- */
26
- class IrisGridContextMenuHandler extends GridMouseHandler {
27
- /**
28
- * Get filter condition for quick filter and combines with a new filter using the operator specified,
29
- * returns new filter if no operator supplied.
30
- * @param columnFilter
31
- * @param newColumnFilter
32
- * @param operator
33
- */
34
- static getQuickFilterCondition(columnFilter, newColumnFilter, operator) {
35
- if (columnFilter && operator === '&&') {
36
- return columnFilter.and(newColumnFilter);
37
- }
38
- if (columnFilter && operator === '||') {
39
- return columnFilter.or(newColumnFilter);
40
- }
41
- return newColumnFilter;
42
- }
43
-
44
- /**
45
- * combines filter text with operator if declared
46
- * @param filterText
47
- * @param newFilterText
48
- * @param operator
49
- */
50
- static getQuickFilterText(filterText, newFilterText, operator) {
51
- return operator && filterText != null ? "".concat(filterText, " ").concat(operator, " ").concat(newFilterText) : newFilterText;
52
- }
53
-
54
- /**
55
- * Converts operator to text string,
56
- */
57
- static getOperatorAsText(operator) {
58
- return operator === '&&' ? 'And' : 'Or';
59
- }
60
- static getRowOptionFormatted(command, cellValue) {
61
- var len = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 30;
62
- return "".concat(command, " \"").concat(GridRenderer.truncate(cellValue, len - command.length - 3), "\"");
63
- }
64
- constructor(irisGrid, dh) {
65
- super();
66
- _defineProperty(this, "irisGrid", void 0);
67
- _defineProperty(this, "debouncedUpdateCustomFormat", void 0);
68
- _defineProperty(this, "dh", void 0);
69
- this.debouncedUpdateCustomFormat = debounce(irisGrid.handleFormatSelection, DEBOUNCE_UPDATE_FORMAT);
70
- this.dh = dh;
71
- this.irisGrid = irisGrid;
72
- }
73
- componentWillUnmount() {
74
- this.debouncedUpdateCustomFormat.flush();
75
- }
76
- getHeaderActions(modelIndex, gridPoint) {
77
- var {
78
- irisGrid
79
- } = this;
80
- var {
81
- column: visibleIndex
82
- } = gridPoint;
83
- assertNotNull(visibleIndex);
84
- var {
85
- model
86
- } = irisGrid.props;
87
- var {
88
- columns
89
- } = model;
90
- var column = columns[modelIndex];
91
- var actions = [];
92
- var {
93
- metrics,
94
- reverseType,
95
- quickFilters,
96
- advancedFilters,
97
- searchFilter
98
- } = irisGrid.state;
99
- var theme = irisGrid.getTheme();
100
- assertNotNull(metrics);
101
- var {
102
- filterIconColor,
103
- filterBarActiveColor,
104
- contextMenuSortIconColor,
105
- contextMenuReverseIconColor
106
- } = theme;
107
- var modelSort = model.sort;
108
- var columnSort = TableUtils.getSortForColumn(modelSort, column.name);
109
- var hasReverse = reverseType !== TableUtils.REVERSE_TYPE.NONE;
110
- var {
111
- userColumnWidths
112
- } = metrics;
113
- var isColumnHidden = [...userColumnWidths.values()].some(columnWidth => columnWidth === 0);
114
- var isColumnFreezable = model.getColumnHeaderParentGroup(modelIndex, 0) === undefined && !(isExpandableGridModel(model) && model.hasExpandableRows);
115
- var isColumnFrozen = model.isColumnFrozen(modelIndex);
116
- actions.push({
117
- title: 'Hide Column',
118
- group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,
119
- action: () => {
120
- this.irisGrid.hideColumnByVisibleIndex(visibleIndex);
121
- }
122
- });
123
- actions.push({
124
- title: isColumnFrozen ? 'Unfreeze Column' : 'Freeze Column',
125
- group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,
126
- disabled: !isColumnFreezable,
127
- action: () => {
128
- if (isColumnFrozen) {
129
- this.irisGrid.unFreezeColumnByColumnName(column.name);
130
- } else {
131
- this.irisGrid.freezeColumnByColumnName(column.name);
132
- }
133
- },
134
- order: 10
135
- });
136
- actions.push({
137
- title: 'Show All Columns',
138
- group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,
139
- action: () => {
140
- this.irisGrid.showAllColumns();
141
- },
142
- disabled: !isColumnHidden
143
- });
144
- actions.push({
145
- title: 'Quick Filters',
146
- icon: vsRemove,
147
- iconColor: filterBarActiveColor,
148
- shortcut: SHORTCUTS.TABLE.TOGGLE_QUICK_FILTER,
149
- group: IrisGridContextMenuHandler.GROUP_FILTER,
150
- order: 10,
151
- action: () => {
152
- this.irisGrid.toggleFilterBar(visibleIndex);
153
- }
154
- });
155
- actions.push({
156
- title: 'Advanced Filters',
157
- icon: advancedFilters.get(modelIndex) ? dhFilterFilled : vsFilter,
158
- iconColor: filterIconColor,
159
- group: IrisGridContextMenuHandler.GROUP_FILTER,
160
- order: 20,
161
- action: () => {
162
- this.irisGrid.handleAdvancedMenuOpened(visibleIndex);
163
- }
164
- });
165
- actions.push({
166
- title: 'Clear Table Filters',
167
- group: IrisGridContextMenuHandler.GROUP_FILTER,
168
- order: 40,
169
- // this just displays the shortcut, the actual listener is in irisgrid handleKeyDown
170
- shortcut: SHORTCUTS.TABLE.CLEAR_FILTERS,
171
- action: () => {
172
- this.irisGrid.clearAllFilters();
173
- },
174
- disabled: !(quickFilters.size > 0 || advancedFilters.size > 0 || searchFilter != null)
175
- });
176
- actions.push({
177
- title: 'Sort by',
178
- icon: vsRemove,
179
- iconColor: contextMenuSortIconColor,
180
- group: IrisGridContextMenuHandler.GROUP_SORT,
181
- order: 10,
182
- actions: this.sortByActions(column, modelIndex, columnSort)
183
- });
184
- actions.push({
185
- title: 'Add Additional Sort',
186
- /**
187
- * disable conditions:
188
- * 1. table is sorted only by this column
189
- * 2. table is only reversed
190
- * 3. 1 & 2 combined
191
- * 4. table has no sort
192
- * reverse is a type of sort, so needs to be accounted for in exclusions
193
- * */
194
- disabled: columnSort && modelSort.length === 1 || hasReverse && modelSort.length === 1 || columnSort && hasReverse && modelSort.length === 2 || modelSort.length === 0,
195
- group: IrisGridContextMenuHandler.GROUP_SORT,
196
- order: 20,
197
- actions: this.additionalSortActions(column, modelIndex)
198
- });
199
- actions.push({
200
- title: 'Clear Table Sorting',
201
- disabled:
202
- // reverse is a type of sort, but special and needs to be exluded despite being part of model.sort
203
- modelSort.length === 0 || hasReverse && modelSort.length === 1,
204
- group: IrisGridContextMenuHandler.GROUP_SORT,
205
- action: () => {
206
- this.irisGrid.sortColumn(visibleIndex, IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.none);
207
- },
208
- order: 30
209
- });
210
- actions.push({
211
- title: reverseType === TableUtils.REVERSE_TYPE.NONE ? 'Reverse Table' : 'Clear Reverse Table',
212
- icon: vsRemove,
213
- iconColor: contextMenuReverseIconColor,
214
- group: IrisGridContextMenuHandler.GROUP_SORT,
215
- order: 40,
216
- disabled: !model.isReversible,
217
- // this just displays the shortcut, the actual listener is in irisgrid handleKeyDown
218
- shortcut: SHORTCUTS.TABLE.REVERSE,
219
- action: () => {
220
- if (reverseType === TableUtils.REVERSE_TYPE.NONE) {
221
- this.irisGrid.reverse(TableUtils.REVERSE_TYPE.POST_SORT);
222
- } else {
223
- this.irisGrid.reverse(TableUtils.REVERSE_TYPE.NONE);
224
- }
225
- }
226
- });
227
- actions.push({
228
- title: 'Copy Column Name',
229
- group: IrisGridContextMenuHandler.GROUP_COPY,
230
- action: () => {
231
- var _model$textForColumnH;
232
- copyToClipboard((_model$textForColumnH = model.textForColumnHeader(modelIndex)) !== null && _model$textForColumnH !== void 0 ? _model$textForColumnH : '').catch(e => log.error('Unable to copy header', e));
233
- }
234
- });
235
- if (TableUtils.isDateType(column.type)) {
236
- actions.push({
237
- title: 'Date/Time Format',
238
- group: IrisGridContextMenuHandler.GROUP_FORMAT,
239
- actions: this.dateFormatActions(column)
240
- });
241
- } else if (TableUtils.isNumberType(column.type)) {
242
- var _this$numberFormatAct;
243
- actions.push({
244
- title: 'Number Format',
245
- group: IrisGridContextMenuHandler.GROUP_FORMAT,
246
- actions: (_this$numberFormatAct = this.numberFormatActions(column)) !== null && _this$numberFormatAct !== void 0 ? _this$numberFormatAct : undefined
247
- });
248
- }
249
- return actions;
250
- }
251
- getCellActions(modelColumn, grid, gridPoint) {
252
- assertNotNull(modelColumn);
253
- var {
254
- dh,
255
- irisGrid
256
- } = this;
257
- var {
258
- column: columnIndex,
259
- row: rowIndex
260
- } = gridPoint;
261
- var {
262
- model,
263
- canCopy
264
- } = irisGrid.props;
265
- var {
266
- columns
267
- } = model;
268
- var modelRow = irisGrid.getModelRow(rowIndex);
269
- assertNotNull(modelRow);
270
- var value = model.valueForCell(modelColumn, modelRow);
271
- var valueText = model.textForCell(modelColumn, modelRow);
272
- var column = columns[modelColumn];
273
- var actions = [];
274
- var {
275
- quickFilters
276
- } = irisGrid.state;
277
- var theme = irisGrid.getTheme();
278
- var {
279
- filterIconColor
280
- } = theme;
281
- var {
282
- settings
283
- } = irisGrid.props;
284
- var dateFilterFormatter = new DateTimeColumnFormatter(dh, {
285
- timeZone: settings === null || settings === void 0 ? void 0 : settings.timeZone,
286
- showTimeZone: false,
287
- showTSeparator: true,
288
- defaultDateTimeFormatString: CONTEXT_MENU_DATE_FORMAT
289
- });
290
- var previewFilterFormatter = new DateTimeColumnFormatter(dh, {
291
- timeZone: settings === null || settings === void 0 ? void 0 : settings.timeZone,
292
- showTimeZone: settings === null || settings === void 0 ? void 0 : settings.showTimeZone,
293
- showTSeparator: settings === null || settings === void 0 ? void 0 : settings.showTSeparator,
294
- defaultDateTimeFormatString: CONTEXT_MENU_DATE_FORMAT
295
- });
296
- if (column == null || rowIndex == null) return actions;
297
-
298
- // grid data area context menu options
299
- if (model.isFilterable(modelColumn)) {
300
- // cell data area contextmenu options
301
- var filterMenu = {
302
- title: 'Filter by Value',
303
- icon: vsRemove,
304
- iconColor: filterIconColor,
305
- group: IrisGridContextMenuHandler.GROUP_FILTER,
306
- order: 10,
307
- actions: []
308
- };
309
- if (value == null) {
310
- // null gets a special menu
311
- if (quickFilters.get(modelColumn)) {
312
- filterMenu.actions.push({
313
- title: 'And',
314
- actions: this.nullFilterActions(column, quickFilters.get(modelColumn), '&&'),
315
- order: 2,
316
- group: ContextActions.groups.high
317
- });
318
- }
319
- filterMenu.actions.push(...this.nullFilterActions(column));
320
- } else if (value === '') {
321
- // empty string gets a special menu
322
- if (quickFilters.get(modelColumn)) {
323
- filterMenu.actions.push({
324
- title: 'And',
325
- actions: this.emptyStringFilterActions(column, quickFilters.get(modelColumn), '&&'),
326
- order: 2,
327
- group: ContextActions.groups.high
328
- });
329
- }
330
- filterMenu.actions.push(...this.emptyStringFilterActions(column));
331
- } else if (TableUtils.isBooleanType(column.type)) {
332
- // boolean should have OR condition, and handles it's own null menu options
333
- if (quickFilters.get(modelColumn)) {
334
- filterMenu.actions.push({
335
- title: 'Or',
336
- actions: this.booleanFilterActions(column, valueText, quickFilters.get(modelColumn), '||'),
337
- order: 2,
338
- group: ContextActions.groups.high
339
- });
340
- }
341
- filterMenu.actions.push(...this.booleanFilterActions(column, valueText));
342
- } else if (TableUtils.isNumberType(column.type) || TableUtils.isCharType(column.type)) {
343
- // Chars get treated like numbers in terms of which filters are available
344
- assertNotNull(modelColumn);
345
- // We want to show the full unformatted value if it's a number, so user knows which value they are matching
346
- // If it's a Char we just show the char
347
- var numberValueText = TableUtils.isCharType(column.type) ? String.fromCharCode(value) : "".concat(value);
348
- if (quickFilters.get(modelColumn)) {
349
- filterMenu.actions.push({
350
- title: 'And',
351
- actions: this.numberFilterActions(column, numberValueText, value, quickFilters.get(modelColumn), '&&'),
352
- order: 2,
353
- group: ContextActions.groups.high
354
- });
355
- }
356
- filterMenu.actions.push(...this.numberFilterActions(column, numberValueText, value, quickFilters.get(modelColumn)));
357
- } else if (TableUtils.isDateType(column.type)) {
358
- var dateValueText = dateFilterFormatter.format(value);
359
- var previewValue = previewFilterFormatter.format(value);
360
- if (quickFilters.get(modelColumn)) {
361
- filterMenu.actions.push({
362
- title: 'And',
363
- actions: this.dateFilterActions(column, dateValueText, previewValue, value, quickFilters.get(modelColumn), '&&'),
364
- order: 2,
365
- group: ContextActions.groups.high
366
- });
367
- }
368
- filterMenu.actions.push(...this.dateFilterActions(column, dateValueText, previewValue, value, quickFilters.get(modelColumn)));
369
- } else {
370
- if (quickFilters.get(modelColumn)) {
371
- filterMenu.actions.push({
372
- title: 'And',
373
- actions: this.stringFilterActions(column, valueText, value, quickFilters.get(modelColumn), '&&'),
374
- order: 2,
375
- group: ContextActions.groups.high
376
- });
377
- }
378
- filterMenu.actions.push(...this.stringFilterActions(column, valueText, value));
379
- }
380
- if (filterMenu.actions != null && filterMenu.actions.length > 0) {
381
- actions.push(filterMenu);
382
- }
383
- }
384
-
385
- // Expand/Collapse options
386
- if (isExpandableGridModel(model) && model.isRowExpandable(modelRow)) {
387
- // If there are grouped columns, then it is a rollup
388
- // For rollups, the column number will be the depth minus one
389
- var expandingColumn = model.groupedColumns.length > 0 ? model.depthForRow(modelRow) - 1 : 0;
390
- var cellValue = model.valueForCell(expandingColumn, modelRow);
391
- var cellText = cellValue == null ? 'null' : model.textForCell(expandingColumn, modelRow);
392
- actions.push({
393
- title: IrisGridContextMenuHandler.getRowOptionFormatted(model.isRowExpanded(modelRow) ? 'Collapse' : 'Expand', cellText),
394
- group: IrisGridContextMenuHandler.GROUP_EXPAND_COLLAPSE,
395
- order: 10,
396
- action: () => {
397
- model.setRowExpanded(modelRow, !model.isRowExpanded(modelRow));
398
- }
399
- });
400
- if (model.isExpandAllAvailable === true) {
401
- actions.push({
402
- title: IrisGridContextMenuHandler.getRowOptionFormatted('Expand All in', cellText),
403
- group: IrisGridContextMenuHandler.GROUP_EXPAND_COLLAPSE,
404
- order: 20,
405
- action: () => {
406
- model.setRowExpanded(modelRow, true, true);
407
- }
408
- });
409
- }
410
- }
411
- if (isExpandableGridModel(model) && model.hasExpandableRows && model.isExpandAllAvailable === true) {
412
- actions.push({
413
- title: 'Expand Entire Table',
414
- group: IrisGridContextMenuHandler.GROUP_EXPAND_COLLAPSE,
415
- order: 30,
416
- action: () => {
417
- model.expandAll();
418
- }
419
- });
420
- actions.push({
421
- title: 'Collapse Entire Table',
422
- group: IrisGridContextMenuHandler.GROUP_EXPAND_COLLAPSE,
423
- order: 40,
424
- action: () => {
425
- model.collapseAll();
426
- }
427
- });
428
- }
429
- var gotoRow = {
430
- title: 'Go to',
431
- iconColor: filterIconColor,
432
- shortcut: SHORTCUTS.TABLE.GOTO_ROW,
433
- group: IrisGridContextMenuHandler.GROUP_GOTO,
434
- order: 10,
435
- action: () => this.irisGrid.toggleGotoRow("".concat(rowIndex + 1), "".concat(value), column.name)
436
- };
437
- actions.push(gotoRow);
438
- if (canCopy) {
439
- actions.push({
440
- title: 'Copy Cell',
441
- group: IrisGridContextMenuHandler.GROUP_COPY,
442
- order: 10,
443
- action: () => {
444
- irisGrid.copyCell(columnIndex, rowIndex);
445
- }
446
- });
447
- actions.push({
448
- title: 'Copy Cell Unformatted',
449
- group: IrisGridContextMenuHandler.GROUP_COPY,
450
- order: 20,
451
- action: () => {
452
- irisGrid.copyCell(columnIndex, rowIndex, true);
453
- }
454
- });
455
- }
456
- return actions;
457
- }
458
-
459
- /**
460
- * Gets an equality filter for the provided numeric value
461
- * @param column The column to make the filter for
462
- * @param value The value to get the equality filter for
463
- */
464
- getNumberValueEqualsFilter(column, value) {
465
- var {
466
- dh
467
- } = this;
468
- var columnFilter = column.filter();
469
- if (value === Number.POSITIVE_INFINITY) {
470
- return dh.FilterCondition.invoke('isInf', columnFilter).and(columnFilter.greaterThan(dh.FilterValue.ofNumber(0)));
471
- }
472
- if (value === Number.NEGATIVE_INFINITY) {
473
- return dh.FilterCondition.invoke('isInf', columnFilter).and(columnFilter.lessThan(dh.FilterValue.ofNumber(0)));
474
- }
475
- if (Number.isNaN(value)) {
476
- return dh.FilterCondition.invoke('isNaN', columnFilter);
477
- }
478
- var filterValue = this.getFilterValueForNumberOrChar(column.type, value);
479
- return columnFilter.eq(filterValue);
480
- }
481
- getFilterValueForNumberOrChar(columnType, value) {
482
- var {
483
- dh
484
- } = this;
485
- return TableUtils.isCharType(columnType) ? dh.FilterValue.ofString(String.fromCharCode(value)) : dh.FilterValue.ofNumber(value);
486
- }
487
- onContextMenu(gridPoint, grid, event) {
488
- var {
489
- irisGrid
490
- } = this;
491
- var {
492
- y,
493
- column: columnIndex,
494
- row: rowIndex,
495
- columnHeaderDepth
496
- } = gridPoint;
497
- var modelColumn = irisGrid.getModelColumn(columnIndex);
498
- var modelRow = irisGrid.getModelRow(rowIndex);
499
- var {
500
- model,
501
- canCopy
502
- } = irisGrid.props;
503
- var {
504
- columns
505
- } = model;
506
- var {
507
- metrics,
508
- isFilterBarShown,
509
- quickFilters,
510
- advancedFilters,
511
- selectedRanges
512
- } = irisGrid.state;
513
- assertNotNull(metrics);
514
- var {
515
- columnHeaderHeight,
516
- gridY,
517
- columnHeaderMaxDepth
518
- } = metrics;
519
- var actions = [];
520
- if (modelColumn != null && modelRow != null) {
521
- var value = model.valueForCell(modelColumn, modelRow);
522
- var valueText = model.textForCell(modelColumn, modelRow);
523
- var column = columns[modelColumn];
524
- var {
525
- onContextMenu
526
- } = irisGrid.props;
527
- if (column != null) {
528
- actions.push(onContextMenu({
529
- model,
530
- value,
531
- valueText,
532
- column,
533
- rowIndex,
534
- columnIndex,
535
- modelRow,
536
- modelColumn
537
- }));
538
- }
539
- }
540
- if (modelColumn != null && model.isFilterable(modelColumn)) {
541
- // Clear column filter should still be available after last row
542
- // And should be available in both header and body context menus
543
- actions.push({
544
- title: 'Clear Column Filter',
545
- group: IrisGridContextMenuHandler.GROUP_FILTER,
546
- order: 30,
547
- action: () => {
548
- this.irisGrid.removeColumnFilter(modelColumn);
549
- },
550
- disabled: !(quickFilters.has(modelColumn) || advancedFilters.has(modelColumn))
551
- });
552
- }
553
- if (isFilterBarShown ? y <= gridY : y <= columnHeaderHeight * columnHeaderMaxDepth && columnHeaderDepth === 0) {
554
- // grid header context menu options
555
- if (modelColumn != null) {
556
- actions.push(...this.getHeaderActions(modelColumn, gridPoint));
557
- }
558
- } else {
559
- // grid body context menu options
560
- if (modelColumn != null && modelRow != null) {
561
- actions.push(...this.getCellActions(modelColumn, grid, gridPoint));
562
- }
563
-
564
- // blank space context menu options
565
- if (canCopy && selectedRanges.length > 0) {
566
- actions.push({
567
- title: 'Copy Selection',
568
- shortcut: GLOBAL_SHORTCUTS.COPY,
569
- group: IrisGridContextMenuHandler.GROUP_COPY,
570
- order: 30,
571
- action: () => {
572
- irisGrid.copyRanges(selectedRanges);
573
- }
574
- });
575
- actions.push({
576
- title: 'Copy Selection w/ Headers',
577
- group: IrisGridContextMenuHandler.GROUP_COPY,
578
- order: 40,
579
- action: () => {
580
- irisGrid.copyRanges(selectedRanges, true);
581
- }
582
- });
583
- }
584
- if (isEditableGridModel(model) && model.isEditable && selectedRanges.length > 0) {
585
- actions.push({
586
- title: 'Delete Selected Rows',
587
- group: IrisGridContextMenuHandler.GROUP_EDIT,
588
- order: 50,
589
- action: () => {
590
- this.irisGrid.deleteRanges(selectedRanges);
591
- }
592
- });
593
- }
594
- }
595
- if (actions.length === 0) {
596
- return false;
597
- }
598
- assertNotNull(irisGrid.gridWrapper);
599
- ContextActions.triggerMenu(irisGrid.gridWrapper, event.clientX, event.clientY, actions);
600
- return true;
601
- }
602
- dateFormatActions(column) {
603
- var _this = this;
604
- var {
605
- model
606
- } = this.irisGrid.props;
607
- var {
608
- formatter
609
- } = model;
610
- var selectedFormat = formatter.getColumnFormat(column.type, column.name);
611
- var formatOptions = DateTimeFormatContextMenu.getOptions(formatter, selectedFormat);
612
- var actions = [];
613
- var _loop = function _loop() {
614
- var {
615
- description,
616
- format,
617
- group,
618
- isSelected,
619
- title
620
- } = formatOptions[i];
621
- actions.push({
622
- title,
623
- description,
624
- icon: isSelected ? vsCheck : undefined,
625
- group,
626
- order: i,
627
- action: () => {
628
- var modelIndex = model.getColumnIndexByName(column.name);
629
- assertNotNull(modelIndex);
630
- _this.irisGrid.handleFormatSelection(modelIndex, format);
631
- }
632
- });
633
- };
634
- for (var i = 0; i < formatOptions.length; i += 1) {
635
- _loop();
636
- }
637
- return actions;
638
- }
639
- numberFormatActions(column) {
640
- var _this2 = this;
641
- var {
642
- model
643
- } = this.irisGrid.props;
644
- var {
645
- formatter
646
- } = model;
647
- var {
648
- dh
649
- } = this;
650
- var selectedFormat = formatter.getColumnFormat(column.type, column.name);
651
- var formatOptions;
652
- var columnIndex = model.getColumnIndexByName(column.name);
653
- if (TableUtils.isDecimalType(column.type)) {
654
- formatOptions = DecimalFormatContextMenu.getOptions(dh, selectedFormat, format => {
655
- assertNotNull(columnIndex);
656
- this.debouncedUpdateCustomFormat(columnIndex, format);
657
- });
658
- } else if (TableUtils.isIntegerType(column.type)) {
659
- formatOptions = IntegerFormatContextMenu.getOptions(dh, selectedFormat, format => {
660
- assertNotNull(columnIndex);
661
- this.debouncedUpdateCustomFormat(columnIndex, format);
662
- });
663
- } else {
664
- log.error('Invalid column type in numberFormatActions');
665
- return null;
666
- }
667
- var actions = [];
668
- var _loop2 = function _loop2() {
669
- var {
670
- format,
671
- isSelected
672
- } = formatOptions[i];
673
- actions.push(_objectSpread(_objectSpread({}, formatOptions[i]), {}, {
674
- icon: isSelected ? vsCheck : undefined,
675
- order: i,
676
- action: () => {
677
- if (columnIndex === undefined && format && format.type === TableColumnFormatter.TYPE_CONTEXT_CUSTOM) {
678
- return;
679
- }
680
- assertNotNull(columnIndex);
681
- _this2.irisGrid.handleFormatSelection(columnIndex, format);
682
- }
683
- }));
684
- };
685
- for (var i = 0; i < formatOptions.length; i += 1) {
686
- _loop2();
687
- }
688
- return actions;
689
- }
690
- stringFilterActions(column, valueText, value, quickFilter, operator) {
691
- var {
692
- dh
693
- } = this;
694
- var filterValue = dh.FilterValue.ofString(value);
695
- var newQuickFilter = quickFilter;
696
- if (!newQuickFilter) {
697
- newQuickFilter = {
698
- filter: null,
699
- text: null
700
- };
701
- }
702
- var {
703
- filter,
704
- text: filterText
705
- } = newQuickFilter;
706
- var actions = [];
707
- var {
708
- model
709
- } = this.irisGrid.props;
710
- var columnIndex = model.getColumnIndexByName(column.name);
711
- var quickFilterValueText = TableUtils.escapeQuickTextFilter(valueText);
712
- assertNotNull(columnIndex);
713
- actions.push({
714
- menuElement: /*#__PURE__*/React.createElement("div", {
715
- className: "iris-grid-filter-menu-item-value"
716
- }, operator ? IrisGridContextMenuHandler.getOperatorAsText(operator) : '', ' ', "\"", valueText, "\""),
717
- order: 1,
718
- group: ContextActions.groups.high
719
- });
720
- actions.push({
721
- title: 'text is exactly',
722
- description: "Show only rows where ".concat(column.name, " is ").concat(value, " (case sensitive)"),
723
- action: () => {
724
- this.irisGrid.setQuickFilter(columnIndex, IrisGridContextMenuHandler.getQuickFilterCondition(filter, column.filter().eq(filterValue), operator), IrisGridContextMenuHandler.getQuickFilterText(filterText, "".concat(quickFilterValueText), operator));
725
- },
726
- order: 10,
727
- group: ContextActions.groups.low
728
- });
729
- actions.push({
730
- title: 'text is not exactly',
731
- description: "Show only rows where ".concat(column.name, " is not ").concat(valueText, " (case sensitive)"),
732
- action: () => {
733
- this.irisGrid.setQuickFilter(columnIndex, IrisGridContextMenuHandler.getQuickFilterCondition(filter, column.filter().notEq(filterValue), operator), IrisGridContextMenuHandler.getQuickFilterText(filterText, "!=".concat(quickFilterValueText), operator));
734
- },
735
- order: 20,
736
- group: ContextActions.groups.low
737
- });
738
- actions.push({
739
- title: "text contains",
740
- description: "Show only rows where ".concat(column.name, " contains ").concat(valueText),
741
- action: () => {
742
- this.irisGrid.setQuickFilter(columnIndex, IrisGridContextMenuHandler.getQuickFilterCondition(filter, column.filter().isNull().not().and(column.filter().contains(filterValue)), operator), IrisGridContextMenuHandler.getQuickFilterText(filterText, "~".concat(quickFilterValueText), operator));
743
- },
744
- order: 30,
745
- group: ContextActions.groups.low
746
- });
747
- actions.push({
748
- title: 'text does not contain',
749
- description: "Show only rows where ".concat(column.name, " does not contain ").concat(value),
750
- action: () => {
751
- this.irisGrid.setQuickFilter(columnIndex, IrisGridContextMenuHandler.getQuickFilterCondition(filter, column.filter().isNull().or(column.filter().contains(filterValue).not()), operator), IrisGridContextMenuHandler.getQuickFilterText(filterText, "!~".concat(quickFilterValueText), operator));
752
- },
753
- order: 40,
754
- group: ContextActions.groups.low
755
- });
756
- actions.push({
757
- title: 'text starts with',
758
- description: "Show only rows where ".concat(column.name, " starts with ").concat(valueText),
759
- action: () => {
760
- this.irisGrid.setQuickFilter(columnIndex, IrisGridContextMenuHandler.getQuickFilterCondition(filter, column.filter().isNull().not().and(column.filter().invoke('startsWith', filterValue)), operator), IrisGridContextMenuHandler.getQuickFilterText(filterText, "".concat(quickFilterValueText, "*"), operator));
761
- },
762
- order: 50,
763
- group: ContextActions.groups.low
764
- });
765
- actions.push({
766
- title: 'text ends with',
767
- description: "Show only rows where ".concat(column.name, " ends with ").concat(valueText),
768
- action: () => {
769
- this.irisGrid.setQuickFilter(columnIndex, IrisGridContextMenuHandler.getQuickFilterCondition(filter, column.filter().isNull().not().and(column.filter().invoke('endsWith', filterValue)), operator), IrisGridContextMenuHandler.getQuickFilterText(filterText, "*".concat(quickFilterValueText), operator));
770
- },
771
- order: 60,
772
- group: ContextActions.groups.low
773
- });
774
- return actions;
775
- }
776
- numberFilterActions(column, valueText, value, quickFilter, operator) {
777
- var filterValue = this.getFilterValueForNumberOrChar(column.type, value);
778
- var filter = null;
779
- var filterText = null;
780
- if (quickFilter) {
781
- filter = quickFilter.filter;
782
- filterText = quickFilter.text;
783
- }
784
- var actions = [];
785
- var isFinite = value !== Number.POSITIVE_INFINITY && value !== Number.NEGATIVE_INFINITY && !Number.isNaN(value);
786
- var {
787
- model
788
- } = this.irisGrid.props;
789
- var columnIndex = model.getColumnIndexByName(column.name);
790
- assertNotNull(columnIndex);
791
- actions.push({
792
- menuElement: /*#__PURE__*/React.createElement("div", {
793
- className: "iris-grid-filter-menu-item-value"
794
- }, operator ? IrisGridContextMenuHandler.getOperatorAsText(operator) : '', ' ', "\"", valueText, "\""),
795
- order: 1,
796
- group: ContextActions.groups.high
797
- });
798
- actions.push({
799
- title: 'is equal to',
800
- description: "Show only rows where ".concat(column.name, " is ").concat(valueText),
801
- action: () => {
802
- var valueFilter = this.getNumberValueEqualsFilter(column, value);
803
- this.irisGrid.setQuickFilter(columnIndex, IrisGridContextMenuHandler.getQuickFilterCondition(filter, valueFilter, operator), IrisGridContextMenuHandler.getQuickFilterText(filterText, "=".concat(valueText), operator));
804
- },
805
- order: 10,
806
- group: ContextActions.groups.low
807
- });
808
- actions.push({
809
- title: 'is not equal to',
810
- description: "Show only rows where ".concat(column.name, " is not ").concat(valueText),
811
- action: () => {
812
- var valueFilter = this.getNumberValueEqualsFilter(column, value).not();
813
- this.irisGrid.setQuickFilter(columnIndex, IrisGridContextMenuHandler.getQuickFilterCondition(filter, valueFilter, operator), IrisGridContextMenuHandler.getQuickFilterText(filterText, "!=".concat(valueText), operator));
814
- },
815
- order: 20,
816
- group: ContextActions.groups.low
817
- });
818
-
819
- // IDS-6092 Less/greater than filters don't make sense for Infinite/NaN
820
- // 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
821
- // They do not work in Powell though, so disable them.
822
- if (isFinite && !TableUtils.isCharType(column.type)) {
823
- actions.push({
824
- title: 'greater than',
825
- description: "Show only rows where ".concat(column.name, " is greater than ").concat(valueText),
826
- action: () => {
827
- this.irisGrid.setQuickFilter(columnIndex, IrisGridContextMenuHandler.getQuickFilterCondition(filter, column.filter().greaterThan(filterValue), operator), IrisGridContextMenuHandler.getQuickFilterText(filterText, ">".concat(valueText), operator));
828
- },
829
- order: 30,
830
- group: ContextActions.groups.low
831
- });
832
- actions.push({
833
- title: 'greater than or equal to',
834
- description: "Show only rows where ".concat(column.name, " is greater than or equal to ").concat(valueText),
835
- action: () => {
836
- this.irisGrid.setQuickFilter(columnIndex, IrisGridContextMenuHandler.getQuickFilterCondition(filter, column.filter().greaterThanOrEqualTo(filterValue), operator), IrisGridContextMenuHandler.getQuickFilterText(filterText, ">=".concat(valueText), operator));
837
- },
838
- order: 40,
839
- group: ContextActions.groups.low
840
- });
841
- actions.push({
842
- title: 'less than',
843
- description: "Show only rows where ".concat(column.name, " is less than ").concat(valueText),
844
- action: () => {
845
- this.irisGrid.setQuickFilter(columnIndex, IrisGridContextMenuHandler.getQuickFilterCondition(filter, column.filter().lessThan(filterValue), operator), IrisGridContextMenuHandler.getQuickFilterText(filterText, "<".concat(valueText), operator));
846
- },
847
- order: 50,
848
- group: ContextActions.groups.low
849
- });
850
- actions.push({
851
- title: 'less than or equal to',
852
- description: "Show only rows where ".concat(column.name, " is less than or equal to ").concat(valueText),
853
- action: () => {
854
- this.irisGrid.setQuickFilter(columnIndex, IrisGridContextMenuHandler.getQuickFilterCondition(filter, column.filter().lessThanOrEqualTo(filterValue), operator), IrisGridContextMenuHandler.getQuickFilterText(filterText, "<=".concat(valueText), operator));
855
- },
856
- order: 60,
857
- group: ContextActions.groups.low
858
- });
859
- }
860
- return actions;
861
- }
862
- booleanFilterActions(column, valueText, quickFilter, operator) {
863
- var actions = [];
864
- var {
865
- model
866
- } = this.irisGrid.props;
867
- var {
868
- filter,
869
- text: filterText
870
- } = quickFilter || {};
871
- var columnIndex = model.getColumnIndexByName(column.name);
872
- assertNotNull(columnIndex);
873
- actions.push({
874
- menuElement: /*#__PURE__*/React.createElement("div", {
875
- className: "iris-grid-filter-menu-item-value"
876
- }, operator ? IrisGridContextMenuHandler.getOperatorAsText(operator) : '', ' ', "\"", valueText !== null && valueText !== void 0 ? valueText : 'null', "\""),
877
- order: 1,
878
- group: ContextActions.groups.high
879
- });
880
- actions.push({
881
- title: 'true',
882
- description: "Show only rows where ".concat(column.name, " is true"),
883
- action: () => {
884
- this.irisGrid.setQuickFilter(columnIndex, IrisGridContextMenuHandler.getQuickFilterCondition(filter, column.filter().isTrue(), operator), IrisGridContextMenuHandler.getQuickFilterText(filterText, 'true', operator));
885
- },
886
- order: 10,
887
- group: ContextActions.groups.low
888
- });
889
- actions.push({
890
- title: 'false',
891
- description: "Show only rows where ".concat(column.name, " is false"),
892
- action: () => {
893
- this.irisGrid.setQuickFilter(columnIndex, IrisGridContextMenuHandler.getQuickFilterCondition(filter, column.filter().isFalse(), operator), IrisGridContextMenuHandler.getQuickFilterText(filterText, 'false', operator));
894
- },
895
- order: 20,
896
- group: ContextActions.groups.low
897
- });
898
- actions.push({
899
- title: 'is null',
900
- description: "Show only rows where ".concat(column.name, " is null"),
901
- action: () => {
902
- this.irisGrid.setQuickFilter(columnIndex, IrisGridContextMenuHandler.getQuickFilterCondition(filter, column.filter().isNull(), operator), IrisGridContextMenuHandler.getQuickFilterText(filterText, 'null', operator));
903
- },
904
- order: 30,
905
- group: ContextActions.groups.low
906
- });
907
- actions.push({
908
- title: 'is not null',
909
- description: "Show only rows where ".concat(column.name, " is not null"),
910
- action: () => {
911
- this.irisGrid.setQuickFilter(columnIndex, IrisGridContextMenuHandler.getQuickFilterCondition(filter, column.filter().isNull().not(), operator), IrisGridContextMenuHandler.getQuickFilterText(filterText, '!null', operator));
912
- },
913
- order: 40,
914
- group: ContextActions.groups.low
915
- });
916
- return actions;
917
- }
918
- dateFilterActions(column, valueText, previewValue, value, quickFilter, operator) {
919
- var {
920
- dh
921
- } = this;
922
- var filterValue = dh.FilterValue.ofNumber(value);
923
- var filter = null;
924
- var filterText = null;
925
- if (quickFilter) {
926
- filter = quickFilter.filter;
927
- filterText = quickFilter.text;
928
- }
929
- var {
930
- model
931
- } = this.irisGrid.props;
932
- var columnIndex = model.getColumnIndexByName(column.name);
933
- assertNotNull(columnIndex);
934
- var actions = [];
935
- actions.push({
936
- menuElement: /*#__PURE__*/React.createElement("div", {
937
- className: "iris-grid-filter-menu-item-value"
938
- }, operator ? IrisGridContextMenuHandler.getOperatorAsText(operator) : '', ' ', "\"", previewValue, "\""),
939
- order: 1,
940
- group: ContextActions.groups.high
941
- });
942
- actions.push({
943
- title: 'date is',
944
- description: "Show only rows where ".concat(column.name, " is ").concat(previewValue),
945
- action: () => {
946
- this.irisGrid.setQuickFilter(columnIndex, IrisGridContextMenuHandler.getQuickFilterCondition(filter, column.filter().eq(filterValue), operator), IrisGridContextMenuHandler.getQuickFilterText(filterText, "=".concat(valueText), operator));
947
- },
948
- order: 10,
949
- group: ContextActions.groups.low
950
- });
951
- actions.push({
952
- title: 'date is not',
953
- description: "Show only rows where ".concat(column.name, " is not ").concat(previewValue),
954
- action: () => {
955
- this.irisGrid.setQuickFilter(columnIndex, IrisGridContextMenuHandler.getQuickFilterCondition(filter, column.filter().notEq(filterValue), operator), IrisGridContextMenuHandler.getQuickFilterText(filterText, "!=".concat(valueText), operator));
956
- },
957
- order: 20,
958
- group: ContextActions.groups.low
959
- });
960
- actions.push({
961
- title: 'date is before',
962
- description: "Show only rows where ".concat(column.name, " is before ").concat(previewValue),
963
- action: () => {
964
- this.irisGrid.setQuickFilter(columnIndex, IrisGridContextMenuHandler.getQuickFilterCondition(filter, column.filter().lessThan(filterValue), operator), IrisGridContextMenuHandler.getQuickFilterText(filterText, "<".concat(valueText), operator));
965
- },
966
- order: 30,
967
- group: ContextActions.groups.low
968
- });
969
- actions.push({
970
- title: 'date is before or equal',
971
- description: "Show only rows where ".concat(column.name, " is before or equal to ").concat(previewValue),
972
- action: () => {
973
- this.irisGrid.setQuickFilter(columnIndex, IrisGridContextMenuHandler.getQuickFilterCondition(filter, column.filter().lessThanOrEqualTo(filterValue), operator), IrisGridContextMenuHandler.getQuickFilterText(filterText, "<=".concat(valueText), operator));
974
- },
975
- order: 40,
976
- group: ContextActions.groups.low
977
- });
978
- actions.push({
979
- title: 'date is after',
980
- description: "Show only rows where ".concat(column.name, " is greater than ").concat(previewValue),
981
- action: () => {
982
- this.irisGrid.setQuickFilter(columnIndex, IrisGridContextMenuHandler.getQuickFilterCondition(filter, column.filter().greaterThan(filterValue), operator), IrisGridContextMenuHandler.getQuickFilterText(filterText, ">".concat(valueText), operator));
983
- },
984
- order: 50,
985
- group: ContextActions.groups.low
986
- });
987
- actions.push({
988
- title: 'date is after or equal',
989
- description: "Show only rows where ".concat(column.name, " is after or equal to ").concat(previewValue),
990
- action: () => {
991
- this.irisGrid.setQuickFilter(columnIndex, IrisGridContextMenuHandler.getQuickFilterCondition(filter, column.filter().greaterThanOrEqualTo(filterValue), operator), IrisGridContextMenuHandler.getQuickFilterText(filterText, ">=".concat(valueText), operator));
992
- },
993
- order: 60,
994
- group: ContextActions.groups.low
995
- });
996
- return actions;
997
- }
998
- emptyStringFilterActions(column, quickFilter, operator) {
999
- var {
1000
- dh
1001
- } = this;
1002
- var filterValue = dh.FilterValue.ofString('');
1003
- var newQuickFilter = quickFilter;
1004
- if (!newQuickFilter) {
1005
- newQuickFilter = {
1006
- filter: null,
1007
- text: null
1008
- };
1009
- }
1010
- var {
1011
- filter,
1012
- text: filterText
1013
- } = newQuickFilter;
1014
- var actions = [];
1015
- var {
1016
- model
1017
- } = this.irisGrid.props;
1018
- var columnIndex = model.getColumnIndexByName(column.name);
1019
- assertNotNull(columnIndex);
1020
- actions.push({
1021
- menuElement: /*#__PURE__*/React.createElement("div", {
1022
- className: "iris-grid-filter-menu-item-value"
1023
- }, operator ? IrisGridContextMenuHandler.getOperatorAsText(operator) : '', ' ', /*#__PURE__*/React.createElement("i", {
1024
- className: "text-muted"
1025
- }, "empty")),
1026
- order: 1,
1027
- group: ContextActions.groups.high
1028
- });
1029
- actions.push({
1030
- title: 'is empty string',
1031
- description: "Show only rows where ".concat(column.name, " is empty"),
1032
- action: () => {
1033
- this.irisGrid.setQuickFilter(columnIndex, IrisGridContextMenuHandler.getQuickFilterCondition(filter, column.filter().eq(filterValue), operator), IrisGridContextMenuHandler.getQuickFilterText(filterText, "=", operator));
1034
- },
1035
- order: 10,
1036
- group: ContextActions.groups.low
1037
- });
1038
- actions.push({
1039
- title: 'is not empty string',
1040
- description: "Show only rows where ".concat(column.name, " is not empty"),
1041
- action: () => {
1042
- this.irisGrid.setQuickFilter(columnIndex, IrisGridContextMenuHandler.getQuickFilterCondition(filter, column.filter().notEq(filterValue), operator), IrisGridContextMenuHandler.getQuickFilterText(filterText, "!=", operator));
1043
- },
1044
- order: 20,
1045
- group: ContextActions.groups.low
1046
- });
1047
- return actions;
1048
- }
1049
- nullFilterActions(column, quickFilter, operator) {
1050
- var filter = null;
1051
- var filterText = null;
1052
- if (quickFilter) {
1053
- filter = quickFilter.filter;
1054
- filterText = quickFilter.text;
1055
- }
1056
- var actions = [];
1057
- var {
1058
- model
1059
- } = this.irisGrid.props;
1060
- var columnIndex = model.getColumnIndexByName(column.name);
1061
- assertNotNull(columnIndex);
1062
- actions.push({
1063
- menuElement: /*#__PURE__*/React.createElement("div", {
1064
- className: "iris-grid-filter-menu-item-value"
1065
- }, operator ? IrisGridContextMenuHandler.getOperatorAsText(operator) : '', ' ', /*#__PURE__*/React.createElement("i", {
1066
- className: "text-muted"
1067
- }, "null")),
1068
- order: 1,
1069
- group: ContextActions.groups.high
1070
- });
1071
- actions.push({
1072
- title: 'is null',
1073
- description: "Show only rows where ".concat(column.name, " is null"),
1074
- action: () => {
1075
- this.irisGrid.setQuickFilter(columnIndex, IrisGridContextMenuHandler.getQuickFilterCondition(filter, column.filter().isNull(), operator), IrisGridContextMenuHandler.getQuickFilterText(filterText, 'null', operator));
1076
- },
1077
- order: 10,
1078
- group: ContextActions.groups.low
1079
- });
1080
- actions.push({
1081
- title: 'is not null',
1082
- description: "Show only rows where ".concat(column.name, " is not null"),
1083
- action: () => {
1084
- this.irisGrid.setQuickFilter(columnIndex, IrisGridContextMenuHandler.getQuickFilterCondition(filter, column.filter().isNull().not(), operator), IrisGridContextMenuHandler.getQuickFilterText(filterText, '!null', operator));
1085
- },
1086
- order: 20,
1087
- group: ContextActions.groups.low
1088
- });
1089
- return actions;
1090
- }
1091
- sortByActions(column, modelColumn, columnSort) {
1092
- var theme = this.irisGrid.getTheme();
1093
- var {
1094
- contextMenuSortIconColor
1095
- } = theme;
1096
- var sortActions = [{
1097
- title: "".concat(column.name, " Ascending"),
1098
- order: 10,
1099
- action: () => {
1100
- this.irisGrid.sortColumn(modelColumn, IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending);
1101
- },
1102
- icon: this.checkColumnSort(columnSort, IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending) ? vsRemove : undefined,
1103
- iconColor: contextMenuSortIconColor
1104
- }, {
1105
- title: "".concat(column.name, " Descending"),
1106
- order: 20,
1107
- action: () => {
1108
- this.irisGrid.sortColumn(modelColumn, IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending);
1109
- },
1110
- icon: this.checkColumnSort(columnSort, IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending) ? vsRemove : undefined,
1111
- iconColor: contextMenuSortIconColor
1112
- }, {
1113
- title: "Remove Sort",
1114
- order: 50,
1115
- action: () => {
1116
- this.irisGrid.sortColumn(modelColumn, IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.none, false, true);
1117
- },
1118
- disabled: !columnSort
1119
- }];
1120
- if (TableUtils.isNumberType(column.type)) {
1121
- sortActions.push({
1122
- title: "ABS(".concat(column.name, ") Ascending"),
1123
- order: 30,
1124
- action: () => {
1125
- this.irisGrid.sortColumn(modelColumn, IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending, true);
1126
- },
1127
- icon: this.checkColumnSort(columnSort, IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending, true) ? vsRemove : undefined,
1128
- iconColor: contextMenuSortIconColor
1129
- });
1130
- sortActions.push({
1131
- title: "ABS(".concat(column.name, ") Descending"),
1132
- order: 40,
1133
- action: () => {
1134
- this.irisGrid.sortColumn(modelColumn, IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending, true);
1135
- },
1136
- icon: this.checkColumnSort(columnSort, IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending, true) ? vsRemove : undefined,
1137
- iconColor: contextMenuSortIconColor
1138
- });
1139
- }
1140
- return sortActions;
1141
- }
1142
- additionalSortActions(column, columnIndex) {
1143
- var theme = this.irisGrid.getTheme();
1144
- var {
1145
- contextMenuSortIconColor
1146
- } = theme;
1147
- var additionalSortActions = [{
1148
- title: 'Add Sort By',
1149
- menuElement: /*#__PURE__*/React.createElement("div", {
1150
- className: "btn-context-menu menu-title"
1151
- }, /*#__PURE__*/React.createElement("span", {
1152
- className: "icon"
1153
- }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
1154
- icon: vsRemove,
1155
- style: {
1156
- color: contextMenuSortIconColor !== null && contextMenuSortIconColor !== void 0 ? contextMenuSortIconColor : undefined
1157
- }
1158
- })), /*#__PURE__*/React.createElement("span", {
1159
- className: "title"
1160
- }, "Add Additional Sort"), /*#__PURE__*/React.createElement("span", {
1161
- className: "shortcut"
1162
- }, ContextActionUtils.isMacPlatform() ? '⌘Click' : 'Ctrl+Click')),
1163
- order: 1
1164
- }, {
1165
- title: "".concat(column.name, " Ascending"),
1166
- order: 10,
1167
- action: () => {
1168
- this.irisGrid.sortColumn(columnIndex, IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending, false, true);
1169
- }
1170
- }, {
1171
- title: "".concat(column.name, " Descending"),
1172
- order: 20,
1173
- action: () => {
1174
- this.irisGrid.sortColumn(columnIndex, IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending, false, true);
1175
- }
1176
- }];
1177
- if (TableUtils.isNumberType(column.type)) {
1178
- additionalSortActions.push({
1179
- title: "ABS(".concat(column.name, ") Ascending"),
1180
- order: 30,
1181
- action: () => {
1182
- this.irisGrid.sortColumn(columnIndex, IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending, true, true);
1183
- }
1184
- });
1185
- additionalSortActions.push({
1186
- title: "ABS(".concat(column.name, ") Descending"),
1187
- order: 40,
1188
- action: () => {
1189
- this.irisGrid.sortColumn(columnIndex, IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending, true, true);
1190
- }
1191
- });
1192
- }
1193
- return additionalSortActions;
1194
- }
1195
- checkColumnSort(columnSort) {
1196
- var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
1197
- var isAbs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
1198
- if (!columnSort) {
1199
- return false;
1200
- }
1201
- return columnSort.direction === direction && columnSort.isAbs === isAbs;
1202
- }
1203
- }
1204
- _defineProperty(IrisGridContextMenuHandler, "GROUP_EDIT", ContextActions.groups.high + 10);
1205
- _defineProperty(IrisGridContextMenuHandler, "GROUP_HIDE_COLUMNS", ContextActions.groups.high + 25);
1206
- _defineProperty(IrisGridContextMenuHandler, "GROUP_FILTER", ContextActions.groups.high + 50);
1207
- _defineProperty(IrisGridContextMenuHandler, "GROUP_EXPAND_COLLAPSE", ContextActions.groups.high + 55);
1208
- _defineProperty(IrisGridContextMenuHandler, "GROUP_GOTO", ContextActions.groups.high + 60);
1209
- _defineProperty(IrisGridContextMenuHandler, "GROUP_SORT", ContextActions.groups.high + 75);
1210
- _defineProperty(IrisGridContextMenuHandler, "GROUP_COPY", ContextActions.groups.high + 100);
1211
- _defineProperty(IrisGridContextMenuHandler, "GROUP_FORMAT", ContextActions.groups.high + 150);
1212
- _defineProperty(IrisGridContextMenuHandler, "COLUMN_SORT_DIRECTION", {
1213
- ascending: 'ASC',
1214
- descending: 'DESC',
1215
- none: null
1216
- });
1217
- export default IrisGridContextMenuHandler;
1218
- //# sourceMappingURL=IrisGridContextMenuHandler.js.map