@deephaven/iris-grid 0.12.1-beta.5 → 0.13.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 (161) hide show
  1. package/dist/AdvancedFilterCreator.d.ts +2 -2
  2. package/dist/AdvancedFilterCreator.d.ts.map +1 -1
  3. package/dist/AdvancedFilterCreator.js +2 -3
  4. package/dist/AdvancedFilterCreator.js.map +1 -1
  5. package/dist/AdvancedFilterCreatorFilterItem.d.ts +5 -11
  6. package/dist/AdvancedFilterCreatorFilterItem.d.ts.map +1 -1
  7. package/dist/AdvancedFilterCreatorFilterItem.js +21 -121
  8. package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
  9. package/dist/AdvancedFilterCreatorSelectValue.d.ts +1 -1
  10. package/dist/AdvancedFilterCreatorSelectValue.d.ts.map +1 -1
  11. package/dist/AdvancedFilterCreatorSelectValue.js +1 -2
  12. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
  13. package/dist/AdvancedFilterCreatorSelectValueList.d.ts +1 -1
  14. package/dist/AdvancedFilterCreatorSelectValueList.js +1 -1
  15. package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
  16. package/dist/CrossColumnSearch.js +1 -1
  17. package/dist/CrossColumnSearch.js.map +1 -1
  18. package/dist/IrisGrid.d.ts.map +1 -1
  19. package/dist/IrisGrid.js +1 -4
  20. package/dist/IrisGrid.js.map +1 -1
  21. package/dist/IrisGridMetricCalculator.js +1 -1
  22. package/dist/IrisGridMetricCalculator.js.map +1 -1
  23. package/dist/IrisGridModel.d.ts +1 -1
  24. package/dist/IrisGridModel.d.ts.map +1 -1
  25. package/dist/IrisGridModel.js.map +1 -1
  26. package/dist/IrisGridModelFactory.d.ts +1 -1
  27. package/dist/IrisGridModelFactory.js +1 -1
  28. package/dist/IrisGridModelFactory.js.map +1 -1
  29. package/dist/IrisGridModelUpdater.d.ts +1 -2
  30. package/dist/IrisGridModelUpdater.d.ts.map +1 -1
  31. package/dist/IrisGridModelUpdater.js +1 -1
  32. package/dist/IrisGridModelUpdater.js.map +1 -1
  33. package/dist/IrisGridProxyModel.d.ts +1 -1
  34. package/dist/IrisGridProxyModel.d.ts.map +1 -1
  35. package/dist/IrisGridProxyModel.js +1 -2
  36. package/dist/IrisGridProxyModel.js.map +1 -1
  37. package/dist/IrisGridRenderer.js +1 -1
  38. package/dist/IrisGridRenderer.js.map +1 -1
  39. package/dist/IrisGridTableModel.d.ts +2 -2
  40. package/dist/IrisGridTableModel.d.ts.map +1 -1
  41. package/dist/IrisGridTableModel.js +1 -3
  42. package/dist/IrisGridTableModel.js.map +1 -1
  43. package/dist/IrisGridTestUtils.d.ts +1 -1
  44. package/dist/IrisGridTestUtils.js +1 -1
  45. package/dist/IrisGridTestUtils.js.map +1 -1
  46. package/dist/IrisGridUtils.d.ts.map +1 -1
  47. package/dist/IrisGridUtils.js +1 -2
  48. package/dist/IrisGridUtils.js.map +1 -1
  49. package/dist/format-context-menus/DateTimeFormatContextMenu.d.ts +1 -2
  50. package/dist/format-context-menus/DateTimeFormatContextMenu.d.ts.map +1 -1
  51. package/dist/format-context-menus/DateTimeFormatContextMenu.js +1 -2
  52. package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
  53. package/dist/format-context-menus/DecimalFormatContextMenu.d.ts +1 -1
  54. package/dist/format-context-menus/DecimalFormatContextMenu.d.ts.map +1 -1
  55. package/dist/format-context-menus/DecimalFormatContextMenu.js +1 -1
  56. package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
  57. package/dist/format-context-menus/FormatContextMenuUtils.d.ts +1 -1
  58. package/dist/format-context-menus/FormatContextMenuUtils.d.ts.map +1 -1
  59. package/dist/format-context-menus/FormatContextMenuUtils.js +1 -1
  60. package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
  61. package/dist/format-context-menus/IntegerFormatContextMenu.d.ts +1 -1
  62. package/dist/format-context-menus/IntegerFormatContextMenu.d.ts.map +1 -1
  63. package/dist/format-context-menus/IntegerFormatContextMenu.js +1 -1
  64. package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
  65. package/dist/index.d.ts +1 -5
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +1 -5
  68. package/dist/index.js.map +1 -1
  69. package/dist/key-handlers/ReverseKeyHandler.d.ts.map +1 -1
  70. package/dist/key-handlers/ReverseKeyHandler.js +1 -1
  71. package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
  72. package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts +1 -1
  73. package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
  74. package/dist/mousehandlers/IrisGridContextMenuHandler.js +1 -2
  75. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  76. package/dist/sidebar/RollupRows.js +1 -1
  77. package/dist/sidebar/RollupRows.js.map +1 -1
  78. package/dist/sidebar/TableSaver.d.ts +2 -2
  79. package/dist/sidebar/TableSaver.d.ts.map +1 -1
  80. package/dist/sidebar/TableSaver.js +1 -2
  81. package/dist/sidebar/TableSaver.js.map +1 -1
  82. package/dist/sidebar/aggregations/AggregationEdit.d.ts.map +1 -1
  83. package/dist/sidebar/aggregations/AggregationEdit.js +1 -1
  84. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
  85. package/dist/sidebar/aggregations/AggregationUtils.js +1 -1
  86. package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
  87. package/dist/sidebar/conditional-formatting/ConditionEditor.js +1 -1
  88. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
  89. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
  90. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +1 -1
  91. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
  92. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +1 -1
  93. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
  94. package/dist/sidebar/index.d.ts +2 -1
  95. package/dist/sidebar/index.js +2 -1
  96. package/dist/sidebar/index.js.map +1 -1
  97. package/package.json +15 -14
  98. package/dist/DateUtils.d.ts +0 -82
  99. package/dist/DateUtils.d.ts.map +0 -1
  100. package/dist/DateUtils.js +0 -285
  101. package/dist/DateUtils.js.map +0 -1
  102. package/dist/Formatter.d.ts +0 -65
  103. package/dist/Formatter.d.ts.map +0 -1
  104. package/dist/Formatter.js +0 -169
  105. package/dist/Formatter.js.map +0 -1
  106. package/dist/FormatterUtils.d.ts +0 -24
  107. package/dist/FormatterUtils.d.ts.map +0 -1
  108. package/dist/FormatterUtils.js +0 -42
  109. package/dist/FormatterUtils.js.map +0 -1
  110. package/dist/TableUtils.d.ts +0 -191
  111. package/dist/TableUtils.d.ts.map +0 -1
  112. package/dist/TableUtils.js +0 -1326
  113. package/dist/TableUtils.js.map +0 -1
  114. package/dist/filters/FilterOperator.d.ts +0 -3
  115. package/dist/filters/FilterOperator.d.ts.map +0 -1
  116. package/dist/filters/FilterOperator.js +0 -2
  117. package/dist/filters/FilterOperator.js.map +0 -1
  118. package/dist/filters/FilterType.d.ts +0 -3
  119. package/dist/filters/FilterType.d.ts.map +0 -1
  120. package/dist/filters/FilterType.js +0 -2
  121. package/dist/filters/FilterType.js.map +0 -1
  122. package/dist/filters/index.d.ts +0 -3
  123. package/dist/filters/index.d.ts.map +0 -1
  124. package/dist/filters/index.js +0 -3
  125. package/dist/filters/index.js.map +0 -1
  126. package/dist/formatters/BooleanColumnFormatter.d.ts +0 -7
  127. package/dist/formatters/BooleanColumnFormatter.d.ts.map +0 -1
  128. package/dist/formatters/BooleanColumnFormatter.js +0 -26
  129. package/dist/formatters/BooleanColumnFormatter.js.map +0 -1
  130. package/dist/formatters/CharColumnFormatter.d.ts +0 -7
  131. package/dist/formatters/CharColumnFormatter.d.ts.map +0 -1
  132. package/dist/formatters/CharColumnFormatter.js +0 -15
  133. package/dist/formatters/CharColumnFormatter.js.map +0 -1
  134. package/dist/formatters/DateTimeColumnFormatter.d.ts +0 -40
  135. package/dist/formatters/DateTimeColumnFormatter.d.ts.map +0 -1
  136. package/dist/formatters/DateTimeColumnFormatter.js +0 -123
  137. package/dist/formatters/DateTimeColumnFormatter.js.map +0 -1
  138. package/dist/formatters/DecimalColumnFormatter.d.ts +0 -64
  139. package/dist/formatters/DecimalColumnFormatter.d.ts.map +0 -1
  140. package/dist/formatters/DecimalColumnFormatter.js +0 -128
  141. package/dist/formatters/DecimalColumnFormatter.js.map +0 -1
  142. package/dist/formatters/DefaultColumnFormatter.d.ts +0 -6
  143. package/dist/formatters/DefaultColumnFormatter.d.ts.map +0 -1
  144. package/dist/formatters/DefaultColumnFormatter.js +0 -14
  145. package/dist/formatters/DefaultColumnFormatter.js.map +0 -1
  146. package/dist/formatters/IntegerColumnFormatter.d.ts +0 -60
  147. package/dist/formatters/IntegerColumnFormatter.d.ts.map +0 -1
  148. package/dist/formatters/IntegerColumnFormatter.js +0 -121
  149. package/dist/formatters/IntegerColumnFormatter.js.map +0 -1
  150. package/dist/formatters/StringColumnFormatter.d.ts +0 -7
  151. package/dist/formatters/StringColumnFormatter.d.ts.map +0 -1
  152. package/dist/formatters/StringColumnFormatter.js +0 -13
  153. package/dist/formatters/StringColumnFormatter.js.map +0 -1
  154. package/dist/formatters/TableColumnFormatter.d.ts +0 -44
  155. package/dist/formatters/TableColumnFormatter.d.ts.map +0 -1
  156. package/dist/formatters/TableColumnFormatter.js +0 -65
  157. package/dist/formatters/TableColumnFormatter.js.map +0 -1
  158. package/dist/formatters/index.d.ts +0 -9
  159. package/dist/formatters/index.d.ts.map +0 -1
  160. package/dist/formatters/index.js +0 -9
  161. package/dist/formatters/index.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,7 +1,4 @@
1
- export { default as DateUtils } from "./DateUtils.js";
2
- export { default as Formatter } from "./Formatter.js";
3
- export * from "./Formatter.js";
4
- export { default as FormatterUtils } from "./FormatterUtils.js";
1
+ export * from "./sidebar/index.js";
5
2
  export { default as IrisGrid } from "./IrisGrid.js";
6
3
  export { default as SHORTCUTS } from "./IrisGridShortcuts.js";
7
4
  export { default as IrisGridModel } from "./IrisGridModel.js";
@@ -10,6 +7,5 @@ export { default as IrisGridModelFactory } from "./IrisGridModelFactory.js";
10
7
  export { default as IrisGridTheme } from "./IrisGridTheme.js";
11
8
  export { default as IrisGridTestUtils } from "./IrisGridTestUtils.js";
12
9
  export { default as IrisGridUtils } from "./IrisGridUtils.js";
13
- export { default as TableUtils } from "./TableUtils.js";
14
10
  export { default } from "./IrisGrid.js";
15
11
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["default","DateUtils","Formatter","FormatterUtils","IrisGrid","SHORTCUTS","IrisGridModel","IrisGridTableModel","IrisGridModelFactory","IrisGridTheme","IrisGridTestUtils","IrisGridUtils","TableUtils"],"mappings":"SAASA,OAAO,IAAIC,S;SACXD,OAAO,IAAIE,S;;SAEXF,OAAO,IAAIG,c;SACXH,OAAO,IAAII,Q;SACXJ,OAAO,IAAIK,S;SACXL,OAAO,IAAIM,a;SACXN,OAAO,IAAIO,kB;SACXP,OAAO,IAAIQ,oB;SACXR,OAAO,IAAIS,a;SAEXT,OAAO,IAAIU,iB;SACXV,OAAO,IAAIW,a;SACXX,OAAO,IAAIY,U;SAEXZ,O","sourcesContent":["export { default as DateUtils } from './DateUtils';\nexport { default as Formatter } from './Formatter';\nexport * from './Formatter';\nexport { default as FormatterUtils } from './FormatterUtils';\nexport { default as IrisGrid } from './IrisGrid';\nexport { default as SHORTCUTS } from './IrisGridShortcuts';\nexport { default as IrisGridModel } from './IrisGridModel';\nexport { default as IrisGridTableModel } from './IrisGridTableModel';\nexport { default as IrisGridModelFactory } from './IrisGridModelFactory';\nexport { default as IrisGridTheme } from './IrisGridTheme';\nexport type { IrisGridThemeType } from './IrisGridTheme';\nexport { default as IrisGridTestUtils } from './IrisGridTestUtils';\nexport { default as IrisGridUtils } from './IrisGridUtils';\nexport { default as TableUtils } from './TableUtils';\n\nexport { default } from './IrisGrid';\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.ts"],"names":["default","IrisGrid","SHORTCUTS","IrisGridModel","IrisGridTableModel","IrisGridModelFactory","IrisGridTheme","IrisGridTestUtils","IrisGridUtils"],"mappings":";SACSA,OAAO,IAAIC,Q;SACXD,OAAO,IAAIE,S;SACXF,OAAO,IAAIG,a;SACXH,OAAO,IAAII,kB;SACXJ,OAAO,IAAIK,oB;SACXL,OAAO,IAAIM,a;SAEXN,OAAO,IAAIO,iB;SACXP,OAAO,IAAIQ,a;SAEXR,O","sourcesContent":["export * from './sidebar';\nexport { default as IrisGrid } from './IrisGrid';\nexport { default as SHORTCUTS } from './IrisGridShortcuts';\nexport { default as IrisGridModel } from './IrisGridModel';\nexport { default as IrisGridTableModel } from './IrisGridTableModel';\nexport { default as IrisGridModelFactory } from './IrisGridModelFactory';\nexport { default as IrisGridTheme } from './IrisGridTheme';\nexport type { IrisGridThemeType } from './IrisGridTheme';\nexport { default as IrisGridTestUtils } from './IrisGridTestUtils';\nexport { default as IrisGridUtils } from './IrisGridUtils';\n\nexport { default } from './IrisGrid';\n"],"file":"index.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"ReverseKeyHandler.d.ts","sourceRoot":"","sources":["../../src/key-handlers/ReverseKeyHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIvC,cAAM,iBAAkB,SAAQ,UAAU;IACxC,OAAO,CAAC,QAAQ,CAAW;gBAEf,QAAQ,EAAE,QAAQ;IAM9B,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO;CAetC;AAED,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"ReverseKeyHandler.d.ts","sourceRoot":"","sources":["../../src/key-handlers/ReverseKeyHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,cAAM,iBAAkB,SAAQ,UAAU;IACxC,OAAO,CAAC,QAAQ,CAAW;gBAEf,QAAQ,EAAE,QAAQ;IAM9B,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO;CAetC;AAED,eAAe,iBAAiB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
2
 
3
3
  import { KeyHandler } from '@deephaven/grid';
4
- import TableUtils from "../TableUtils.js";
4
+ import { TableUtils } from '@deephaven/jsapi-utils';
5
5
  import IrisGridShortcuts from "../IrisGridShortcuts.js";
6
6
 
7
7
  class ReverseKeyHandler extends KeyHandler {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/key-handlers/ReverseKeyHandler.ts"],"names":["KeyHandler","TableUtils","IrisGridShortcuts","ReverseKeyHandler","constructor","irisGrid","onDown","event","TABLE","REVERSE","matchesEvent","isReversible","reverseType","state","REVERSE_TYPE","NONE","reverse","POST_SORT"],"mappings":";;AACA,SAASA,UAAT,QAA2B,iBAA3B;OAEOC,U;OACAC,iB;;AAEP,MAAMC,iBAAN,SAAgCH,UAAhC,CAA2C;AAGzCI,EAAAA,WAAW,CAACC,QAAD,EAAqB;AAC9B;;AAD8B;;AAG9B,SAAKA,QAAL,GAAgBA,QAAhB;AACD;;AAEDC,EAAAA,MAAM,CAACC,KAAD,EAAgC;AACpC,QAAIL,iBAAiB,CAACM,KAAlB,CAAwBC,OAAxB,CAAgCC,YAAhC,CAA6CH,KAA7C,CAAJ,EAAyD;AACvD,UAAI,CAAC,KAAKF,QAAL,CAAcM,YAAd,EAAL,EAAmC;AACjC,eAAO,KAAP;AACD;;AACD,UAAM;AAAEC,QAAAA;AAAF,UAAkB,KAAKP,QAAL,CAAcQ,KAAtC;;AACA,UAAID,WAAW,KAAKX,UAAU,CAACa,YAAX,CAAwBC,IAA5C,EAAkD;AAChD,aAAKV,QAAL,CAAcW,OAAd,CAAsBf,UAAU,CAACa,YAAX,CAAwBG,SAA9C;AACD,OAFD,MAEO;AACL,aAAKZ,QAAL,CAAcW,OAAd,CAAsBf,UAAU,CAACa,YAAX,CAAwBC,IAA9C;AACD;;AACD,aAAO,IAAP;AACD;;AACD,WAAO,KAAP;AACD;;AAvBwC;;AA0B3C,eAAeZ,iBAAf","sourcesContent":["import { KeyboardEvent } from 'react';\nimport { KeyHandler } from '@deephaven/grid';\nimport { IrisGrid } from '../IrisGrid';\nimport TableUtils from '../TableUtils';\nimport IrisGridShortcuts from '../IrisGridShortcuts';\n\nclass ReverseKeyHandler extends KeyHandler {\n private irisGrid: IrisGrid;\n\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n }\n\n onDown(event: KeyboardEvent): boolean {\n if (IrisGridShortcuts.TABLE.REVERSE.matchesEvent(event)) {\n if (!this.irisGrid.isReversible()) {\n return false;\n }\n const { reverseType } = this.irisGrid.state;\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 return true;\n }\n return false;\n }\n}\n\nexport default ReverseKeyHandler;\n"],"file":"ReverseKeyHandler.js"}
1
+ {"version":3,"sources":["../../src/key-handlers/ReverseKeyHandler.ts"],"names":["KeyHandler","TableUtils","IrisGridShortcuts","ReverseKeyHandler","constructor","irisGrid","onDown","event","TABLE","REVERSE","matchesEvent","isReversible","reverseType","state","REVERSE_TYPE","NONE","reverse","POST_SORT"],"mappings":";;AACA,SAASA,UAAT,QAA2B,iBAA3B;AACA,SAASC,UAAT,QAA2B,wBAA3B;OAEOC,iB;;AAEP,MAAMC,iBAAN,SAAgCH,UAAhC,CAA2C;AAGzCI,EAAAA,WAAW,CAACC,QAAD,EAAqB;AAC9B;;AAD8B;;AAG9B,SAAKA,QAAL,GAAgBA,QAAhB;AACD;;AAEDC,EAAAA,MAAM,CAACC,KAAD,EAAgC;AACpC,QAAIL,iBAAiB,CAACM,KAAlB,CAAwBC,OAAxB,CAAgCC,YAAhC,CAA6CH,KAA7C,CAAJ,EAAyD;AACvD,UAAI,CAAC,KAAKF,QAAL,CAAcM,YAAd,EAAL,EAAmC;AACjC,eAAO,KAAP;AACD;;AACD,UAAM;AAAEC,QAAAA;AAAF,UAAkB,KAAKP,QAAL,CAAcQ,KAAtC;;AACA,UAAID,WAAW,KAAKX,UAAU,CAACa,YAAX,CAAwBC,IAA5C,EAAkD;AAChD,aAAKV,QAAL,CAAcW,OAAd,CAAsBf,UAAU,CAACa,YAAX,CAAwBG,SAA9C;AACD,OAFD,MAEO;AACL,aAAKZ,QAAL,CAAcW,OAAd,CAAsBf,UAAU,CAACa,YAAX,CAAwBC,IAA9C;AACD;;AACD,aAAO,IAAP;AACD;;AACD,WAAO,KAAP;AACD;;AAvBwC;;AA0B3C,eAAeZ,iBAAf","sourcesContent":["import { KeyboardEvent } from 'react';\nimport { KeyHandler } from '@deephaven/grid';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport { IrisGrid } from '../IrisGrid';\nimport IrisGridShortcuts from '../IrisGridShortcuts';\n\nclass ReverseKeyHandler extends KeyHandler {\n private irisGrid: IrisGrid;\n\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n }\n\n onDown(event: KeyboardEvent): boolean {\n if (IrisGridShortcuts.TABLE.REVERSE.matchesEvent(event)) {\n if (!this.irisGrid.isReversible()) {\n return false;\n }\n const { reverseType } = this.irisGrid.state;\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 return true;\n }\n return false;\n }\n}\n\nexport default ReverseKeyHandler;\n"],"file":"ReverseKeyHandler.js"}
@@ -56,7 +56,7 @@ declare class IrisGridContextMenuHandler extends GridMouseHandler {
56
56
  title: string;
57
57
  description: string;
58
58
  group: number;
59
- format: import("../formatters").TableColumnFormat | null;
59
+ format: import("@deephaven/jsapi-utils").TableColumnFormat | null;
60
60
  isSelected: boolean;
61
61
  }[] | null;
62
62
  stringFilterActions(column: any, valueText: any, value: any, quickFilter?: {}, additive?: boolean): ({
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridContextMenuHandler.d.ts","sourceRoot":"","sources":["../../src/mousehandlers/IrisGridContextMenuHandler.jsx"],"names":[],"mappings":";AA4BA;;GAEG;AACH;IACE,0BAAoD;IAEpD,kCAA4D;IAE5D,4BAAsD;IAEtD,0BAAoD;IAEpD,0BAAqD;IAErD,4BAAuD;IAEvD;;;;MAIE;IAEF;;;;;;;OAOG;IACH,2GAFW,OAAO,OAWjB;IAED;;;;;OAKG;IACH,gFAFW,OAAO,UAMjB;IAED;;;;OAIG;IACH,yEAqBC;IAED,+GAIC;IAED,2BASC;IANC,iEAGC;IAED,cAAwB;IAG1B,6BAEC;IA8ZD;;;;;;;QA8BC;IAED;;;;;;;;;eA8CC;IAED;;;;;;;;;;;;SA+IC;IAED;;;;;;;;;;;;SAmKC;IAED;;;;;;;;;;;;SA4EC;IAED;;;;;;;;;;;;SAgJC;IAED;;;;;;;;;;;;SAwDC;IAED;;;;;;;;;;;;;;SA6FC;IAED;;;;;;;;;;SA0EC;IAED,6EAKC;CACF"}
1
+ {"version":3,"file":"IrisGridContextMenuHandler.d.ts","sourceRoot":"","sources":["../../src/mousehandlers/IrisGridContextMenuHandler.jsx"],"names":[],"mappings":";AA+BA;;GAEG;AACH;IACE,0BAAoD;IAEpD,kCAA4D;IAE5D,4BAAsD;IAEtD,0BAAoD;IAEpD,0BAAqD;IAErD,4BAAuD;IAEvD;;;;MAIE;IAEF;;;;;;;OAOG;IACH,2GAFW,OAAO,OAWjB;IAED;;;;;OAKG;IACH,gFAFW,OAAO,UAMjB;IAED;;;;OAIG;IACH,yEAqBC;IAED,+GAIC;IAED,2BASC;IANC,iEAGC;IAED,cAAwB;IAG1B,6BAEC;IA8ZD;;;;;;;QA8BC;IAED;;;;;;;;;eA8CC;IAED;;;;;;;;;;;;SA+IC;IAED;;;;;;;;;;;;SAmKC;IAED;;;;;;;;;;;;SA4EC;IAED;;;;;;;;;;;;SAgJC;IAED;;;;;;;;;;;;SAwDC;IAED;;;;;;;;;;;;;;SA6FC;IAED;;;;;;;;;;SA0EC;IAED,6EAKC;CACF"}
@@ -12,11 +12,10 @@ import debounce from 'lodash.debounce';
12
12
  import { ContextActions, ContextActionUtils, GLOBAL_SHORTCUTS } from '@deephaven/components';
13
13
  import { GridMouseHandler } from '@deephaven/grid';
14
14
  import dh from '@deephaven/jsapi-shim';
15
+ import { TableColumnFormatter, DateTimeColumnFormatter, TableUtils } from '@deephaven/jsapi-utils';
15
16
  import Log from '@deephaven/log';
16
17
  import { DateTimeFormatContextMenu, DecimalFormatContextMenu, IntegerFormatContextMenu } from "../format-context-menus/index.js";
17
18
  import "./IrisGridContextMenuHandler.css";
18
- import TableUtils from "../TableUtils.js";
19
- import { TableColumnFormatter, DateTimeColumnFormatter } from "../formatters/index.js";
20
19
  import SHORTCUTS from "../IrisGridShortcuts.js";
21
20
  var log = Log.module('IrisGridContextMenuHandler');
22
21
  var DEBOUNCE_UPDATE_FORMAT = 150;
@@ -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","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 &quot;{valueText}&quot;\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 ' : ''}&quot;{valueText}&quot;\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 ' : ''}&quot;{valueText}&quot;\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 ' : ''}&quot;{previewValue}&quot;\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 ' : ''}&quot;null&quot;\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","TableColumnFormatter","DateTimeColumnFormatter","TableUtils","Log","DateTimeFormatContextMenu","DecimalFormatContextMenu","IntegerFormatContextMenu","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 {\n TableColumnFormatter,\n DateTimeColumnFormatter,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport {\n DateTimeFormatContextMenu,\n DecimalFormatContextMenu,\n IntegerFormatContextMenu,\n} from '../format-context-menus';\nimport './IrisGridContextMenuHandler.scss';\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 &quot;{valueText}&quot;\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 ' : ''}&quot;{valueText}&quot;\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 ' : ''}&quot;{valueText}&quot;\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 ' : ''}&quot;{previewValue}&quot;\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 ' : ''}&quot;null&quot;\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"}
@@ -10,12 +10,12 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
10
10
  import { DragDropContext, Droppable } from 'react-beautiful-dnd';
11
11
  import { ButtonOld, Checkbox, DraggableItemList, DragUtils, SearchInput, Tooltip } from '@deephaven/components';
12
12
  import { vsTrash, dhSortAlphaDown, dhSortAlphaUp } from '@deephaven/icons';
13
+ import { TableUtils } from '@deephaven/jsapi-utils';
13
14
  import memoize from 'memoizee';
14
15
  import debounce from 'lodash.debounce';
15
16
  import Log from '@deephaven/log';
16
17
  import "./RollupRows.css";
17
18
  import IrisGridModel from "../IrisGridModel.js";
18
- import TableUtils from "../TableUtils.js";
19
19
  var log = Log.module('RollupRows');
20
20
  var DEBOUNCE_SEARCH = 150;
21
21
  var GROUPED_LIST_ID = 'grouped-rollup-rows';