@deephaven/iris-grid 0.38.1-beta.0 → 0.38.1-beta.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/dist/AdvancedFilterCreator.d.ts +4 -2
- package/dist/AdvancedFilterCreator.d.ts.map +1 -1
- package/dist/AdvancedFilterCreator.js +9 -4
- package/dist/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.d.ts +4 -3
- package/dist/AdvancedFilterCreatorFilterItem.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.js +5 -4
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.d.ts +4 -2
- package/dist/AdvancedFilterCreatorSelectValue.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js +11 -3
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts +3 -1
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js +7 -5
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/ColumnStatistics.css +1 -2
- package/dist/ColumnStatistics.css.map +1 -1
- package/dist/ColumnStatistics.d.ts +1 -1
- package/dist/ColumnStatistics.d.ts.map +1 -1
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/CommonTypes.d.ts +1 -1
- package/dist/CommonTypes.d.ts.map +1 -1
- package/dist/CommonTypes.js.map +1 -1
- package/dist/CrossColumnSearch.d.ts +2 -2
- package/dist/CrossColumnSearch.d.ts.map +1 -1
- package/dist/CrossColumnSearch.js +1 -2
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/GotoRow.d.ts +3 -1
- package/dist/GotoRow.d.ts.map +1 -1
- package/dist/GotoRow.js +1 -0
- package/dist/GotoRow.js.map +1 -1
- package/dist/IrisGrid.css +3 -0
- package/dist/IrisGrid.css.map +1 -1
- package/dist/IrisGrid.d.ts +8 -6
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +74 -37
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridCellRendererUtils.d.ts +7 -0
- package/dist/IrisGridCellRendererUtils.d.ts.map +1 -0
- package/dist/IrisGridCellRendererUtils.js +20 -0
- package/dist/IrisGridCellRendererUtils.js.map +1 -0
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridDataBarCellRenderer.d.ts +7 -0
- package/dist/IrisGridDataBarCellRenderer.d.ts.map +1 -0
- package/dist/IrisGridDataBarCellRenderer.js +10 -0
- package/dist/IrisGridDataBarCellRenderer.js.map +1 -0
- package/dist/IrisGridIcons.d.ts +4 -0
- package/dist/IrisGridIcons.d.ts.map +1 -0
- package/dist/IrisGridIcons.js +25 -0
- package/dist/IrisGridIcons.js.map +1 -0
- package/dist/IrisGridMetricCalculator.d.ts +1 -1
- package/dist/IrisGridMetricCalculator.d.ts.map +1 -1
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridModel.d.ts +1 -1
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelFactory.d.ts +2 -2
- package/dist/IrisGridModelFactory.d.ts.map +1 -1
- package/dist/IrisGridModelFactory.js +3 -3
- package/dist/IrisGridModelFactory.js.map +1 -1
- package/dist/IrisGridModelUpdater.d.ts +3 -2
- package/dist/IrisGridModelUpdater.d.ts.map +1 -1
- package/dist/IrisGridModelUpdater.js +2 -2
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridPartitionSelector.d.ts +2 -1
- package/dist/IrisGridPartitionSelector.d.ts.map +1 -1
- package/dist/IrisGridPartitionSelector.js +2 -0
- package/dist/IrisGridPartitionSelector.js.map +1 -1
- package/dist/IrisGridProxyModel.d.ts +3 -2
- package/dist/IrisGridProxyModel.d.ts.map +1 -1
- package/dist/IrisGridProxyModel.js +11 -9
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.d.ts +19 -27
- package/dist/IrisGridRenderer.d.ts.map +1 -1
- package/dist/IrisGridRenderer.js +64 -205
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts +2 -2
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +6 -6
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.d.ts +8 -3
- package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
- package/dist/IrisGridTableModelTemplate.js +42 -15
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/IrisGridTestUtils.d.ts +14 -13
- package/dist/IrisGridTestUtils.d.ts.map +1 -1
- package/dist/IrisGridTestUtils.js +33 -27
- package/dist/IrisGridTestUtils.js.map +1 -1
- package/dist/IrisGridTextCellRenderer.d.ts +20 -0
- package/dist/IrisGridTextCellRenderer.d.ts.map +1 -0
- package/dist/IrisGridTextCellRenderer.js +139 -0
- package/dist/IrisGridTextCellRenderer.js.map +1 -0
- package/dist/IrisGridTheme.d.ts.map +1 -1
- package/dist/IrisGridTheme.js +4 -1
- package/dist/IrisGridTheme.js.map +1 -1
- package/dist/IrisGridTheme.module.css +3 -0
- package/dist/IrisGridTheme.module.css.map +1 -1
- package/dist/IrisGridTreeTableModel.d.ts +1 -1
- package/dist/IrisGridTreeTableModel.d.ts.map +1 -1
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.d.ts +88 -85
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +567 -556
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/PartitionSelectorSearch.d.ts +2 -1
- package/dist/PartitionSelectorSearch.d.ts.map +1 -1
- package/dist/PartitionSelectorSearch.js +3 -1
- package/dist/PartitionSelectorSearch.js.map +1 -1
- package/dist/TableViewportUpdater.d.ts +1 -1
- package/dist/TableViewportUpdater.d.ts.map +1 -1
- package/dist/TableViewportUpdater.js.map +1 -1
- package/dist/TreeTableViewportUpdater.d.ts +2 -1
- package/dist/TreeTableViewportUpdater.d.ts.map +1 -1
- package/dist/TreeTableViewportUpdater.js +1 -1
- package/dist/TreeTableViewportUpdater.js.map +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.d.ts +3 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.d.ts.map +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.js +3 -2
- package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.d.ts +3 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.d.ts.map +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.js +3 -2
- package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts +10 -9
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +49 -32
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridTokenMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridTokenMouseHandler.js +18 -3
- package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +1 -1
- package/dist/sidebar/ChartBuilder.d.ts +12 -11
- package/dist/sidebar/ChartBuilder.d.ts.map +1 -1
- package/dist/sidebar/ChartBuilder.js +98 -81
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/RollupRows.d.ts +1 -1
- package/dist/sidebar/RollupRows.d.ts.map +1 -1
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.d.ts +1 -1
- package/dist/sidebar/SelectDistinctBuilder.d.ts.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.d.ts +3 -2
- package/dist/sidebar/TableCsvExporter.d.ts.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +3 -3
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/TableSaver.d.ts +2 -1
- package/dist/sidebar/TableSaver.d.ts.map +1 -1
- package/dist/sidebar/TableSaver.js +4 -1
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.d.ts +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.d.ts.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.d.ts +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.d.ts.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts +2 -0
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +2 -0
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts +2 -0
- package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.js +3 -2
- package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts +2 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +3 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.d.ts +2 -2
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts +3 -3
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +3 -3
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts +2 -0
- package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js +2 -0
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
- package/package.json +16 -15
package/dist/IrisGridUtils.js
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
var _excluded = ["selectedValues"],
|
|
2
2
|
_excluded2 = ["selectedValues"];
|
|
3
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
4
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
3
5
|
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; }
|
|
4
6
|
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; }
|
|
5
7
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
8
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
7
9
|
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
8
|
-
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
9
|
-
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
10
10
|
import { GridUtils } from '@deephaven/grid';
|
|
11
|
-
import dh from '@deephaven/jsapi-shim';
|
|
12
11
|
import { DateUtils, TableUtils } from '@deephaven/jsapi-utils';
|
|
13
12
|
import Log from '@deephaven/log';
|
|
14
13
|
import { assertNotNull, EMPTY_ARRAY, EMPTY_MAP } from '@deephaven/utils';
|
|
@@ -117,152 +116,6 @@ class IrisGridUtils {
|
|
|
117
116
|
};
|
|
118
117
|
}
|
|
119
118
|
|
|
120
|
-
/**
|
|
121
|
-
* Exports the state from IrisGrid to a JSON stringifiable object
|
|
122
|
-
* @param model The table model to export the state for
|
|
123
|
-
* @param irisGridState The current state of the IrisGrid
|
|
124
|
-
*/
|
|
125
|
-
static dehydrateIrisGridState(model, irisGridState) {
|
|
126
|
-
var {
|
|
127
|
-
aggregationSettings = {
|
|
128
|
-
aggregations: EMPTY_ARRAY,
|
|
129
|
-
showOnTop: false
|
|
130
|
-
},
|
|
131
|
-
advancedFilters,
|
|
132
|
-
customColumnFormatMap,
|
|
133
|
-
isFilterBarShown,
|
|
134
|
-
metrics,
|
|
135
|
-
quickFilters,
|
|
136
|
-
customColumns,
|
|
137
|
-
conditionalFormats = EMPTY_ARRAY,
|
|
138
|
-
reverseType,
|
|
139
|
-
rollupConfig = undefined,
|
|
140
|
-
showSearchBar,
|
|
141
|
-
searchValue,
|
|
142
|
-
selectDistinctColumns = EMPTY_ARRAY,
|
|
143
|
-
selectedSearchColumns,
|
|
144
|
-
sorts,
|
|
145
|
-
invertSearchColumns,
|
|
146
|
-
pendingDataMap = EMPTY_MAP,
|
|
147
|
-
frozenColumns,
|
|
148
|
-
columnHeaderGroups
|
|
149
|
-
} = irisGridState;
|
|
150
|
-
assertNotNull(metrics);
|
|
151
|
-
var {
|
|
152
|
-
userColumnWidths,
|
|
153
|
-
userRowHeights
|
|
154
|
-
} = metrics;
|
|
155
|
-
var {
|
|
156
|
-
columns
|
|
157
|
-
} = model;
|
|
158
|
-
return {
|
|
159
|
-
advancedFilters: IrisGridUtils.dehydrateAdvancedFilters(columns, advancedFilters),
|
|
160
|
-
aggregationSettings,
|
|
161
|
-
customColumnFormatMap: [...customColumnFormatMap],
|
|
162
|
-
isFilterBarShown,
|
|
163
|
-
quickFilters: IrisGridUtils.dehydrateQuickFilters(quickFilters),
|
|
164
|
-
sorts: IrisGridUtils.dehydrateSort(sorts),
|
|
165
|
-
userColumnWidths: [...userColumnWidths].filter(_ref6 => {
|
|
166
|
-
var [columnIndex] = _ref6;
|
|
167
|
-
return columnIndex != null && columnIndex >= 0 && columnIndex < columns.length;
|
|
168
|
-
}).map(_ref7 => {
|
|
169
|
-
var [columnIndex, width] = _ref7;
|
|
170
|
-
return [columns[columnIndex].name, width];
|
|
171
|
-
}),
|
|
172
|
-
userRowHeights: [...userRowHeights],
|
|
173
|
-
customColumns: [...customColumns],
|
|
174
|
-
conditionalFormats: [...conditionalFormats],
|
|
175
|
-
reverseType,
|
|
176
|
-
rollupConfig,
|
|
177
|
-
showSearchBar,
|
|
178
|
-
searchValue,
|
|
179
|
-
selectDistinctColumns: [...selectDistinctColumns],
|
|
180
|
-
selectedSearchColumns,
|
|
181
|
-
invertSearchColumns,
|
|
182
|
-
pendingDataMap: IrisGridUtils.dehydratePendingDataMap(columns, pendingDataMap),
|
|
183
|
-
frozenColumns,
|
|
184
|
-
columnHeaderGroups: columnHeaderGroups === null || columnHeaderGroups === void 0 ? void 0 : columnHeaderGroups.map(item => ({
|
|
185
|
-
name: item.name,
|
|
186
|
-
children: item.children,
|
|
187
|
-
color: item.color
|
|
188
|
-
}))
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
/**
|
|
193
|
-
* Import a state for IrisGrid that was exported with {{@link dehydrateIrisGridState}}
|
|
194
|
-
* @param model The table model to import the state with
|
|
195
|
-
* @param irisGridState The saved IrisGrid state
|
|
196
|
-
*/
|
|
197
|
-
static hydrateIrisGridState(model, irisGridState) {
|
|
198
|
-
var _ref11, _model$layoutHints;
|
|
199
|
-
var {
|
|
200
|
-
advancedFilters,
|
|
201
|
-
aggregationSettings = {
|
|
202
|
-
aggregations: [],
|
|
203
|
-
showOnTop: false
|
|
204
|
-
},
|
|
205
|
-
customColumnFormatMap,
|
|
206
|
-
isFilterBarShown,
|
|
207
|
-
quickFilters,
|
|
208
|
-
sorts,
|
|
209
|
-
customColumns,
|
|
210
|
-
conditionalFormats,
|
|
211
|
-
userColumnWidths,
|
|
212
|
-
userRowHeights,
|
|
213
|
-
reverseType,
|
|
214
|
-
rollupConfig = undefined,
|
|
215
|
-
showSearchBar,
|
|
216
|
-
searchValue,
|
|
217
|
-
selectDistinctColumns,
|
|
218
|
-
selectedSearchColumns,
|
|
219
|
-
invertSearchColumns = true,
|
|
220
|
-
pendingDataMap = [],
|
|
221
|
-
frozenColumns,
|
|
222
|
-
columnHeaderGroups
|
|
223
|
-
} = irisGridState;
|
|
224
|
-
var {
|
|
225
|
-
columns,
|
|
226
|
-
formatter
|
|
227
|
-
} = model;
|
|
228
|
-
return {
|
|
229
|
-
advancedFilters: IrisGridUtils.hydrateAdvancedFilters(columns, advancedFilters, formatter.timeZone),
|
|
230
|
-
aggregationSettings,
|
|
231
|
-
customColumnFormatMap: new Map(customColumnFormatMap),
|
|
232
|
-
isFilterBarShown,
|
|
233
|
-
quickFilters: IrisGridUtils.hydrateQuickFilters(columns, quickFilters, formatter.timeZone),
|
|
234
|
-
sorts: IrisGridUtils.hydrateSort(columns, sorts),
|
|
235
|
-
userColumnWidths: new Map(userColumnWidths.map(_ref8 => {
|
|
236
|
-
var [column, width] = _ref8;
|
|
237
|
-
if (typeof column === 'string' || column instanceof String) {
|
|
238
|
-
return [columns.findIndex(_ref9 => {
|
|
239
|
-
var {
|
|
240
|
-
name
|
|
241
|
-
} = _ref9;
|
|
242
|
-
return name === column;
|
|
243
|
-
}), width];
|
|
244
|
-
}
|
|
245
|
-
return [column, width];
|
|
246
|
-
}).filter(_ref10 => {
|
|
247
|
-
var [column] = _ref10;
|
|
248
|
-
return column != null && column >= 0 && column < columns.length;
|
|
249
|
-
})),
|
|
250
|
-
customColumns,
|
|
251
|
-
conditionalFormats,
|
|
252
|
-
userRowHeights: new Map(userRowHeights),
|
|
253
|
-
reverseType,
|
|
254
|
-
rollupConfig,
|
|
255
|
-
showSearchBar,
|
|
256
|
-
searchValue,
|
|
257
|
-
selectDistinctColumns,
|
|
258
|
-
selectedSearchColumns,
|
|
259
|
-
invertSearchColumns,
|
|
260
|
-
pendingDataMap: IrisGridUtils.hydratePendingDataMap(columns, pendingDataMap),
|
|
261
|
-
frozenColumns,
|
|
262
|
-
columnHeaderGroups: IrisGridUtils.parseColumnHeaderGroups(model, (_ref11 = columnHeaderGroups !== null && columnHeaderGroups !== void 0 ? columnHeaderGroups : (_model$layoutHints = model.layoutHints) === null || _model$layoutHints === void 0 ? void 0 : _model$layoutHints.columnGroups) !== null && _ref11 !== void 0 ? _ref11 : []).groups
|
|
263
|
-
};
|
|
264
|
-
}
|
|
265
|
-
|
|
266
119
|
/**
|
|
267
120
|
* Export the IrisGridPanel state.
|
|
268
121
|
* @param model The table model the state is being dehydrated with
|
|
@@ -314,8 +167,8 @@ class IrisGridUtils {
|
|
|
314
167
|
* @returns The dehydrated quick filters
|
|
315
168
|
*/
|
|
316
169
|
static dehydrateQuickFilters(quickFilters) {
|
|
317
|
-
return [...quickFilters].map(
|
|
318
|
-
var [columnIndex, quickFilter] =
|
|
170
|
+
return [...quickFilters].map(_ref6 => {
|
|
171
|
+
var [columnIndex, quickFilter] = _ref6;
|
|
319
172
|
var {
|
|
320
173
|
text
|
|
321
174
|
} = quickFilter;
|
|
@@ -324,380 +177,100 @@ class IrisGridUtils {
|
|
|
324
177
|
}];
|
|
325
178
|
});
|
|
326
179
|
}
|
|
180
|
+
static dehydrateLong(value) {
|
|
181
|
+
return value != null ? "".concat(value) : null;
|
|
182
|
+
}
|
|
327
183
|
|
|
328
184
|
/**
|
|
329
|
-
*
|
|
330
|
-
* @param
|
|
331
|
-
* @
|
|
332
|
-
* @param timeZone The time zone to make this value in if it is a date type. E.g. America/New_York
|
|
333
|
-
* @returns The quick filters to apply to the columns
|
|
185
|
+
* Export the sorts from the provided table sorts to JSON stringifiable object
|
|
186
|
+
* @param sorts The table sorts
|
|
187
|
+
* @returns The dehydrated sorts
|
|
334
188
|
*/
|
|
335
|
-
static
|
|
336
|
-
|
|
337
|
-
var [columnIndex, quickFilter] = _ref13;
|
|
189
|
+
static dehydrateSort(sorts) {
|
|
190
|
+
return sorts.map(sort => {
|
|
338
191
|
var {
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
}
|
|
348
|
-
log.error('hydrateQuickFilters error with', text, error);
|
|
349
|
-
}
|
|
350
|
-
return [columnIndex, {
|
|
351
|
-
text,
|
|
352
|
-
filter
|
|
353
|
-
}];
|
|
192
|
+
column,
|
|
193
|
+
isAbs,
|
|
194
|
+
direction
|
|
195
|
+
} = sort;
|
|
196
|
+
return {
|
|
197
|
+
column: column.name,
|
|
198
|
+
isAbs,
|
|
199
|
+
direction
|
|
200
|
+
};
|
|
354
201
|
});
|
|
355
|
-
return new Map(importedFilters);
|
|
356
202
|
}
|
|
357
203
|
|
|
358
204
|
/**
|
|
359
|
-
*
|
|
360
|
-
* @param
|
|
361
|
-
* @
|
|
362
|
-
* @returns The dehydrated advanced filters
|
|
205
|
+
* Pulls just the table settings from the panel state, eg. filters/sorts
|
|
206
|
+
* @param panelState The dehydrated panel state
|
|
207
|
+
* @returns A dehydrated table settings object, { partition, partitionColumn, advancedFilters, quickFilters, sorts }
|
|
363
208
|
*/
|
|
364
|
-
static
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
209
|
+
static extractTableSettings(panelState) {
|
|
210
|
+
var inputFilters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
211
|
+
var {
|
|
212
|
+
irisGridPanelState,
|
|
213
|
+
irisGridState
|
|
214
|
+
} = panelState;
|
|
215
|
+
var {
|
|
216
|
+
partitionColumn,
|
|
217
|
+
partition
|
|
218
|
+
} = irisGridPanelState;
|
|
219
|
+
var {
|
|
220
|
+
advancedFilters,
|
|
221
|
+
quickFilters,
|
|
222
|
+
sorts
|
|
223
|
+
} = irisGridState;
|
|
224
|
+
return {
|
|
225
|
+
advancedFilters,
|
|
226
|
+
inputFilters,
|
|
227
|
+
partition,
|
|
228
|
+
partitionColumn,
|
|
229
|
+
quickFilters,
|
|
230
|
+
sorts
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
static getInputFiltersForColumns(columns) {
|
|
234
|
+
var inputFilters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
235
|
+
return inputFilters.filter(_ref7 => {
|
|
236
|
+
var {
|
|
237
|
+
name,
|
|
238
|
+
type
|
|
239
|
+
} = _ref7;
|
|
240
|
+
return columns.find(_ref8 => {
|
|
241
|
+
var {
|
|
242
|
+
name: columnName,
|
|
243
|
+
type: columnType
|
|
244
|
+
} = _ref8;
|
|
245
|
+
return columnName === name && columnType === type;
|
|
246
|
+
});
|
|
373
247
|
});
|
|
374
248
|
}
|
|
249
|
+
static getFiltersFromFilterMap(filterMap) {
|
|
250
|
+
var filters = [];
|
|
251
|
+
var keys = Array.from(filterMap.keys());
|
|
252
|
+
for (var i = 0; i < keys.length; i += 1) {
|
|
253
|
+
var key = keys[i];
|
|
254
|
+
var item = filterMap.get(key);
|
|
255
|
+
if ((item === null || item === void 0 ? void 0 : item.filter) != null) {
|
|
256
|
+
filters.push(item.filter);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
return filters;
|
|
260
|
+
}
|
|
375
261
|
|
|
376
262
|
/**
|
|
377
|
-
*
|
|
378
|
-
* @param
|
|
379
|
-
* @
|
|
380
|
-
* @param timeZone The time zone to make this filter in if it is a date type. E.g. America/New_York
|
|
381
|
-
* @returns The advanced filters to apply to the columns
|
|
263
|
+
* Get array of hidden column indexes
|
|
264
|
+
* @param userColumnWidths Map of user column widths
|
|
265
|
+
* @returns Array of hidden column indexes
|
|
382
266
|
*/
|
|
383
|
-
static
|
|
384
|
-
|
|
385
|
-
var [
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
var
|
|
389
|
-
|
|
390
|
-
try {
|
|
391
|
-
var columnRetrieved = IrisGridUtils.getColumn(columns, columnIndex);
|
|
392
|
-
if (columnRetrieved != null) {
|
|
393
|
-
filter = TableUtils.makeAdvancedFilter(column, options, timeZone);
|
|
394
|
-
}
|
|
395
|
-
} catch (error) {
|
|
396
|
-
log.error('hydrateAdvancedFilters error with', options, error);
|
|
397
|
-
}
|
|
398
|
-
return [columnIndex, {
|
|
399
|
-
options,
|
|
400
|
-
filter
|
|
401
|
-
}];
|
|
402
|
-
});
|
|
403
|
-
return new Map(importedFilters);
|
|
404
|
-
}
|
|
405
|
-
static dehydrateAdvancedFilterOptions(column, options) {
|
|
406
|
-
var {
|
|
407
|
-
selectedValues
|
|
408
|
-
} = options,
|
|
409
|
-
otherOptions = _objectWithoutProperties(options, _excluded);
|
|
410
|
-
return _objectSpread({
|
|
411
|
-
selectedValues: selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.map(value => IrisGridUtils.dehydrateValue(value, column === null || column === void 0 ? void 0 : column.type))
|
|
412
|
-
}, otherOptions);
|
|
413
|
-
}
|
|
414
|
-
static hydrateAdvancedFilterOptions(column, options) {
|
|
415
|
-
var {
|
|
416
|
-
selectedValues
|
|
417
|
-
} = options,
|
|
418
|
-
otherOptions = _objectWithoutProperties(options, _excluded2);
|
|
419
|
-
return _objectSpread({
|
|
420
|
-
selectedValues: selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.map(value => IrisGridUtils.hydrateValue(value, column === null || column === void 0 ? void 0 : column.type))
|
|
421
|
-
}, otherOptions);
|
|
422
|
-
}
|
|
423
|
-
static dehydratePendingDataMap(columns, pendingDataMap) {
|
|
424
|
-
return [...pendingDataMap].map(_ref16 => {
|
|
425
|
-
var [rowIndex, {
|
|
426
|
-
data
|
|
427
|
-
}] = _ref16;
|
|
428
|
-
return [rowIndex, {
|
|
429
|
-
data: [...data].map(_ref17 => {
|
|
430
|
-
var [c, value] = _ref17;
|
|
431
|
-
return [columns[c].name, IrisGridUtils.dehydrateValue(value, columns[c].type)];
|
|
432
|
-
})
|
|
433
|
-
}];
|
|
434
|
-
});
|
|
435
|
-
}
|
|
436
|
-
static hydratePendingDataMap(columns, pendingDataMap) {
|
|
437
|
-
var columnMap = new Map();
|
|
438
|
-
var getColumnIndex = columnName => {
|
|
439
|
-
if (!columnMap.has(columnName)) {
|
|
440
|
-
columnMap.set(columnName, columns.findIndex(_ref18 => {
|
|
441
|
-
var {
|
|
442
|
-
name
|
|
443
|
-
} = _ref18;
|
|
444
|
-
return name === columnName;
|
|
445
|
-
}));
|
|
446
|
-
}
|
|
447
|
-
return columnMap.get(columnName);
|
|
448
|
-
};
|
|
449
|
-
return new Map(pendingDataMap.map(_ref19 => {
|
|
450
|
-
var [rowIndex, {
|
|
451
|
-
data
|
|
452
|
-
}] = _ref19;
|
|
453
|
-
return [rowIndex, {
|
|
454
|
-
data: new Map(data.map(_ref20 => {
|
|
455
|
-
var _getColumnIndex;
|
|
456
|
-
var [columnName, value] = _ref20;
|
|
457
|
-
var index = getColumnIndex(columnName);
|
|
458
|
-
assertNotNull(index);
|
|
459
|
-
return [(_getColumnIndex = getColumnIndex(columnName)) !== null && _getColumnIndex !== void 0 ? _getColumnIndex : null, IrisGridUtils.hydrateValue(value, columns[index].type)];
|
|
460
|
-
}))
|
|
461
|
-
}];
|
|
462
|
-
}));
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
/**
|
|
466
|
-
* Dehydrates/serializes a value for storage.
|
|
467
|
-
* @param value The value to dehydrate
|
|
468
|
-
* @param columnType The column type
|
|
469
|
-
*/
|
|
470
|
-
static dehydrateValue(value, columnType) {
|
|
471
|
-
if (TableUtils.isDateType(columnType)) {
|
|
472
|
-
return IrisGridUtils.dehydrateDateTime(value);
|
|
473
|
-
}
|
|
474
|
-
if (TableUtils.isLongType(columnType)) {
|
|
475
|
-
return IrisGridUtils.dehydrateLong(value);
|
|
476
|
-
}
|
|
477
|
-
return value;
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
/**
|
|
481
|
-
* Hydrate a value from it's serialized state
|
|
482
|
-
* @param value The dehydrated value that needs to be hydrated
|
|
483
|
-
* @param columnType The type of column
|
|
484
|
-
*/
|
|
485
|
-
static hydrateValue(value, columnType) {
|
|
486
|
-
if (TableUtils.isDateType(columnType)) {
|
|
487
|
-
return IrisGridUtils.hydrateDateTime(value);
|
|
488
|
-
}
|
|
489
|
-
if (TableUtils.isLongType(columnType)) {
|
|
490
|
-
return IrisGridUtils.hydrateLong(value);
|
|
491
|
-
}
|
|
492
|
-
return value;
|
|
493
|
-
}
|
|
494
|
-
static dehydrateDateTime(value) {
|
|
495
|
-
return value != null ? dh.i18n.DateTimeFormat.format(DateUtils.FULL_DATE_FORMAT, value) : null;
|
|
496
|
-
}
|
|
497
|
-
static hydrateDateTime(value) {
|
|
498
|
-
return value != null ? dh.i18n.DateTimeFormat.parse(DateUtils.FULL_DATE_FORMAT, value) : null;
|
|
499
|
-
}
|
|
500
|
-
static dehydrateLong(value) {
|
|
501
|
-
return value != null ? "".concat(value) : null;
|
|
502
|
-
}
|
|
503
|
-
static hydrateLong(value) {
|
|
504
|
-
return value != null ? dh.LongWrapper.ofString(value) : null;
|
|
505
|
-
}
|
|
506
|
-
|
|
507
|
-
/**
|
|
508
|
-
* Export the sorts from the provided table sorts to JSON stringifiable object
|
|
509
|
-
* @param sorts The table sorts
|
|
510
|
-
* @returns The dehydrated sorts
|
|
511
|
-
*/
|
|
512
|
-
static dehydrateSort(sorts) {
|
|
513
|
-
return sorts.map(sort => {
|
|
514
|
-
var {
|
|
515
|
-
column,
|
|
516
|
-
isAbs,
|
|
517
|
-
direction
|
|
518
|
-
} = sort;
|
|
519
|
-
return {
|
|
520
|
-
column: column.name,
|
|
521
|
-
isAbs,
|
|
522
|
-
direction
|
|
523
|
-
};
|
|
524
|
-
});
|
|
525
|
-
}
|
|
526
|
-
|
|
527
|
-
/**
|
|
528
|
-
* Import the saved sorts to apply to the table. Does not actually apply the sort.
|
|
529
|
-
* @param columns The columns the sorts will be applied to
|
|
530
|
-
* @param sorts Exported sort definitions
|
|
531
|
-
* @returns The sorts to apply to the table
|
|
532
|
-
*/
|
|
533
|
-
static hydrateSort(columns, sorts) {
|
|
534
|
-
return sorts.map(sort => {
|
|
535
|
-
var {
|
|
536
|
-
column: columnIndexOrName,
|
|
537
|
-
isAbs,
|
|
538
|
-
direction
|
|
539
|
-
} = sort;
|
|
540
|
-
if (direction === TableUtils.sortDirection.reverse) {
|
|
541
|
-
return dh.Table.reverse();
|
|
542
|
-
}
|
|
543
|
-
var column = typeof columnIndexOrName === 'string' ? IrisGridUtils.getColumnByName(columns, columnIndexOrName) : IrisGridUtils.getColumn(columns, columnIndexOrName);
|
|
544
|
-
if (column != null) {
|
|
545
|
-
var columnSort = column.sort();
|
|
546
|
-
if (isAbs) {
|
|
547
|
-
columnSort = columnSort.abs();
|
|
548
|
-
}
|
|
549
|
-
if (direction === TableUtils.sortDirection.descending) {
|
|
550
|
-
columnSort = columnSort.desc();
|
|
551
|
-
} else {
|
|
552
|
-
columnSort = columnSort.asc();
|
|
553
|
-
}
|
|
554
|
-
return columnSort;
|
|
555
|
-
}
|
|
556
|
-
return null;
|
|
557
|
-
})
|
|
558
|
-
// If we can't find the column any more, it's null, filter it out
|
|
559
|
-
// If the item is a reverse sort item, filter it out - it will get applied with the `reverseType` property
|
|
560
|
-
// This should only happen when loading a legacy dashboard
|
|
561
|
-
.filter(item => item != null && item.direction !== TableUtils.sortDirection.reverse);
|
|
562
|
-
}
|
|
563
|
-
|
|
564
|
-
/**
|
|
565
|
-
* Pulls just the table settings from the panel state, eg. filters/sorts
|
|
566
|
-
* @param panelState The dehydrated panel state
|
|
567
|
-
* @returns A dehydrated table settings object, { partition, partitionColumn, advancedFilters, quickFilters, sorts }
|
|
568
|
-
*/
|
|
569
|
-
static extractTableSettings(panelState) {
|
|
570
|
-
var inputFilters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
571
|
-
var {
|
|
572
|
-
irisGridPanelState,
|
|
573
|
-
irisGridState
|
|
574
|
-
} = panelState;
|
|
575
|
-
var {
|
|
576
|
-
partitionColumn,
|
|
577
|
-
partition
|
|
578
|
-
} = irisGridPanelState;
|
|
579
|
-
var {
|
|
580
|
-
advancedFilters,
|
|
581
|
-
quickFilters,
|
|
582
|
-
sorts
|
|
583
|
-
} = irisGridState;
|
|
584
|
-
return {
|
|
585
|
-
advancedFilters,
|
|
586
|
-
inputFilters,
|
|
587
|
-
partition,
|
|
588
|
-
partitionColumn,
|
|
589
|
-
quickFilters,
|
|
590
|
-
sorts
|
|
591
|
-
};
|
|
592
|
-
}
|
|
593
|
-
|
|
594
|
-
/**
|
|
595
|
-
* Applies the passed in table settings directly to the provided table
|
|
596
|
-
* @param table The table to apply the settings to
|
|
597
|
-
* @param tableSettings Dehydrated table settings extracted with `extractTableSettings`
|
|
598
|
-
* @param timeZone The time zone to make this value in if it is a date type. E.g. America/New_York
|
|
599
|
-
*/
|
|
600
|
-
static applyTableSettings(table, tableSettings, timeZone) {
|
|
601
|
-
var {
|
|
602
|
-
columns
|
|
603
|
-
} = table;
|
|
604
|
-
var quickFilters = [];
|
|
605
|
-
if (tableSettings.quickFilters) {
|
|
606
|
-
quickFilters = IrisGridUtils.getFiltersFromFilterMap(IrisGridUtils.hydrateQuickFilters(columns, tableSettings.quickFilters, timeZone));
|
|
607
|
-
}
|
|
608
|
-
var advancedFilters = [];
|
|
609
|
-
if (tableSettings.advancedFilters) {
|
|
610
|
-
advancedFilters = IrisGridUtils.getFiltersFromFilterMap(IrisGridUtils.hydrateAdvancedFilters(columns, tableSettings.advancedFilters, timeZone));
|
|
611
|
-
}
|
|
612
|
-
var inputFilters = IrisGridUtils.getFiltersFromInputFilters(columns, tableSettings.inputFilters, timeZone);
|
|
613
|
-
var sorts = [];
|
|
614
|
-
if (tableSettings.sorts) {
|
|
615
|
-
sorts = IrisGridUtils.hydrateSort(columns, tableSettings.sorts);
|
|
616
|
-
}
|
|
617
|
-
var filters = [...quickFilters, ...advancedFilters];
|
|
618
|
-
var {
|
|
619
|
-
partition,
|
|
620
|
-
partitionColumn: partitionColumnName
|
|
621
|
-
} = tableSettings;
|
|
622
|
-
if (partition != null && partitionColumnName != null) {
|
|
623
|
-
var partitionColumn = IrisGridUtils.getColumnByName(columns, partitionColumnName);
|
|
624
|
-
if (partitionColumn) {
|
|
625
|
-
var partitionFilter = partitionColumn.filter().eq(dh.FilterValue.ofString(partition));
|
|
626
|
-
filters = [partitionFilter, ...filters];
|
|
627
|
-
}
|
|
628
|
-
}
|
|
629
|
-
filters = [...inputFilters, ...filters];
|
|
630
|
-
table.applyFilter(filters);
|
|
631
|
-
table.applySort(sorts);
|
|
632
|
-
}
|
|
633
|
-
static getInputFiltersForColumns(columns) {
|
|
634
|
-
var inputFilters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
635
|
-
return inputFilters.filter(_ref21 => {
|
|
636
|
-
var {
|
|
637
|
-
name,
|
|
638
|
-
type
|
|
639
|
-
} = _ref21;
|
|
640
|
-
return columns.find(_ref22 => {
|
|
641
|
-
var {
|
|
642
|
-
name: columnName,
|
|
643
|
-
type: columnType
|
|
644
|
-
} = _ref22;
|
|
645
|
-
return columnName === name && columnType === type;
|
|
646
|
-
});
|
|
647
|
-
});
|
|
648
|
-
}
|
|
649
|
-
static getFiltersFromInputFilters(columns) {
|
|
650
|
-
var inputFilters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
651
|
-
var timeZone = arguments.length > 2 ? arguments[2] : undefined;
|
|
652
|
-
return inputFilters.map(_ref23 => {
|
|
653
|
-
var {
|
|
654
|
-
name,
|
|
655
|
-
type,
|
|
656
|
-
value
|
|
657
|
-
} = _ref23;
|
|
658
|
-
var column = columns.find(_ref24 => {
|
|
659
|
-
var {
|
|
660
|
-
name: columnName,
|
|
661
|
-
type: columnType
|
|
662
|
-
} = _ref24;
|
|
663
|
-
return columnName === name && columnType === type;
|
|
664
|
-
});
|
|
665
|
-
if (column) {
|
|
666
|
-
try {
|
|
667
|
-
return TableUtils.makeQuickFilter(column, value, timeZone);
|
|
668
|
-
} catch (e) {
|
|
669
|
-
// It may be unable to create it because user hasn't completed their input
|
|
670
|
-
log.debug('Unable to create input filter', e);
|
|
671
|
-
}
|
|
672
|
-
}
|
|
673
|
-
return null;
|
|
674
|
-
}).filter(filter => filter != null);
|
|
675
|
-
}
|
|
676
|
-
static getFiltersFromFilterMap(filterMap) {
|
|
677
|
-
var filters = [];
|
|
678
|
-
var keys = Array.from(filterMap.keys());
|
|
679
|
-
for (var i = 0; i < keys.length; i += 1) {
|
|
680
|
-
var key = keys[i];
|
|
681
|
-
var item = filterMap.get(key);
|
|
682
|
-
if ((item === null || item === void 0 ? void 0 : item.filter) != null) {
|
|
683
|
-
filters.push(item.filter);
|
|
684
|
-
}
|
|
685
|
-
}
|
|
686
|
-
return filters;
|
|
687
|
-
}
|
|
688
|
-
|
|
689
|
-
/**
|
|
690
|
-
* Get array of hidden column indexes
|
|
691
|
-
* @param userColumnWidths Map of user column widths
|
|
692
|
-
* @returns Array of hidden column indexes
|
|
693
|
-
*/
|
|
694
|
-
static getHiddenColumns(userColumnWidths) {
|
|
695
|
-
return [...userColumnWidths.entries()].filter(_ref25 => {
|
|
696
|
-
var [, value] = _ref25;
|
|
697
|
-
return value === 0;
|
|
698
|
-
}).map(_ref26 => {
|
|
699
|
-
var [key] = _ref26;
|
|
700
|
-
return key;
|
|
267
|
+
static getHiddenColumns(userColumnWidths) {
|
|
268
|
+
return [...userColumnWidths.entries()].filter(_ref9 => {
|
|
269
|
+
var [, value] = _ref9;
|
|
270
|
+
return value === 0;
|
|
271
|
+
}).map(_ref10 => {
|
|
272
|
+
var [key] = _ref10;
|
|
273
|
+
return key;
|
|
701
274
|
});
|
|
702
275
|
}
|
|
703
276
|
static parseCustomColumnNames(customColumns) {
|
|
@@ -712,10 +285,10 @@ class IrisGridUtils {
|
|
|
712
285
|
return sorts.filter(sort => !columnNames.includes(sort.column.name));
|
|
713
286
|
}
|
|
714
287
|
static removeFiltersInColumns(columns, filters, removedColumnNames) {
|
|
715
|
-
var columnNames = columns.map(
|
|
288
|
+
var columnNames = columns.map(_ref11 => {
|
|
716
289
|
var {
|
|
717
290
|
name
|
|
718
|
-
} =
|
|
291
|
+
} = _ref11;
|
|
719
292
|
return name;
|
|
720
293
|
});
|
|
721
294
|
var newFilter = new Map(filters);
|
|
@@ -723,10 +296,10 @@ class IrisGridUtils {
|
|
|
723
296
|
return newFilter;
|
|
724
297
|
}
|
|
725
298
|
static removeColumnFromMovedColumns(columns, movedColumns, removedColumnNames) {
|
|
726
|
-
var columnNames = columns.map(
|
|
299
|
+
var columnNames = columns.map(_ref12 => {
|
|
727
300
|
var {
|
|
728
301
|
name
|
|
729
|
-
} =
|
|
302
|
+
} = _ref12;
|
|
730
303
|
return name;
|
|
731
304
|
});
|
|
732
305
|
var newMoves = [...movedColumns];
|
|
@@ -814,10 +387,10 @@ class IrisGridUtils {
|
|
|
814
387
|
static getColumnsToFetch(tableColumns, viewportColumns, alwaysFetchColumnNames) {
|
|
815
388
|
var columnsToFetch = [...viewportColumns];
|
|
816
389
|
alwaysFetchColumnNames.forEach(columnName => {
|
|
817
|
-
var column = tableColumns.find(
|
|
390
|
+
var column = tableColumns.find(_ref13 => {
|
|
818
391
|
var {
|
|
819
392
|
name
|
|
820
|
-
} =
|
|
393
|
+
} = _ref13;
|
|
821
394
|
return name === columnName;
|
|
822
395
|
});
|
|
823
396
|
if (column != null && !viewportColumns.includes(column)) {
|
|
@@ -842,35 +415,11 @@ class IrisGridUtils {
|
|
|
842
415
|
}
|
|
843
416
|
|
|
844
417
|
/**
|
|
845
|
-
*
|
|
846
|
-
*
|
|
847
|
-
*
|
|
848
|
-
* @param
|
|
849
|
-
* @returns
|
|
850
|
-
*/
|
|
851
|
-
static rangeSetFromRanges(ranges) {
|
|
852
|
-
var rangeSets = ranges.slice().sort((a, b) => {
|
|
853
|
-
assertNotNull(a.startRow);
|
|
854
|
-
assertNotNull(b.startRow);
|
|
855
|
-
return a.startRow - b.startRow;
|
|
856
|
-
}).map(range => {
|
|
857
|
-
var {
|
|
858
|
-
startRow,
|
|
859
|
-
endRow
|
|
860
|
-
} = range;
|
|
861
|
-
assertNotNull(startRow);
|
|
862
|
-
assertNotNull(endRow);
|
|
863
|
-
return dh.RangeSet.ofRange(startRow, endRow);
|
|
864
|
-
});
|
|
865
|
-
return dh.RangeSet.ofRanges(rangeSets);
|
|
866
|
-
}
|
|
867
|
-
|
|
868
|
-
/**
|
|
869
|
-
* Validate whether the ranges passed in are valid to take a snapshot from.
|
|
870
|
-
* Multiple selections are valid if all of the selected rows have the same columns selected.
|
|
871
|
-
*
|
|
872
|
-
* @param ranges The ranges to validate
|
|
873
|
-
* @returns True if the ranges are valid, false otherwise
|
|
418
|
+
* Validate whether the ranges passed in are valid to take a snapshot from.
|
|
419
|
+
* Multiple selections are valid if all of the selected rows have the same columns selected.
|
|
420
|
+
*
|
|
421
|
+
* @param ranges The ranges to validate
|
|
422
|
+
* @returns True if the ranges are valid, false otherwise
|
|
874
423
|
*/
|
|
875
424
|
static isValidSnapshotRanges(ranges) {
|
|
876
425
|
if (ranges == null || ranges.length === 0) {
|
|
@@ -985,12 +534,12 @@ class IrisGridUtils {
|
|
|
985
534
|
var {
|
|
986
535
|
aggregations = []
|
|
987
536
|
} = aggregationSettings !== null && aggregationSettings !== void 0 ? aggregationSettings : {};
|
|
988
|
-
var aggregationColumns = aggregations.map(
|
|
537
|
+
var aggregationColumns = aggregations.map(_ref14 => {
|
|
989
538
|
var {
|
|
990
539
|
operation,
|
|
991
540
|
selected,
|
|
992
541
|
invert
|
|
993
|
-
} =
|
|
542
|
+
} = _ref14;
|
|
994
543
|
return AggregationUtils.isRollupOperation(operation) ? [] : AggregationUtils.getOperationColumnNames(originalColumns, operation, selected, invert);
|
|
995
544
|
});
|
|
996
545
|
var aggregationMap = {};
|
|
@@ -1058,17 +607,17 @@ class IrisGridUtils {
|
|
|
1058
607
|
* @param columnName The column name to retrieve
|
|
1059
608
|
*/
|
|
1060
609
|
static getColumnByName(columns, columnName) {
|
|
1061
|
-
var column = columns.find(
|
|
610
|
+
var column = columns.find(_ref15 => {
|
|
1062
611
|
var {
|
|
1063
612
|
name
|
|
1064
|
-
} =
|
|
613
|
+
} = _ref15;
|
|
1065
614
|
return name === columnName;
|
|
1066
615
|
});
|
|
1067
616
|
if (column == null) {
|
|
1068
|
-
log.error('Unable to retrieve column by name', columnName, columns.map(
|
|
617
|
+
log.error('Unable to retrieve column by name', columnName, columns.map(_ref16 => {
|
|
1069
618
|
var {
|
|
1070
619
|
name
|
|
1071
|
-
} =
|
|
620
|
+
} = _ref16;
|
|
1072
621
|
return name;
|
|
1073
622
|
}));
|
|
1074
623
|
}
|
|
@@ -1082,11 +631,11 @@ class IrisGridUtils {
|
|
|
1082
631
|
* @returns Updated filter configs with column names changed to indexes
|
|
1083
632
|
*/
|
|
1084
633
|
static changeFilterColumnNamesToIndexes(columns, filters) {
|
|
1085
|
-
return filters.map(
|
|
634
|
+
return filters.map(_ref17 => {
|
|
1086
635
|
var {
|
|
1087
636
|
name,
|
|
1088
637
|
filter
|
|
1089
|
-
} =
|
|
638
|
+
} = _ref17;
|
|
1090
639
|
var index = columns.findIndex(column => column.name === name);
|
|
1091
640
|
return index < 0 ? null : [index, filter];
|
|
1092
641
|
}).filter(filterConfig => filterConfig != null);
|
|
@@ -1156,10 +705,10 @@ class IrisGridUtils {
|
|
|
1156
705
|
var groupMap = new Map();
|
|
1157
706
|
|
|
1158
707
|
// Remove any empty groups before parsing
|
|
1159
|
-
var groups = groupsParam === null || groupsParam === void 0 ? void 0 : groupsParam.filter(
|
|
708
|
+
var groups = groupsParam === null || groupsParam === void 0 ? void 0 : groupsParam.filter(_ref18 => {
|
|
1160
709
|
var {
|
|
1161
710
|
children
|
|
1162
|
-
} =
|
|
711
|
+
} = _ref18;
|
|
1163
712
|
return children.length > 0;
|
|
1164
713
|
});
|
|
1165
714
|
if (groups.length === 0) {
|
|
@@ -1259,6 +808,468 @@ class IrisGridUtils {
|
|
|
1259
808
|
}
|
|
1260
809
|
return "".concat(value);
|
|
1261
810
|
}
|
|
811
|
+
constructor(dh) {
|
|
812
|
+
_defineProperty(this, "dh", void 0);
|
|
813
|
+
_defineProperty(this, "tableUtils", void 0);
|
|
814
|
+
this.dh = dh;
|
|
815
|
+
this.tableUtils = new TableUtils(dh);
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
/**
|
|
819
|
+
* Exports the state from IrisGrid to a JSON stringifiable object
|
|
820
|
+
* @param model The table model to export the state for
|
|
821
|
+
* @param irisGridState The current state of the IrisGrid
|
|
822
|
+
*/
|
|
823
|
+
dehydrateIrisGridState(model, irisGridState) {
|
|
824
|
+
var {
|
|
825
|
+
aggregationSettings = {
|
|
826
|
+
aggregations: EMPTY_ARRAY,
|
|
827
|
+
showOnTop: false
|
|
828
|
+
},
|
|
829
|
+
advancedFilters,
|
|
830
|
+
customColumnFormatMap,
|
|
831
|
+
isFilterBarShown,
|
|
832
|
+
metrics,
|
|
833
|
+
quickFilters,
|
|
834
|
+
customColumns,
|
|
835
|
+
conditionalFormats = EMPTY_ARRAY,
|
|
836
|
+
reverseType,
|
|
837
|
+
rollupConfig = undefined,
|
|
838
|
+
showSearchBar,
|
|
839
|
+
searchValue,
|
|
840
|
+
selectDistinctColumns = EMPTY_ARRAY,
|
|
841
|
+
selectedSearchColumns,
|
|
842
|
+
sorts,
|
|
843
|
+
invertSearchColumns,
|
|
844
|
+
pendingDataMap = EMPTY_MAP,
|
|
845
|
+
frozenColumns,
|
|
846
|
+
columnHeaderGroups
|
|
847
|
+
} = irisGridState;
|
|
848
|
+
assertNotNull(metrics);
|
|
849
|
+
var {
|
|
850
|
+
userColumnWidths,
|
|
851
|
+
userRowHeights
|
|
852
|
+
} = metrics;
|
|
853
|
+
var {
|
|
854
|
+
columns
|
|
855
|
+
} = model;
|
|
856
|
+
return {
|
|
857
|
+
advancedFilters: this.dehydrateAdvancedFilters(columns, advancedFilters),
|
|
858
|
+
aggregationSettings,
|
|
859
|
+
customColumnFormatMap: [...customColumnFormatMap],
|
|
860
|
+
isFilterBarShown,
|
|
861
|
+
quickFilters: IrisGridUtils.dehydrateQuickFilters(quickFilters),
|
|
862
|
+
sorts: IrisGridUtils.dehydrateSort(sorts),
|
|
863
|
+
userColumnWidths: [...userColumnWidths].filter(_ref19 => {
|
|
864
|
+
var [columnIndex] = _ref19;
|
|
865
|
+
return columnIndex != null && columnIndex >= 0 && columnIndex < columns.length;
|
|
866
|
+
}).map(_ref20 => {
|
|
867
|
+
var [columnIndex, width] = _ref20;
|
|
868
|
+
return [columns[columnIndex].name, width];
|
|
869
|
+
}),
|
|
870
|
+
userRowHeights: [...userRowHeights],
|
|
871
|
+
customColumns: [...customColumns],
|
|
872
|
+
conditionalFormats: [...conditionalFormats],
|
|
873
|
+
reverseType,
|
|
874
|
+
rollupConfig,
|
|
875
|
+
showSearchBar,
|
|
876
|
+
searchValue,
|
|
877
|
+
selectDistinctColumns: [...selectDistinctColumns],
|
|
878
|
+
selectedSearchColumns,
|
|
879
|
+
invertSearchColumns,
|
|
880
|
+
pendingDataMap: this.dehydratePendingDataMap(columns, pendingDataMap),
|
|
881
|
+
frozenColumns,
|
|
882
|
+
columnHeaderGroups: columnHeaderGroups === null || columnHeaderGroups === void 0 ? void 0 : columnHeaderGroups.map(item => ({
|
|
883
|
+
name: item.name,
|
|
884
|
+
children: item.children,
|
|
885
|
+
color: item.color
|
|
886
|
+
}))
|
|
887
|
+
};
|
|
888
|
+
}
|
|
889
|
+
|
|
890
|
+
/**
|
|
891
|
+
* Import a state for IrisGrid that was exported with {{@link dehydrateIrisGridState}}
|
|
892
|
+
* @param model The table model to import the state with
|
|
893
|
+
* @param irisGridState The saved IrisGrid state
|
|
894
|
+
*/
|
|
895
|
+
hydrateIrisGridState(model, irisGridState) {
|
|
896
|
+
var _ref24, _model$layoutHints;
|
|
897
|
+
var {
|
|
898
|
+
advancedFilters,
|
|
899
|
+
aggregationSettings = {
|
|
900
|
+
aggregations: [],
|
|
901
|
+
showOnTop: false
|
|
902
|
+
},
|
|
903
|
+
customColumnFormatMap,
|
|
904
|
+
isFilterBarShown,
|
|
905
|
+
quickFilters,
|
|
906
|
+
sorts,
|
|
907
|
+
customColumns,
|
|
908
|
+
conditionalFormats,
|
|
909
|
+
userColumnWidths,
|
|
910
|
+
userRowHeights,
|
|
911
|
+
reverseType,
|
|
912
|
+
rollupConfig = undefined,
|
|
913
|
+
showSearchBar,
|
|
914
|
+
searchValue,
|
|
915
|
+
selectDistinctColumns,
|
|
916
|
+
selectedSearchColumns,
|
|
917
|
+
invertSearchColumns = true,
|
|
918
|
+
pendingDataMap = [],
|
|
919
|
+
frozenColumns,
|
|
920
|
+
columnHeaderGroups
|
|
921
|
+
} = irisGridState;
|
|
922
|
+
var {
|
|
923
|
+
columns,
|
|
924
|
+
formatter
|
|
925
|
+
} = model;
|
|
926
|
+
return {
|
|
927
|
+
advancedFilters: this.hydrateAdvancedFilters(columns, advancedFilters, formatter.timeZone),
|
|
928
|
+
aggregationSettings,
|
|
929
|
+
customColumnFormatMap: new Map(customColumnFormatMap),
|
|
930
|
+
isFilterBarShown,
|
|
931
|
+
quickFilters: this.hydrateQuickFilters(columns, quickFilters, formatter.timeZone),
|
|
932
|
+
sorts: this.hydrateSort(columns, sorts),
|
|
933
|
+
userColumnWidths: new Map(userColumnWidths.map(_ref21 => {
|
|
934
|
+
var [column, width] = _ref21;
|
|
935
|
+
if (typeof column === 'string' || column instanceof String) {
|
|
936
|
+
return [columns.findIndex(_ref22 => {
|
|
937
|
+
var {
|
|
938
|
+
name
|
|
939
|
+
} = _ref22;
|
|
940
|
+
return name === column;
|
|
941
|
+
}), width];
|
|
942
|
+
}
|
|
943
|
+
return [column, width];
|
|
944
|
+
}).filter(_ref23 => {
|
|
945
|
+
var [column] = _ref23;
|
|
946
|
+
return column != null && column >= 0 && column < columns.length;
|
|
947
|
+
})),
|
|
948
|
+
customColumns,
|
|
949
|
+
conditionalFormats,
|
|
950
|
+
userRowHeights: new Map(userRowHeights),
|
|
951
|
+
reverseType,
|
|
952
|
+
rollupConfig,
|
|
953
|
+
showSearchBar,
|
|
954
|
+
searchValue,
|
|
955
|
+
selectDistinctColumns,
|
|
956
|
+
selectedSearchColumns,
|
|
957
|
+
invertSearchColumns,
|
|
958
|
+
pendingDataMap: this.hydratePendingDataMap(columns, pendingDataMap),
|
|
959
|
+
frozenColumns,
|
|
960
|
+
columnHeaderGroups: IrisGridUtils.parseColumnHeaderGroups(model, (_ref24 = columnHeaderGroups !== null && columnHeaderGroups !== void 0 ? columnHeaderGroups : (_model$layoutHints = model.layoutHints) === null || _model$layoutHints === void 0 ? void 0 : _model$layoutHints.columnGroups) !== null && _ref24 !== void 0 ? _ref24 : []).groups
|
|
961
|
+
};
|
|
962
|
+
}
|
|
963
|
+
|
|
964
|
+
/**
|
|
965
|
+
* Import the saved quick filters to apply to the columns. Does not actually apply the filters.
|
|
966
|
+
* @param columns The columns the filters will be applied to
|
|
967
|
+
* @param savedQuickFilters Exported quick filters definitions
|
|
968
|
+
* @param timeZone The time zone to make this value in if it is a date type. E.g. America/New_York
|
|
969
|
+
* @returns The quick filters to apply to the columns
|
|
970
|
+
*/
|
|
971
|
+
hydrateQuickFilters(columns, savedQuickFilters, timeZone) {
|
|
972
|
+
var importedFilters = savedQuickFilters.map(_ref25 => {
|
|
973
|
+
var [columnIndex, quickFilter] = _ref25;
|
|
974
|
+
var {
|
|
975
|
+
text
|
|
976
|
+
} = quickFilter;
|
|
977
|
+
var filter = null;
|
|
978
|
+
try {
|
|
979
|
+
var column = IrisGridUtils.getColumn(columns, columnIndex);
|
|
980
|
+
if (column != null) {
|
|
981
|
+
filter = this.tableUtils.makeQuickFilter(column, text, timeZone);
|
|
982
|
+
}
|
|
983
|
+
} catch (error) {
|
|
984
|
+
log.error('hydrateQuickFilters error with', text, error);
|
|
985
|
+
}
|
|
986
|
+
return [columnIndex, {
|
|
987
|
+
text,
|
|
988
|
+
filter
|
|
989
|
+
}];
|
|
990
|
+
});
|
|
991
|
+
return new Map(importedFilters);
|
|
992
|
+
}
|
|
993
|
+
|
|
994
|
+
/**
|
|
995
|
+
* Export the advanced filters from the provided columns to JSON striginfiable object
|
|
996
|
+
* @param columns The columns for the filters
|
|
997
|
+
* @param advancedFilters The advanced filters to dehydrate
|
|
998
|
+
* @returns The dehydrated advanced filters
|
|
999
|
+
*/
|
|
1000
|
+
dehydrateAdvancedFilters(columns, advancedFilters) {
|
|
1001
|
+
return [...advancedFilters].map(_ref26 => {
|
|
1002
|
+
var [columnIndex, advancedFilter] = _ref26;
|
|
1003
|
+
var column = IrisGridUtils.getColumn(columns, columnIndex);
|
|
1004
|
+
assertNotNull(column);
|
|
1005
|
+
var options = this.dehydrateAdvancedFilterOptions(column, advancedFilter.options);
|
|
1006
|
+
return [columnIndex, {
|
|
1007
|
+
options
|
|
1008
|
+
}];
|
|
1009
|
+
});
|
|
1010
|
+
}
|
|
1011
|
+
|
|
1012
|
+
/**
|
|
1013
|
+
* Import the saved advanced filters to apply to the columns. Does not actually apply the filters.
|
|
1014
|
+
* @param columns The columns the filters will be applied to
|
|
1015
|
+
* @param savedAdvancedFilters Exported advanced filters definitions
|
|
1016
|
+
* @param timeZone The time zone to make this filter in if it is a date type. E.g. America/New_York
|
|
1017
|
+
* @returns The advanced filters to apply to the columns
|
|
1018
|
+
*/
|
|
1019
|
+
hydrateAdvancedFilters(columns, savedAdvancedFilters, timeZone) {
|
|
1020
|
+
var importedFilters = savedAdvancedFilters.map(_ref27 => {
|
|
1021
|
+
var [columnIndex, advancedFilter] = _ref27;
|
|
1022
|
+
var column = IrisGridUtils.getColumn(columns, columnIndex);
|
|
1023
|
+
assertNotNull(column);
|
|
1024
|
+
var options = this.hydrateAdvancedFilterOptions(column, advancedFilter.options);
|
|
1025
|
+
var filter = null;
|
|
1026
|
+
try {
|
|
1027
|
+
var columnRetrieved = IrisGridUtils.getColumn(columns, columnIndex);
|
|
1028
|
+
if (columnRetrieved != null) {
|
|
1029
|
+
filter = this.tableUtils.makeAdvancedFilter(column, options, timeZone);
|
|
1030
|
+
}
|
|
1031
|
+
} catch (error) {
|
|
1032
|
+
log.error('hydrateAdvancedFilters error with', options, error);
|
|
1033
|
+
}
|
|
1034
|
+
return [columnIndex, {
|
|
1035
|
+
options,
|
|
1036
|
+
filter
|
|
1037
|
+
}];
|
|
1038
|
+
});
|
|
1039
|
+
return new Map(importedFilters);
|
|
1040
|
+
}
|
|
1041
|
+
dehydrateAdvancedFilterOptions(column, options) {
|
|
1042
|
+
var {
|
|
1043
|
+
selectedValues
|
|
1044
|
+
} = options,
|
|
1045
|
+
otherOptions = _objectWithoutProperties(options, _excluded);
|
|
1046
|
+
return _objectSpread({
|
|
1047
|
+
selectedValues: selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.map(value => this.dehydrateValue(value, column === null || column === void 0 ? void 0 : column.type))
|
|
1048
|
+
}, otherOptions);
|
|
1049
|
+
}
|
|
1050
|
+
hydrateAdvancedFilterOptions(column, options) {
|
|
1051
|
+
var {
|
|
1052
|
+
selectedValues
|
|
1053
|
+
} = options,
|
|
1054
|
+
otherOptions = _objectWithoutProperties(options, _excluded2);
|
|
1055
|
+
return _objectSpread({
|
|
1056
|
+
selectedValues: selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.map(value => this.hydrateValue(value, column === null || column === void 0 ? void 0 : column.type))
|
|
1057
|
+
}, otherOptions);
|
|
1058
|
+
}
|
|
1059
|
+
dehydratePendingDataMap(columns, pendingDataMap) {
|
|
1060
|
+
return [...pendingDataMap].map(_ref28 => {
|
|
1061
|
+
var [rowIndex, {
|
|
1062
|
+
data
|
|
1063
|
+
}] = _ref28;
|
|
1064
|
+
return [rowIndex, {
|
|
1065
|
+
data: [...data].map(_ref29 => {
|
|
1066
|
+
var [c, value] = _ref29;
|
|
1067
|
+
return [columns[c].name, this.dehydrateValue(value, columns[c].type)];
|
|
1068
|
+
})
|
|
1069
|
+
}];
|
|
1070
|
+
});
|
|
1071
|
+
}
|
|
1072
|
+
hydratePendingDataMap(columns, pendingDataMap) {
|
|
1073
|
+
var columnMap = new Map();
|
|
1074
|
+
var getColumnIndex = columnName => {
|
|
1075
|
+
if (!columnMap.has(columnName)) {
|
|
1076
|
+
columnMap.set(columnName, columns.findIndex(_ref30 => {
|
|
1077
|
+
var {
|
|
1078
|
+
name
|
|
1079
|
+
} = _ref30;
|
|
1080
|
+
return name === columnName;
|
|
1081
|
+
}));
|
|
1082
|
+
}
|
|
1083
|
+
return columnMap.get(columnName);
|
|
1084
|
+
};
|
|
1085
|
+
return new Map(pendingDataMap.map(_ref31 => {
|
|
1086
|
+
var [rowIndex, {
|
|
1087
|
+
data
|
|
1088
|
+
}] = _ref31;
|
|
1089
|
+
return [rowIndex, {
|
|
1090
|
+
data: new Map(data.map(_ref32 => {
|
|
1091
|
+
var _getColumnIndex;
|
|
1092
|
+
var [columnName, value] = _ref32;
|
|
1093
|
+
var index = getColumnIndex(columnName);
|
|
1094
|
+
assertNotNull(index);
|
|
1095
|
+
return [(_getColumnIndex = getColumnIndex(columnName)) !== null && _getColumnIndex !== void 0 ? _getColumnIndex : null, this.hydrateValue(value, columns[index].type)];
|
|
1096
|
+
}))
|
|
1097
|
+
}];
|
|
1098
|
+
}));
|
|
1099
|
+
}
|
|
1100
|
+
|
|
1101
|
+
/**
|
|
1102
|
+
* Dehydrates/serializes a value for storage.
|
|
1103
|
+
* @param value The value to dehydrate
|
|
1104
|
+
* @param columnType The column type
|
|
1105
|
+
*/
|
|
1106
|
+
dehydrateValue(value, columnType) {
|
|
1107
|
+
if (TableUtils.isDateType(columnType)) {
|
|
1108
|
+
return this.dehydrateDateTime(value);
|
|
1109
|
+
}
|
|
1110
|
+
if (TableUtils.isLongType(columnType)) {
|
|
1111
|
+
return IrisGridUtils.dehydrateLong(value);
|
|
1112
|
+
}
|
|
1113
|
+
return value;
|
|
1114
|
+
}
|
|
1115
|
+
|
|
1116
|
+
/**
|
|
1117
|
+
* Hydrate a value from it's serialized state
|
|
1118
|
+
* @param value The dehydrated value that needs to be hydrated
|
|
1119
|
+
* @param columnType The type of column
|
|
1120
|
+
*/
|
|
1121
|
+
hydrateValue(value, columnType) {
|
|
1122
|
+
if (TableUtils.isDateType(columnType)) {
|
|
1123
|
+
return this.hydrateDateTime(value);
|
|
1124
|
+
}
|
|
1125
|
+
if (TableUtils.isLongType(columnType)) {
|
|
1126
|
+
return this.hydrateLong(value);
|
|
1127
|
+
}
|
|
1128
|
+
return value;
|
|
1129
|
+
}
|
|
1130
|
+
dehydrateDateTime(value) {
|
|
1131
|
+
return value != null ? this.dh.i18n.DateTimeFormat.format(DateUtils.FULL_DATE_FORMAT, value) : null;
|
|
1132
|
+
}
|
|
1133
|
+
hydrateDateTime(value) {
|
|
1134
|
+
return value != null ? this.dh.i18n.DateTimeFormat.parse(DateUtils.FULL_DATE_FORMAT, value) : null;
|
|
1135
|
+
}
|
|
1136
|
+
hydrateLong(value) {
|
|
1137
|
+
return value != null ? this.dh.LongWrapper.ofString(value) : null;
|
|
1138
|
+
}
|
|
1139
|
+
|
|
1140
|
+
/**
|
|
1141
|
+
* Import the saved sorts to apply to the table. Does not actually apply the sort.
|
|
1142
|
+
* @param columns The columns the sorts will be applied to
|
|
1143
|
+
* @param sorts Exported sort definitions
|
|
1144
|
+
* @returns The sorts to apply to the table
|
|
1145
|
+
*/
|
|
1146
|
+
hydrateSort(columns, sorts) {
|
|
1147
|
+
var {
|
|
1148
|
+
dh
|
|
1149
|
+
} = this;
|
|
1150
|
+
return sorts.map(sort => {
|
|
1151
|
+
var {
|
|
1152
|
+
column: columnIndexOrName,
|
|
1153
|
+
isAbs,
|
|
1154
|
+
direction
|
|
1155
|
+
} = sort;
|
|
1156
|
+
if (direction === TableUtils.sortDirection.reverse) {
|
|
1157
|
+
return dh.Table.reverse();
|
|
1158
|
+
}
|
|
1159
|
+
var column = typeof columnIndexOrName === 'string' ? IrisGridUtils.getColumnByName(columns, columnIndexOrName) : IrisGridUtils.getColumn(columns, columnIndexOrName);
|
|
1160
|
+
if (column != null) {
|
|
1161
|
+
var columnSort = column.sort();
|
|
1162
|
+
if (isAbs) {
|
|
1163
|
+
columnSort = columnSort.abs();
|
|
1164
|
+
}
|
|
1165
|
+
if (direction === TableUtils.sortDirection.descending) {
|
|
1166
|
+
columnSort = columnSort.desc();
|
|
1167
|
+
} else {
|
|
1168
|
+
columnSort = columnSort.asc();
|
|
1169
|
+
}
|
|
1170
|
+
return columnSort;
|
|
1171
|
+
}
|
|
1172
|
+
return null;
|
|
1173
|
+
})
|
|
1174
|
+
// If we can't find the column any more, it's null, filter it out
|
|
1175
|
+
// If the item is a reverse sort item, filter it out - it will get applied with the `reverseType` property
|
|
1176
|
+
// This should only happen when loading a legacy dashboard
|
|
1177
|
+
.filter(item => item != null && item.direction !== TableUtils.sortDirection.reverse);
|
|
1178
|
+
}
|
|
1179
|
+
|
|
1180
|
+
/**
|
|
1181
|
+
* Applies the passed in table settings directly to the provided table
|
|
1182
|
+
* @param table The table to apply the settings to
|
|
1183
|
+
* @param tableSettings Dehydrated table settings extracted with `extractTableSettings`
|
|
1184
|
+
* @param timeZone The time zone to make this value in if it is a date type. E.g. America/New_York
|
|
1185
|
+
*/
|
|
1186
|
+
applyTableSettings(table, tableSettings, timeZone) {
|
|
1187
|
+
var {
|
|
1188
|
+
columns
|
|
1189
|
+
} = table;
|
|
1190
|
+
var quickFilters = [];
|
|
1191
|
+
if (tableSettings.quickFilters) {
|
|
1192
|
+
quickFilters = IrisGridUtils.getFiltersFromFilterMap(this.hydrateQuickFilters(columns, tableSettings.quickFilters, timeZone));
|
|
1193
|
+
}
|
|
1194
|
+
var advancedFilters = [];
|
|
1195
|
+
if (tableSettings.advancedFilters) {
|
|
1196
|
+
advancedFilters = IrisGridUtils.getFiltersFromFilterMap(this.hydrateAdvancedFilters(columns, tableSettings.advancedFilters, timeZone));
|
|
1197
|
+
}
|
|
1198
|
+
var inputFilters = this.getFiltersFromInputFilters(columns, tableSettings.inputFilters, timeZone);
|
|
1199
|
+
var sorts = [];
|
|
1200
|
+
if (tableSettings.sorts) {
|
|
1201
|
+
sorts = this.hydrateSort(columns, tableSettings.sorts);
|
|
1202
|
+
}
|
|
1203
|
+
var filters = [...quickFilters, ...advancedFilters];
|
|
1204
|
+
var {
|
|
1205
|
+
partition,
|
|
1206
|
+
partitionColumn: partitionColumnName
|
|
1207
|
+
} = tableSettings;
|
|
1208
|
+
if (partition != null && partitionColumnName != null) {
|
|
1209
|
+
var partitionColumn = IrisGridUtils.getColumnByName(columns, partitionColumnName);
|
|
1210
|
+
if (partitionColumn) {
|
|
1211
|
+
var partitionFilter = partitionColumn.filter().eq(this.dh.FilterValue.ofString(partition));
|
|
1212
|
+
filters = [partitionFilter, ...filters];
|
|
1213
|
+
}
|
|
1214
|
+
}
|
|
1215
|
+
filters = [...inputFilters, ...filters];
|
|
1216
|
+
table.applyFilter(filters);
|
|
1217
|
+
table.applySort(sorts);
|
|
1218
|
+
}
|
|
1219
|
+
getFiltersFromInputFilters(columns) {
|
|
1220
|
+
var inputFilters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
1221
|
+
var timeZone = arguments.length > 2 ? arguments[2] : undefined;
|
|
1222
|
+
return inputFilters.map(_ref33 => {
|
|
1223
|
+
var {
|
|
1224
|
+
name,
|
|
1225
|
+
type,
|
|
1226
|
+
value
|
|
1227
|
+
} = _ref33;
|
|
1228
|
+
var column = columns.find(_ref34 => {
|
|
1229
|
+
var {
|
|
1230
|
+
name: columnName,
|
|
1231
|
+
type: columnType
|
|
1232
|
+
} = _ref34;
|
|
1233
|
+
return columnName === name && columnType === type;
|
|
1234
|
+
});
|
|
1235
|
+
if (column) {
|
|
1236
|
+
try {
|
|
1237
|
+
return this.tableUtils.makeQuickFilter(column, value, timeZone);
|
|
1238
|
+
} catch (e) {
|
|
1239
|
+
// It may be unable to create it because user hasn't completed their input
|
|
1240
|
+
log.debug('Unable to create input filter', e);
|
|
1241
|
+
}
|
|
1242
|
+
}
|
|
1243
|
+
return null;
|
|
1244
|
+
}).filter(filter => filter != null);
|
|
1245
|
+
}
|
|
1246
|
+
|
|
1247
|
+
/**
|
|
1248
|
+
* Get the dh.RangeSet representation of the provided ranges.
|
|
1249
|
+
* Ranges are sorted prior to creating the RangeSet. Only the rows are taken into account,
|
|
1250
|
+
* RangeSet does not have an option for columns.
|
|
1251
|
+
* @param ranges The ranges to get the range set for
|
|
1252
|
+
* @returns The rangeset for the provided ranges
|
|
1253
|
+
*/
|
|
1254
|
+
rangeSetFromRanges(ranges) {
|
|
1255
|
+
var {
|
|
1256
|
+
dh
|
|
1257
|
+
} = this;
|
|
1258
|
+
var rangeSets = ranges.slice().sort((a, b) => {
|
|
1259
|
+
assertNotNull(a.startRow);
|
|
1260
|
+
assertNotNull(b.startRow);
|
|
1261
|
+
return a.startRow - b.startRow;
|
|
1262
|
+
}).map(range => {
|
|
1263
|
+
var {
|
|
1264
|
+
startRow,
|
|
1265
|
+
endRow
|
|
1266
|
+
} = range;
|
|
1267
|
+
assertNotNull(startRow);
|
|
1268
|
+
assertNotNull(endRow);
|
|
1269
|
+
return dh.RangeSet.ofRange(startRow, endRow);
|
|
1270
|
+
});
|
|
1271
|
+
return dh.RangeSet.ofRanges(rangeSets);
|
|
1272
|
+
}
|
|
1262
1273
|
}
|
|
1263
1274
|
export default IrisGridUtils;
|
|
1264
1275
|
//# sourceMappingURL=IrisGridUtils.js.map
|