@deephaven/iris-grid 0.22.3-beta.15 → 0.22.3-beta.21

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 (209) hide show
  1. package/dist/AdvancedFilterCreator.js +7 -65
  2. package/dist/AdvancedFilterCreator.js.map +1 -1
  3. package/dist/AdvancedFilterCreatorFilterItem.js +0 -23
  4. package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
  5. package/dist/AdvancedFilterCreatorSelectValue.js +0 -52
  6. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
  7. package/dist/AdvancedFilterCreatorSelectValueList.js +2 -42
  8. package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
  9. package/dist/ColumnHeaderGroup.js +0 -11
  10. package/dist/ColumnHeaderGroup.js.map +1 -1
  11. package/dist/ColumnStatistics.js +1 -20
  12. package/dist/ColumnStatistics.js.map +1 -1
  13. package/dist/CrossColumnSearch.js +2 -23
  14. package/dist/CrossColumnSearch.js.map +1 -1
  15. package/dist/FilterInputField.js +2 -36
  16. package/dist/FilterInputField.js.map +1 -1
  17. package/dist/GotoRow.d.ts +1 -1
  18. package/dist/GotoRow.d.ts.map +1 -1
  19. package/dist/GotoRow.js +2 -7
  20. package/dist/GotoRow.js.map +1 -1
  21. package/dist/IrisGrid.d.ts +41 -35
  22. package/dist/IrisGrid.d.ts.map +1 -1
  23. package/dist/IrisGrid.js +77 -519
  24. package/dist/IrisGrid.js.map +1 -1
  25. package/dist/IrisGridBottomBar.d.ts +1 -1
  26. package/dist/IrisGridBottomBar.d.ts.map +1 -1
  27. package/dist/IrisGridBottomBar.js +2 -2
  28. package/dist/IrisGridBottomBar.js.map +1 -1
  29. package/dist/IrisGridCellOverflowModal.js +6 -21
  30. package/dist/IrisGridCellOverflowModal.js.map +1 -1
  31. package/dist/IrisGridCopyHandler.js +3 -50
  32. package/dist/IrisGridCopyHandler.js.map +1 -1
  33. package/dist/IrisGridMetricCalculator.js +2 -12
  34. package/dist/IrisGridMetricCalculator.js.map +1 -1
  35. package/dist/IrisGridModel.js +32 -58
  36. package/dist/IrisGridModel.js.map +1 -1
  37. package/dist/IrisGridModelFactory.js +0 -7
  38. package/dist/IrisGridModelFactory.js.map +1 -1
  39. package/dist/IrisGridModelUpdater.js +0 -4
  40. package/dist/IrisGridModelUpdater.js.map +1 -1
  41. package/dist/IrisGridPartitionSelector.js +0 -23
  42. package/dist/IrisGridPartitionSelector.js.map +1 -1
  43. package/dist/IrisGridProxyModel.js +9 -153
  44. package/dist/IrisGridProxyModel.js.map +1 -1
  45. package/dist/IrisGridRenderer.js +41 -183
  46. package/dist/IrisGridRenderer.js.map +1 -1
  47. package/dist/IrisGridShortcuts.js.map +1 -1
  48. package/dist/IrisGridTableModel.d.ts +2 -2
  49. package/dist/IrisGridTableModel.d.ts.map +1 -1
  50. package/dist/IrisGridTableModel.js +10 -90
  51. package/dist/IrisGridTableModel.js.map +1 -1
  52. package/dist/IrisGridTableModelTemplate.d.ts +2 -2
  53. package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
  54. package/dist/IrisGridTableModelTemplate.js +70 -461
  55. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  56. package/dist/IrisGridTestUtils.js +0 -23
  57. package/dist/IrisGridTestUtils.js.map +1 -1
  58. package/dist/IrisGridTheme.js.map +1 -1
  59. package/dist/IrisGridTreeTableModel.js +3 -42
  60. package/dist/IrisGridTreeTableModel.js.map +1 -1
  61. package/dist/IrisGridUtils.d.ts +11 -5
  62. package/dist/IrisGridUtils.d.ts.map +1 -1
  63. package/dist/IrisGridUtils.js +98 -196
  64. package/dist/IrisGridUtils.js.map +1 -1
  65. package/dist/MissingKeyError.js +0 -7
  66. package/dist/MissingKeyError.js.map +1 -1
  67. package/dist/PartitionSelectorSearch.js +2 -48
  68. package/dist/PartitionSelectorSearch.js.map +1 -1
  69. package/dist/PendingDataBottomBar.d.ts +1 -1
  70. package/dist/PendingDataBottomBar.d.ts.map +1 -1
  71. package/dist/PendingDataBottomBar.js +2 -7
  72. package/dist/PendingDataBottomBar.js.map +1 -1
  73. package/dist/TableViewportUpdater.d.ts +2 -2
  74. package/dist/TableViewportUpdater.d.ts.map +1 -1
  75. package/dist/TableViewportUpdater.js +3 -29
  76. package/dist/TableViewportUpdater.js.map +1 -1
  77. package/dist/ToastBottomBar.d.ts +1 -1
  78. package/dist/ToastBottomBar.d.ts.map +1 -1
  79. package/dist/ToastBottomBar.js +2 -4
  80. package/dist/ToastBottomBar.js.map +1 -1
  81. package/dist/TreeTableViewportUpdater.js +0 -21
  82. package/dist/TreeTableViewportUpdater.js.map +1 -1
  83. package/dist/format-context-menus/CustomFormatAction.js +4 -25
  84. package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
  85. package/dist/format-context-menus/DateTimeFormatContextMenu.js +0 -7
  86. package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
  87. package/dist/format-context-menus/DecimalFormatContextMenu.js +0 -9
  88. package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
  89. package/dist/format-context-menus/FormatContextMenuUtils.js +3 -9
  90. package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
  91. package/dist/format-context-menus/IntegerFormatContextMenu.js +0 -8
  92. package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
  93. package/dist/format-context-menus/index.js.map +1 -1
  94. package/dist/index.d.ts +3 -3
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js +3 -3
  97. package/dist/index.js.map +1 -1
  98. package/dist/key-handlers/ClearFilterKeyHandler.js +0 -8
  99. package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -1
  100. package/dist/key-handlers/CopyKeyHandler.js +1 -10
  101. package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
  102. package/dist/key-handlers/ReverseKeyHandler.js +0 -11
  103. package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
  104. package/dist/key-handlers/index.js.map +1 -1
  105. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +2 -32
  106. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
  107. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +4 -34
  108. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
  109. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +0 -20
  110. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
  111. package/dist/mousehandlers/IrisGridContextMenuHandler.js +15 -105
  112. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  113. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +0 -9
  114. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
  115. package/dist/mousehandlers/IrisGridFilterMouseHandler.js +0 -17
  116. package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
  117. package/dist/mousehandlers/IrisGridSortMouseHandler.js +2 -15
  118. package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
  119. package/dist/mousehandlers/PendingMouseHandler.js +0 -6
  120. package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
  121. package/dist/mousehandlers/index.js.map +1 -1
  122. package/dist/sidebar/AdvancedSettings.js.map +1 -1
  123. package/dist/sidebar/AdvancedSettingsMenu.d.ts +4 -4
  124. package/dist/sidebar/AdvancedSettingsMenu.d.ts.map +1 -1
  125. package/dist/sidebar/AdvancedSettingsMenu.js +2 -6
  126. package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
  127. package/dist/sidebar/AdvancedSettingsType.js +0 -2
  128. package/dist/sidebar/AdvancedSettingsType.js.map +1 -1
  129. package/dist/sidebar/ChartBuilder.js +2 -46
  130. package/dist/sidebar/ChartBuilder.js.map +1 -1
  131. package/dist/sidebar/CustomColumnBuilder.js +6 -58
  132. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  133. package/dist/sidebar/CustomColumnInput.js +4 -15
  134. package/dist/sidebar/CustomColumnInput.js.map +1 -1
  135. package/dist/sidebar/InputEditor.js +5 -36
  136. package/dist/sidebar/InputEditor.js.map +1 -1
  137. package/dist/sidebar/OptionType.js +0 -2
  138. package/dist/sidebar/OptionType.js.map +1 -1
  139. package/dist/sidebar/RollupRows.js +9 -65
  140. package/dist/sidebar/RollupRows.js.map +1 -1
  141. package/dist/sidebar/SelectDistinctBuilder.js +0 -13
  142. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  143. package/dist/sidebar/TableCsvExporter.js +0 -52
  144. package/dist/sidebar/TableCsvExporter.js.map +1 -1
  145. package/dist/sidebar/TableSaver.d.ts +1 -1
  146. package/dist/sidebar/TableSaver.d.ts.map +1 -1
  147. package/dist/sidebar/TableSaver.js +10 -123
  148. package/dist/sidebar/TableSaver.js.map +1 -1
  149. package/dist/sidebar/VisibilityOrderingBuilder.d.ts +3 -2
  150. package/dist/sidebar/VisibilityOrderingBuilder.d.ts.map +1 -1
  151. package/dist/sidebar/VisibilityOrderingBuilder.js +37 -116
  152. package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
  153. package/dist/sidebar/aggregations/AggregationEdit.d.ts +1 -1
  154. package/dist/sidebar/aggregations/AggregationEdit.d.ts.map +1 -1
  155. package/dist/sidebar/aggregations/AggregationEdit.js +2 -14
  156. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
  157. package/dist/sidebar/aggregations/AggregationOperation.js +0 -2
  158. package/dist/sidebar/aggregations/AggregationOperation.js.map +1 -1
  159. package/dist/sidebar/aggregations/AggregationUtils.js +2 -5
  160. package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
  161. package/dist/sidebar/aggregations/Aggregations.d.ts +1 -1
  162. package/dist/sidebar/aggregations/Aggregations.d.ts.map +1 -1
  163. package/dist/sidebar/aggregations/Aggregations.js +2 -12
  164. package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
  165. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts +1 -1
  166. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts.map +1 -1
  167. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +2 -16
  168. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
  169. package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts +1 -1
  170. package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -1
  171. package/dist/sidebar/conditional-formatting/ConditionEditor.js +2 -35
  172. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
  173. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts +1 -1
  174. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts.map +1 -1
  175. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +2 -12
  176. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
  177. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js +0 -3
  178. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
  179. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts +1 -1
  180. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
  181. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +16 -26
  182. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
  183. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +9 -172
  184. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
  185. package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts +1 -1
  186. package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts.map +1 -1
  187. package/dist/sidebar/conditional-formatting/RowFormatEditor.js +2 -16
  188. package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
  189. package/dist/sidebar/conditional-formatting/StyleEditor.d.ts +1 -1
  190. package/dist/sidebar/conditional-formatting/StyleEditor.d.ts.map +1 -1
  191. package/dist/sidebar/conditional-formatting/StyleEditor.js +2 -12
  192. package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
  193. package/dist/sidebar/icons/BarIcon.js +0 -3
  194. package/dist/sidebar/icons/BarIcon.js.map +1 -1
  195. package/dist/sidebar/icons/FormatColumnWhereIcon.js +2 -5
  196. package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -1
  197. package/dist/sidebar/icons/FormatRowWhereIcon.js +2 -5
  198. package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -1
  199. package/dist/sidebar/icons/HistogramIcon.js +0 -3
  200. package/dist/sidebar/icons/HistogramIcon.js.map +1 -1
  201. package/dist/sidebar/icons/LineIcon.js +0 -3
  202. package/dist/sidebar/icons/LineIcon.js.map +1 -1
  203. package/dist/sidebar/icons/PieIcon.js +0 -3
  204. package/dist/sidebar/icons/PieIcon.js.map +1 -1
  205. package/dist/sidebar/icons/ScatterIcon.js +0 -3
  206. package/dist/sidebar/icons/ScatterIcon.js.map +1 -1
  207. package/dist/sidebar/icons/index.js.map +1 -1
  208. package/dist/sidebar/index.js.map +1 -1
  209. package/package.json +15 -15
package/dist/IrisGrid.js CHANGED
@@ -1,13 +1,8 @@
1
1
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
2
-
3
2
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
4
-
5
3
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
6
-
7
4
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
8
-
9
5
  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; }
10
-
11
6
  import React, { Component } from 'react';
12
7
  import memoize from 'memoizee';
13
8
  import classNames from 'classnames';
@@ -61,7 +56,6 @@ var DEFAULT_AGGREGATION_SETTINGS = Object.freeze({
61
56
  showOnTop: false
62
57
  });
63
58
  var UNFORMATTED_DATE_PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS z";
64
-
65
59
  function isEmptyConfig(_ref) {
66
60
  var {
67
61
  advancedFilters,
@@ -76,7 +70,6 @@ function isEmptyConfig(_ref) {
76
70
  } = _ref;
77
71
  return advancedFilters.size === 0 && aggregationSettings.aggregations.length === 0 && customColumns.length === 0 && quickFilters.size === 0 && reverseType === TableUtils.REVERSE_TYPE.NONE && rollupConfig == null && searchFilter == null && selectDistinctColumns.length === 0 && sorts.length === 0;
78
72
  }
79
-
80
73
  export class IrisGrid extends Component {
81
74
  static makeQuickFilter(column, text, timeZone) {
82
75
  try {
@@ -84,69 +77,39 @@ export class IrisGrid extends Component {
84
77
  } catch (err) {
85
78
  log.error('Error creating quick filter', err);
86
79
  }
87
-
88
80
  return null;
89
81
  }
90
-
91
82
  constructor(props) {
92
83
  super(props);
93
-
94
84
  _defineProperty(this, "grid", void 0);
95
-
96
85
  _defineProperty(this, "gridWrapper", void 0);
97
-
98
86
  _defineProperty(this, "lastFocusedFilterBarColumn", void 0);
99
-
100
87
  _defineProperty(this, "lastLoadedConfig", void 0);
101
-
102
88
  _defineProperty(this, "tooltip", void 0);
103
-
104
89
  _defineProperty(this, "pending", void 0);
105
-
106
90
  _defineProperty(this, "globalColumnFormats", void 0);
107
-
108
91
  _defineProperty(this, "dateTimeFormatterOptions", void 0);
109
-
110
92
  _defineProperty(this, "decimalFormatOptions", void 0);
111
-
112
93
  _defineProperty(this, "integerFormatOptions", void 0);
113
-
114
94
  _defineProperty(this, "truncateNumbersWithPound", void 0);
115
-
116
95
  _defineProperty(this, "loadingScrimStartTime", void 0);
117
-
118
96
  _defineProperty(this, "loadingScrimFinishTime", void 0);
119
-
120
97
  _defineProperty(this, "animationFrame", void 0);
121
-
122
98
  _defineProperty(this, "loadingTimer", void 0);
123
-
124
99
  _defineProperty(this, "renderer", void 0);
125
-
126
100
  _defineProperty(this, "tableSaver", void 0);
127
-
128
101
  _defineProperty(this, "crossColumnRef", void 0);
129
-
130
102
  _defineProperty(this, "isAnimating", void 0);
131
-
132
103
  _defineProperty(this, "filterInputRef", void 0);
133
-
134
104
  _defineProperty(this, "toggleFilterBarAction", void 0);
135
-
136
105
  _defineProperty(this, "toggleSearchBarAction", void 0);
137
-
138
106
  _defineProperty(this, "toggleGotoRowAction", void 0);
139
-
140
107
  _defineProperty(this, "discardAction", void 0);
141
-
142
108
  _defineProperty(this, "commitAction", void 0);
143
-
144
109
  _defineProperty(this, "contextActions", void 0);
145
-
146
110
  _defineProperty(this, "getAdvancedMenuOpenedHandler", memoize(column => this.handleAdvancedMenuOpened.bind(this, column), {
147
111
  max: 100
148
112
  }));
149
-
150
113
  _defineProperty(this, "getCachedAdvancedFilterMenuActions", memoize((model, column, advancedFilterOptions, sortDirection, formatter) => /*#__PURE__*/React.createElement(AdvancedFilterCreator, {
151
114
  model: model,
152
115
  column: column,
@@ -159,10 +122,8 @@ export class IrisGrid extends Component {
159
122
  }), {
160
123
  max: 50
161
124
  }));
162
-
163
125
  _defineProperty(this, "getCachedOptionItems", memoize((isChartBuilderAvailable, isCustomColumnsAvailable, isFormatColumnsAvailable, isRollupAvailable, isTotalsAvailable, isSelectDistinctAvailable, isExportAvailable, toggleFilterBarAction, toggleSearchBarAction, toggleGotoRowAction, isFilterBarShown, showSearchBar, canDownloadCsv, canToggleSearch, showGotoRow, hasAdvancedSettings) => {
164
126
  var optionItems = [];
165
-
166
127
  if (isChartBuilderAvailable) {
167
128
  optionItems.push({
168
129
  type: OptionType.CHART_BUILDER,
@@ -170,13 +131,11 @@ export class IrisGrid extends Component {
170
131
  icon: dhGraphLineUp
171
132
  });
172
133
  }
173
-
174
134
  optionItems.push({
175
135
  type: OptionType.VISIBILITY_ORDERING_BUILDER,
176
136
  title: 'Column Visibility & Ordering',
177
137
  icon: dhEye
178
138
  });
179
-
180
139
  if (isFormatColumnsAvailable) {
181
140
  optionItems.push({
182
141
  type: OptionType.CONDITIONAL_FORMATTING,
@@ -184,7 +143,6 @@ export class IrisGrid extends Component {
184
143
  icon: vsEdit
185
144
  });
186
145
  }
187
-
188
146
  if (isCustomColumnsAvailable) {
189
147
  optionItems.push({
190
148
  type: OptionType.CUSTOM_COLUMN_BUILDER,
@@ -192,7 +150,6 @@ export class IrisGrid extends Component {
192
150
  icon: vsSplitHorizontal
193
151
  });
194
152
  }
195
-
196
153
  if (isRollupAvailable) {
197
154
  optionItems.push({
198
155
  type: OptionType.ROLLUP_ROWS,
@@ -200,7 +157,6 @@ export class IrisGrid extends Component {
200
157
  icon: dhTriangleDownSquare
201
158
  });
202
159
  }
203
-
204
160
  if (isTotalsAvailable) {
205
161
  optionItems.push({
206
162
  type: OptionType.AGGREGATIONS,
@@ -208,7 +164,6 @@ export class IrisGrid extends Component {
208
164
  icon: vsSymbolOperator
209
165
  });
210
166
  }
211
-
212
167
  if (isSelectDistinctAvailable) {
213
168
  optionItems.push({
214
169
  type: OptionType.SELECT_DISTINCT,
@@ -216,7 +171,6 @@ export class IrisGrid extends Component {
216
171
  icon: vsRuby
217
172
  });
218
173
  }
219
-
220
174
  if (isExportAvailable && canDownloadCsv) {
221
175
  optionItems.push({
222
176
  type: OptionType.TABLE_EXPORTER,
@@ -224,7 +178,6 @@ export class IrisGrid extends Component {
224
178
  icon: vsCloudDownload
225
179
  });
226
180
  }
227
-
228
181
  if (hasAdvancedSettings) {
229
182
  optionItems.push({
230
183
  type: OptionType.ADVANCED_SETTINGS,
@@ -232,7 +185,6 @@ export class IrisGrid extends Component {
232
185
  icon: vsTools
233
186
  });
234
187
  }
235
-
236
188
  optionItems.push({
237
189
  type: OptionType.QUICK_FILTERS,
238
190
  title: 'Quick Filters',
@@ -241,7 +193,6 @@ export class IrisGrid extends Component {
241
193
  isOn: isFilterBarShown,
242
194
  onChange: toggleFilterBarAction.action
243
195
  });
244
-
245
196
  if (canToggleSearch) {
246
197
  optionItems.push({
247
198
  type: OptionType.SEARCH_BAR,
@@ -252,7 +203,6 @@ export class IrisGrid extends Component {
252
203
  onChange: toggleSearchBarAction.action
253
204
  });
254
205
  }
255
-
256
206
  optionItems.push({
257
207
  type: OptionType.GOTO,
258
208
  title: 'Go to',
@@ -265,7 +215,6 @@ export class IrisGrid extends Component {
265
215
  }, {
266
216
  max: 1
267
217
  }));
268
-
269
218
  _defineProperty(this, "getCachedHiddenColumns", memoize(hiddenColumns => hiddenColumns, {
270
219
  max: 1,
271
220
  normalizer: _ref2 => {
@@ -273,7 +222,6 @@ export class IrisGrid extends Component {
273
222
  return hiddenColumns.join();
274
223
  }
275
224
  }));
276
-
277
225
  _defineProperty(this, "getAggregationMap", memoize((columns, aggregations) => {
278
226
  var aggregationMap = {};
279
227
  aggregations.forEach(_ref3 => {
@@ -286,7 +234,6 @@ export class IrisGrid extends Component {
286
234
  });
287
235
  return aggregationMap;
288
236
  }));
289
-
290
237
  _defineProperty(this, "getOperationMap", memoize((columns, aggregations) => {
291
238
  var operationMap = {};
292
239
  aggregations.filter(a => !AggregationUtils.isRollupOperation(a.operation)).forEach(_ref4 => {
@@ -297,46 +244,35 @@ export class IrisGrid extends Component {
297
244
  } = _ref4;
298
245
  AggregationUtils.getOperationColumnNames(columns, operation, selected, invert).forEach(name => {
299
246
  var _operationMap$name;
300
-
301
247
  var newOperations = [...((_operationMap$name = operationMap[name]) !== null && _operationMap$name !== void 0 ? _operationMap$name : []), operation];
302
248
  operationMap[name] = newOperations;
303
249
  });
304
250
  });
305
251
  return operationMap;
306
252
  }));
307
-
308
253
  _defineProperty(this, "getOperationOrder", memoize(aggregations => aggregations.map(a => a.operation).filter(o => !AggregationUtils.isRollupOperation(o))));
309
-
310
254
  _defineProperty(this, "getCachedFormatColumns", memoize((columns, rules) => getFormatColumns(columns, rules)));
311
-
312
255
  _defineProperty(this, "getCachedModelColumns", memoize((model, customColumns) => model.columns));
313
-
314
256
  _defineProperty(this, "getCachedPreviewFormatColumns", memoize((columns, rulesParam, preview, editIndex) => {
315
257
  log.debug('getCachedPreviewFormatColumns', rulesParam, preview, editIndex);
316
-
317
258
  if (preview !== undefined && editIndex !== undefined) {
318
259
  var rules = [...rulesParam];
319
260
  rules[editIndex] = preview;
320
261
  return this.getCachedFormatColumns(columns, rules);
321
262
  }
322
-
323
263
  return this.getCachedFormatColumns(columns, rulesParam);
324
264
  }));
325
-
326
265
  _defineProperty(this, "getModelRollupConfig", memoize((originalColumns, config, aggregationSettings) => IrisGridUtils.getModelRollupConfig(originalColumns, config, aggregationSettings)));
327
-
328
266
  _defineProperty(this, "getModelTotalsConfig", memoize((columns, config, aggregationSettings) => {
329
267
  var _config$columns$lengt, _config$columns, _aggregations$length;
330
-
331
268
  var {
332
269
  aggregations,
333
270
  showOnTop
334
- } = aggregationSettings; // If we've got rollups, then aggregations are applied as part of that...
335
-
271
+ } = aggregationSettings;
272
+ // If we've got rollups, then aggregations are applied as part of that...
336
273
  if (((_config$columns$lengt = config === null || config === void 0 ? void 0 : (_config$columns = config.columns) === null || _config$columns === void 0 ? void 0 : _config$columns.length) !== null && _config$columns$lengt !== void 0 ? _config$columns$lengt : 0) > 0 || ((_aggregations$length = aggregations === null || aggregations === void 0 ? void 0 : aggregations.length) !== null && _aggregations$length !== void 0 ? _aggregations$length : 0) === 0) {
337
274
  return null;
338
275
  }
339
-
340
276
  var operationMap = this.getOperationMap(columns, aggregations);
341
277
  var operationOrder = this.getOperationOrder(aggregations);
342
278
  return {
@@ -345,7 +281,6 @@ export class IrisGrid extends Component {
345
281
  showOnTop
346
282
  };
347
283
  }));
348
-
349
284
  _defineProperty(this, "getCachedStateOverride", memoize((hoverSelectColumn, isFilterBarShown, isSelectingColumn, loadingScrimProgress, quickFilters, advancedFilters, sorts, reverseType, rollupConfig, isMenuShown) => ({
350
285
  hoverSelectColumn,
351
286
  isFilterBarShown,
@@ -360,11 +295,9 @@ export class IrisGrid extends Component {
360
295
  }), {
361
296
  max: 1
362
297
  }));
363
-
364
298
  _defineProperty(this, "getCachedFilter", memoize((customFilters, quickFilters, advancedFilters, partitionFilters, searchFilter) => [...(customFilters !== null && customFilters !== void 0 ? customFilters : []), ...(partitionFilters !== null && partitionFilters !== void 0 ? partitionFilters : []), ...IrisGridUtils.getFiltersFromFilterMap(quickFilters), ...IrisGridUtils.getFiltersFromFilterMap(advancedFilters), ...(searchFilter !== undefined ? [searchFilter] : [])], {
365
299
  max: 1
366
300
  }));
367
-
368
301
  _defineProperty(this, "getCachedTheme", memoize((theme, isEditable, floatingRowCount) => _objectSpread(_objectSpread(_objectSpread({}, IrisGridTheme), theme), {}, {
369
302
  autoSelectRow: !isEditable,
370
303
  // We only show the row footers when we have floating rows for aggregations
@@ -372,46 +305,37 @@ export class IrisGrid extends Component {
372
305
  }), {
373
306
  max: 1
374
307
  }));
375
-
376
308
  _defineProperty(this, "getAlwaysFetchColumns", memoize((alwaysFetchColumns, columns, movedColumns, floatingLeftColumnCount, floatingRightColumnCount, draggingRange) => {
377
309
  var floatingColumns = [];
378
-
379
310
  for (var i = 0; i < floatingLeftColumnCount; i += 1) {
380
311
  floatingColumns.push(columns[GridUtils.getModelIndex(i, movedColumns)].name);
381
312
  }
382
-
383
313
  for (var _i = 0; _i < floatingRightColumnCount; _i += 1) {
384
314
  floatingColumns.push(columns[GridUtils.getModelIndex(columns.length - 1 - _i, movedColumns)].name);
385
315
  }
386
-
387
316
  if (draggingRange) {
388
317
  for (var _i2 = draggingRange[0]; _i2 <= draggingRange[1]; _i2 += 1) {
389
318
  floatingColumns.push(columns[GridUtils.getModelIndex(_i2, movedColumns)].name);
390
319
  }
391
320
  }
392
-
393
321
  var columnSet = new Set([...alwaysFetchColumns, ...floatingColumns]);
394
322
  return [...columnSet];
395
323
  }));
396
-
397
324
  _defineProperty(this, "updateSearchFilter", debounce((searchValue, selectedSearchColumns, columns, invertSearchColumns) => {
398
325
  var searchFilter = CrossColumnSearch.createSearchFilter(searchValue, selectedSearchColumns, columns, invertSearchColumns);
399
326
  this.setState({
400
327
  searchFilter
401
328
  });
402
329
  }, SET_FILTER_DEBOUNCE));
403
-
404
330
  _defineProperty(this, "handleConditionalFormatEditorUpdate", debounce(conditionalFormatPreview => {
405
331
  this.setState({
406
332
  conditionalFormatPreview
407
333
  });
408
334
  }, SET_CONDITIONAL_FORMAT_DEBOUNCE));
409
-
410
335
  _defineProperty(this, "handleDownloadProgressUpdate", throttle((tableDownloadProgress, tableDownloadEstimatedTime) => {
411
336
  var {
412
337
  tableDownloadStatus
413
338
  } = this.state;
414
-
415
339
  if (tableDownloadStatus === TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING) {
416
340
  this.setState({
417
341
  tableDownloadProgress,
@@ -419,18 +343,15 @@ export class IrisGrid extends Component {
419
343
  });
420
344
  }
421
345
  }, UPDATE_DOWNLOAD_THROTTLE));
422
-
423
346
  _defineProperty(this, "getOverflowButtonTooltip", memoize(overflowButtonTooltipProps => {
424
347
  if (overflowButtonTooltipProps == null) {
425
348
  return null;
426
349
  }
427
-
428
350
  var wrapperStyle = _objectSpread(_objectSpread({
429
351
  position: 'absolute'
430
352
  }, overflowButtonTooltipProps), {}, {
431
353
  pointerEvents: 'none'
432
354
  });
433
-
434
355
  var popperOptions = {
435
356
  placement: 'left',
436
357
  modifiers: {
@@ -447,7 +368,6 @@ export class IrisGrid extends Component {
447
368
  ref: this.handleTooltipRef
448
369
  }, "View full contents"));
449
370
  }));
450
-
451
371
  this.handleAdvancedFilterChange = this.handleAdvancedFilterChange.bind(this);
452
372
  this.handleAdvancedFilterSortChange = this.handleAdvancedFilterSortChange.bind(this);
453
373
  this.handleAdvancedFilterDone = this.handleAdvancedFilterDone.bind(this);
@@ -514,8 +434,9 @@ export class IrisGrid extends Component {
514
434
  this.globalColumnFormats = [];
515
435
  this.decimalFormatOptions = {};
516
436
  this.integerFormatOptions = {};
517
- this.truncateNumbersWithPound = false; // When the loading scrim started/when it should extend to the end of the screen.
437
+ this.truncateNumbersWithPound = false;
518
438
 
439
+ // When the loading scrim started/when it should extend to the end of the screen.
519
440
  this.renderer = new IrisGridRenderer();
520
441
  this.tableSaver = null;
521
442
  this.crossColumnRef = /*#__PURE__*/React.createRef();
@@ -538,7 +459,6 @@ export class IrisGrid extends Component {
538
459
  var {
539
460
  model
540
461
  } = this.props;
541
-
542
462
  if (isEditableGridModel(model) && model.isEditable && model.pendingDataMap.size > 0) {
543
463
  this.discardPending().catch(log.error);
544
464
  }
@@ -550,7 +470,6 @@ export class IrisGrid extends Component {
550
470
  var {
551
471
  model
552
472
  } = this.props;
553
-
554
473
  if (isEditableGridModel(model) && model.isEditable && model.pendingDataMap.size > 0 && model.pendingDataErrors.size === 0) {
555
474
  this.commitPending().catch(log.error);
556
475
  }
@@ -584,15 +503,11 @@ export class IrisGrid extends Component {
584
503
  frozenColumns
585
504
  } = props;
586
505
  var keyHandlers = [new ReverseKeyHandler(this), new ClearFilterKeyHandler(this)];
587
-
588
506
  if (canCopy) {
589
507
  keyHandlers.push(new CopyKeyHandler(this));
590
508
  }
591
-
592
509
  var mouseHandlers = [new IrisGridCellOverflowMouseHandler(this), new IrisGridColumnSelectMouseHandler(this), new IrisGridColumnTooltipMouseHandler(this), new IrisGridSortMouseHandler(this), new IrisGridFilterMouseHandler(this), new IrisGridContextMenuHandler(this), new IrisGridDataSelectMouseHandler(this), new PendingMouseHandler(this)];
593
-
594
510
  var _movedColumns = movedColumnsProp.length > 0 ? movedColumnsProp : _model.movedColumns;
595
-
596
511
  var movedRows = movedRowsProp.length > 0 ? movedRowsProp : _model.movedRows;
597
512
  var metricCalculator = new IrisGridMetricCalculator({
598
513
  userColumnWidths: new Map(userColumnWidths),
@@ -600,9 +515,7 @@ export class IrisGrid extends Component {
600
515
  movedColumns: _movedColumns
601
516
  });
602
517
  var searchColumns = _selectedSearchColumns !== null && _selectedSearchColumns !== void 0 ? _selectedSearchColumns : [];
603
-
604
518
  var _searchFilter = CrossColumnSearch.createSearchFilter(_searchValue, searchColumns, _model.columns, _invertSearchColumns);
605
-
606
519
  this.state = {
607
520
  isFilterBarShown: _isFilterBarShown,
608
521
  isSelectingPartition,
@@ -674,23 +587,19 @@ export class IrisGrid extends Component {
674
587
  gotoRowError: ''
675
588
  };
676
589
  }
677
-
678
590
  componentDidMount() {
679
591
  var {
680
592
  partitionColumn,
681
593
  model
682
594
  } = this.props;
683
595
  var column = partitionColumn !== null && partitionColumn !== void 0 ? partitionColumn : model.columns.find(c => c.isPartitionColumn);
684
-
685
596
  if (model.isFilterRequired && model.isValuesTableAvailable && column != null) {
686
597
  this.loadPartitionsTable(column);
687
598
  } else {
688
599
  this.initState();
689
600
  }
690
-
691
601
  this.startListening(model);
692
602
  }
693
-
694
603
  componentDidUpdate(prevProps) {
695
604
  var {
696
605
  inputFilters,
@@ -700,80 +609,63 @@ export class IrisGrid extends Component {
700
609
  customFilters,
701
610
  sorts
702
611
  } = this.props;
703
-
704
612
  if (model !== prevProps.model) {
705
613
  this.stopListening(prevProps.model);
706
614
  this.startListening(model);
707
615
  }
708
-
709
616
  var changedInputFilters = inputFilters !== prevProps.inputFilters ? inputFilters.filter(inputFilter => !prevProps.inputFilters.includes(inputFilter)) : [];
710
-
711
617
  if (changedInputFilters.length > 0) {
712
618
  var _advancedSettings$get;
713
-
714
619
  var {
715
620
  advancedSettings
716
621
  } = this.props;
717
622
  var replaceExistingFilters = (_advancedSettings$get = advancedSettings.get(AdvancedSettingsType.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS)) !== null && _advancedSettings$get !== void 0 ? _advancedSettings$get : false;
718
-
719
623
  if (replaceExistingFilters) {
720
624
  this.clearGridInputField();
721
625
  this.clearCrossColumSearch();
722
626
  }
723
-
724
627
  this.startLoading('Filtering...', true);
725
628
  this.applyInputFilters(changedInputFilters, replaceExistingFilters);
726
629
  }
727
-
728
630
  if (isSelectingColumn !== prevProps.isSelectingColumn) {
729
631
  this.resetColumnSelection();
730
632
  }
731
-
732
633
  if (settings !== prevProps.settings) {
733
634
  this.updateFormatterSettings(settings);
734
635
  }
735
-
736
636
  if (customFilters !== prevProps.customFilters) {
737
637
  this.startLoading('Filtering...', true);
738
638
  }
739
-
740
639
  if (sorts !== prevProps.sorts) {
741
640
  this.updateSorts(sorts);
742
641
  }
743
-
744
642
  var {
745
643
  loadingScrimStartTime,
746
644
  loadingScrimFinishTime
747
645
  } = this;
748
-
749
646
  if (loadingScrimStartTime != null && loadingScrimFinishTime != null) {
750
647
  window.requestAnimationFrame(() => {
751
648
  var now = Date.now();
752
649
  var currentTime = now - loadingScrimStartTime;
753
650
  var totalTime = loadingScrimFinishTime - loadingScrimStartTime;
754
651
  var loadingScrimProgress = Math.min(currentTime / totalTime, 1);
755
-
756
652
  if (loadingScrimFinishTime < now) {
757
653
  this.loadingScrimStartTime = undefined;
758
654
  this.loadingScrimFinishTime = undefined;
759
655
  }
760
-
761
656
  this.setState(state => {
762
657
  if (state.loadingScrimProgress == null) {
763
658
  log.debug2('Ignoring scrim update because loading cancelled.');
764
659
  return null;
765
660
  }
766
-
767
661
  return {
768
662
  loadingScrimProgress
769
663
  };
770
664
  });
771
665
  });
772
666
  }
773
-
774
667
  this.sendStateChange();
775
668
  }
776
-
777
669
  componentWillUnmount() {
778
670
  var {
779
671
  model
@@ -781,18 +673,14 @@ export class IrisGrid extends Component {
781
673
  this.stopListening(model);
782
674
  this.pending.cancel();
783
675
  this.updateSearchFilter.cancel();
784
-
785
676
  if (this.loadingTimer) {
786
677
  clearTimeout(this.loadingTimer);
787
678
  }
788
-
789
679
  this.handleDownloadProgressUpdate.cancel();
790
-
791
680
  if (this.animationFrame !== undefined) {
792
681
  cancelAnimationFrame(this.animationFrame);
793
682
  }
794
683
  }
795
-
796
684
  getValueForCell(columnIndex, rowIndex) {
797
685
  var rawValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
798
686
  var {
@@ -800,10 +688,8 @@ export class IrisGrid extends Component {
800
688
  } = this.props;
801
689
  var modelColumn = this.getModelColumn(columnIndex);
802
690
  var modelRow = this.getModelRow(rowIndex);
803
-
804
691
  if (rawValue && modelColumn != null && modelRow != null) {
805
692
  var _value = model.valueForCell(modelColumn, modelRow);
806
-
807
693
  if (TableUtils.isDateType(model.columns[modelColumn].type)) {
808
694
  // The returned value is just a long value, we should return the value formatted as a full date string
809
695
  var {
@@ -811,21 +697,16 @@ export class IrisGrid extends Component {
811
697
  } = model;
812
698
  return dh.i18n.DateTimeFormat.format(UNFORMATTED_DATE_PATTERN, _value, dh.i18n.TimeZone.getTimeZone(formatter.timeZone));
813
699
  }
814
-
815
700
  return _value;
816
701
  }
817
-
818
702
  if (rawValue) {
819
703
  return null;
820
704
  }
821
-
822
705
  if (modelColumn != null && modelRow != null) {
823
706
  return model.textForCell(modelColumn, modelRow);
824
707
  }
825
-
826
708
  return '';
827
709
  }
828
-
829
710
  getModelColumn(columnIndex) {
830
711
  var {
831
712
  metrics
@@ -834,14 +715,11 @@ export class IrisGrid extends Component {
834
715
  var {
835
716
  modelColumns
836
717
  } = metrics;
837
-
838
718
  if (modelColumns == null) {
839
719
  return null;
840
720
  }
841
-
842
721
  return columnIndex != null ? modelColumns.get(columnIndex) : null;
843
722
  }
844
-
845
723
  getModelRow(rowIndex) {
846
724
  var {
847
725
  metrics
@@ -850,38 +728,32 @@ export class IrisGrid extends Component {
850
728
  var {
851
729
  modelRows
852
730
  } = metrics;
853
-
854
731
  if (modelRows == null) {
855
732
  return null;
856
733
  }
857
-
858
734
  return rowIndex != null ? modelRows.get(rowIndex) : null;
859
735
  }
860
-
861
736
  getTheme() {
862
737
  var _ref5;
863
-
864
738
  var {
865
739
  model,
866
740
  theme
867
741
  } = this.props;
868
742
  return this.getCachedTheme(theme, (_ref5 = isEditableGridModel(model) && model.isEditable) !== null && _ref5 !== void 0 ? _ref5 : false, model.floatingTopRowCount + model.floatingBottomRowCount);
869
743
  }
870
-
871
744
  getVisibleColumn(modelIndex) {
872
745
  var {
873
746
  movedColumns
874
747
  } = this.state;
875
748
  return GridUtils.getVisibleIndex(modelIndex, movedColumns);
876
749
  }
750
+
877
751
  /**
878
752
  * Applies the provided input filters as quick filters,
879
753
  * and clears any existing quickFilters or advancedFilters on that column
880
754
  * @param inputFilters Array of input filters to apply
881
755
  * @param replaceExisting If true, new filters will replace the existing ones, instead of merging
882
756
  */
883
-
884
-
885
757
  applyInputFilters(inputFilters) {
886
758
  var replaceExisting = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
887
759
  var {
@@ -907,7 +779,6 @@ export class IrisGrid extends Component {
907
779
  } = _ref7;
908
780
  return columnName === name && columnType === type;
909
781
  });
910
-
911
782
  if (modelIndex >= 0) {
912
783
  isChanged = newAdvancedFilters.delete(modelIndex) || isChanged;
913
784
  isChanged = this.applyQuickFilter(modelIndex, value, newQuickFilters) || isChanged;
@@ -915,7 +786,6 @@ export class IrisGrid extends Component {
915
786
  log.error('Unable to find column for inputFilter', name, type, value);
916
787
  }
917
788
  });
918
-
919
789
  if (isChanged) {
920
790
  this.setState({
921
791
  quickFilters: newQuickFilters,
@@ -923,6 +793,7 @@ export class IrisGrid extends Component {
923
793
  });
924
794
  }
925
795
  }
796
+
926
797
  /**
927
798
  * Applies a quick filter
928
799
  * @param modelIndex The index in the model of the column to set
@@ -930,8 +801,6 @@ export class IrisGrid extends Component {
930
801
  * @param quickFilters The quick filters map
931
802
  * @returns True if the filters have changed because this quick filter was applied
932
803
  */
933
-
934
-
935
804
  applyQuickFilter(modelIndex, value, quickFilters) {
936
805
  var {
937
806
  model
@@ -940,37 +809,30 @@ export class IrisGrid extends Component {
940
809
  formatter
941
810
  } = model;
942
811
  var column = model.columns[modelIndex];
943
-
944
812
  if (value != null && "".concat(value).trim().length > 0) {
945
813
  var quickFilter = quickFilters.get(modelIndex);
946
-
947
814
  if (quickFilter != null) {
948
815
  var {
949
816
  text
950
817
  } = quickFilter;
951
-
952
818
  if (text === value) {
953
819
  log.debug2('Ignoring change to existing filter');
954
820
  return false;
955
821
  }
956
822
  }
957
-
958
823
  quickFilters.set(modelIndex, {
959
824
  text: value,
960
825
  filter: IrisGrid.makeQuickFilter(column, value, formatter.timeZone)
961
826
  });
962
827
  return true;
963
828
  }
964
-
965
829
  return quickFilters.delete(modelIndex);
966
830
  }
967
-
968
831
  setAdvancedFilterMap(advancedFilters) {
969
832
  this.setState({
970
833
  advancedFilters
971
834
  });
972
835
  }
973
-
974
836
  setAdvancedFilter(modelIndex, filter, options) {
975
837
  log.debug('Setting advanced filter', modelIndex, filter);
976
838
  this.startLoading('Filtering...', true);
@@ -979,7 +841,6 @@ export class IrisGrid extends Component {
979
841
  advancedFilters
980
842
  } = _ref8;
981
843
  var newAdvancedFilters = new Map(advancedFilters);
982
-
983
844
  if (filter == null) {
984
845
  newAdvancedFilters.delete(modelIndex);
985
846
  } else {
@@ -988,20 +849,18 @@ export class IrisGrid extends Component {
988
849
  options
989
850
  });
990
851
  }
991
-
992
852
  return {
993
853
  advancedFilters: newAdvancedFilters
994
854
  };
995
855
  });
996
856
  }
857
+
997
858
  /**
998
859
  * Sets a quick filter against the provided column
999
860
  * @param modelIndex The index in the model for the column this filter is applied to
1000
861
  * @param filter A filter to apply to the column, or null if there was an error
1001
862
  * @param text The original text the filter was created with
1002
863
  */
1003
-
1004
-
1005
864
  setQuickFilter(modelIndex, filter, text) {
1006
865
  log.debug('Setting quick filter', modelIndex, filter, text);
1007
866
  this.startLoading('Filtering...', true);
@@ -1019,54 +878,46 @@ export class IrisGrid extends Component {
1019
878
  };
1020
879
  });
1021
880
  }
881
+
1022
882
  /**
1023
883
  * Set grid filters based on the filter map
1024
884
  * @param filterMap Filter map
1025
885
  */
1026
-
1027
-
1028
886
  setFilterMap(filterMap) {
1029
887
  var _advancedSettings$get2;
1030
-
1031
888
  log.debug('setFilterMap', filterMap);
1032
889
  var {
1033
890
  advancedSettings
1034
891
  } = this.props;
1035
892
  var clearFiltersOnLinkerFilterUpdate = (_advancedSettings$get2 = advancedSettings.get(AdvancedSettingsType.LINK_CHANGE_CLEARS_ALL_FILTERS)) !== null && _advancedSettings$get2 !== void 0 ? _advancedSettings$get2 : false;
1036
-
1037
893
  if (clearFiltersOnLinkerFilterUpdate) {
1038
894
  this.clearAllFilters();
1039
895
  }
1040
-
1041
896
  var {
1042
897
  model
1043
898
  } = this.props;
1044
899
  filterMap.forEach((_ref10, columnName) => {
1045
900
  var {
1046
901
  columnType,
1047
- text,
1048
- value
902
+ filterList
1049
903
  } = _ref10;
1050
904
  var column = model.columns.find(c => c.name === columnName && c.type === columnType);
1051
-
1052
905
  if (column == null) {
1053
906
  return;
1054
907
  }
1055
-
1056
908
  var columnIndex = model.getColumnIndexByName(column.name);
1057
909
  assertNotNull(columnIndex);
1058
-
1059
- if (value === undefined) {
910
+ var combinedText = IrisGridUtils.combineFiltersFromList(columnType, filterList);
911
+ if (combinedText.length === 0) {
1060
912
  this.removeQuickFilter(columnIndex);
1061
- } else if (value === null) {
1062
- this.setQuickFilter(columnIndex, column.filter().isNull(), '=null');
1063
913
  } else {
1064
- var filterValue = TableUtils.isTextType(columnType) ? dh.FilterValue.ofString(value) : dh.FilterValue.ofNumber(value);
1065
- this.setQuickFilter(columnIndex, column.filter().eq(filterValue), "".concat(text));
914
+ var {
915
+ formatter
916
+ } = model;
917
+ this.setQuickFilter(columnIndex, IrisGrid.makeQuickFilter(column, combinedText, formatter.timeZone), "".concat(combinedText));
1066
918
  }
1067
919
  });
1068
920
  }
1069
-
1070
921
  removeColumnFilter(modelColumn) {
1071
922
  this.startLoading('Filtering...', true);
1072
923
  this.setState(_ref11 => {
@@ -1084,7 +935,6 @@ export class IrisGrid extends Component {
1084
935
  };
1085
936
  });
1086
937
  }
1087
-
1088
938
  removeQuickFilter(modelColumn) {
1089
939
  this.startLoading('Clearing Filter...', true);
1090
940
  this.setState(_ref12 => {
@@ -1098,7 +948,6 @@ export class IrisGrid extends Component {
1098
948
  };
1099
949
  });
1100
950
  }
1101
-
1102
951
  clearAllFilters() {
1103
952
  log.debug('Clearing all filters');
1104
953
  var {
@@ -1106,12 +955,11 @@ export class IrisGrid extends Component {
1106
955
  quickFilters,
1107
956
  searchFilter
1108
957
  } = this.state;
1109
-
1110
958
  if (quickFilters.size === 0 && advancedFilters.size === 0 && searchFilter === null) {
1111
959
  return;
1112
- } // if there is an active quick filter input field, reset it as well
1113
-
960
+ }
1114
961
 
962
+ // if there is an active quick filter input field, reset it as well
1115
963
  this.clearGridInputField();
1116
964
  this.startLoading('Clearing Filters...', true);
1117
965
  this.setState({
@@ -1121,7 +969,6 @@ export class IrisGrid extends Component {
1121
969
  searchFilter: undefined
1122
970
  });
1123
971
  }
1124
-
1125
972
  clearCrossColumSearch() {
1126
973
  log.debug('Clearing cross-column search');
1127
974
  this.setState({
@@ -1129,17 +976,15 @@ export class IrisGrid extends Component {
1129
976
  searchFilter: undefined
1130
977
  });
1131
978
  }
1132
-
1133
979
  clearGridInputField() {
1134
980
  if (this.filterInputRef.current != null) {
1135
981
  this.filterInputRef.current.setValue('');
1136
982
  }
1137
983
  }
984
+
1138
985
  /**
1139
986
  * Rebuilds all the current filters. Necessary if something like the time zone has changed.
1140
987
  */
1141
-
1142
-
1143
988
  rebuildFilters() {
1144
989
  log.debug('Rebuilding filters');
1145
990
  var {
@@ -1182,7 +1027,6 @@ export class IrisGrid extends Component {
1182
1027
  advancedFilters: newAdvancedFilters
1183
1028
  });
1184
1029
  }
1185
-
1186
1030
  setFilters(_ref13) {
1187
1031
  var {
1188
1032
  quickFilters,
@@ -1193,10 +1037,8 @@ export class IrisGrid extends Component {
1193
1037
  advancedFilters
1194
1038
  });
1195
1039
  }
1196
-
1197
1040
  updateFormatterSettings(settings) {
1198
1041
  var _settings$defaultDeci, _settings$defaultInte, _settings$truncateNum;
1199
-
1200
1042
  var forceUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
1201
1043
  var globalColumnFormats = FormatterUtils.getColumnFormats(settings);
1202
1044
  var dateTimeFormatterOptions = FormatterUtils.getDateTimeFormatterOptions(settings);
@@ -1208,7 +1050,6 @@ export class IrisGrid extends Component {
1208
1050
  var isDecimalFormattingChanged = !deepEqual(this.decimalFormatOptions, settings === null || settings === void 0 ? void 0 : settings.defaultDecimalFormatOptions);
1209
1051
  var isIntegerFormattingChanged = !deepEqual(this.integerFormatOptions, defaultIntegerFormatOptions);
1210
1052
  var isTruncateNumbersChanged = this.truncateNumbersWithPound !== truncateNumbersWithPound;
1211
-
1212
1053
  if (isColumnFormatChanged || isDateFormattingChanged || isDecimalFormattingChanged || isIntegerFormattingChanged || isTruncateNumbersChanged) {
1213
1054
  this.globalColumnFormats = globalColumnFormats;
1214
1055
  this.dateTimeFormatterOptions = dateTimeFormatterOptions;
@@ -1216,25 +1057,20 @@ export class IrisGrid extends Component {
1216
1057
  this.integerFormatOptions = defaultIntegerFormatOptions;
1217
1058
  this.truncateNumbersWithPound = truncateNumbersWithPound;
1218
1059
  this.updateFormatter({}, forceUpdate);
1219
-
1220
1060
  if (isDateFormattingChanged && forceUpdate) {
1221
1061
  this.rebuildFilters();
1222
1062
  }
1223
1063
  }
1224
1064
  }
1225
-
1226
1065
  updateFormatter(updatedFormats) {
1227
1066
  var _this$globalColumnFor;
1228
-
1229
1067
  var forceUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
1230
1068
  var {
1231
1069
  customColumnFormatMap
1232
1070
  } = this.state;
1233
-
1234
1071
  var update = _objectSpread({
1235
1072
  customColumnFormatMap
1236
1073
  }, updatedFormats);
1237
-
1238
1074
  var mergedColumnFormats = [...((_this$globalColumnFor = this.globalColumnFormats) !== null && _this$globalColumnFor !== void 0 ? _this$globalColumnFor : []), ...update.customColumnFormatMap.values()];
1239
1075
  var formatter = new Formatter(mergedColumnFormats, this.dateTimeFormatterOptions, this.decimalFormatOptions, this.integerFormatOptions, this.truncateNumbersWithPound);
1240
1076
  log.debug('updateFormatter', this.globalColumnFormats, mergedColumnFormats);
@@ -1246,14 +1082,12 @@ export class IrisGrid extends Component {
1246
1082
  }
1247
1083
  });
1248
1084
  }
1249
-
1250
1085
  initFormatter() {
1251
1086
  var {
1252
1087
  settings
1253
1088
  } = this.props;
1254
1089
  this.updateFormatterSettings(settings);
1255
1090
  }
1256
-
1257
1091
  initState() {
1258
1092
  var {
1259
1093
  applyInputFiltersOnInit,
@@ -1268,14 +1102,12 @@ export class IrisGrid extends Component {
1268
1102
  } = this.props;
1269
1103
  var searchColumns = selectedSearchColumns !== null && selectedSearchColumns !== void 0 ? selectedSearchColumns : [];
1270
1104
  var searchFilter = CrossColumnSearch.createSearchFilter(searchValue, searchColumns, model.columns, invertSearchColumns);
1271
-
1272
1105
  if (applyInputFiltersOnInit) {
1273
1106
  // There may be more than one input filter on the same column with value === '' applied last
1274
1107
  // We don't want to skip it here, so only excluding the ones that were never applied (null)
1275
1108
  var inputFiltersWithValues = inputFilters.filter(inputFilter => inputFilter.value != null);
1276
1109
  this.applyInputFilters(inputFiltersWithValues);
1277
1110
  }
1278
-
1279
1111
  this.setState({
1280
1112
  sorts,
1281
1113
  reverseType,
@@ -1285,49 +1117,36 @@ export class IrisGrid extends Component {
1285
1117
  });
1286
1118
  this.initFormatter();
1287
1119
  }
1288
-
1289
1120
  loadPartitionsTable(partitionColumn) {
1290
1121
  var _this = this;
1291
-
1292
1122
  return _asyncToGenerator(function* () {
1293
1123
  var {
1294
1124
  model
1295
1125
  } = _this.props;
1296
-
1297
1126
  _this.setState({
1298
1127
  isSelectingPartition: true
1299
1128
  });
1300
-
1301
1129
  try {
1302
1130
  var partitionTable = yield _this.pending.add(model.valuesTable(partitionColumn), resolved => resolved.close());
1303
1131
  var _column = partitionTable.columns[0];
1304
-
1305
1132
  var sort = _column.sort().desc();
1306
-
1307
1133
  partitionTable.applySort([sort]);
1308
1134
  partitionTable.setViewport(0, 0, [_column]);
1309
1135
  var data = yield _this.pending.add(partitionTable.getViewportData());
1310
-
1311
1136
  if (data.rows.length > 0) {
1312
1137
  var row = data.rows[0];
1313
-
1314
1138
  var _value2 = row.get(_column);
1315
-
1316
1139
  _this.updatePartition(_value2, partitionColumn);
1317
-
1318
1140
  _this.setState({
1319
1141
  isSelectingPartition: true
1320
1142
  });
1321
1143
  } else {
1322
1144
  log.info('Table does not have any data, just fetching all');
1323
-
1324
1145
  _this.setState({
1325
1146
  isSelectingPartition: false
1326
1147
  });
1327
-
1328
1148
  _this.handlePartitionFetchAll();
1329
1149
  }
1330
-
1331
1150
  _this.setState({
1332
1151
  partitionTable,
1333
1152
  partitionColumn
@@ -1339,7 +1158,6 @@ export class IrisGrid extends Component {
1339
1158
  }
1340
1159
  })();
1341
1160
  }
1342
-
1343
1161
  updatePartition(partition, partitionColumn) {
1344
1162
  var partitionFilter = partitionColumn.filter().eq(dh.FilterValue.ofString(partition));
1345
1163
  var partitionFilters = [partitionFilter];
@@ -1348,21 +1166,19 @@ export class IrisGrid extends Component {
1348
1166
  partitionFilters
1349
1167
  });
1350
1168
  }
1351
-
1352
1169
  copyCell(columnIndex, rowIndex) {
1353
1170
  var rawValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
1354
1171
  var {
1355
1172
  canCopy
1356
1173
  } = this.props;
1357
-
1358
1174
  if (canCopy) {
1359
1175
  var _value3 = String(this.getValueForCell(columnIndex, rowIndex, rawValue));
1360
-
1361
1176
  copyToClipboard(_value3).catch(e => log.error('Unable to copy cell', e));
1362
1177
  } else {
1363
1178
  log.error('Attempted to copyCell for user without copy permission.');
1364
1179
  }
1365
1180
  }
1181
+
1366
1182
  /**
1367
1183
  * Copy the provided ranges to the clipboard
1368
1184
  * @paramranges The ranges to copy
@@ -1370,8 +1186,6 @@ export class IrisGrid extends Component {
1370
1186
  * @param formatValues Whether to format values or not
1371
1187
  * @param error Error message if one occurred
1372
1188
  */
1373
-
1374
-
1375
1189
  copyRanges(ranges) {
1376
1190
  var includeHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1377
1191
  var formatValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
@@ -1385,7 +1199,6 @@ export class IrisGrid extends Component {
1385
1199
  movedColumns
1386
1200
  } = this.state;
1387
1201
  var userColumnWidths = metricCalculator.getUserColumnWidths();
1388
-
1389
1202
  if (canCopy) {
1390
1203
  var copyOperation = {
1391
1204
  ranges: GridRange.boundedRanges(ranges, model.columnCount, model.rowCount),
@@ -1402,24 +1215,20 @@ export class IrisGrid extends Component {
1402
1215
  log.error('Attempted copyRanges for user without copy permission.');
1403
1216
  }
1404
1217
  }
1405
-
1406
1218
  startLoading(loadingText) {
1407
1219
  var resetRanges = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1408
1220
  this.setState({
1409
1221
  loadingText
1410
1222
  });
1411
1223
  var theme = this.getTheme();
1412
-
1413
1224
  if (resetRanges && this.grid) {
1414
1225
  this.grid.clearSelectedRanges();
1415
1226
  this.grid.setViewState({
1416
1227
  top: 0
1417
1228
  }, true);
1418
1229
  }
1419
-
1420
1230
  if (this.loadingScrimStartTime == null) {
1421
1231
  var _this$gridWrapper$get, _this$gridWrapper;
1422
-
1423
1232
  var {
1424
1233
  minScrimTransitionTime,
1425
1234
  maxScrimTransitionTime
@@ -1440,7 +1249,6 @@ export class IrisGrid extends Component {
1440
1249
  }, IrisGrid.loadingSpinnerDelay);
1441
1250
  }
1442
1251
  }
1443
-
1444
1252
  stopLoading() {
1445
1253
  this.loadingScrimStartTime = undefined;
1446
1254
  this.loadingScrimFinishTime = undefined;
@@ -1449,17 +1257,15 @@ export class IrisGrid extends Component {
1449
1257
  loadingScrimProgress: null,
1450
1258
  loadingSpinnerShown: false
1451
1259
  });
1452
-
1453
1260
  if (this.loadingTimer != null) {
1454
1261
  clearTimeout(this.loadingTimer);
1455
1262
  this.loadingTimer = undefined;
1456
1263
  }
1457
1264
  }
1265
+
1458
1266
  /**
1459
1267
  * Rolls back the table state to the last known safe state, or if that's not available then clears all sorts/filters/custom columns.
1460
1268
  */
1461
-
1462
-
1463
1269
  rollback() {
1464
1270
  if (this.lastLoadedConfig) {
1465
1271
  log.debug('loading last loading config', this.lastLoadedConfig);
@@ -1500,36 +1306,30 @@ export class IrisGrid extends Component {
1500
1306
  });
1501
1307
  }
1502
1308
  }
1309
+
1503
1310
  /**
1504
1311
  * Check if we can rollback the current state to a safe state.
1505
1312
  * @returns true if there's a previously known safe state or if some of the current state isn't empty.
1506
1313
  */
1507
-
1508
-
1509
1314
  canRollback() {
1510
1315
  return this.lastLoadedConfig != null || !isEmptyConfig(this.state);
1511
1316
  }
1512
-
1513
1317
  startListening(model) {
1514
1318
  model.addEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);
1515
1319
  model.addEventListener(IrisGridModel.EVENT.REQUEST_FAILED, this.handleRequestFailed);
1516
1320
  model.addEventListener(IrisGridModel.EVENT.COLUMNS_CHANGED, this.handleCustomColumnsChanged);
1517
1321
  model.addEventListener(IrisGridModel.EVENT.PENDING_DATA_UPDATED, this.handlePendingDataUpdated);
1518
1322
  }
1519
-
1520
1323
  stopListening(model) {
1521
1324
  model.removeEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);
1522
1325
  model.removeEventListener(IrisGridModel.EVENT.REQUEST_FAILED, this.handleRequestFailed);
1523
1326
  model.removeEventListener(IrisGridModel.EVENT.COLUMNS_CHANGED, this.handleCustomColumnsChanged);
1524
1327
  model.removeEventListener(IrisGridModel.EVENT.PENDING_DATA_UPDATED, this.handlePendingDataUpdated);
1525
1328
  }
1526
-
1527
1329
  focus() {
1528
1330
  var _this$grid;
1529
-
1530
1331
  (_this$grid = this.grid) === null || _this$grid === void 0 ? void 0 : _this$grid.focus();
1531
1332
  }
1532
-
1533
1333
  focusFilterBar(column) {
1534
1334
  var {
1535
1335
  movedColumns
@@ -1541,14 +1341,12 @@ export class IrisGrid extends Component {
1541
1341
  columnCount
1542
1342
  } = model;
1543
1343
  var modelColumn = GridUtils.getModelIndex(column, movedColumns);
1544
-
1545
1344
  if (column == null || column < 0 || columnCount <= column || !model.isFilterable(modelColumn)) {
1546
1345
  this.setState({
1547
1346
  focusedFilterBarColumn: null
1548
1347
  });
1549
1348
  return;
1550
1349
  }
1551
-
1552
1350
  var {
1553
1351
  metricCalculator,
1554
1352
  metrics
@@ -1559,16 +1357,13 @@ export class IrisGrid extends Component {
1559
1357
  rightVisible,
1560
1358
  lastLeft
1561
1359
  } = metrics;
1562
-
1563
1360
  if (column < left) {
1564
1361
  var _this$grid2;
1565
-
1566
1362
  (_this$grid2 = this.grid) === null || _this$grid2 === void 0 ? void 0 : _this$grid2.setViewState({
1567
1363
  left: column
1568
1364
  }, true);
1569
1365
  } else if (rightVisible < column) {
1570
1366
  var _this$grid3, _this$grid4;
1571
-
1572
1367
  var metricState = (_this$grid3 = this.grid) === null || _this$grid3 === void 0 ? void 0 : _this$grid3.getMetricState();
1573
1368
  assertNotNull(metricState);
1574
1369
  var newLeft = metricCalculator.getLastLeft(metricState, column, metricCalculator.getVisibleWidth(metricState));
@@ -1577,17 +1372,14 @@ export class IrisGrid extends Component {
1577
1372
  leftOffset: 0
1578
1373
  }, true);
1579
1374
  }
1580
-
1581
1375
  this.lastFocusedFilterBarColumn = column;
1582
1376
  this.setState({
1583
1377
  focusedFilterBarColumn: column,
1584
1378
  isFilterBarShown: true
1585
1379
  });
1586
1380
  }
1587
-
1588
1381
  hideColumnByVisibleIndex(columnVisibleIndex) {
1589
1382
  var _this$grid5;
1590
-
1591
1383
  var {
1592
1384
  metricCalculator,
1593
1385
  movedColumns
@@ -1595,7 +1387,6 @@ export class IrisGrid extends Component {
1595
1387
  metricCalculator.setColumnWidth(GridUtils.getModelIndex(columnVisibleIndex, movedColumns), 0);
1596
1388
  (_this$grid5 = this.grid) === null || _this$grid5 === void 0 ? void 0 : _this$grid5.forceUpdate();
1597
1389
  }
1598
-
1599
1390
  freezeColumnByColumnName(columnName) {
1600
1391
  var {
1601
1392
  frozenColumns,
@@ -1616,7 +1407,6 @@ export class IrisGrid extends Component {
1616
1407
  movedColumns: newMovedColumns
1617
1408
  });
1618
1409
  }
1619
-
1620
1410
  unFreezeColumnByColumnName(columnName) {
1621
1411
  var {
1622
1412
  frozenColumns,
@@ -1630,22 +1420,20 @@ export class IrisGrid extends Component {
1630
1420
  allFrozenColumns.delete(columnName);
1631
1421
  var modelIndex = model.getColumnIndexByName(columnName);
1632
1422
  assertNotNull(modelIndex);
1633
- var visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns); // Move to after remaining frozen columns and front columns
1423
+ var visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);
1634
1424
 
1425
+ // Move to after remaining frozen columns and front columns
1635
1426
  var newMovedColumns = GridUtils.moveItem(visibleIndex, allFrozenColumns.size + model.frontColumns.length, movedColumns);
1636
1427
  this.setState({
1637
1428
  frozenColumns: [...allFrozenColumns],
1638
1429
  movedColumns: newMovedColumns
1639
1430
  });
1640
1431
  }
1641
-
1642
1432
  handleColumnVisibilityChanged(modelIndexes, visibilityOption) {
1643
1433
  var _this$grid6;
1644
-
1645
1434
  var {
1646
1435
  metricCalculator
1647
1436
  } = this.state;
1648
-
1649
1437
  if (visibilityOption === VisibilityOrderingBuilder.VISIBILITY_OPTIONS.SHOW) {
1650
1438
  modelIndexes.forEach(modelIndex => {
1651
1439
  metricCalculator.resetColumnWidth(modelIndex);
@@ -1655,10 +1443,8 @@ export class IrisGrid extends Component {
1655
1443
  metricCalculator.setColumnWidth(modelIndex, 0);
1656
1444
  });
1657
1445
  }
1658
-
1659
1446
  (_this$grid6 = this.grid) === null || _this$grid6 === void 0 ? void 0 : _this$grid6.forceUpdate();
1660
1447
  }
1661
-
1662
1448
  handleCrossColumnSearch(searchValue, selectedSearchColumns, invertSearchColumns) {
1663
1449
  var {
1664
1450
  model
@@ -1670,29 +1456,23 @@ export class IrisGrid extends Component {
1670
1456
  invertSearchColumns
1671
1457
  });
1672
1458
  }
1673
-
1674
1459
  handleAnimationLoop() {
1675
1460
  var _this$grid7, _this$grid8;
1676
-
1677
1461
  (_this$grid7 = this.grid) === null || _this$grid7 === void 0 ? void 0 : _this$grid7.updateCanvasScale();
1678
1462
  (_this$grid8 = this.grid) === null || _this$grid8 === void 0 ? void 0 : _this$grid8.updateCanvas();
1679
-
1680
1463
  if (this.isAnimating) {
1681
1464
  this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);
1682
1465
  }
1683
1466
  }
1684
-
1685
1467
  handleAnimationStart() {
1686
1468
  log.debug2('handleAnimationStart');
1687
1469
  this.isAnimating = true;
1688
1470
  this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);
1689
1471
  }
1690
-
1691
1472
  handleAnimationEnd() {
1692
1473
  log.debug2('handleAnimationEnd');
1693
1474
  this.isAnimating = false;
1694
1475
  }
1695
-
1696
1476
  handlePartitionAppend(value) {
1697
1477
  var {
1698
1478
  onPartitionAppend
@@ -1700,61 +1480,56 @@ export class IrisGrid extends Component {
1700
1480
  var {
1701
1481
  partitionColumn
1702
1482
  } = this.state;
1483
+ if (!partitionColumn) {
1484
+ return;
1485
+ }
1703
1486
  onPartitionAppend(partitionColumn, value);
1704
1487
  }
1705
-
1706
1488
  handlePartitionChange(partition) {
1707
1489
  var {
1708
1490
  partitionColumn
1709
1491
  } = this.state;
1492
+ if (!partitionColumn) {
1493
+ return;
1494
+ }
1710
1495
  this.updatePartition(partition, partitionColumn);
1711
1496
  }
1712
-
1713
1497
  handlePartitionFetchAll() {
1714
1498
  this.setState({
1715
1499
  partitionFilters: [],
1716
1500
  isSelectingPartition: false
1717
1501
  });
1718
1502
  }
1719
-
1720
1503
  handlePartitionDone() {
1721
1504
  this.setState({
1722
1505
  isSelectingPartition: false
1723
1506
  });
1724
1507
  }
1725
-
1726
1508
  handleTableLoadError(error) {
1727
1509
  if (PromiseUtils.isCanceled(error)) {
1728
1510
  return;
1729
1511
  }
1730
-
1731
1512
  log.error(error);
1732
1513
  var {
1733
1514
  onError
1734
1515
  } = this.props;
1735
1516
  onError(error);
1736
1517
  }
1737
-
1738
1518
  showAllColumns() {
1739
1519
  var _this$grid9;
1740
-
1741
1520
  var {
1742
1521
  metricCalculator
1743
1522
  } = this.state;
1744
1523
  var userColumnWidths = metricCalculator.getUserColumnWidths();
1745
1524
  var entries = [...userColumnWidths.entries()];
1746
-
1747
1525
  for (var i = 0; i < entries.length; i += 1) {
1748
1526
  var [modelIndex, columnWidth] = entries[i];
1749
-
1750
1527
  if (columnWidth === 0) {
1751
1528
  metricCalculator.resetColumnWidth(modelIndex);
1752
1529
  }
1753
1530
  }
1754
-
1755
1531
  (_this$grid9 = this.grid) === null || _this$grid9 === void 0 ? void 0 : _this$grid9.forceUpdate();
1756
1532
  }
1757
-
1758
1533
  toggleSort(columnIndex, addToExisting) {
1759
1534
  log.info('Toggling sort for column', columnIndex);
1760
1535
  var {
@@ -1768,20 +1543,16 @@ export class IrisGrid extends Component {
1768
1543
  var sorts = TableUtils.toggleSortForColumn(currentSorts, model.columns, modelColumn, addToExisting);
1769
1544
  this.updateSorts(sorts);
1770
1545
  }
1771
-
1772
1546
  updateSorts(sorts) {
1773
1547
  var _this$grid10;
1774
-
1775
1548
  this.startLoading('Sorting...');
1776
1549
  this.setState({
1777
1550
  sorts
1778
1551
  });
1779
1552
  (_this$grid10 = this.grid) === null || _this$grid10 === void 0 ? void 0 : _this$grid10.forceUpdate();
1780
1553
  }
1781
-
1782
1554
  sortColumn(modelColumn) {
1783
1555
  var _this$grid11;
1784
-
1785
1556
  var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : TableUtils.sortDirection.none;
1786
1557
  var isAbs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
1787
1558
  var addToExisting = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
@@ -1796,24 +1567,20 @@ export class IrisGrid extends Component {
1796
1567
  });
1797
1568
  (_this$grid11 = this.grid) === null || _this$grid11 === void 0 ? void 0 : _this$grid11.forceUpdate();
1798
1569
  }
1799
-
1800
1570
  reverse(reverseType) {
1801
1571
  var _this$grid12;
1802
-
1803
1572
  this.startLoading('Reversing...');
1804
1573
  this.setState({
1805
1574
  reverseType
1806
1575
  });
1807
1576
  (_this$grid12 = this.grid) === null || _this$grid12 === void 0 ? void 0 : _this$grid12.forceUpdate();
1808
1577
  }
1809
-
1810
1578
  isReversible() {
1811
1579
  var {
1812
1580
  model
1813
1581
  } = this.props;
1814
1582
  return model.isReversible;
1815
1583
  }
1816
-
1817
1584
  toggleFilterBar() {
1818
1585
  var focusIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.lastFocusedFilterBarColumn;
1819
1586
  var {
@@ -1823,7 +1590,6 @@ export class IrisGrid extends Component {
1823
1590
  this.setState({
1824
1591
  isFilterBarShown
1825
1592
  });
1826
-
1827
1593
  if (isFilterBarShown) {
1828
1594
  if (focusIndex != null) {
1829
1595
  this.focusFilterBar(focusIndex);
@@ -1835,82 +1601,64 @@ export class IrisGrid extends Component {
1835
1601
  var {
1836
1602
  columnCount
1837
1603
  } = _model2;
1838
-
1839
1604
  for (var i = 0; i < columnCount; i += 1) {
1840
1605
  var modelColumn = this.getModelColumn(i);
1841
-
1842
1606
  if (modelColumn != null) {
1843
1607
  var _column2 = _model2.columns[modelColumn];
1844
-
1845
1608
  if (_column2 != null && TableUtils.isTextType(_column2.type)) {
1846
1609
  columnIndex = i;
1847
1610
  break;
1848
1611
  }
1849
1612
  }
1850
1613
  }
1851
-
1852
1614
  this.focusFilterBar(columnIndex);
1853
1615
  }
1854
1616
  } else {
1855
1617
  var _this$grid13;
1856
-
1857
1618
  (_this$grid13 = this.grid) === null || _this$grid13 === void 0 ? void 0 : _this$grid13.focus();
1858
1619
  }
1859
1620
  }
1860
-
1861
1621
  isTableSearchAvailable() {
1862
1622
  var _model$layoutHints, _dh$SearchDisplayMode, _dh$SearchDisplayMode2;
1863
-
1864
1623
  var {
1865
1624
  model,
1866
1625
  canToggleSearch
1867
1626
  } = this.props;
1868
1627
  var searchDisplayMode = model === null || model === void 0 ? void 0 : (_model$layoutHints = model.layoutHints) === null || _model$layoutHints === void 0 ? void 0 : _model$layoutHints.searchDisplayMode;
1869
-
1870
1628
  if (searchDisplayMode === ((_dh$SearchDisplayMode = dh.SearchDisplayMode) === null || _dh$SearchDisplayMode === void 0 ? void 0 : _dh$SearchDisplayMode.SEARCH_DISPLAY_HIDE)) {
1871
1629
  return false;
1872
1630
  }
1873
-
1874
1631
  if (searchDisplayMode === ((_dh$SearchDisplayMode2 = dh.SearchDisplayMode) === null || _dh$SearchDisplayMode2 === void 0 ? void 0 : _dh$SearchDisplayMode2.SEARCH_DISPLAY_SHOW)) {
1875
1632
  return true;
1876
1633
  }
1877
-
1878
1634
  return canToggleSearch;
1879
1635
  }
1880
-
1881
1636
  toggleSearchBar() {
1882
1637
  var {
1883
1638
  showSearchBar
1884
1639
  } = this.state;
1885
-
1886
1640
  if (!this.isTableSearchAvailable()) {
1887
1641
  return;
1888
1642
  }
1889
-
1890
1643
  var update = !showSearchBar;
1891
1644
  this.setState({
1892
1645
  showSearchBar: update
1893
1646
  }, () => {
1894
1647
  var _this$crossColumnRef;
1895
-
1896
1648
  if (update && (_this$crossColumnRef = this.crossColumnRef) !== null && _this$crossColumnRef !== void 0 && _this$crossColumnRef.current) {
1897
1649
  var _this$crossColumnRef2;
1898
-
1899
1650
  (_this$crossColumnRef2 = this.crossColumnRef) === null || _this$crossColumnRef2 === void 0 ? void 0 : _this$crossColumnRef2.current.focus();
1900
1651
  } else {
1901
1652
  var _this$grid14;
1902
-
1903
1653
  (_this$grid14 = this.grid) === null || _this$grid14 === void 0 ? void 0 : _this$grid14.focus();
1904
1654
  }
1905
1655
  });
1906
1656
  }
1907
-
1908
1657
  toggleGotoRow() {
1909
1658
  var row = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
1910
1659
  var {
1911
1660
  isGotoRowShown
1912
1661
  } = this.state;
1913
-
1914
1662
  if (row) {
1915
1663
  // if invoked with a row, keep open instead of toggle
1916
1664
  this.setState({
@@ -1920,49 +1668,38 @@ export class IrisGrid extends Component {
1920
1668
  });
1921
1669
  return;
1922
1670
  }
1923
-
1924
1671
  this.setState({
1925
1672
  isGotoRowShown: !isGotoRowShown,
1926
1673
  gotoRow: '',
1927
1674
  gotoRowError: ''
1928
1675
  });
1929
1676
  }
1930
-
1931
1677
  commitPending() {
1932
1678
  var _this2 = this;
1933
-
1934
1679
  return _asyncToGenerator(function* () {
1935
1680
  var _document, _document$activeEleme;
1936
-
1937
1681
  var {
1938
1682
  model
1939
1683
  } = _this2.props;
1940
-
1941
1684
  if (!isEditableGridModel(model) || !model.isEditable) {
1942
1685
  throw new Error('Cannot save, table is not editable');
1943
1686
  }
1944
-
1945
1687
  var {
1946
1688
  pendingSavePromise
1947
1689
  } = _this2.state;
1948
-
1949
1690
  if (pendingSavePromise != null) {
1950
1691
  throw new Error('Save already in progress');
1951
1692
  }
1952
-
1953
1693
  var containsGridCellInputField = (_document = document) === null || _document === void 0 ? void 0 : (_document$activeEleme = _document.activeElement) === null || _document$activeEleme === void 0 ? void 0 : _document$activeEleme.classList.contains('grid-cell-input-field');
1954
-
1955
1694
  if (containsGridCellInputField != null && containsGridCellInputField) {
1956
1695
  var _this2$grid;
1957
-
1958
1696
  if (document.activeElement != null && document.activeElement.classList.contains('error')) {
1959
1697
  throw new ValidationError('Current input is invalid');
1960
- } // Focus the grid again to commit any pending input changes
1961
-
1698
+ }
1962
1699
 
1700
+ // Focus the grid again to commit any pending input changes
1963
1701
  (_this2$grid = _this2.grid) === null || _this2$grid === void 0 ? void 0 : _this2$grid.focus();
1964
1702
  }
1965
-
1966
1703
  var newPendingSavePromise = _this2.pending.add(model.commitPending()).then(() => {
1967
1704
  _this2.setState({
1968
1705
  pendingSaveError: null,
@@ -1976,27 +1713,21 @@ export class IrisGrid extends Component {
1976
1713
  });
1977
1714
  }
1978
1715
  });
1979
-
1980
1716
  _this2.setState({
1981
1717
  pendingSavePromise: newPendingSavePromise
1982
1718
  });
1983
-
1984
1719
  return newPendingSavePromise;
1985
1720
  })();
1986
1721
  }
1987
-
1988
1722
  discardPending() {
1989
1723
  var _this3 = this;
1990
-
1991
1724
  return _asyncToGenerator(function* () {
1992
1725
  var {
1993
1726
  pendingSavePromise
1994
1727
  } = _this3.state;
1995
-
1996
1728
  if (pendingSavePromise != null) {
1997
1729
  throw new Error('Cannot cancel a save in progress');
1998
1730
  }
1999
-
2000
1731
  _this3.setState({
2001
1732
  pendingSavePromise: null,
2002
1733
  pendingSaveError: null,
@@ -2005,24 +1736,23 @@ export class IrisGrid extends Component {
2005
1736
  });
2006
1737
  })();
2007
1738
  }
1739
+
2008
1740
  /**
2009
1741
  * Select the passed in column and notify listener
2010
1742
  * @param column The column in this table to link
2011
1743
  */
2012
-
2013
-
2014
1744
  selectColumn(column) {
2015
1745
  var {
2016
1746
  onColumnSelected
2017
1747
  } = this.props;
2018
1748
  onColumnSelected(column);
2019
1749
  }
1750
+
2020
1751
  /**
2021
1752
  * Select all the data for a given row and notify listener
2022
1753
  */
2023
-
2024
-
2025
1754
  selectData(columnIndex, rowIndex) {
1755
+ var _this4 = this;
2026
1756
  var {
2027
1757
  model
2028
1758
  } = this.props;
@@ -2031,7 +1761,6 @@ export class IrisGrid extends Component {
2031
1761
  groupedColumns
2032
1762
  } = model;
2033
1763
  var dataMap = {};
2034
-
2035
1764
  var _loop = function _loop(i) {
2036
1765
  var column = columns[i];
2037
1766
  var {
@@ -2040,6 +1769,7 @@ export class IrisGrid extends Component {
2040
1769
  } = column;
2041
1770
  var value = model.valueForCell(i, rowIndex);
2042
1771
  var text = model.textForCell(i, rowIndex);
1772
+ var visibleIndex = _this4.getVisibleColumn(i);
2043
1773
  var isExpandable = isExpandableGridModel(model) && model.isRowExpandable(rowIndex);
2044
1774
  var isGrouped = groupedColumns.find(c => c.name === name) != null;
2045
1775
  dataMap[name] = {
@@ -2047,20 +1777,18 @@ export class IrisGrid extends Component {
2047
1777
  text,
2048
1778
  type,
2049
1779
  isGrouped,
2050
- isExpandable
1780
+ isExpandable,
1781
+ visibleIndex
2051
1782
  };
2052
1783
  };
2053
-
2054
1784
  for (var i = 0; i < columns.length; i += 1) {
2055
1785
  _loop(i);
2056
1786
  }
2057
-
2058
1787
  var {
2059
1788
  onDataSelected
2060
1789
  } = this.props;
2061
1790
  onDataSelected(rowIndex, dataMap);
2062
1791
  }
2063
-
2064
1792
  handleAdvancedFilterChange(column, filter, options) {
2065
1793
  var {
2066
1794
  model
@@ -2069,10 +1797,8 @@ export class IrisGrid extends Component {
2069
1797
  assertNotNull(index);
2070
1798
  this.setAdvancedFilter(index, filter, options);
2071
1799
  }
2072
-
2073
1800
  handleAdvancedFilterSortChange(column, direction) {
2074
1801
  var _this$grid15;
2075
-
2076
1802
  var addToExisting = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
2077
1803
  var {
2078
1804
  model
@@ -2081,7 +1807,6 @@ export class IrisGrid extends Component {
2081
1807
  assertNotNull(columnIndex);
2082
1808
  var oldSort = TableUtils.getSortForColumn(model.sort, columnIndex);
2083
1809
  var newSort = null;
2084
-
2085
1810
  if (oldSort == null || oldSort.direction !== direction) {
2086
1811
  if (direction === TableUtils.sortDirection.descending) {
2087
1812
  newSort = column.sort().desc();
@@ -2089,7 +1814,6 @@ export class IrisGrid extends Component {
2089
1814
  newSort = column.sort().asc();
2090
1815
  }
2091
1816
  }
2092
-
2093
1817
  var sorts = TableUtils.setSortForColumn(model.sort, columnIndex, newSort, addToExisting);
2094
1818
  log.info('Setting table sorts', sorts);
2095
1819
  this.startLoading('Sorting...');
@@ -2098,42 +1822,33 @@ export class IrisGrid extends Component {
2098
1822
  });
2099
1823
  (_this$grid15 = this.grid) === null || _this$grid15 === void 0 ? void 0 : _this$grid15.forceUpdate();
2100
1824
  }
2101
-
2102
1825
  handleAdvancedFilterDone() {
2103
1826
  var _this$grid16;
2104
-
2105
1827
  (_this$grid16 = this.grid) === null || _this$grid16 === void 0 ? void 0 : _this$grid16.focus();
2106
1828
  }
2107
-
2108
1829
  handleAdvancedMenuOpened(column) {
2109
1830
  this.setState({
2110
1831
  shownAdvancedFilter: column
2111
1832
  });
2112
1833
  }
2113
-
2114
1834
  handleGotoRowOpened() {
2115
1835
  this.setState({
2116
1836
  isGotoRowShown: true
2117
1837
  });
2118
1838
  }
2119
-
2120
1839
  handleGotoRowClosed() {
2121
1840
  this.setState({
2122
1841
  isGotoRowShown: false
2123
1842
  });
2124
1843
  }
2125
-
2126
1844
  handleAdvancedMenuClosed(columnIndex) {
2127
1845
  var _this$filterInputRef;
2128
-
2129
1846
  var {
2130
1847
  focusedFilterBarColumn,
2131
1848
  isFilterBarShown
2132
1849
  } = this.state;
2133
-
2134
1850
  if (isFilterBarShown && focusedFilterBarColumn === columnIndex && ((_this$filterInputRef = this.filterInputRef) === null || _this$filterInputRef === void 0 ? void 0 : _this$filterInputRef.current) !== null) {
2135
1851
  var _this$filterInputRef2;
2136
-
2137
1852
  (_this$filterInputRef2 = this.filterInputRef) === null || _this$filterInputRef2 === void 0 ? void 0 : _this$filterInputRef2.current.focus();
2138
1853
  this.setState({
2139
1854
  shownAdvancedFilter: null
@@ -2145,15 +1860,14 @@ export class IrisGrid extends Component {
2145
1860
  });
2146
1861
  }
2147
1862
  }
2148
-
2149
1863
  handleCancel() {
2150
1864
  this.rollback();
2151
- } // eslint-disable-next-line class-methods-use-this
2152
-
2153
-
2154
- handleChartChange() {// TODO: IDS-4242 Update Chart Preview
2155
1865
  }
2156
1866
 
1867
+ // eslint-disable-next-line class-methods-use-this
1868
+ handleChartChange() {
1869
+ // TODO: IDS-4242 Update Chart Preview
1870
+ }
2157
1871
  handleChartCreate(settings) {
2158
1872
  var {
2159
1873
  model,
@@ -2161,7 +1875,6 @@ export class IrisGrid extends Component {
2161
1875
  } = this.props;
2162
1876
  onCreateChart(settings, model);
2163
1877
  }
2164
-
2165
1878
  handleGridError(error) {
2166
1879
  log.warn('Grid Error', error);
2167
1880
  this.setState({
@@ -2170,7 +1883,6 @@ export class IrisGrid extends Component {
2170
1883
  }, "".concat(error))
2171
1884
  });
2172
1885
  }
2173
-
2174
1886
  handleFilterBarChange(value) {
2175
1887
  this.startLoading('Filtering...', true);
2176
1888
  this.setState(_ref14 => {
@@ -2179,49 +1891,40 @@ export class IrisGrid extends Component {
2179
1891
  quickFilters
2180
1892
  } = _ref14;
2181
1893
  var newQuickFilters = new Map(quickFilters);
2182
-
2183
1894
  if (focusedFilterBarColumn != null) {
2184
1895
  var modelIndex = this.getModelColumn(focusedFilterBarColumn);
2185
1896
  assertNotNull(modelIndex);
2186
1897
  this.applyQuickFilter(modelIndex, value, newQuickFilters);
2187
1898
  }
2188
-
2189
1899
  return {
2190
1900
  quickFilters: newQuickFilters
2191
1901
  };
2192
1902
  });
2193
1903
  }
2194
-
2195
1904
  handleFilterBarDone() {
2196
1905
  var setGridFocus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
2197
1906
  var defocusInput = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
2198
-
2199
1907
  if (setGridFocus) {
2200
1908
  var _this$grid17;
2201
-
2202
1909
  (_this$grid17 = this.grid) === null || _this$grid17 === void 0 ? void 0 : _this$grid17.focus();
2203
1910
  }
2204
-
2205
1911
  if (defocusInput) {
2206
1912
  this.setState({
2207
1913
  focusedFilterBarColumn: null
2208
1914
  });
2209
1915
  }
2210
1916
  }
2211
-
2212
1917
  handleFilterBarTab(backward) {
2213
1918
  var {
2214
1919
  focusedFilterBarColumn
2215
1920
  } = this.state;
2216
1921
  assertNotNull(focusedFilterBarColumn);
2217
-
2218
1922
  if (backward) {
2219
1923
  this.focusFilterBar(focusedFilterBarColumn - 1);
2220
1924
  } else {
2221
1925
  this.focusFilterBar(focusedFilterBarColumn + 1);
2222
1926
  }
2223
1927
  }
2224
-
2225
1928
  handleFormatSelection(modelIndex, selectedFormat) {
2226
1929
  var {
2227
1930
  model
@@ -2231,7 +1934,6 @@ export class IrisGrid extends Component {
2231
1934
  customColumnFormatMap: prevCustomColumnFormatMap
2232
1935
  } = this.state;
2233
1936
  var customColumnFormatMap = new Map(prevCustomColumnFormatMap);
2234
-
2235
1937
  if (selectedFormat != null) {
2236
1938
  var normalizedType = TableUtils.getNormalizedType(column.type);
2237
1939
  assertNotNull(normalizedType);
@@ -2240,26 +1942,22 @@ export class IrisGrid extends Component {
2240
1942
  } else {
2241
1943
  customColumnFormatMap.delete(column.name);
2242
1944
  }
2243
-
2244
1945
  this.updateFormatter({
2245
1946
  customColumnFormatMap
2246
1947
  });
2247
1948
  }
2248
-
2249
1949
  handleMenu(e) {
2250
1950
  e.stopPropagation();
2251
1951
  this.setState({
2252
1952
  isMenuShown: true
2253
1953
  });
2254
1954
  }
2255
-
2256
1955
  handleMenuClose() {
2257
1956
  this.setState({
2258
1957
  isMenuShown: false,
2259
1958
  openOptions: []
2260
1959
  });
2261
1960
  }
2262
-
2263
1961
  handleMenuBack() {
2264
1962
  this.setState(_ref15 => {
2265
1963
  var {
@@ -2272,7 +1970,6 @@ export class IrisGrid extends Component {
2272
1970
  };
2273
1971
  });
2274
1972
  }
2275
-
2276
1973
  handleMenuSelect(option) {
2277
1974
  this.setState(_ref16 => {
2278
1975
  var {
@@ -2283,12 +1980,10 @@ export class IrisGrid extends Component {
2283
1980
  };
2284
1981
  });
2285
1982
  }
2286
-
2287
1983
  handleRequestFailed(event) {
2288
1984
  var customEvent = event;
2289
1985
  log.error('request failed:', customEvent.detail);
2290
1986
  this.stopLoading();
2291
-
2292
1987
  if (this.canRollback()) {
2293
1988
  this.startLoading('Rolling back changes...', true);
2294
1989
  this.rollback();
@@ -2300,10 +1995,8 @@ export class IrisGrid extends Component {
2300
1995
  onError(new Error("Error displaying table: ".concat(customEvent.detail)));
2301
1996
  }
2302
1997
  }
2303
-
2304
1998
  handleUpdate() {
2305
1999
  var _this$grid18;
2306
-
2307
2000
  this.stopLoading();
2308
2001
  log.debug2('Received model update');
2309
2002
  var {
@@ -2328,19 +2021,15 @@ export class IrisGrid extends Component {
2328
2021
  selectDistinctColumns,
2329
2022
  sorts
2330
2023
  };
2331
-
2332
2024
  if (!isEmptyConfig(config)) {
2333
2025
  this.lastLoadedConfig = config;
2334
2026
  } else {
2335
2027
  this.lastLoadedConfig = null;
2336
2028
  }
2337
-
2338
2029
  (_this$grid18 = this.grid) === null || _this$grid18 === void 0 ? void 0 : _this$grid18.forceUpdate();
2339
2030
  }
2340
-
2341
2031
  handleViewChanged(metrics) {
2342
2032
  var _this$grid$state, _this$grid19;
2343
-
2344
2033
  var {
2345
2034
  model
2346
2035
  } = this.props;
@@ -2348,16 +2037,15 @@ export class IrisGrid extends Component {
2348
2037
  selectionEndRow = 0
2349
2038
  } = (_this$grid$state = (_this$grid19 = this.grid) === null || _this$grid19 === void 0 ? void 0 : _this$grid19.state) !== null && _this$grid$state !== void 0 ? _this$grid$state : {};
2350
2039
  var pendingRowCount = 0;
2351
-
2352
2040
  if (isEditableGridModel(model) && model.isEditable) {
2353
2041
  assertNotNull(metrics);
2354
2042
  var {
2355
2043
  bottomViewport
2356
- } = metrics; // We have an editable table that we can add new rows to
2357
- // Display empty rows beneath the table rows that user can fill in
2044
+ } = metrics;
2358
2045
 
2046
+ // We have an editable table that we can add new rows to
2047
+ // Display empty rows beneath the table rows that user can fill in
2359
2048
  var bottomNonFloating = model.rowCount - model.floatingBottomRowCount;
2360
-
2361
2049
  if (selectionEndRow === bottomNonFloating - 1) {
2362
2050
  // Selection is in the last row, add another blank row
2363
2051
  pendingRowCount = model.pendingRowCount + 1;
@@ -2369,13 +2057,11 @@ export class IrisGrid extends Component {
2369
2057
  pendingRowCount = Math.max(0, bottomViewport - (model.rowCount - model.pendingRowCount) - model.floatingTopRowCount - model.floatingBottomRowCount - 1);
2370
2058
  }
2371
2059
  }
2372
-
2373
2060
  this.setState({
2374
2061
  metrics,
2375
2062
  pendingRowCount
2376
2063
  });
2377
2064
  }
2378
-
2379
2065
  handleSelectionChanged(selectedRanges) {
2380
2066
  assertNotNull(selectedRanges);
2381
2067
  var {
@@ -2387,39 +2073,32 @@ export class IrisGrid extends Component {
2387
2073
  this.setState({
2388
2074
  selectedRanges
2389
2075
  });
2390
-
2391
2076
  if (copyOperation != null) {
2392
2077
  this.setState({
2393
2078
  copyOperation: null
2394
2079
  });
2395
2080
  }
2396
-
2397
2081
  onSelectionChanged(selectedRanges);
2398
2082
  }
2399
-
2400
2083
  handleMovedColumnsChanged(movedColumns) {
2401
2084
  var onChangeApplied = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : () => null;
2402
2085
  this.setState({
2403
2086
  movedColumns
2404
2087
  }, onChangeApplied);
2405
2088
  }
2406
-
2407
2089
  handleTooltipRef(tooltip) {
2408
2090
  // Need to start the timer right away, since we're creating the tooltip when we want the timer to start
2409
2091
  if (tooltip != null) {
2410
2092
  tooltip.startTimer();
2411
2093
  }
2412
-
2413
2094
  this.tooltip = tooltip;
2414
2095
  }
2415
-
2416
2096
  handleConditionalFormatsChange(conditionalFormats) {
2417
2097
  log.debug('Updated conditional formats', conditionalFormats);
2418
2098
  this.setState({
2419
2099
  conditionalFormats
2420
2100
  });
2421
2101
  }
2422
-
2423
2102
  handleConditionalFormatCreate() {
2424
2103
  log.debug('Create new conditional format');
2425
2104
  var {
@@ -2436,7 +2115,6 @@ export class IrisGrid extends Component {
2436
2115
  conditionalFormatPreview: undefined
2437
2116
  });
2438
2117
  }
2439
-
2440
2118
  handleConditionalFormatEdit(index) {
2441
2119
  log.debug('Edit conditional format', index);
2442
2120
  var {
@@ -2452,8 +2130,9 @@ export class IrisGrid extends Component {
2452
2130
  // Clone rule to preview temporary changes
2453
2131
  conditionalFormatPreview: _objectSpread({}, conditionalFormats[index])
2454
2132
  });
2455
- } // Apply live changes
2133
+ }
2456
2134
 
2135
+ // Apply live changes
2457
2136
 
2458
2137
  handleConditionalFormatEditorSave(config) {
2459
2138
  log.debug('Save conditional format changes', config);
@@ -2462,7 +2141,6 @@ export class IrisGrid extends Component {
2462
2141
  log.debug('Invalid format index');
2463
2142
  return null;
2464
2143
  }
2465
-
2466
2144
  var conditionalFormats = [...state.conditionalFormats];
2467
2145
  conditionalFormats[state.conditionalFormatEditIndex] = config;
2468
2146
  return {
@@ -2472,16 +2150,14 @@ export class IrisGrid extends Component {
2472
2150
  this.handleMenuBack();
2473
2151
  });
2474
2152
  }
2475
-
2476
2153
  handleConditionalFormatEditorCancel() {
2477
- this.handleMenuBack(); // Not resetting conditionalFormatPreview here
2154
+ this.handleMenuBack();
2155
+ // Not resetting conditionalFormatPreview here
2478
2156
  // to prevent editor fields change during the menu transition
2479
-
2480
2157
  this.setState({
2481
2158
  conditionalFormatEditIndex: null
2482
2159
  });
2483
2160
  }
2484
-
2485
2161
  handleUpdateCustomColumns(customColumns) {
2486
2162
  log.info("handleUpdateCustomColumns:", customColumns);
2487
2163
  var {
@@ -2499,21 +2175,18 @@ export class IrisGrid extends Component {
2499
2175
  } = model;
2500
2176
  var oldCustomColumns = model.customColumns.map(customColumn => "".concat(customColumn));
2501
2177
  var removedColumnNames = IrisGridUtils.getRemovedCustomColumnNames(oldCustomColumns, customColumns);
2502
-
2503
2178
  if (removedColumnNames.length > 0) {
2504
2179
  var newSorts = IrisGridUtils.removeSortsInColumns(sorts, removedColumnNames);
2505
2180
  var newQuickFilters = IrisGridUtils.removeFiltersInColumns(columns, quickFilters, removedColumnNames);
2506
2181
  var newAdvancedFilters = IrisGridUtils.removeFiltersInColumns(columns, advancedFilters, removedColumnNames);
2507
2182
  var newMovedColumns = IrisGridUtils.removeColumnFromMovedColumns(columns, movedColumns, removedColumnNames);
2508
2183
  var newSelectDistinctColumns = IrisGridUtils.removeColumnsFromSelectDistinctColumns(selectDistinctColumns, removedColumnNames);
2509
-
2510
2184
  if (newSorts.length !== sorts.length) {
2511
2185
  log.debug('removing sorts from removed custom columns...');
2512
2186
  this.setState({
2513
2187
  sorts: newSorts
2514
2188
  });
2515
2189
  }
2516
-
2517
2190
  if (newQuickFilters.size !== quickFilters.size || newAdvancedFilters.size !== advancedFilters.size) {
2518
2191
  log.debug("removing filters from removed custom columns...");
2519
2192
  this.setState({
@@ -2521,14 +2194,12 @@ export class IrisGrid extends Component {
2521
2194
  advancedFilters: newAdvancedFilters
2522
2195
  });
2523
2196
  }
2524
-
2525
2197
  if (!deepEqual(movedColumns, newMovedColumns)) {
2526
2198
  log.debug("change moved columns for removed custom columns", newMovedColumns);
2527
2199
  this.setState({
2528
2200
  movedColumns: newMovedColumns
2529
2201
  });
2530
2202
  }
2531
-
2532
2203
  if (!deepEqual(selectDistinctColumns, newSelectDistinctColumns)) {
2533
2204
  log.debug("change selectDistinct columns for removed custom columns", newMovedColumns);
2534
2205
  this.setState({
@@ -2536,40 +2207,32 @@ export class IrisGrid extends Component {
2536
2207
  });
2537
2208
  }
2538
2209
  }
2539
-
2540
2210
  this.setState({
2541
2211
  customColumns
2542
2212
  });
2543
2213
  this.startLoading('Applying custom columns...');
2544
2214
  }
2545
-
2546
2215
  handleCustomColumnsChanged() {
2547
2216
  log.debug('custom columns changed');
2548
2217
  var {
2549
2218
  isReady
2550
2219
  } = this.state;
2551
-
2552
2220
  if (isReady) {
2553
2221
  var _this$grid20;
2554
-
2555
2222
  this.stopLoading();
2556
2223
  (_this$grid20 = this.grid) === null || _this$grid20 === void 0 ? void 0 : _this$grid20.forceUpdate();
2557
2224
  } else {
2558
2225
  this.initState();
2559
2226
  }
2560
2227
  }
2561
-
2562
2228
  handlePendingCommitClicked() {
2563
2229
  return this.commitPending();
2564
2230
  }
2565
-
2566
2231
  handlePendingDiscardClicked() {
2567
2232
  return this.discardPending();
2568
2233
  }
2569
-
2570
2234
  handlePendingDataUpdated() {
2571
2235
  var _this$grid21;
2572
-
2573
2236
  log.debug('pending data updated');
2574
2237
  var {
2575
2238
  model
@@ -2585,12 +2248,11 @@ export class IrisGrid extends Component {
2585
2248
  });
2586
2249
  (_this$grid21 = this.grid) === null || _this$grid21 === void 0 ? void 0 : _this$grid21.forceUpdate();
2587
2250
  }
2251
+
2588
2252
  /**
2589
2253
  * User added, removed, or changed the order of aggregations, or position
2590
2254
  * @param aggregationSettings The new aggregation settings
2591
2255
  */
2592
-
2593
-
2594
2256
  handleAggregationsChange(aggregationSettings) {
2595
2257
  log.debug('handleAggregationsChange', aggregationSettings);
2596
2258
  this.startLoading("Aggregating ".concat(aggregationSettings.aggregations.map(a => a.operation).join(', '), "..."));
@@ -2598,12 +2260,11 @@ export class IrisGrid extends Component {
2598
2260
  aggregationSettings
2599
2261
  });
2600
2262
  }
2263
+
2601
2264
  /**
2602
2265
  * A specific aggregation has been modified
2603
2266
  * @param aggregation The new aggregation
2604
2267
  */
2605
-
2606
-
2607
2268
  handleAggregationChange(aggregation) {
2608
2269
  log.debug('handleAggregationChange', aggregation);
2609
2270
  this.startLoading("Aggregating ".concat(aggregation.operation, "..."));
@@ -2619,12 +2280,11 @@ export class IrisGrid extends Component {
2619
2280
  };
2620
2281
  });
2621
2282
  }
2283
+
2622
2284
  /**
2623
2285
  * An aggregations has been selected for editing
2624
2286
  * @param aggregation The aggregation to edit
2625
2287
  */
2626
-
2627
-
2628
2288
  handleAggregationEdit(aggregation) {
2629
2289
  log.debug('handleAggregationEdit', aggregation);
2630
2290
  var {
@@ -2638,18 +2298,17 @@ export class IrisGrid extends Component {
2638
2298
  selectedAggregation: aggregation
2639
2299
  });
2640
2300
  }
2641
-
2642
2301
  handleRollupChange(rollupConfig) {
2643
2302
  var _rollupConfig$columns, _rollupConfig$columns2;
2644
-
2645
2303
  log.info('Rollup change', rollupConfig);
2646
2304
  this.resetGridViewState();
2647
2305
  this.showAllColumns();
2648
2306
  this.clearAllFilters();
2649
- this.startLoading("Grouping by columns ".concat((_rollupConfig$columns = rollupConfig === null || rollupConfig === void 0 ? void 0 : (_rollupConfig$columns2 = rollupConfig.columns) === null || _rollupConfig$columns2 === void 0 ? void 0 : _rollupConfig$columns2.join(', ')) !== null && _rollupConfig$columns !== void 0 ? _rollupConfig$columns : '', "...")); // Have to clear select distinct since rollup uses the original columns, not the current ones.
2307
+ this.startLoading("Grouping by columns ".concat((_rollupConfig$columns = rollupConfig === null || rollupConfig === void 0 ? void 0 : (_rollupConfig$columns2 = rollupConfig.columns) === null || _rollupConfig$columns2 === void 0 ? void 0 : _rollupConfig$columns2.join(', ')) !== null && _rollupConfig$columns !== void 0 ? _rollupConfig$columns : '', "..."));
2308
+
2309
+ // Have to clear select distinct since rollup uses the original columns, not the current ones.
2650
2310
  // IrisGridProxyModel has a check to prevent model update
2651
2311
  // when selectDistinctModel is cleared and the rollupConfig is set on the model.
2652
-
2653
2312
  this.setState({
2654
2313
  rollupConfig,
2655
2314
  movedColumns: [],
@@ -2658,7 +2317,6 @@ export class IrisGrid extends Component {
2658
2317
  selectDistinctColumns: []
2659
2318
  });
2660
2319
  }
2661
-
2662
2320
  handleSelectDistinctChanged(columnNames) {
2663
2321
  log.debug('SelectDistinct change', columnNames);
2664
2322
  this.resetGridViewState();
@@ -2672,12 +2330,10 @@ export class IrisGrid extends Component {
2672
2330
  reverseType: TableUtils.REVERSE_TYPE.NONE
2673
2331
  });
2674
2332
  }
2675
-
2676
2333
  handleDownloadTableStart() {
2677
2334
  var {
2678
2335
  canDownloadCsv
2679
2336
  } = this.props;
2680
-
2681
2337
  if (canDownloadCsv) {
2682
2338
  this.setState({
2683
2339
  isTableDownloading: true,
@@ -2689,19 +2345,16 @@ export class IrisGrid extends Component {
2689
2345
  log.error('Attempted to handleDownloadTableStart for user without download CSV permission.');
2690
2346
  }
2691
2347
  }
2692
-
2693
2348
  handleDownloadTable(fileName, frozenTable, tableSubscription, snapshotRanges, modelRanges, includeColumnHeaders, useUnformattedValues) {
2694
2349
  var {
2695
2350
  canDownloadCsv
2696
2351
  } = this.props;
2697
-
2698
2352
  if (canDownloadCsv) {
2699
2353
  log.info('start table downloading', fileName, frozenTable, tableSubscription, snapshotRanges, modelRanges, includeColumnHeaders, useUnformattedValues);
2700
2354
  this.setState(() => {
2701
2355
  if (this.tableSaver) {
2702
2356
  this.tableSaver.startDownload(fileName, frozenTable, tableSubscription, snapshotRanges, modelRanges, includeColumnHeaders, useUnformattedValues);
2703
2357
  }
2704
-
2705
2358
  return {
2706
2359
  tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING
2707
2360
  };
@@ -2710,16 +2363,13 @@ export class IrisGrid extends Component {
2710
2363
  log.error('Attempted to handleDownloadTable for user without download CSV permission.');
2711
2364
  }
2712
2365
  }
2713
-
2714
2366
  handleCancelDownloadTable() {
2715
2367
  var _this$tableSaver;
2716
-
2717
2368
  (_this$tableSaver = this.tableSaver) === null || _this$tableSaver === void 0 ? void 0 : _this$tableSaver.cancelDownload();
2718
2369
  this.setState({
2719
2370
  isTableDownloading: false
2720
2371
  });
2721
2372
  }
2722
-
2723
2373
  handleDownloadCompleted() {
2724
2374
  this.setState({
2725
2375
  isTableDownloading: false,
@@ -2727,7 +2377,6 @@ export class IrisGrid extends Component {
2727
2377
  tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.FINISHED
2728
2378
  });
2729
2379
  }
2730
-
2731
2380
  handleDownloadCanceled() {
2732
2381
  this.setState({
2733
2382
  isTableDownloading: false,
@@ -2735,12 +2384,11 @@ export class IrisGrid extends Component {
2735
2384
  tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.CANCELED
2736
2385
  });
2737
2386
  }
2387
+
2738
2388
  /**
2739
2389
  * Delete the specified ranges from the table.
2740
2390
  * @param ranges The ranges to delete
2741
2391
  */
2742
-
2743
-
2744
2392
  deleteRanges(ranges) {
2745
2393
  var {
2746
2394
  model
@@ -2751,16 +2399,13 @@ export class IrisGrid extends Component {
2751
2399
  }
2752
2400
  });
2753
2401
  }
2754
-
2755
2402
  resetColumnSelection() {
2756
2403
  if (this.grid == null) {
2757
2404
  return;
2758
2405
  }
2759
-
2760
2406
  var {
2761
2407
  isSelectingColumn
2762
2408
  } = this.props;
2763
-
2764
2409
  if (isSelectingColumn) {
2765
2410
  var {
2766
2411
  columnAllowedCursor
@@ -2777,14 +2422,11 @@ export class IrisGrid extends Component {
2777
2422
  });
2778
2423
  }
2779
2424
  }
2780
-
2781
2425
  resetGridViewState() {
2782
2426
  var forceUpdate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
2783
-
2784
2427
  if (!this.grid) {
2785
2428
  return;
2786
2429
  }
2787
-
2788
2430
  this.grid.clearSelectedRanges();
2789
2431
  this.grid.setViewState({
2790
2432
  left: 0,
@@ -2793,12 +2435,10 @@ export class IrisGrid extends Component {
2793
2435
  leftOffset: 0
2794
2436
  }, forceUpdate);
2795
2437
  }
2796
-
2797
2438
  sendStateChange() {
2798
2439
  if (!this.grid) {
2799
2440
  return;
2800
2441
  }
2801
-
2802
2442
  var {
2803
2443
  state: irisGridState
2804
2444
  } = this;
@@ -2810,16 +2450,13 @@ export class IrisGrid extends Component {
2810
2450
  } = this.props;
2811
2451
  onStateChange(irisGridState, gridState);
2812
2452
  }
2813
-
2814
2453
  handleOverflowClose() {
2815
2454
  this.setState({
2816
2455
  showOverflowModal: false
2817
2456
  });
2818
2457
  }
2819
-
2820
2458
  getColumnBoundingRect() {
2821
2459
  var _this$gridWrapper2;
2822
-
2823
2460
  var {
2824
2461
  metrics,
2825
2462
  shownColumnTooltip
@@ -2855,14 +2492,12 @@ export class IrisGrid extends Component {
2855
2492
  }
2856
2493
  };
2857
2494
  }
2858
-
2859
2495
  handleGotoRowSelectedRowNumberSubmit() {
2860
2496
  var {
2861
2497
  gotoRow: rowNumber
2862
2498
  } = this.state;
2863
2499
  this.focusRowInGrid(rowNumber);
2864
2500
  }
2865
-
2866
2501
  focusRowInGrid(rowNumber) {
2867
2502
  var {
2868
2503
  model
@@ -2873,49 +2508,41 @@ export class IrisGrid extends Component {
2873
2508
  this.setState({
2874
2509
  gotoRow: rowNumber
2875
2510
  });
2876
-
2877
2511
  if (rowNumber === '') {
2878
2512
  this.setState({
2879
2513
  gotoRowError: ''
2880
2514
  });
2881
2515
  return;
2882
2516
  }
2883
-
2884
2517
  var rowInt = parseInt(rowNumber, 10);
2885
-
2886
2518
  if (rowInt > rowCount || rowInt < -rowCount) {
2887
2519
  this.setState({
2888
2520
  gotoRowError: 'Invalid row index'
2889
2521
  });
2890
2522
  } else if (rowInt === 0) {
2891
2523
  var _this$grid22;
2892
-
2893
2524
  this.setState({
2894
2525
  gotoRowError: ''
2895
2526
  });
2896
2527
  (_this$grid22 = this.grid) === null || _this$grid22 === void 0 ? void 0 : _this$grid22.setFocusRow(0);
2897
2528
  } else if (rowInt < 0) {
2898
2529
  var _this$grid23;
2899
-
2900
2530
  this.setState({
2901
2531
  gotoRowError: ''
2902
2532
  });
2903
2533
  (_this$grid23 = this.grid) === null || _this$grid23 === void 0 ? void 0 : _this$grid23.setFocusRow(rowInt + rowCount);
2904
2534
  } else {
2905
2535
  var _this$grid24;
2906
-
2907
2536
  (_this$grid24 = this.grid) === null || _this$grid24 === void 0 ? void 0 : _this$grid24.setFocusRow(rowInt - 1);
2908
2537
  this.setState({
2909
2538
  gotoRowError: ''
2910
2539
  });
2911
2540
  }
2912
2541
  }
2913
-
2914
2542
  handleGotoRowSelectedRowNumberChanged(event) {
2915
2543
  var rowNumber = event.target.value;
2916
2544
  this.focusRowInGrid(rowNumber);
2917
2545
  }
2918
-
2919
2546
  getColumnTooltip(visibleIndex, metrics, model) {
2920
2547
  var {
2921
2548
  columnHeaderHeight,
@@ -2926,10 +2553,10 @@ export class IrisGrid extends Component {
2926
2553
  } = metrics;
2927
2554
  var columnX = visibleColumnXs.get(visibleIndex);
2928
2555
  var columnWidth = visibleColumnWidths.get(visibleIndex);
2929
-
2930
2556
  if (columnX == null || columnWidth == null) {
2931
2557
  return null;
2932
2558
  }
2559
+
2933
2560
  /**
2934
2561
  * Create a wrapper dom element, the size of the column header.
2935
2562
  * The wrapper acts as tooltip parent, the tooltip component
@@ -2937,11 +2564,8 @@ export class IrisGrid extends Component {
2937
2564
  * The wrapper should be bound to within the grid dimensions,
2938
2565
  * so popper only remains triggered while mouse is inside the panel.
2939
2566
  */
2940
-
2941
-
2942
2567
  var boundedLeft = Math.max(0, columnX);
2943
2568
  var boundedWidth = columnWidth;
2944
-
2945
2569
  if (columnX + columnWidth > width) {
2946
2570
  // column is extending past right edge
2947
2571
  boundedWidth = width - columnX;
@@ -2949,7 +2573,6 @@ export class IrisGrid extends Component {
2949
2573
  // column is extending past left edge
2950
2574
  boundedWidth = columnWidth - Math.abs(columnX);
2951
2575
  }
2952
-
2953
2576
  var wrapperStyle = {
2954
2577
  position: 'absolute',
2955
2578
  top: (columnHeaderMaxDepth - 1) * columnHeaderHeight,
@@ -2958,6 +2581,7 @@ export class IrisGrid extends Component {
2958
2581
  height: columnHeaderHeight,
2959
2582
  pointerEvents: 'none'
2960
2583
  };
2584
+
2961
2585
  /**
2962
2586
  * Because the popper parent wrapper center is no longer the same as
2963
2587
  * the column label center, we create a popper virtual ref, to handle
@@ -2966,7 +2590,6 @@ export class IrisGrid extends Component {
2966
2590
  * label, clamped to 0 + margin to width - margin. We add a margin,
2967
2591
  * otherwise the arrow wants to escape the boundary.
2968
2592
  */
2969
-
2970
2593
  var virtualReference = {
2971
2594
  clientWidth: 1,
2972
2595
  clientHeight: columnHeaderHeight,
@@ -3003,20 +2626,17 @@ export class IrisGrid extends Component {
3003
2626
  column: column,
3004
2627
  onStatistics: () => {
3005
2628
  var _this$tooltip;
3006
-
3007
2629
  (_this$tooltip = this.tooltip) === null || _this$tooltip === void 0 ? void 0 : _this$tooltip.update();
3008
2630
  }
3009
2631
  })));
3010
2632
  }
3011
-
3012
2633
  render() {
3013
2634
  var _rollupConfig$columns3,
3014
- _rollupConfig$columns4,
3015
- _this4 = this,
3016
- _this$grid26,
3017
- _this$grid26$state$dr,
3018
- _openOptions;
3019
-
2635
+ _rollupConfig$columns4,
2636
+ _this5 = this,
2637
+ _this$grid26,
2638
+ _this$grid26$state$dr,
2639
+ _openOptions;
3020
2640
  var {
3021
2641
  children,
3022
2642
  customFilters,
@@ -3095,11 +2715,9 @@ export class IrisGrid extends Component {
3095
2715
  gotoRow,
3096
2716
  gotoRowError
3097
2717
  } = this.state;
3098
-
3099
2718
  if (!isReady) {
3100
2719
  return null;
3101
2720
  }
3102
-
3103
2721
  var theme = this.getTheme();
3104
2722
  var filter = this.getCachedFilter(customFilters, quickFilters, advancedFilters, partitionFilters, searchFilter);
3105
2723
  var userColumnWidths = metricCalculator.getUserColumnWidths();
@@ -3108,17 +2726,14 @@ export class IrisGrid extends Component {
3108
2726
  var bottom = metrics ? metrics.bottomViewport : 0;
3109
2727
  var left = null;
3110
2728
  var right = null;
3111
-
3112
2729
  if (onlyFetchVisibleColumns) {
3113
2730
  left = metrics ? metrics.left : 0;
3114
2731
  right = metrics ? metrics.right : 0;
3115
2732
  }
3116
-
3117
2733
  var isVisible = metrics != null && metrics.width > 0 && metrics.height > 0;
3118
2734
  var isRollup = ((_rollupConfig$columns3 = rollupConfig === null || rollupConfig === void 0 ? void 0 : (_rollupConfig$columns4 = rollupConfig.columns) === null || _rollupConfig$columns4 === void 0 ? void 0 : _rollupConfig$columns4.length) !== null && _rollupConfig$columns3 !== void 0 ? _rollupConfig$columns3 : 0) > 0;
3119
2735
  var focusField = null;
3120
2736
  var debounceMs = metrics ? Math.min(Math.max(IrisGrid.minDebounce, Math.round(metrics.rowCount / 200)), IrisGrid.maxDebounce) : IrisGrid.maxDebounce;
3121
-
3122
2737
  if (isFilterBarShown && focusedFilterBarColumn != null && metrics != null) {
3123
2738
  var {
3124
2739
  gridX,
@@ -3129,16 +2744,12 @@ export class IrisGrid extends Component {
3129
2744
  } = metrics;
3130
2745
  var columnX = visibleColumnXs.get(focusedFilterBarColumn);
3131
2746
  var columnWidth = visibleColumnWidths.get(focusedFilterBarColumn);
3132
-
3133
2747
  if (columnX != null && columnWidth != null) {
3134
2748
  var _theme$filterBarHeigh, _theme$filterBarHeigh2, _this$grid25;
3135
-
3136
2749
  var x = gridX + columnX;
3137
2750
  var y = gridY - ((_theme$filterBarHeigh = theme.filterBarHeight) !== null && _theme$filterBarHeigh !== void 0 ? _theme$filterBarHeigh : 0);
3138
2751
  var fieldWidth = columnWidth + 1; // cover right border
3139
-
3140
2752
  var fieldHeight = ((_theme$filterBarHeigh2 = theme.filterBarHeight) !== null && _theme$filterBarHeigh2 !== void 0 ? _theme$filterBarHeigh2 : 0) - 1; // remove bottom border
3141
-
3142
2753
  var style = {
3143
2754
  top: y,
3144
2755
  left: x,
@@ -3152,12 +2763,10 @@ export class IrisGrid extends Component {
3152
2763
  assertNotNull(modelColumn);
3153
2764
  var quickFilter = quickFilters.get(modelColumn);
3154
2765
  var advancedFilter = advancedFilters.get(modelColumn);
3155
-
3156
2766
  if (quickFilter != null) {
3157
2767
  _value4 = quickFilter.text;
3158
2768
  isValid = quickFilter.filter != null;
3159
2769
  }
3160
-
3161
2770
  var isBarFiltered = quickFilters.size !== 0 || advancedFilters.size !== 0;
3162
2771
  focusField = /*#__PURE__*/React.createElement(FilterInputField, {
3163
2772
  ref: this.filterInputRef,
@@ -3183,9 +2792,7 @@ export class IrisGrid extends Component {
3183
2792
  });
3184
2793
  }
3185
2794
  }
3186
-
3187
2795
  var loadingElement = null;
3188
-
3189
2796
  if (loadingText != null) {
3190
2797
  var loadingStatus = /*#__PURE__*/React.createElement("div", {
3191
2798
  className: "iris-grid-loading-status"
@@ -3203,9 +2810,7 @@ export class IrisGrid extends Component {
3203
2810
  icon: vsClose,
3204
2811
  transform: "down-1"
3205
2812
  }), "Cancel"));
3206
-
3207
2813
  var _gridY = metrics ? metrics.gridY : 0;
3208
-
3209
2814
  loadingElement = /*#__PURE__*/React.createElement("div", {
3210
2815
  className: "iris-grid-loading",
3211
2816
  style: {
@@ -3213,19 +2818,14 @@ export class IrisGrid extends Component {
3213
2818
  }
3214
2819
  }, loadingStatus);
3215
2820
  }
3216
-
3217
2821
  var columnTooltip = null;
3218
-
3219
2822
  if (shownColumnTooltip != null && metrics) {
3220
2823
  var _this$tooltip2;
3221
-
3222
- columnTooltip = this.getColumnTooltip(shownColumnTooltip, metrics, model); // #510 We may need to update the position of the tooltip if it's already opened and columns are resized
3223
-
2824
+ columnTooltip = this.getColumnTooltip(shownColumnTooltip, metrics, model);
2825
+ // #510 We may need to update the position of the tooltip if it's already opened and columns are resized
3224
2826
  (_this$tooltip2 = this.tooltip) === null || _this$tooltip2 === void 0 ? void 0 : _this$tooltip2.update();
3225
2827
  }
3226
-
3227
2828
  var filterBar = [];
3228
-
3229
2829
  if (metrics && isFilterBarShown) {
3230
2830
  var {
3231
2831
  gridX: _gridX,
@@ -3237,33 +2837,22 @@ export class IrisGrid extends Component {
3237
2837
  var {
3238
2838
  filterBarHeight
3239
2839
  } = theme;
3240
-
3241
2840
  var _loop2 = function _loop2(i) {
3242
2841
  var columnIndex = visibleColumns[i];
3243
-
3244
2842
  var columnX = _visibleColumnXs.get(columnIndex);
3245
-
3246
2843
  var columnWidth = _visibleColumnWidths.get(columnIndex);
3247
-
3248
- var modelColumn = _this4.getModelColumn(columnIndex);
3249
-
2844
+ var modelColumn = _this5.getModelColumn(columnIndex);
3250
2845
  if (modelColumn != null) {
3251
2846
  var isFilterable = model.isFilterable(modelColumn);
3252
-
3253
2847
  if (isFilterable && columnX != null && columnWidth != null && columnWidth > 0) {
3254
2848
  var _x = _gridX + columnX + columnWidth - 24;
3255
-
3256
2849
  var _y = _gridY2 - (filterBarHeight !== null && filterBarHeight !== void 0 ? filterBarHeight : 0) + 2; // 2 acts as top margin for the button
3257
-
3258
-
3259
2850
  var _style = {
3260
2851
  position: 'absolute',
3261
2852
  top: _y,
3262
2853
  left: _x
3263
2854
  };
3264
-
3265
2855
  var _advancedFilter = advancedFilters.get(modelColumn);
3266
-
3267
2856
  var isFilterSet = _advancedFilter != null;
3268
2857
  var isFilterVisible = columnIndex === hoverAdvancedFilter || columnIndex === focusedFilterBarColumn || isFilterSet;
3269
2858
  var element = /*#__PURE__*/React.createElement("div", {
@@ -3278,22 +2867,21 @@ export class IrisGrid extends Component {
3278
2867
  'filter-set': isFilterSet
3279
2868
  }),
3280
2869
  onClick: () => {
3281
- _this4.setState({
2870
+ _this5.setState({
3282
2871
  shownAdvancedFilter: columnIndex
3283
2872
  });
3284
2873
  },
3285
2874
  onContextMenu: event => {
3286
- var _this4$grid;
3287
-
3288
- (_this4$grid = _this4.grid) === null || _this4$grid === void 0 ? void 0 : _this4$grid.handleContextMenu(event);
2875
+ var _this5$grid;
2876
+ (_this5$grid = _this5.grid) === null || _this5$grid === void 0 ? void 0 : _this5$grid.handleContextMenu(event);
3289
2877
  },
3290
2878
  onMouseEnter: () => {
3291
- _this4.setState({
2879
+ _this5.setState({
3292
2880
  hoverAdvancedFilter: columnIndex
3293
2881
  });
3294
2882
  },
3295
2883
  onMouseLeave: () => {
3296
- _this4.setState({
2884
+ _this5.setState({
3297
2885
  hoverAdvancedFilter: null
3298
2886
  });
3299
2887
  }
@@ -3310,14 +2898,11 @@ export class IrisGrid extends Component {
3310
2898
  }
3311
2899
  }
3312
2900
  };
3313
-
3314
2901
  for (var i = 0; i < visibleColumns.length; i += 1) {
3315
2902
  _loop2(i);
3316
2903
  }
3317
2904
  }
3318
-
3319
2905
  var advancedFilterMenus = [];
3320
-
3321
2906
  if (metrics) {
3322
2907
  var {
3323
2908
  gridX: _gridX2,
@@ -3326,18 +2911,13 @@ export class IrisGrid extends Component {
3326
2911
  visibleColumnWidths: _visibleColumnWidths2,
3327
2912
  columnHeaderHeight
3328
2913
  } = metrics;
3329
-
3330
2914
  var _loop3 = function _loop3(_i3) {
3331
2915
  var columnIndex = _visibleColumns[_i3];
3332
-
3333
2916
  var columnX = _visibleColumnXs2.get(columnIndex);
3334
-
3335
2917
  var columnWidth = _visibleColumnWidths2.get(columnIndex);
3336
-
3337
2918
  if (columnX != null && columnWidth != null && columnWidth > 0) {
3338
2919
  var xColumnHeader = _gridX2 + columnX;
3339
2920
  var xFilterBar = _gridX2 + columnX + columnWidth - 20;
3340
-
3341
2921
  var _style2 = isFilterBarShown ? {
3342
2922
  position: 'absolute',
3343
2923
  top: columnHeaderHeight,
@@ -3351,14 +2931,10 @@ export class IrisGrid extends Component {
3351
2931
  width: columnWidth,
3352
2932
  height: columnHeaderHeight
3353
2933
  };
3354
-
3355
- var _modelColumn = _this4.getModelColumn(columnIndex);
3356
-
2934
+ var _modelColumn = _this5.getModelColumn(columnIndex);
3357
2935
  if (_modelColumn != null) {
3358
2936
  var _column3 = model.columns[_modelColumn];
3359
-
3360
2937
  var _advancedFilter2 = advancedFilters.get(_modelColumn);
3361
-
3362
2938
  var {
3363
2939
  options: advancedFilterOptions
3364
2940
  } = _advancedFilter2 || {};
@@ -3370,9 +2946,9 @@ export class IrisGrid extends Component {
3370
2946
  style: _style2
3371
2947
  }, /*#__PURE__*/React.createElement(Popper, {
3372
2948
  className: "advanced-filter-menu-popper",
3373
- onEntered: _this4.getAdvancedMenuOpenedHandler(columnIndex),
2949
+ onEntered: _this5.getAdvancedMenuOpenedHandler(columnIndex),
3374
2950
  onExited: () => {
3375
- _this4.handleAdvancedMenuClosed(columnIndex);
2951
+ _this5.handleAdvancedMenuClosed(columnIndex);
3376
2952
  },
3377
2953
  isShown: shownAdvancedFilter === columnIndex,
3378
2954
  interactive: true,
@@ -3380,17 +2956,15 @@ export class IrisGrid extends Component {
3380
2956
  options: {
3381
2957
  positionFixed: true
3382
2958
  }
3383
- }, _this4.getCachedAdvancedFilterMenuActions(model, _column3, advancedFilterOptions, sortDirection, formatter)));
2959
+ }, _this5.getCachedAdvancedFilterMenuActions(model, _column3, advancedFilterOptions, sortDirection, formatter)));
3384
2960
  advancedFilterMenus.push(element);
3385
2961
  }
3386
2962
  }
3387
2963
  };
3388
-
3389
2964
  for (var _i3 = 0; _i3 < _visibleColumns.length; _i3 += 1) {
3390
2965
  _loop3(_i3);
3391
2966
  }
3392
2967
  }
3393
-
3394
2968
  var optionItems = this.getCachedOptionItems(onCreateChart !== undefined && model.isChartBuilderAvailable, model.isCustomColumnsAvailable, model.isFormatColumnsAvailable, model.isRollupAvailable, model.isTotalsAvailable, model.isSelectDistinctAvailable, model.isExportAvailable, this.toggleFilterBarAction, this.toggleSearchBarAction, this.toggleGotoRowAction, isFilterBarShown, showSearchBar, canDownloadCsv, this.isTableSearchAvailable(), isGotoRowShown, advancedSettings.size > 0);
3395
2969
  var openOptionsStack = openOptions.map(option => {
3396
2970
  switch (option.type) {
@@ -3401,7 +2975,6 @@ export class IrisGrid extends Component {
3401
2975
  onSubmit: this.handleChartCreate,
3402
2976
  key: OptionType.CHART_BUILDER
3403
2977
  });
3404
-
3405
2978
  case OptionType.VISIBILITY_ORDERING_BUILDER:
3406
2979
  return /*#__PURE__*/React.createElement(VisibilityOrderingBuilder, {
3407
2980
  model: model,
@@ -3411,7 +2984,6 @@ export class IrisGrid extends Component {
3411
2984
  onMovedColumnsChanged: this.handleMovedColumnsChanged,
3412
2985
  key: OptionType.VISIBILITY_ORDERING_BUILDER
3413
2986
  });
3414
-
3415
2987
  case OptionType.CONDITIONAL_FORMATTING:
3416
2988
  return /*#__PURE__*/React.createElement(ConditionalFormattingMenu, {
3417
2989
  rules: conditionalFormats,
@@ -3419,7 +2991,6 @@ export class IrisGrid extends Component {
3419
2991
  onCreate: this.handleConditionalFormatCreate,
3420
2992
  onSelect: this.handleConditionalFormatEdit
3421
2993
  });
3422
-
3423
2994
  case OptionType.CONDITIONAL_FORMATTING_EDIT:
3424
2995
  assertNotNull(model.columns);
3425
2996
  assertNotNull(this.handleConditionalFormatEditorUpdate);
@@ -3430,7 +3001,6 @@ export class IrisGrid extends Component {
3430
3001
  onSave: this.handleConditionalFormatEditorSave,
3431
3002
  onCancel: this.handleConditionalFormatEditorCancel
3432
3003
  });
3433
-
3434
3004
  case OptionType.CUSTOM_COLUMN_BUILDER:
3435
3005
  return /*#__PURE__*/React.createElement(CustomColumnBuilder, {
3436
3006
  model: model,
@@ -3439,7 +3009,6 @@ export class IrisGrid extends Component {
3439
3009
  onCancel: this.handleMenuBack,
3440
3010
  key: OptionType.CUSTOM_COLUMN_BUILDER
3441
3011
  });
3442
-
3443
3012
  case OptionType.ROLLUP_ROWS:
3444
3013
  return /*#__PURE__*/React.createElement(RollupRows, {
3445
3014
  model: model,
@@ -3447,7 +3016,6 @@ export class IrisGrid extends Component {
3447
3016
  config: rollupConfig,
3448
3017
  key: OptionType.ROLLUP_ROWS
3449
3018
  });
3450
-
3451
3019
  case OptionType.AGGREGATIONS:
3452
3020
  return /*#__PURE__*/React.createElement(Aggregations, {
3453
3021
  settings: aggregationSettings,
@@ -3455,14 +3023,12 @@ export class IrisGrid extends Component {
3455
3023
  onChange: this.handleAggregationsChange,
3456
3024
  onEdit: this.handleAggregationEdit
3457
3025
  });
3458
-
3459
3026
  case OptionType.AGGREGATION_EDIT:
3460
3027
  return selectedAggregation && /*#__PURE__*/React.createElement(AggregationEdit, {
3461
3028
  aggregation: selectedAggregation,
3462
3029
  columns: model.originalColumns,
3463
3030
  onChange: this.handleAggregationChange
3464
3031
  });
3465
-
3466
3032
  case OptionType.TABLE_EXPORTER:
3467
3033
  return /*#__PURE__*/React.createElement(TableCsvExporter, {
3468
3034
  model: model,
@@ -3479,20 +3045,17 @@ export class IrisGrid extends Component {
3479
3045
  selectedRanges: selectedRanges,
3480
3046
  key: OptionType.TABLE_EXPORTER
3481
3047
  });
3482
-
3483
3048
  case OptionType.SELECT_DISTINCT:
3484
3049
  return /*#__PURE__*/React.createElement(SelectDistinctBuilder, {
3485
3050
  model: model,
3486
3051
  selectDistinctColumns: selectDistinctColumns,
3487
3052
  onChange: this.handleSelectDistinctChanged
3488
3053
  });
3489
-
3490
3054
  case OptionType.ADVANCED_SETTINGS:
3491
3055
  return /*#__PURE__*/React.createElement(AdvancedSettingsMenu, {
3492
3056
  items: advancedSettings,
3493
3057
  onChange: onAdvancedSettingsChange
3494
3058
  });
3495
-
3496
3059
  default:
3497
3060
  throw Error("Unexpected option type ".concat(option.type));
3498
3061
  }
@@ -3517,7 +3080,7 @@ export class IrisGrid extends Component {
3517
3080
  unmountOnExit: true
3518
3081
  }, /*#__PURE__*/React.createElement("div", {
3519
3082
  className: "iris-grid-partition-selector-wrapper iris-grid-bar iris-grid-bar-primary"
3520
- }, partitionTable && partitionColumn && /*#__PURE__*/React.createElement(IrisGridPartitionSelector, {
3083
+ }, partitionTable && partitionColumn && partition != null && /*#__PURE__*/React.createElement(IrisGridPartitionSelector, {
3521
3084
  table: partitionTable,
3522
3085
  getFormattedString: (value, type, stringName) => model.displayString(value, type, stringName),
3523
3086
  columnName: partitionColumn.name,
@@ -3589,7 +3152,8 @@ export class IrisGrid extends Component {
3589
3152
  customColumns: customColumns,
3590
3153
  hiddenColumns: hiddenColumns,
3591
3154
  alwaysFetchColumns: this.getAlwaysFetchColumns(alwaysFetchColumns, model.columns, movedColumns, model.floatingLeftColumnCount, model.floatingRightColumnCount, (_this$grid26 = this.grid) === null || _this$grid26 === void 0 ? void 0 : (_this$grid26$state$dr = _this$grid26.state.draggingColumn) === null || _this$grid26$state$dr === void 0 ? void 0 : _this$grid26$state$dr.range),
3592
- formatColumns: this.getCachedPreviewFormatColumns(this.getCachedModelColumns(model, customColumns), conditionalFormats, conditionalFormatPreview, // Disable the preview format when we press Back on the format edit page
3155
+ formatColumns: this.getCachedPreviewFormatColumns(this.getCachedModelColumns(model, customColumns), conditionalFormats, conditionalFormatPreview,
3156
+ // Disable the preview format when we press Back on the format edit page
3593
3157
  ((_openOptions = openOptions[openOptions.length - 1]) === null || _openOptions === void 0 ? void 0 : _openOptions.type) === OptionType.CONDITIONAL_FORMATTING_EDIT ? conditionalFormatEditIndex !== null && conditionalFormatEditIndex !== void 0 ? conditionalFormatEditIndex : undefined : undefined),
3594
3158
  rollupConfig: this.getModelRollupConfig(model.originalColumns, rollupConfig, aggregationSettings),
3595
3159
  totalsConfig: this.getModelTotalsConfig(model.columns, rollupConfig, aggregationSettings),
@@ -3680,15 +3244,10 @@ export class IrisGrid extends Component {
3680
3244
  actions: this.contextActions
3681
3245
  }));
3682
3246
  }
3683
-
3684
3247
  }
3685
-
3686
3248
  _defineProperty(IrisGrid, "minDebounce", 150);
3687
-
3688
3249
  _defineProperty(IrisGrid, "maxDebounce", 500);
3689
-
3690
3250
  _defineProperty(IrisGrid, "loadingSpinnerDelay", 800);
3691
-
3692
3251
  _defineProperty(IrisGrid, "defaultProps", {
3693
3252
  children: null,
3694
3253
  advancedFilters: new Map(),
@@ -3757,6 +3316,5 @@ _defineProperty(IrisGrid, "defaultProps", {
3757
3316
  theme: IrisGridTheme,
3758
3317
  canToggleSearch: true
3759
3318
  });
3760
-
3761
3319
  export default IrisGrid;
3762
3320
  //# sourceMappingURL=IrisGrid.js.map