@deephaven/iris-grid 0.6.3-beta.0 → 0.6.3-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +67 -18
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridBottomBar.js +1 -1
- package/dist/IrisGridModelUpdater.js +1 -1
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +2 -1
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTreeTableModel.js +1 -1
- package/dist/IrisGridUtils.js +32 -32
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/PendingDataBottomBar.js +1 -1
- package/dist/PendingDataBottomBar.js.map +1 -1
- package/dist/TableUtils.js +1 -1
- package/dist/ToastBottomBar.js +1 -1
- package/dist/ToastBottomBar.js.map +1 -1
- package/dist/memoizeClear.js +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +4 -12
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.js +2 -2
- package/dist/sidebar/CustomColumnBuilder.js +2 -2
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/InputEditor.js +1 -1
- package/dist/sidebar/RollupRows.js +10 -10
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js +5 -5
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.js +10 -10
- package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js +3 -3
- package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js +1 -1
- package/dist/sidebar/aggregations/Aggregations.js +4 -4
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +13 -12
package/dist/IrisGridUtils.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var _excluded = ["selectedValues"],
|
|
2
2
|
_excluded2 = ["selectedValues"];
|
|
3
3
|
|
|
4
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
4
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
5
5
|
|
|
6
6
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
7
7
|
|
|
@@ -37,13 +37,13 @@ class IrisGridUtils {
|
|
|
37
37
|
columns
|
|
38
38
|
} = model;
|
|
39
39
|
return {
|
|
40
|
-
movedColumns: [...movedColumns].filter(
|
|
40
|
+
movedColumns: [...movedColumns].filter(_ref => {
|
|
41
41
|
var {
|
|
42
42
|
to,
|
|
43
43
|
from
|
|
44
44
|
} = _ref;
|
|
45
45
|
return to >= 0 && to < columns.length && from >= 0 && from < columns.length;
|
|
46
|
-
}).map(
|
|
46
|
+
}).map(_ref2 => {
|
|
47
47
|
var {
|
|
48
48
|
to,
|
|
49
49
|
from
|
|
@@ -74,14 +74,14 @@ class IrisGridUtils {
|
|
|
74
74
|
columns
|
|
75
75
|
} = model;
|
|
76
76
|
var customColumnNames = IrisGridUtils.parseCustomColumnNames(customColumns);
|
|
77
|
-
var columnNames = columns.map(
|
|
77
|
+
var columnNames = columns.map(_ref3 => {
|
|
78
78
|
var {
|
|
79
79
|
name
|
|
80
80
|
} = _ref3;
|
|
81
81
|
return name;
|
|
82
82
|
}).concat(customColumnNames);
|
|
83
83
|
return {
|
|
84
|
-
movedColumns: [...movedColumns].map(
|
|
84
|
+
movedColumns: [...movedColumns].map(_ref4 => {
|
|
85
85
|
var {
|
|
86
86
|
to,
|
|
87
87
|
from
|
|
@@ -98,7 +98,7 @@ class IrisGridUtils {
|
|
|
98
98
|
to,
|
|
99
99
|
from
|
|
100
100
|
};
|
|
101
|
-
}).filter(
|
|
101
|
+
}).filter(_ref5 => {
|
|
102
102
|
var {
|
|
103
103
|
to,
|
|
104
104
|
from
|
|
@@ -153,10 +153,10 @@ class IrisGridUtils {
|
|
|
153
153
|
isFilterBarShown,
|
|
154
154
|
quickFilters: IrisGridUtils.dehydrateQuickFilters(quickFilters),
|
|
155
155
|
sorts: IrisGridUtils.dehydrateSort(sorts, model),
|
|
156
|
-
userColumnWidths: [...userColumnWidths].filter(
|
|
156
|
+
userColumnWidths: [...userColumnWidths].filter(_ref6 => {
|
|
157
157
|
var [columnIndex] = _ref6;
|
|
158
158
|
return columnIndex != null && columnIndex >= 0 && columnIndex < columns.length;
|
|
159
|
-
}).map(
|
|
159
|
+
}).map(_ref7 => {
|
|
160
160
|
var [columnIndex, width] = _ref7;
|
|
161
161
|
return [columns[columnIndex].name, width];
|
|
162
162
|
}),
|
|
@@ -215,11 +215,11 @@ class IrisGridUtils {
|
|
|
215
215
|
isFilterBarShown,
|
|
216
216
|
quickFilters: IrisGridUtils.hydrateQuickFilters(columns, quickFilters, formatter.timeZone),
|
|
217
217
|
sorts: IrisGridUtils.hydrateSort(columns, sorts),
|
|
218
|
-
userColumnWidths: new Map(userColumnWidths.map(
|
|
218
|
+
userColumnWidths: new Map(userColumnWidths.map(_ref8 => {
|
|
219
219
|
var [column, width] = _ref8;
|
|
220
220
|
|
|
221
221
|
if (typeof column === 'string' || column instanceof String) {
|
|
222
|
-
return [columns.findIndex(
|
|
222
|
+
return [columns.findIndex(_ref9 => {
|
|
223
223
|
var {
|
|
224
224
|
name
|
|
225
225
|
} = _ref9;
|
|
@@ -228,7 +228,7 @@ class IrisGridUtils {
|
|
|
228
228
|
}
|
|
229
229
|
|
|
230
230
|
return [column, width];
|
|
231
|
-
}).filter(
|
|
231
|
+
}).filter(_ref10 => {
|
|
232
232
|
var [column] = _ref10;
|
|
233
233
|
return column != null && column >= 0 && column < columns.length;
|
|
234
234
|
})),
|
|
@@ -295,7 +295,7 @@ class IrisGridUtils {
|
|
|
295
295
|
|
|
296
296
|
|
|
297
297
|
static dehydrateQuickFilters(quickFilters) {
|
|
298
|
-
return [...quickFilters].map(
|
|
298
|
+
return [...quickFilters].map(_ref11 => {
|
|
299
299
|
var [columnIndex, quickFilter] = _ref11;
|
|
300
300
|
var {
|
|
301
301
|
text
|
|
@@ -315,7 +315,7 @@ class IrisGridUtils {
|
|
|
315
315
|
|
|
316
316
|
|
|
317
317
|
static hydrateQuickFilters(columns, savedQuickFilters, timeZone) {
|
|
318
|
-
var importedFilters = savedQuickFilters.map(
|
|
318
|
+
var importedFilters = savedQuickFilters.map(_ref12 => {
|
|
319
319
|
var [columnIndex, quickFilter] = _ref12;
|
|
320
320
|
var {
|
|
321
321
|
text
|
|
@@ -348,7 +348,7 @@ class IrisGridUtils {
|
|
|
348
348
|
|
|
349
349
|
|
|
350
350
|
static dehydrateAdvancedFilters(columns, advancedFilters) {
|
|
351
|
-
return [...advancedFilters].map(
|
|
351
|
+
return [...advancedFilters].map(_ref13 => {
|
|
352
352
|
var [columnIndex, advancedFilter] = _ref13;
|
|
353
353
|
var options = IrisGridUtils.dehydrateAdvancedFilterOptions(IrisGridUtils.getColumn(columns, columnIndex), advancedFilter.options);
|
|
354
354
|
return [columnIndex, {
|
|
@@ -366,7 +366,7 @@ class IrisGridUtils {
|
|
|
366
366
|
|
|
367
367
|
|
|
368
368
|
static hydrateAdvancedFilters(columns, savedAdvancedFilters, timeZone) {
|
|
369
|
-
var importedFilters = savedAdvancedFilters.map(
|
|
369
|
+
var importedFilters = savedAdvancedFilters.map(_ref14 => {
|
|
370
370
|
var [columnIndex, advancedFilter] = _ref14;
|
|
371
371
|
var options = IrisGridUtils.hydrateAdvancedFilterOptions(IrisGridUtils.getColumn(columns, columnIndex), advancedFilter.options);
|
|
372
372
|
var filter = null;
|
|
@@ -412,12 +412,12 @@ class IrisGridUtils {
|
|
|
412
412
|
}
|
|
413
413
|
|
|
414
414
|
static dehydratePendingDataMap(columns, pendingDataMap) {
|
|
415
|
-
return [...pendingDataMap].map(
|
|
415
|
+
return [...pendingDataMap].map(_ref15 => {
|
|
416
416
|
var [rowIndex, {
|
|
417
417
|
data
|
|
418
418
|
}] = _ref15;
|
|
419
419
|
return [rowIndex, {
|
|
420
|
-
data: [...data].map(
|
|
420
|
+
data: [...data].map(_ref16 => {
|
|
421
421
|
var [c, value] = _ref16;
|
|
422
422
|
return [columns[c].name, IrisGridUtils.dehydrateValue(value, columns[c].type)];
|
|
423
423
|
})
|
|
@@ -430,7 +430,7 @@ class IrisGridUtils {
|
|
|
430
430
|
|
|
431
431
|
var getColumnIndex = columnName => {
|
|
432
432
|
if (!columnMap.has(columnName)) {
|
|
433
|
-
columnMap.set(columnName, columns.findIndex(
|
|
433
|
+
columnMap.set(columnName, columns.findIndex(_ref17 => {
|
|
434
434
|
var {
|
|
435
435
|
name
|
|
436
436
|
} = _ref17;
|
|
@@ -441,12 +441,12 @@ class IrisGridUtils {
|
|
|
441
441
|
return columnMap.get(columnName);
|
|
442
442
|
};
|
|
443
443
|
|
|
444
|
-
return new Map(pendingDataMap.map(
|
|
444
|
+
return new Map(pendingDataMap.map(_ref18 => {
|
|
445
445
|
var [rowIndex, {
|
|
446
446
|
data
|
|
447
447
|
}] = _ref18;
|
|
448
448
|
return [rowIndex, {
|
|
449
|
-
data: new Map(data.map(
|
|
449
|
+
data: new Map(data.map(_ref19 => {
|
|
450
450
|
var [columnName, value] = _ref19;
|
|
451
451
|
return [getColumnIndex(columnName), IrisGridUtils.hydrateValue(value, columns[getColumnIndex(columnName)].type)];
|
|
452
452
|
}))
|
|
@@ -639,12 +639,12 @@ class IrisGridUtils {
|
|
|
639
639
|
|
|
640
640
|
static getInputFiltersForColumns(columns) {
|
|
641
641
|
var inputFilters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
642
|
-
return inputFilters.filter(
|
|
642
|
+
return inputFilters.filter(_ref20 => {
|
|
643
643
|
var {
|
|
644
644
|
name,
|
|
645
645
|
type
|
|
646
646
|
} = _ref20;
|
|
647
|
-
return columns.find(
|
|
647
|
+
return columns.find(_ref21 => {
|
|
648
648
|
var {
|
|
649
649
|
name: columnName,
|
|
650
650
|
type: columnType
|
|
@@ -657,13 +657,13 @@ class IrisGridUtils {
|
|
|
657
657
|
static getFiltersFromInputFilters(columns) {
|
|
658
658
|
var inputFilters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
659
659
|
var timeZone = arguments.length > 2 ? arguments[2] : undefined;
|
|
660
|
-
return inputFilters.map(
|
|
660
|
+
return inputFilters.map(_ref22 => {
|
|
661
661
|
var {
|
|
662
662
|
name,
|
|
663
663
|
type,
|
|
664
664
|
value
|
|
665
665
|
} = _ref22;
|
|
666
|
-
var column = columns.find(
|
|
666
|
+
var column = columns.find(_ref23 => {
|
|
667
667
|
var {
|
|
668
668
|
name: columnName,
|
|
669
669
|
type: columnType
|
|
@@ -707,10 +707,10 @@ class IrisGridUtils {
|
|
|
707
707
|
|
|
708
708
|
|
|
709
709
|
static getHiddenColumns(userColumnWidths) {
|
|
710
|
-
return [...userColumnWidths.entries()].filter(
|
|
710
|
+
return [...userColumnWidths.entries()].filter(_ref24 => {
|
|
711
711
|
var [, value] = _ref24;
|
|
712
712
|
return value === 0;
|
|
713
|
-
}).map(
|
|
713
|
+
}).map(_ref25 => {
|
|
714
714
|
var [key] = _ref25;
|
|
715
715
|
return key;
|
|
716
716
|
});
|
|
@@ -731,7 +731,7 @@ class IrisGridUtils {
|
|
|
731
731
|
}
|
|
732
732
|
|
|
733
733
|
static removeFiltersInColumns(columns, filters, removedColumnNames) {
|
|
734
|
-
var columnNames = columns.map(
|
|
734
|
+
var columnNames = columns.map(_ref26 => {
|
|
735
735
|
var {
|
|
736
736
|
name
|
|
737
737
|
} = _ref26;
|
|
@@ -743,7 +743,7 @@ class IrisGridUtils {
|
|
|
743
743
|
}
|
|
744
744
|
|
|
745
745
|
static removeColumnFromMovedColumns(columns, movedColumns, removedColumnNames) {
|
|
746
|
-
var columnNames = columns.map(
|
|
746
|
+
var columnNames = columns.map(_ref27 => {
|
|
747
747
|
var {
|
|
748
748
|
name
|
|
749
749
|
} = _ref27;
|
|
@@ -853,7 +853,7 @@ class IrisGridUtils {
|
|
|
853
853
|
static getColumnsToFetch(tableColumns, viewportColumns, alwaysFetchColumnNames) {
|
|
854
854
|
var columnsToFetch = [...viewportColumns];
|
|
855
855
|
alwaysFetchColumnNames.forEach(columnName => {
|
|
856
|
-
var column = tableColumns.find(
|
|
856
|
+
var column = tableColumns.find(_ref28 => {
|
|
857
857
|
var {
|
|
858
858
|
name
|
|
859
859
|
} = _ref28;
|
|
@@ -1039,7 +1039,7 @@ class IrisGridUtils {
|
|
|
1039
1039
|
var {
|
|
1040
1040
|
aggregations = []
|
|
1041
1041
|
} = aggregationSettings !== null && aggregationSettings !== void 0 ? aggregationSettings : {};
|
|
1042
|
-
var aggregationColumns = aggregations.map(
|
|
1042
|
+
var aggregationColumns = aggregations.map(_ref29 => {
|
|
1043
1043
|
var {
|
|
1044
1044
|
operation,
|
|
1045
1045
|
selected,
|
|
@@ -1121,7 +1121,7 @@ class IrisGridUtils {
|
|
|
1121
1121
|
|
|
1122
1122
|
|
|
1123
1123
|
static getColumnByName(columns, columnName) {
|
|
1124
|
-
var column = columns.find(
|
|
1124
|
+
var column = columns.find(_ref30 => {
|
|
1125
1125
|
var {
|
|
1126
1126
|
name
|
|
1127
1127
|
} = _ref30;
|
|
@@ -1129,7 +1129,7 @@ class IrisGridUtils {
|
|
|
1129
1129
|
});
|
|
1130
1130
|
|
|
1131
1131
|
if (column == null) {
|
|
1132
|
-
log.error('Unable to retrieve column by name', columnName, columns.map(
|
|
1132
|
+
log.error('Unable to retrieve column by name', columnName, columns.map(_ref31 => {
|
|
1133
1133
|
var {
|
|
1134
1134
|
name
|
|
1135
1135
|
} = _ref31;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/IrisGridUtils.js"],"names":["GridUtils","dh","Log","TableUtils","DateUtils","AdvancedSettings","AggregationUtils","AggregationOperation","log","module","IrisGridUtils","dehydrateGridState","model","gridState","movedColumns","movedRows","columns","filter","to","from","length","map","name","hydrateGridState","customColumns","customColumnNames","parseCustomColumnNames","columnNames","concat","String","findIndex","dehydrateIrisGridState","irisGridState","aggregationSettings","aggregations","showOnTop","advancedSettings","advancedFilters","customColumnFormatMap","isFilterBarShown","metrics","quickFilters","reverseType","rollupConfig","showSearchBar","searchValue","selectDistinctColumns","selectedSearchColumns","sorts","invertSearchColumns","pendingDataMap","Map","userColumnWidths","userRowHeights","dehydrateAdvancedFilters","dehydrateQuickFilters","dehydrateSort","columnIndex","width","dehydratePendingDataMap","hydrateIrisGridState","formatter","hydrateAdvancedFilters","timeZone","DEFAULTS","hydrateQuickFilters","hydrateSort","column","hydratePendingDataMap","dehydrateIrisGridPanelState","irisGridPanelState","isSelectingPartition","partition","partitionColumn","hydrateIrisGridPanelState","getColumnByName","quickFilter","text","savedQuickFilters","importedFilters","getColumn","makeQuickFilter","error","advancedFilter","options","dehydrateAdvancedFilterOptions","savedAdvancedFilters","hydrateAdvancedFilterOptions","makeAdvancedFilter","selectedValues","otherOptions","value","dehydrateValue","type","hydrateValue","rowIndex","data","c","columnMap","getColumnIndex","columnName","has","set","get","columnType","isDateType","dehydrateDateTime","isLongType","dehydrateLong","hydrateDateTime","hydrateLong","i18n","DateTimeFormat","format","FULL_DATE_FORMAT","parse","LongWrapper","ofString","sort","isAbs","direction","index","sortDirection","reverse","Table","columnSort","abs","descending","desc","asc","item","extractTableSettings","panelState","inputFilters","applyTableSettings","table","tableSettings","getFiltersFromFilterMap","getFiltersFromInputFilters","filters","partitionColumnName","partitionFilter","eq","FilterValue","applyFilter","applySort","getInputFiltersForColumns","find","e","debug","filterMap","keys","Array","i","key","push","getHiddenColumns","entries","customColumn","split","getRemovedCustomColumnNames","oldCustomColumns","oldCustomColumnsNames","oldCustomColumnName","includes","removeSortsInColumns","removeFiltersInColumns","removedColumnNames","newFilter","forEach","delete","indexOf","removeColumnFromMovedColumns","newMoves","removedColumnName","removedColumnIndex","moves","j","move","newMove","splice","removeColumnsFromSelectDistinctColumns","getVisibleColumnsInRange","tableColumns","left","right","hiddenColumns","modelIndex","getModelIndex","getPrevVisibleColumns","startIndex","count","unshift","getNextVisibleColumns","getColumnsToFetch","viewportColumns","alwaysFetchColumnNames","columnsToFetch","getModelViewportColumns","bufferPages","columnsCenter","bufferWidth","columnsLeft","columnsRight","bufferedColumns","rangeSetFromRanges","ranges","rangeSets","slice","a","b","startRow","range","endRow","RangeSet","ofRange","ofRanges","isValidSnapshotRanges","rangeMap","rowMapIndex","columnMapIndex","startColumn","endColumn","matchColumnRanges","join","isValidIndex","Number","isInteger","columnsFromRanges","allColumns","columnSet","Set","add","snapshotDataToMatrix","rows","result","r","row","rowData","getModelRollupConfig","originalColumns","config","groupingColumns","showConstituents","includeConstituents","showNonAggregatedColumns","includeDescriptions","aggregationColumns","operation","selected","invert","isRollupOperation","getOperationColumnNames","aggregationMap","nonAggregatedColumnSet","size","existingColumns","FIRST","getPendingErrors","Error"],"mappings":"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","sourcesContent":["import { GridUtils } from '@deephaven/grid';\nimport dh from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport TableUtils from './TableUtils';\nimport DateUtils from './DateUtils';\nimport AdvancedSettings from './sidebar/AdvancedSettings';\nimport AggregationUtils from './sidebar/aggregations/AggregationUtils';\nimport AggregationOperation from './sidebar/aggregations/AggregationOperation';\n\nconst log = Log.module('IrisGridUtils');\n\nclass IrisGridUtils {\n /**\n * Exports the state from Grid component to a JSON stringifiable object\n * @param {IrisGridModel} model The table model to export the Grid state for\n * @param {Object} gridState The state of the Grid to export\n * @returns {Object} An object that can be stringified and imported with {{@link hydrateGridState}}\n */\n static dehydrateGridState(model, gridState) {\n const { movedColumns, movedRows } = gridState;\n\n const { columns } = model;\n return {\n movedColumns: [...movedColumns]\n .filter(\n ({ to, from }) =>\n to >= 0 && to < columns.length && from >= 0 && from < columns.length\n )\n .map(({ to, from }) => ({\n to: columns[to].name,\n from: columns[from].name,\n })),\n movedRows: [...movedRows],\n };\n }\n\n /**\n * Import a state for Grid that was exported with {{@link dehydrateGridState}}\n * @param {IrisGridModel} model The table model to import the state for\n * @param {Object} gridState The state of the panel that was saved\n * @returns {Object} The gridState props to set on the Grid\n */\n static hydrateGridState(model, gridState, customColumns = []) {\n const { movedColumns, movedRows } = gridState;\n\n const { columns } = model;\n const customColumnNames = IrisGridUtils.parseCustomColumnNames(\n customColumns\n );\n const columnNames = columns\n .map(({ name }) => name)\n .concat(customColumnNames);\n\n return {\n movedColumns: [...movedColumns]\n .map(({ to, from }) => {\n if (\n (typeof to === 'string' || to instanceof String) &&\n (typeof from === 'string' || from instanceof String)\n ) {\n return {\n to: columnNames.findIndex(name => name === to),\n from: columnNames.findIndex(name => name === from),\n };\n }\n return { to, from };\n })\n .filter(\n ({ to, from }) =>\n to != null &&\n to >= 0 &&\n to < columnNames.length &&\n from != null &&\n from >= 0 &&\n from < columnNames.length\n ),\n movedRows: [...movedRows],\n };\n }\n\n /**\n * Exports the state from IrisGrid to a JSON stringifiable object\n * @param {IrisGridModel} model The table model to export the state for\n * @param {Object} irisGridState The current state of the IrisGrid\n */\n static dehydrateIrisGridState(model, irisGridState) {\n const {\n aggregationSettings = { aggregations: [], showOnTop: false },\n advancedSettings = [],\n advancedFilters,\n customColumnFormatMap,\n isFilterBarShown,\n metrics,\n quickFilters,\n customColumns,\n reverseType,\n rollupConfig = null,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n sorts,\n invertSearchColumns,\n pendingDataMap = new Map(),\n } = irisGridState;\n const { userColumnWidths, userRowHeights } = metrics;\n\n const { columns } = model;\n return {\n advancedFilters: IrisGridUtils.dehydrateAdvancedFilters(\n columns,\n advancedFilters\n ),\n advancedSettings: [...advancedSettings],\n aggregationSettings,\n customColumnFormatMap: [...customColumnFormatMap],\n isFilterBarShown,\n quickFilters: IrisGridUtils.dehydrateQuickFilters(quickFilters),\n sorts: IrisGridUtils.dehydrateSort(sorts, model),\n userColumnWidths: [...userColumnWidths]\n .filter(\n ([columnIndex]) =>\n columnIndex != null &&\n columnIndex >= 0 &&\n columnIndex < columns.length\n )\n .map(([columnIndex, width]) => [columns[columnIndex].name, width]),\n userRowHeights: [...userRowHeights],\n customColumns: [...customColumns],\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns: [...selectDistinctColumns],\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap: IrisGridUtils.dehydratePendingDataMap(\n columns,\n pendingDataMap\n ),\n };\n }\n\n /**\n * Import a state for IrisGrid that was exported with {{@link dehydrateIrisGridState}}\n * @param {IrisGridModel} model The table model to import the state with\n * @param {Object} irisGridState The saved IrisGrid state\n */\n static hydrateIrisGridState(model, irisGridState) {\n const {\n advancedFilters,\n advancedSettings = [],\n aggregationSettings = { aggregations: [], showOnTop: false },\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n sorts,\n customColumns,\n userColumnWidths,\n userRowHeights,\n reverseType,\n rollupConfig = null,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns = true,\n pendingDataMap = [],\n } = irisGridState;\n\n const { columns, formatter } = model;\n return {\n advancedFilters: IrisGridUtils.hydrateAdvancedFilters(\n columns,\n advancedFilters,\n formatter.timeZone\n ),\n advancedSettings: new Map([\n ...AdvancedSettings.DEFAULTS,\n ...advancedSettings,\n ]),\n aggregationSettings,\n customColumnFormatMap: new Map(customColumnFormatMap),\n isFilterBarShown,\n quickFilters: IrisGridUtils.hydrateQuickFilters(\n columns,\n quickFilters,\n formatter.timeZone\n ),\n sorts: IrisGridUtils.hydrateSort(columns, sorts),\n userColumnWidths: new Map(\n userColumnWidths\n .map(([column, width]) => {\n if (typeof column === 'string' || column instanceof String) {\n return [columns.findIndex(({ name }) => name === column), width];\n }\n return [column, width];\n })\n .filter(\n ([column]) =>\n column != null && column >= 0 && column < columns.length\n )\n ),\n customColumns,\n userRowHeights: new Map(userRowHeights),\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap: IrisGridUtils.hydratePendingDataMap(\n columns,\n pendingDataMap\n ),\n };\n }\n\n /**\n * Export the IrisGridPanel state.\n * @param {IrisGridModel} model The table model the state is being dehydrated with\n * @param {Object} irisGridPanelState The current IrisGridPanel state\n * @returns {Object} The dehydrated IrisGridPanel state\n */\n static dehydrateIrisGridPanelState(model, irisGridPanelState) {\n const {\n isSelectingPartition,\n partition,\n partitionColumn,\n } = irisGridPanelState;\n\n return {\n isSelectingPartition,\n partition,\n partitionColumn: partitionColumn ? partitionColumn.name : null,\n };\n }\n\n /**\n * Import the saved IrisGridPanel state.\n * @param {IrisGridModel} model The model the state is being hydrated with\n * @param {Object} irisGridPanelState Exported IrisGridPanel state\n * @returns {Object} The state to apply to the IrisGridPanel\n */\n static hydrateIrisGridPanelState(model, irisGridPanelState) {\n const {\n isSelectingPartition,\n partition,\n partitionColumn,\n } = irisGridPanelState;\n\n const { columns } = model;\n return {\n isSelectingPartition,\n partition,\n partitionColumn:\n partitionColumn != null\n ? IrisGridUtils.getColumnByName(columns, partitionColumn)\n : null,\n };\n }\n\n /**\n * Export the quick filters to JSON striginfiable object\n * @param {AdvancedFilter[]} quickFilters The quick filters to dehydrate\n * @returns {Object} The dehydrated quick filters\n */\n static dehydrateQuickFilters(quickFilters) {\n return [...quickFilters].map(([columnIndex, quickFilter]) => {\n const { text } = quickFilter;\n return [columnIndex, { text }];\n });\n }\n\n /**\n * Import the saved quick filters to apply to the columns. Does not actually apply the filters.\n * @param {dh.Column[]} columns The columns the filters will be applied to\n * @param {Object[]} savedQuickFilters Exported quick filters definitions\n * @param {string} timeZone The time zone to make this value in if it is a date type. E.g. America/New_York\n * @returns {QuickFilter[]} The quick filters to apply to the columns\n */\n static hydrateQuickFilters(columns, savedQuickFilters, timeZone) {\n const importedFilters = savedQuickFilters.map(\n ([columnIndex, quickFilter]) => {\n const { text } = quickFilter;\n\n let filter = null;\n try {\n const column = IrisGridUtils.getColumn(columns, columnIndex);\n if (column != null) {\n filter = TableUtils.makeQuickFilter(column, text, timeZone);\n }\n } catch (error) {\n log.error('hydrateQuickFilters error with', text, error);\n }\n\n return [columnIndex, { text, filter }];\n }\n );\n\n return new Map(importedFilters);\n }\n\n /**\n * Export the advanced filters from the provided columns to JSON striginfiable object\n * @param {dh.Column[]} columns The columns for the filters\n * @param {AdvancedFilter[]} advancedFilters The advanced filters to dehydrate\n * @returns {Object} The dehydrated advanced filters\n */\n static dehydrateAdvancedFilters(columns, advancedFilters) {\n return [...advancedFilters].map(([columnIndex, advancedFilter]) => {\n const options = IrisGridUtils.dehydrateAdvancedFilterOptions(\n IrisGridUtils.getColumn(columns, columnIndex),\n advancedFilter.options\n );\n return [columnIndex, { options }];\n });\n }\n\n /**\n * Import the saved advanced filters to apply to the columns. Does not actually apply the filters.\n * @param {dh.Columns[]} columns The columns the filters will be applied to\n * @param {Object[]} savedAdvancedFilters Exported advanced filters definitions\n * @param {string} timeZone The time zone to make this filter in if it is a date type. E.g. America/New_York\n * @returns {AdvancedFilter[]} The advanced filters to apply to the columns\n */\n static hydrateAdvancedFilters(columns, savedAdvancedFilters, timeZone) {\n const importedFilters = savedAdvancedFilters.map(\n ([columnIndex, advancedFilter]) => {\n const options = IrisGridUtils.hydrateAdvancedFilterOptions(\n IrisGridUtils.getColumn(columns, columnIndex),\n advancedFilter.options\n );\n let filter = null;\n\n try {\n const column = IrisGridUtils.getColumn(columns, columnIndex);\n if (column != null) {\n filter = TableUtils.makeAdvancedFilter(column, options, timeZone);\n }\n } catch (error) {\n log.error('hydrateAdvancedFilters error with', options, error);\n }\n\n return [columnIndex, { options, filter }];\n }\n );\n\n return new Map(importedFilters);\n }\n\n static dehydrateAdvancedFilterOptions(column, options) {\n const { selectedValues, ...otherOptions } = options;\n return {\n selectedValues: selectedValues.map(value =>\n IrisGridUtils.dehydrateValue(value, column?.type)\n ),\n ...otherOptions,\n };\n }\n\n static hydrateAdvancedFilterOptions(column, options) {\n const { selectedValues, ...otherOptions } = options;\n return {\n selectedValues: selectedValues.map(value =>\n IrisGridUtils.hydrateValue(value, column?.type)\n ),\n ...otherOptions,\n };\n }\n\n static dehydratePendingDataMap(columns, pendingDataMap) {\n return [...pendingDataMap].map(([rowIndex, { data }]) => [\n rowIndex,\n {\n data: [...data].map(([c, value]) => [\n columns[c].name,\n IrisGridUtils.dehydrateValue(value, columns[c].type),\n ]),\n },\n ]);\n }\n\n static hydratePendingDataMap(columns, pendingDataMap) {\n const columnMap = new Map();\n const getColumnIndex = columnName => {\n if (!columnMap.has(columnName)) {\n columnMap.set(\n columnName,\n columns.findIndex(({ name }) => name === columnName)\n );\n }\n return columnMap.get(columnName);\n };\n\n return new Map(\n pendingDataMap.map(([rowIndex, { data }]) => [\n rowIndex,\n {\n data: new Map(\n data.map(([columnName, value]) => [\n getColumnIndex(columnName),\n IrisGridUtils.hydrateValue(\n value,\n columns[getColumnIndex(columnName)].type\n ),\n ])\n ),\n },\n ])\n );\n }\n\n /**\n * Dehydrates/serializes a value for storage.\n * @param {Any} value The value to dehydrate\n * @param {String} columnType The column type\n */\n static dehydrateValue(value, columnType) {\n if (TableUtils.isDateType(columnType)) {\n return IrisGridUtils.dehydrateDateTime(value);\n }\n\n if (TableUtils.isLongType(columnType)) {\n return IrisGridUtils.dehydrateLong(value);\n }\n\n return value;\n }\n\n /**\n * Hydrate a value from it's serialized state\n * @param {Any} value The dehydrated value that needs to be hydrated\n * @param {String} columnType The type of column\n */\n static hydrateValue(value, columnType) {\n if (TableUtils.isDateType(columnType)) {\n return IrisGridUtils.hydrateDateTime(value);\n }\n\n if (TableUtils.isLongType(columnType)) {\n return IrisGridUtils.hydrateLong(value);\n }\n\n return value;\n }\n\n static dehydrateDateTime(value) {\n return value != null\n ? dh.i18n.DateTimeFormat.format(DateUtils.FULL_DATE_FORMAT, value)\n : null;\n }\n\n static hydrateDateTime(value) {\n return value != null\n ? dh.i18n.DateTimeFormat.parse(DateUtils.FULL_DATE_FORMAT, value)\n : null;\n }\n\n static dehydrateLong(value) {\n return value != null ? `${value}` : null;\n }\n\n static hydrateLong(value) {\n return value != null ? dh.LongWrapper.ofString(value) : null;\n }\n\n /**\n * Export the sorts from the provided table sorts to JSON stringifiable object\n * @param {dh.Sort[]} sorts The table sorts\n * @returns {Object} The dehydrated sorts\n */\n static dehydrateSort(sorts) {\n return sorts.map(sort => {\n const { column, isAbs, direction } = sort;\n return {\n column: column.index,\n isAbs,\n direction,\n };\n });\n }\n\n /**\n * Import the saved sorts to apply to the table. Does not actually apply the sort.\n * @param {dh.Column[]} columns The columns the sorts will be applied to\n * @param {Object[]} sorts Exported sort definitions\n * @returns {dh.Sort[]} The sorts to apply to the table\n */\n static hydrateSort(columns, sorts) {\n return (\n sorts\n .map(sort => {\n const { column: columnIndex, isAbs, direction } = sort;\n if (direction === TableUtils.sortDirection.reverse) {\n return dh.Table.reverse();\n }\n const column = IrisGridUtils.getColumn(columns, columnIndex);\n if (column != null) {\n let columnSort = column.sort();\n if (isAbs) {\n columnSort = columnSort.abs();\n }\n if (direction === TableUtils.sortDirection.descending) {\n columnSort = columnSort.desc();\n } else {\n columnSort = columnSort.asc();\n }\n return columnSort;\n }\n\n return null;\n })\n // If we can't find the column any more, it's null, filter it out\n // If the item is a reverse sort item, filter it out - it will get applied with the `reverseType` property\n // This should only happen when loading a legacy dashboard\n .filter(\n item =>\n item != null && item.direction !== TableUtils.sortDirection.reverse\n )\n );\n }\n\n /**\n * Pulls just the table settings from the panel state, eg. filters/sorts\n * @param {Object} panelState The dehydrated panel state\n * @returns {Object} A dehydrated table settings object, { partition, partitionColumn, advancedFilters, quickFilters, sorts }\n */\n static extractTableSettings(panelState, inputFilters = []) {\n const { irisGridPanelState, irisGridState } = panelState;\n const { partitionColumn, partition } = irisGridPanelState;\n const { advancedFilters, quickFilters, sorts } = irisGridState;\n\n return {\n advancedFilters,\n inputFilters,\n partition,\n partitionColumn,\n quickFilters,\n sorts,\n };\n }\n\n /**\n * Applies the passed in table settings directly to the provided table\n * @param {dh.Table} table The table to apply the settings to\n * @param {Object} tableSettings Dehydrated table settings extracted with `extractTableSettings`\n * @param {string} timeZone The time zone to make this value in if it is a date type. E.g. America/New_York\n */\n static applyTableSettings(table, tableSettings, timeZone) {\n const { columns } = table;\n const quickFilters = IrisGridUtils.getFiltersFromFilterMap(\n IrisGridUtils.hydrateQuickFilters(\n columns,\n tableSettings.quickFilters,\n timeZone\n )\n );\n const advancedFilters = IrisGridUtils.getFiltersFromFilterMap(\n IrisGridUtils.hydrateAdvancedFilters(\n columns,\n tableSettings.advancedFilters,\n timeZone\n )\n );\n const inputFilters = IrisGridUtils.getFiltersFromInputFilters(\n columns,\n tableSettings.inputFilters,\n timeZone\n );\n const sorts = IrisGridUtils.hydrateSort(columns, tableSettings.sorts);\n\n let filters = [...quickFilters, ...advancedFilters];\n const { partition, partitionColumn: partitionColumnName } = tableSettings;\n if (partition && partitionColumnName) {\n const partitionColumn = IrisGridUtils.getColumnByName(\n columns,\n partitionColumnName\n );\n if (partitionColumn) {\n const partitionFilter = partitionColumn\n .filter()\n .eq(dh.FilterValue.ofString(partition));\n filters = [partitionFilter, ...filters];\n }\n }\n filters = [...inputFilters, ...filters];\n\n table.applyFilter(filters);\n table.applySort(sorts);\n }\n\n static getInputFiltersForColumns(columns, inputFilters = []) {\n return inputFilters.filter(({ name, type }) =>\n columns.find(\n ({ name: columnName, type: columnType }) =>\n columnName === name && columnType === type\n )\n );\n }\n\n static getFiltersFromInputFilters(columns, inputFilters = [], timeZone) {\n return inputFilters\n .map(({ name, type, value }) => {\n const column = columns.find(\n ({ name: columnName, type: columnType }) =>\n columnName === name && columnType === type\n );\n if (column) {\n try {\n return TableUtils.makeQuickFilter(column, value, timeZone);\n } catch (e) {\n // It may be unable to create it because user hasn't completed their input\n log.debug('Unable to create input filter', e);\n }\n }\n\n return null;\n })\n .filter(filter => filter);\n }\n\n static getFiltersFromFilterMap(filterMap) {\n const filters = [];\n\n const keys = Array.from(filterMap.keys());\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n const item = filterMap.get(key);\n if (item.filter != null) {\n filters.push(item.filter);\n }\n }\n\n return filters;\n }\n\n /**\n * Get array of hidden column indexes\n * @param {Map} userColumnWidths Map of user column widths\n * @returns {number[]} Array of hidden column indexes\n */\n static getHiddenColumns(userColumnWidths) {\n return [...userColumnWidths.entries()]\n .filter(([, value]) => value === 0)\n .map(([key]) => key);\n }\n\n static parseCustomColumnNames(customColumns) {\n return customColumns.map(customColumn => customColumn.split('=')[0]);\n }\n\n static getRemovedCustomColumnNames(oldCustomColumns, customColumns) {\n const oldCustomColumnsNames = IrisGridUtils.parseCustomColumnNames(\n oldCustomColumns\n );\n const customColumnNames = IrisGridUtils.parseCustomColumnNames(\n customColumns\n );\n return oldCustomColumnsNames.filter(\n oldCustomColumnName => !customColumnNames.includes(oldCustomColumnName)\n );\n }\n\n static removeSortsInColumns(sorts, columnNames) {\n return sorts.filter(sort => !columnNames.includes(sort.column.name));\n }\n\n static removeFiltersInColumns(columns, filters, removedColumnNames) {\n const columnNames = columns.map(({ name }) => name);\n const newFilter = new Map(filters);\n removedColumnNames.forEach(columnName =>\n newFilter.delete(columnNames.indexOf(columnName))\n );\n return newFilter;\n }\n\n static removeColumnFromMovedColumns(\n columns,\n movedColumns,\n removedColumnNames\n ) {\n const columnNames = columns.map(({ name }) => name);\n let newMoves = [...movedColumns];\n for (let i = 0; i < removedColumnNames.length; i += 1) {\n const removedColumnName = removedColumnNames[i];\n let removedColumnIndex = columnNames.findIndex(\n name => name === removedColumnName\n );\n const moves = [];\n for (let j = 0; j < newMoves.length; j += 1) {\n const move = newMoves[j];\n const newMove = { ...move };\n // remove the move if it's a removed column move\n // from-=1 & to-=! if the from/to column is placed after the removed column\n if (removedColumnIndex !== move.from) {\n if (move.from > removedColumnIndex) {\n newMove.from -= 1;\n }\n if (move.to >= removedColumnIndex) {\n newMove.to -= 1;\n }\n if (newMove.from !== newMove.to) {\n moves.push(newMove);\n }\n }\n // get the next index of the removed column after the move\n if (move.from === removedColumnIndex) {\n removedColumnIndex = move.to;\n } else if (\n move.from < removedColumnIndex &&\n removedColumnIndex < move.to\n ) {\n removedColumnIndex -= 1;\n } else if (\n move.to <= removedColumnIndex &&\n removedColumnIndex < move.from\n ) {\n removedColumnIndex += 1;\n }\n }\n newMoves = moves;\n columnNames.splice(\n columnNames.findIndex(name => name === removedColumnName),\n 1\n );\n }\n return newMoves;\n }\n\n static removeColumnsFromSelectDistinctColumns(\n selectDistinctColumns,\n removedColumnNames\n ) {\n return selectDistinctColumns.filter(\n columnName => !removedColumnNames.includes(columnName)\n );\n }\n\n static getVisibleColumnsInRange(\n tableColumns,\n left,\n right,\n movedColumns,\n hiddenColumns\n ) {\n const columns = [];\n for (let i = left; i <= right; i += 1) {\n const modelIndex = GridUtils.getModelIndex(i, movedColumns);\n if (\n modelIndex >= 0 &&\n modelIndex < tableColumns.length &&\n !hiddenColumns.includes(modelIndex)\n ) {\n columns.push(tableColumns[modelIndex]);\n }\n }\n return columns;\n }\n\n static getPrevVisibleColumns(\n tableColumns,\n startIndex,\n count,\n movedColumns,\n hiddenColumns\n ) {\n const columns = [];\n let i = startIndex;\n while (i >= 0 && columns.length < count) {\n const modelIndex = GridUtils.getModelIndex(i, movedColumns);\n if (\n modelIndex >= 0 &&\n modelIndex < tableColumns.length &&\n !hiddenColumns.includes(modelIndex)\n ) {\n columns.unshift(tableColumns[modelIndex]);\n }\n i -= 1;\n }\n return columns;\n }\n\n static getNextVisibleColumns(\n tableColumns,\n startIndex,\n count,\n movedColumns,\n hiddenColumns\n ) {\n const columns = [];\n let i = startIndex;\n while (i < tableColumns.length && columns.length < count) {\n const modelIndex = GridUtils.getModelIndex(i, movedColumns);\n if (\n modelIndex >= 0 &&\n modelIndex < tableColumns.length &&\n !hiddenColumns.includes(modelIndex)\n ) {\n columns.push(tableColumns[modelIndex]);\n }\n i += 1;\n }\n return columns;\n }\n\n static getColumnsToFetch(\n tableColumns,\n viewportColumns,\n alwaysFetchColumnNames\n ) {\n const columnsToFetch = [...viewportColumns];\n alwaysFetchColumnNames.forEach(columnName => {\n const column = tableColumns.find(({ name }) => name === columnName);\n if (column != null && !viewportColumns.includes(column)) {\n columnsToFetch.push(column);\n }\n });\n return columnsToFetch;\n }\n\n static getModelViewportColumns(\n columns,\n left,\n right,\n movedColumns = [],\n hiddenColumns = [],\n alwaysFetchColumnNames = [],\n bufferPages = 0\n ) {\n if (left == null || right == null) {\n return null;\n }\n\n const columnsCenter = IrisGridUtils.getVisibleColumnsInRange(\n columns,\n left,\n right,\n movedColumns,\n hiddenColumns\n );\n const bufferWidth = columnsCenter.length * bufferPages;\n const columnsLeft = IrisGridUtils.getPrevVisibleColumns(\n columns,\n left - 1,\n bufferWidth,\n movedColumns,\n hiddenColumns\n );\n const columnsRight = IrisGridUtils.getNextVisibleColumns(\n columns,\n right + 1,\n bufferWidth,\n movedColumns,\n hiddenColumns\n );\n\n const bufferedColumns = [...columnsLeft, ...columnsCenter, ...columnsRight];\n\n return IrisGridUtils.getColumnsToFetch(\n columns,\n bufferedColumns,\n alwaysFetchColumnNames\n );\n }\n\n /**\n * Get the dh.RangeSet representation of the provided ranges.\n * Ranges are sorted prior to creating the RangeSet. Only the rows are taken into account,\n * RangeSet does not have an option for columns.\n * @param {GridRange[]} ranges The ranges to get the range set for\n * @returns {dh.RangeSet} The rangeset for the provided ranges\n */\n static rangeSetFromRanges(ranges) {\n const rangeSets = ranges\n .slice()\n .sort((a, b) => a.startRow - b.startRow)\n .map(range => {\n const { startRow, endRow } = range;\n return dh.RangeSet.ofRange(startRow, endRow);\n });\n return dh.RangeSet.ofRanges(rangeSets);\n }\n\n /**\n * Validate whether the ranges passed in are valid to take a snapshot from.\n * Multiple selections are valid if all of the selected rows have the same columns selected.\n *\n * @param {GridRange[]} ranges The ranges to validate\n * @returns {boolean} True if the ranges are valid, false otherwise\n */\n static isValidSnapshotRanges(ranges) {\n if (!ranges || ranges.length === 0) {\n return false;\n }\n\n // To verify all the rows selected have the same set of columns selected, build a map with string representations\n // of each range.\n const rangeMap = new Map();\n for (let i = 0; i < ranges.length; i += 1) {\n const range = ranges[i];\n const rowMapIndex = `${range.startRow}:${range.endRow}`;\n const columnMapIndex = `${range.startColumn}:${range.endColumn}`;\n if (!rangeMap.has(rowMapIndex)) {\n rangeMap.set(rowMapIndex, []);\n }\n rangeMap.get(rowMapIndex).push(columnMapIndex);\n }\n\n const keys = [...rangeMap.keys()];\n const matchColumnRanges = rangeMap.get(keys[0]).sort().join(',');\n for (let i = 1; i < keys.length; i += 1) {\n if (rangeMap.get(keys[i]).sort().join(',') !== matchColumnRanges) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Check if the provided value is a valid table index\n * @param {any} value A value to check if it's a valid table index\n */\n static isValidIndex(value) {\n return Number.isInteger(value) && value >= 0;\n }\n\n /**\n * Returns all columns used in any of the ranges provided\n * @param {GridRange[]} ranges The model ranges to get columns for\n * @param {dh.Column[]} allColumns All the columns to pull from\n * @returns {dh.Column[]} The columns selected in the range\n */\n static columnsFromRanges(ranges, allColumns) {\n if (!ranges || ranges.length === 0) {\n return [];\n }\n if (ranges[0].startColumn === null && ranges[0].endColumn === null) {\n // Snapshot of all the columns\n return allColumns;\n }\n\n const columnSet = new Set();\n for (let i = 0; i < ranges.length; i += 1) {\n const range = ranges[i];\n for (\n let c = range.startColumn ?? 0;\n c <= (range.endColumn ?? allColumns.length - 1);\n c += 1\n ) {\n columnSet.add(c);\n }\n }\n return [...columnSet].map(c => allColumns[c]);\n }\n\n /**\n * Transforms an iris data snapshot into a simple data matrix\n * @param {dh.TableData} data The Iris formatted table data\n * @returns {unknown[][]} A matrix of the values of the data\n */\n static snapshotDataToMatrix(data) {\n const { columns, rows } = data;\n const result = [];\n for (let r = 0; r < rows.length; r += 1) {\n const row = rows[r];\n const rowData = [];\n for (let c = 0; c < columns.length; c += 1) {\n const column = columns[c];\n const value = row.get(column);\n rowData.push(value);\n }\n result.push(rowData);\n }\n return result;\n }\n\n /**\n * Hydrate model rollup config\n * @param {Array} originalColumns Original model columns\n * @param {Object} config Dehydrated rollup config\n * @param {Object} aggregationSettings Aggregation settings\n * @returns {Object} Rollup config for the model\n */\n static getModelRollupConfig(originalColumns, config, aggregationSettings) {\n if ((config?.columns?.length ?? 0) === 0) {\n return null;\n }\n\n const {\n columns: groupingColumns = [],\n showConstituents: includeConstituents = true,\n showNonAggregatedColumns = true,\n includeDescriptions = true,\n } = config ?? {};\n const { aggregations = [] } = aggregationSettings ?? {};\n const aggregationColumns = aggregations.map(\n ({ operation, selected, invert }) =>\n AggregationUtils.isRollupOperation(operation)\n ? []\n : AggregationUtils.getOperationColumnNames(\n originalColumns,\n operation,\n selected,\n invert\n )\n );\n\n const aggregationMap = {};\n // Aggregation columns should show first, add them first\n for (let i = 0; i < aggregations.length; i += 1) {\n aggregationMap[aggregations[i].operation] = aggregationColumns[i];\n }\n\n if (showNonAggregatedColumns) {\n // Filter out any column that already has an aggregation or grouping\n const nonAggregatedColumnSet = new Set(\n originalColumns\n .map(c => c.name)\n .filter(name => !groupingColumns.includes(name))\n );\n aggregationColumns.forEach(columns => {\n columns.forEach(name => nonAggregatedColumnSet.delete(name));\n });\n\n if (nonAggregatedColumnSet.size > 0) {\n const existingColumns =\n aggregationMap[AggregationOperation.FIRST] ?? [];\n aggregationMap[AggregationOperation.FIRST] = [\n ...existingColumns,\n ...nonAggregatedColumnSet,\n ];\n }\n }\n\n return {\n groupingColumns,\n includeConstituents,\n includeDescriptions,\n aggregations: aggregationMap,\n };\n }\n\n /**\n * @param {Map} pendingDataMap Map of pending data\n * @returns {Map} A map with the errors in the pending data\n */\n static getPendingErrors(pendingDataMap) {\n pendingDataMap.forEach((row, rowIndex) => {\n if (!IrisGridUtils.isValidIndex(rowIndex)) {\n throw new Error('Invalid rowIndex', rowIndex);\n }\n\n const { data } = row;\n data.forEach((value, columnIndex) => {\n if (!IrisGridUtils.isValidIndex(columnIndex)) {\n throw new Error('Invalid columnIndex', columnIndex);\n }\n });\n });\n }\n\n /**\n * Retrieves a column from the provided array at the index, or `null` and logs an error if it's invalid\n *\n * @param {dh.Columns[]} columns The columns to get the column from\n * @param {Number} columnIndex The column index to get\n */\n static getColumn(columns, columnIndex) {\n if (columnIndex < columns.length) {\n return columns[columnIndex];\n }\n\n log.error('Unable to retrieve column', columnIndex, '>=', columns.length);\n\n return null;\n }\n\n /**\n * Retrieves a column from the provided array matching the name, or `null` and logs an error if not found\n * @param {dh.Column[]} columns The columns to get the column from\n * @param {String} columnName The column name to retrieve\n */\n static getColumnByName(columns, columnName) {\n const column = columns.find(({ name }) => name === columnName);\n if (column == null) {\n log.error(\n 'Unable to retrieve column by name',\n columnName,\n columns.map(({ name }) => name)\n );\n }\n\n return column;\n }\n}\n\nexport default IrisGridUtils;\n"],"file":"IrisGridUtils.js"}
|
|
1
|
+
{"version":3,"sources":["../src/IrisGridUtils.js"],"names":["GridUtils","dh","Log","TableUtils","DateUtils","AdvancedSettings","AggregationUtils","AggregationOperation","log","module","IrisGridUtils","dehydrateGridState","model","gridState","movedColumns","movedRows","columns","filter","to","from","length","map","name","hydrateGridState","customColumns","customColumnNames","parseCustomColumnNames","columnNames","concat","String","findIndex","dehydrateIrisGridState","irisGridState","aggregationSettings","aggregations","showOnTop","advancedSettings","advancedFilters","customColumnFormatMap","isFilterBarShown","metrics","quickFilters","reverseType","rollupConfig","showSearchBar","searchValue","selectDistinctColumns","selectedSearchColumns","sorts","invertSearchColumns","pendingDataMap","Map","userColumnWidths","userRowHeights","dehydrateAdvancedFilters","dehydrateQuickFilters","dehydrateSort","columnIndex","width","dehydratePendingDataMap","hydrateIrisGridState","formatter","hydrateAdvancedFilters","timeZone","DEFAULTS","hydrateQuickFilters","hydrateSort","column","hydratePendingDataMap","dehydrateIrisGridPanelState","irisGridPanelState","isSelectingPartition","partition","partitionColumn","hydrateIrisGridPanelState","getColumnByName","quickFilter","text","savedQuickFilters","importedFilters","getColumn","makeQuickFilter","error","advancedFilter","options","dehydrateAdvancedFilterOptions","savedAdvancedFilters","hydrateAdvancedFilterOptions","makeAdvancedFilter","selectedValues","otherOptions","value","dehydrateValue","type","hydrateValue","rowIndex","data","c","columnMap","getColumnIndex","columnName","has","set","get","columnType","isDateType","dehydrateDateTime","isLongType","dehydrateLong","hydrateDateTime","hydrateLong","i18n","DateTimeFormat","format","FULL_DATE_FORMAT","parse","LongWrapper","ofString","sort","isAbs","direction","index","sortDirection","reverse","Table","columnSort","abs","descending","desc","asc","item","extractTableSettings","panelState","inputFilters","applyTableSettings","table","tableSettings","getFiltersFromFilterMap","getFiltersFromInputFilters","filters","partitionColumnName","partitionFilter","eq","FilterValue","applyFilter","applySort","getInputFiltersForColumns","find","e","debug","filterMap","keys","Array","i","key","push","getHiddenColumns","entries","customColumn","split","getRemovedCustomColumnNames","oldCustomColumns","oldCustomColumnsNames","oldCustomColumnName","includes","removeSortsInColumns","removeFiltersInColumns","removedColumnNames","newFilter","forEach","delete","indexOf","removeColumnFromMovedColumns","newMoves","removedColumnName","removedColumnIndex","moves","j","move","newMove","splice","removeColumnsFromSelectDistinctColumns","getVisibleColumnsInRange","tableColumns","left","right","hiddenColumns","modelIndex","getModelIndex","getPrevVisibleColumns","startIndex","count","unshift","getNextVisibleColumns","getColumnsToFetch","viewportColumns","alwaysFetchColumnNames","columnsToFetch","getModelViewportColumns","bufferPages","columnsCenter","bufferWidth","columnsLeft","columnsRight","bufferedColumns","rangeSetFromRanges","ranges","rangeSets","slice","a","b","startRow","range","endRow","RangeSet","ofRange","ofRanges","isValidSnapshotRanges","rangeMap","rowMapIndex","columnMapIndex","startColumn","endColumn","matchColumnRanges","join","isValidIndex","Number","isInteger","columnsFromRanges","allColumns","columnSet","Set","add","snapshotDataToMatrix","rows","result","r","row","rowData","getModelRollupConfig","originalColumns","config","groupingColumns","showConstituents","includeConstituents","showNonAggregatedColumns","includeDescriptions","aggregationColumns","operation","selected","invert","isRollupOperation","getOperationColumnNames","aggregationMap","nonAggregatedColumnSet","size","existingColumns","FIRST","getPendingErrors","Error"],"mappings":"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","sourcesContent":["import { GridUtils } from '@deephaven/grid';\nimport dh from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport TableUtils from './TableUtils';\nimport DateUtils from './DateUtils';\nimport AdvancedSettings from './sidebar/AdvancedSettings';\nimport AggregationUtils from './sidebar/aggregations/AggregationUtils';\nimport AggregationOperation from './sidebar/aggregations/AggregationOperation';\n\nconst log = Log.module('IrisGridUtils');\n\nclass IrisGridUtils {\n /**\n * Exports the state from Grid component to a JSON stringifiable object\n * @param {IrisGridModel} model The table model to export the Grid state for\n * @param {Object} gridState The state of the Grid to export\n * @returns {Object} An object that can be stringified and imported with {{@link hydrateGridState}}\n */\n static dehydrateGridState(model, gridState) {\n const { movedColumns, movedRows } = gridState;\n\n const { columns } = model;\n return {\n movedColumns: [...movedColumns]\n .filter(\n ({ to, from }) =>\n to >= 0 && to < columns.length && from >= 0 && from < columns.length\n )\n .map(({ to, from }) => ({\n to: columns[to].name,\n from: columns[from].name,\n })),\n movedRows: [...movedRows],\n };\n }\n\n /**\n * Import a state for Grid that was exported with {{@link dehydrateGridState}}\n * @param {IrisGridModel} model The table model to import the state for\n * @param {Object} gridState The state of the panel that was saved\n * @returns {Object} The gridState props to set on the Grid\n */\n static hydrateGridState(model, gridState, customColumns = []) {\n const { movedColumns, movedRows } = gridState;\n\n const { columns } = model;\n const customColumnNames = IrisGridUtils.parseCustomColumnNames(\n customColumns\n );\n const columnNames = columns\n .map(({ name }) => name)\n .concat(customColumnNames);\n\n return {\n movedColumns: [...movedColumns]\n .map(({ to, from }) => {\n if (\n (typeof to === 'string' || to instanceof String) &&\n (typeof from === 'string' || from instanceof String)\n ) {\n return {\n to: columnNames.findIndex(name => name === to),\n from: columnNames.findIndex(name => name === from),\n };\n }\n return { to, from };\n })\n .filter(\n ({ to, from }) =>\n to != null &&\n to >= 0 &&\n to < columnNames.length &&\n from != null &&\n from >= 0 &&\n from < columnNames.length\n ),\n movedRows: [...movedRows],\n };\n }\n\n /**\n * Exports the state from IrisGrid to a JSON stringifiable object\n * @param {IrisGridModel} model The table model to export the state for\n * @param {Object} irisGridState The current state of the IrisGrid\n */\n static dehydrateIrisGridState(model, irisGridState) {\n const {\n aggregationSettings = { aggregations: [], showOnTop: false },\n advancedSettings = [],\n advancedFilters,\n customColumnFormatMap,\n isFilterBarShown,\n metrics,\n quickFilters,\n customColumns,\n reverseType,\n rollupConfig = null,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n sorts,\n invertSearchColumns,\n pendingDataMap = new Map(),\n } = irisGridState;\n const { userColumnWidths, userRowHeights } = metrics;\n\n const { columns } = model;\n return {\n advancedFilters: IrisGridUtils.dehydrateAdvancedFilters(\n columns,\n advancedFilters\n ),\n advancedSettings: [...advancedSettings],\n aggregationSettings,\n customColumnFormatMap: [...customColumnFormatMap],\n isFilterBarShown,\n quickFilters: IrisGridUtils.dehydrateQuickFilters(quickFilters),\n sorts: IrisGridUtils.dehydrateSort(sorts, model),\n userColumnWidths: [...userColumnWidths]\n .filter(\n ([columnIndex]) =>\n columnIndex != null &&\n columnIndex >= 0 &&\n columnIndex < columns.length\n )\n .map(([columnIndex, width]) => [columns[columnIndex].name, width]),\n userRowHeights: [...userRowHeights],\n customColumns: [...customColumns],\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns: [...selectDistinctColumns],\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap: IrisGridUtils.dehydratePendingDataMap(\n columns,\n pendingDataMap\n ),\n };\n }\n\n /**\n * Import a state for IrisGrid that was exported with {{@link dehydrateIrisGridState}}\n * @param {IrisGridModel} model The table model to import the state with\n * @param {Object} irisGridState The saved IrisGrid state\n */\n static hydrateIrisGridState(model, irisGridState) {\n const {\n advancedFilters,\n advancedSettings = [],\n aggregationSettings = { aggregations: [], showOnTop: false },\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n sorts,\n customColumns,\n userColumnWidths,\n userRowHeights,\n reverseType,\n rollupConfig = null,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns = true,\n pendingDataMap = [],\n } = irisGridState;\n\n const { columns, formatter } = model;\n return {\n advancedFilters: IrisGridUtils.hydrateAdvancedFilters(\n columns,\n advancedFilters,\n formatter.timeZone\n ),\n advancedSettings: new Map([\n ...AdvancedSettings.DEFAULTS,\n ...advancedSettings,\n ]),\n aggregationSettings,\n customColumnFormatMap: new Map(customColumnFormatMap),\n isFilterBarShown,\n quickFilters: IrisGridUtils.hydrateQuickFilters(\n columns,\n quickFilters,\n formatter.timeZone\n ),\n sorts: IrisGridUtils.hydrateSort(columns, sorts),\n userColumnWidths: new Map(\n userColumnWidths\n .map(([column, width]) => {\n if (typeof column === 'string' || column instanceof String) {\n return [columns.findIndex(({ name }) => name === column), width];\n }\n return [column, width];\n })\n .filter(\n ([column]) =>\n column != null && column >= 0 && column < columns.length\n )\n ),\n customColumns,\n userRowHeights: new Map(userRowHeights),\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap: IrisGridUtils.hydratePendingDataMap(\n columns,\n pendingDataMap\n ),\n };\n }\n\n /**\n * Export the IrisGridPanel state.\n * @param {IrisGridModel} model The table model the state is being dehydrated with\n * @param {Object} irisGridPanelState The current IrisGridPanel state\n * @returns {Object} The dehydrated IrisGridPanel state\n */\n static dehydrateIrisGridPanelState(model, irisGridPanelState) {\n const {\n isSelectingPartition,\n partition,\n partitionColumn,\n } = irisGridPanelState;\n\n return {\n isSelectingPartition,\n partition,\n partitionColumn: partitionColumn ? partitionColumn.name : null,\n };\n }\n\n /**\n * Import the saved IrisGridPanel state.\n * @param {IrisGridModel} model The model the state is being hydrated with\n * @param {Object} irisGridPanelState Exported IrisGridPanel state\n * @returns {Object} The state to apply to the IrisGridPanel\n */\n static hydrateIrisGridPanelState(model, irisGridPanelState) {\n const {\n isSelectingPartition,\n partition,\n partitionColumn,\n } = irisGridPanelState;\n\n const { columns } = model;\n return {\n isSelectingPartition,\n partition,\n partitionColumn:\n partitionColumn != null\n ? IrisGridUtils.getColumnByName(columns, partitionColumn)\n : null,\n };\n }\n\n /**\n * Export the quick filters to JSON striginfiable object\n * @param {AdvancedFilter[]} quickFilters The quick filters to dehydrate\n * @returns {Object} The dehydrated quick filters\n */\n static dehydrateQuickFilters(quickFilters) {\n return [...quickFilters].map(([columnIndex, quickFilter]) => {\n const { text } = quickFilter;\n return [columnIndex, { text }];\n });\n }\n\n /**\n * Import the saved quick filters to apply to the columns. Does not actually apply the filters.\n * @param {dh.Column[]} columns The columns the filters will be applied to\n * @param {Object[]} savedQuickFilters Exported quick filters definitions\n * @param {string} timeZone The time zone to make this value in if it is a date type. E.g. America/New_York\n * @returns {QuickFilter[]} The quick filters to apply to the columns\n */\n static hydrateQuickFilters(columns, savedQuickFilters, timeZone) {\n const importedFilters = savedQuickFilters.map(\n ([columnIndex, quickFilter]) => {\n const { text } = quickFilter;\n\n let filter = null;\n try {\n const column = IrisGridUtils.getColumn(columns, columnIndex);\n if (column != null) {\n filter = TableUtils.makeQuickFilter(column, text, timeZone);\n }\n } catch (error) {\n log.error('hydrateQuickFilters error with', text, error);\n }\n\n return [columnIndex, { text, filter }];\n }\n );\n\n return new Map(importedFilters);\n }\n\n /**\n * Export the advanced filters from the provided columns to JSON striginfiable object\n * @param {dh.Column[]} columns The columns for the filters\n * @param {AdvancedFilter[]} advancedFilters The advanced filters to dehydrate\n * @returns {Object} The dehydrated advanced filters\n */\n static dehydrateAdvancedFilters(columns, advancedFilters) {\n return [...advancedFilters].map(([columnIndex, advancedFilter]) => {\n const options = IrisGridUtils.dehydrateAdvancedFilterOptions(\n IrisGridUtils.getColumn(columns, columnIndex),\n advancedFilter.options\n );\n return [columnIndex, { options }];\n });\n }\n\n /**\n * Import the saved advanced filters to apply to the columns. Does not actually apply the filters.\n * @param {dh.Columns[]} columns The columns the filters will be applied to\n * @param {Object[]} savedAdvancedFilters Exported advanced filters definitions\n * @param {string} timeZone The time zone to make this filter in if it is a date type. E.g. America/New_York\n * @returns {AdvancedFilter[]} The advanced filters to apply to the columns\n */\n static hydrateAdvancedFilters(columns, savedAdvancedFilters, timeZone) {\n const importedFilters = savedAdvancedFilters.map(\n ([columnIndex, advancedFilter]) => {\n const options = IrisGridUtils.hydrateAdvancedFilterOptions(\n IrisGridUtils.getColumn(columns, columnIndex),\n advancedFilter.options\n );\n let filter = null;\n\n try {\n const column = IrisGridUtils.getColumn(columns, columnIndex);\n if (column != null) {\n filter = TableUtils.makeAdvancedFilter(column, options, timeZone);\n }\n } catch (error) {\n log.error('hydrateAdvancedFilters error with', options, error);\n }\n\n return [columnIndex, { options, filter }];\n }\n );\n\n return new Map(importedFilters);\n }\n\n static dehydrateAdvancedFilterOptions(column, options) {\n const { selectedValues, ...otherOptions } = options;\n return {\n selectedValues: selectedValues.map(value =>\n IrisGridUtils.dehydrateValue(value, column?.type)\n ),\n ...otherOptions,\n };\n }\n\n static hydrateAdvancedFilterOptions(column, options) {\n const { selectedValues, ...otherOptions } = options;\n return {\n selectedValues: selectedValues.map(value =>\n IrisGridUtils.hydrateValue(value, column?.type)\n ),\n ...otherOptions,\n };\n }\n\n static dehydratePendingDataMap(columns, pendingDataMap) {\n return [...pendingDataMap].map(([rowIndex, { data }]) => [\n rowIndex,\n {\n data: [...data].map(([c, value]) => [\n columns[c].name,\n IrisGridUtils.dehydrateValue(value, columns[c].type),\n ]),\n },\n ]);\n }\n\n static hydratePendingDataMap(columns, pendingDataMap) {\n const columnMap = new Map();\n const getColumnIndex = columnName => {\n if (!columnMap.has(columnName)) {\n columnMap.set(\n columnName,\n columns.findIndex(({ name }) => name === columnName)\n );\n }\n return columnMap.get(columnName);\n };\n\n return new Map(\n pendingDataMap.map(([rowIndex, { data }]) => [\n rowIndex,\n {\n data: new Map(\n data.map(([columnName, value]) => [\n getColumnIndex(columnName),\n IrisGridUtils.hydrateValue(\n value,\n columns[getColumnIndex(columnName)].type\n ),\n ])\n ),\n },\n ])\n );\n }\n\n /**\n * Dehydrates/serializes a value for storage.\n * @param {Any} value The value to dehydrate\n * @param {String} columnType The column type\n */\n static dehydrateValue(value, columnType) {\n if (TableUtils.isDateType(columnType)) {\n return IrisGridUtils.dehydrateDateTime(value);\n }\n\n if (TableUtils.isLongType(columnType)) {\n return IrisGridUtils.dehydrateLong(value);\n }\n\n return value;\n }\n\n /**\n * Hydrate a value from it's serialized state\n * @param {Any} value The dehydrated value that needs to be hydrated\n * @param {String} columnType The type of column\n */\n static hydrateValue(value, columnType) {\n if (TableUtils.isDateType(columnType)) {\n return IrisGridUtils.hydrateDateTime(value);\n }\n\n if (TableUtils.isLongType(columnType)) {\n return IrisGridUtils.hydrateLong(value);\n }\n\n return value;\n }\n\n static dehydrateDateTime(value) {\n return value != null\n ? dh.i18n.DateTimeFormat.format(DateUtils.FULL_DATE_FORMAT, value)\n : null;\n }\n\n static hydrateDateTime(value) {\n return value != null\n ? dh.i18n.DateTimeFormat.parse(DateUtils.FULL_DATE_FORMAT, value)\n : null;\n }\n\n static dehydrateLong(value) {\n return value != null ? `${value}` : null;\n }\n\n static hydrateLong(value) {\n return value != null ? dh.LongWrapper.ofString(value) : null;\n }\n\n /**\n * Export the sorts from the provided table sorts to JSON stringifiable object\n * @param {dh.Sort[]} sorts The table sorts\n * @returns {Object} The dehydrated sorts\n */\n static dehydrateSort(sorts) {\n return sorts.map(sort => {\n const { column, isAbs, direction } = sort;\n return {\n column: column.index,\n isAbs,\n direction,\n };\n });\n }\n\n /**\n * Import the saved sorts to apply to the table. Does not actually apply the sort.\n * @param {dh.Column[]} columns The columns the sorts will be applied to\n * @param {Object[]} sorts Exported sort definitions\n * @returns {dh.Sort[]} The sorts to apply to the table\n */\n static hydrateSort(columns, sorts) {\n return (\n sorts\n .map(sort => {\n const { column: columnIndex, isAbs, direction } = sort;\n if (direction === TableUtils.sortDirection.reverse) {\n return dh.Table.reverse();\n }\n const column = IrisGridUtils.getColumn(columns, columnIndex);\n if (column != null) {\n let columnSort = column.sort();\n if (isAbs) {\n columnSort = columnSort.abs();\n }\n if (direction === TableUtils.sortDirection.descending) {\n columnSort = columnSort.desc();\n } else {\n columnSort = columnSort.asc();\n }\n return columnSort;\n }\n\n return null;\n })\n // If we can't find the column any more, it's null, filter it out\n // If the item is a reverse sort item, filter it out - it will get applied with the `reverseType` property\n // This should only happen when loading a legacy dashboard\n .filter(\n item =>\n item != null && item.direction !== TableUtils.sortDirection.reverse\n )\n );\n }\n\n /**\n * Pulls just the table settings from the panel state, eg. filters/sorts\n * @param {Object} panelState The dehydrated panel state\n * @returns {Object} A dehydrated table settings object, { partition, partitionColumn, advancedFilters, quickFilters, sorts }\n */\n static extractTableSettings(panelState, inputFilters = []) {\n const { irisGridPanelState, irisGridState } = panelState;\n const { partitionColumn, partition } = irisGridPanelState;\n const { advancedFilters, quickFilters, sorts } = irisGridState;\n\n return {\n advancedFilters,\n inputFilters,\n partition,\n partitionColumn,\n quickFilters,\n sorts,\n };\n }\n\n /**\n * Applies the passed in table settings directly to the provided table\n * @param {dh.Table} table The table to apply the settings to\n * @param {Object} tableSettings Dehydrated table settings extracted with `extractTableSettings`\n * @param {string} timeZone The time zone to make this value in if it is a date type. E.g. America/New_York\n */\n static applyTableSettings(table, tableSettings, timeZone) {\n const { columns } = table;\n const quickFilters = IrisGridUtils.getFiltersFromFilterMap(\n IrisGridUtils.hydrateQuickFilters(\n columns,\n tableSettings.quickFilters,\n timeZone\n )\n );\n const advancedFilters = IrisGridUtils.getFiltersFromFilterMap(\n IrisGridUtils.hydrateAdvancedFilters(\n columns,\n tableSettings.advancedFilters,\n timeZone\n )\n );\n const inputFilters = IrisGridUtils.getFiltersFromInputFilters(\n columns,\n tableSettings.inputFilters,\n timeZone\n );\n const sorts = IrisGridUtils.hydrateSort(columns, tableSettings.sorts);\n\n let filters = [...quickFilters, ...advancedFilters];\n const { partition, partitionColumn: partitionColumnName } = tableSettings;\n if (partition && partitionColumnName) {\n const partitionColumn = IrisGridUtils.getColumnByName(\n columns,\n partitionColumnName\n );\n if (partitionColumn) {\n const partitionFilter = partitionColumn\n .filter()\n .eq(dh.FilterValue.ofString(partition));\n filters = [partitionFilter, ...filters];\n }\n }\n filters = [...inputFilters, ...filters];\n\n table.applyFilter(filters);\n table.applySort(sorts);\n }\n\n static getInputFiltersForColumns(columns, inputFilters = []) {\n return inputFilters.filter(({ name, type }) =>\n columns.find(\n ({ name: columnName, type: columnType }) =>\n columnName === name && columnType === type\n )\n );\n }\n\n static getFiltersFromInputFilters(columns, inputFilters = [], timeZone) {\n return inputFilters\n .map(({ name, type, value }) => {\n const column = columns.find(\n ({ name: columnName, type: columnType }) =>\n columnName === name && columnType === type\n );\n if (column) {\n try {\n return TableUtils.makeQuickFilter(column, value, timeZone);\n } catch (e) {\n // It may be unable to create it because user hasn't completed their input\n log.debug('Unable to create input filter', e);\n }\n }\n\n return null;\n })\n .filter(filter => filter);\n }\n\n static getFiltersFromFilterMap(filterMap) {\n const filters = [];\n\n const keys = Array.from(filterMap.keys());\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n const item = filterMap.get(key);\n if (item.filter != null) {\n filters.push(item.filter);\n }\n }\n\n return filters;\n }\n\n /**\n * Get array of hidden column indexes\n * @param {Map} userColumnWidths Map of user column widths\n * @returns {number[]} Array of hidden column indexes\n */\n static getHiddenColumns(userColumnWidths) {\n return [...userColumnWidths.entries()]\n .filter(([, value]) => value === 0)\n .map(([key]) => key);\n }\n\n static parseCustomColumnNames(customColumns) {\n return customColumns.map(customColumn => customColumn.split('=')[0]);\n }\n\n static getRemovedCustomColumnNames(oldCustomColumns, customColumns) {\n const oldCustomColumnsNames = IrisGridUtils.parseCustomColumnNames(\n oldCustomColumns\n );\n const customColumnNames = IrisGridUtils.parseCustomColumnNames(\n customColumns\n );\n return oldCustomColumnsNames.filter(\n oldCustomColumnName => !customColumnNames.includes(oldCustomColumnName)\n );\n }\n\n static removeSortsInColumns(sorts, columnNames) {\n return sorts.filter(sort => !columnNames.includes(sort.column.name));\n }\n\n static removeFiltersInColumns(columns, filters, removedColumnNames) {\n const columnNames = columns.map(({ name }) => name);\n const newFilter = new Map(filters);\n removedColumnNames.forEach(columnName =>\n newFilter.delete(columnNames.indexOf(columnName))\n );\n return newFilter;\n }\n\n static removeColumnFromMovedColumns(\n columns,\n movedColumns,\n removedColumnNames\n ) {\n const columnNames = columns.map(({ name }) => name);\n let newMoves = [...movedColumns];\n for (let i = 0; i < removedColumnNames.length; i += 1) {\n const removedColumnName = removedColumnNames[i];\n let removedColumnIndex = columnNames.findIndex(\n name => name === removedColumnName\n );\n const moves = [];\n for (let j = 0; j < newMoves.length; j += 1) {\n const move = newMoves[j];\n const newMove = { ...move };\n // remove the move if it's a removed column move\n // from-=1 & to-=! if the from/to column is placed after the removed column\n if (removedColumnIndex !== move.from) {\n if (move.from > removedColumnIndex) {\n newMove.from -= 1;\n }\n if (move.to >= removedColumnIndex) {\n newMove.to -= 1;\n }\n if (newMove.from !== newMove.to) {\n moves.push(newMove);\n }\n }\n // get the next index of the removed column after the move\n if (move.from === removedColumnIndex) {\n removedColumnIndex = move.to;\n } else if (\n move.from < removedColumnIndex &&\n removedColumnIndex < move.to\n ) {\n removedColumnIndex -= 1;\n } else if (\n move.to <= removedColumnIndex &&\n removedColumnIndex < move.from\n ) {\n removedColumnIndex += 1;\n }\n }\n newMoves = moves;\n columnNames.splice(\n columnNames.findIndex(name => name === removedColumnName),\n 1\n );\n }\n return newMoves;\n }\n\n static removeColumnsFromSelectDistinctColumns(\n selectDistinctColumns,\n removedColumnNames\n ) {\n return selectDistinctColumns.filter(\n columnName => !removedColumnNames.includes(columnName)\n );\n }\n\n static getVisibleColumnsInRange(\n tableColumns,\n left,\n right,\n movedColumns,\n hiddenColumns\n ) {\n const columns = [];\n for (let i = left; i <= right; i += 1) {\n const modelIndex = GridUtils.getModelIndex(i, movedColumns);\n if (\n modelIndex >= 0 &&\n modelIndex < tableColumns.length &&\n !hiddenColumns.includes(modelIndex)\n ) {\n columns.push(tableColumns[modelIndex]);\n }\n }\n return columns;\n }\n\n static getPrevVisibleColumns(\n tableColumns,\n startIndex,\n count,\n movedColumns,\n hiddenColumns\n ) {\n const columns = [];\n let i = startIndex;\n while (i >= 0 && columns.length < count) {\n const modelIndex = GridUtils.getModelIndex(i, movedColumns);\n if (\n modelIndex >= 0 &&\n modelIndex < tableColumns.length &&\n !hiddenColumns.includes(modelIndex)\n ) {\n columns.unshift(tableColumns[modelIndex]);\n }\n i -= 1;\n }\n return columns;\n }\n\n static getNextVisibleColumns(\n tableColumns,\n startIndex,\n count,\n movedColumns,\n hiddenColumns\n ) {\n const columns = [];\n let i = startIndex;\n while (i < tableColumns.length && columns.length < count) {\n const modelIndex = GridUtils.getModelIndex(i, movedColumns);\n if (\n modelIndex >= 0 &&\n modelIndex < tableColumns.length &&\n !hiddenColumns.includes(modelIndex)\n ) {\n columns.push(tableColumns[modelIndex]);\n }\n i += 1;\n }\n return columns;\n }\n\n static getColumnsToFetch(\n tableColumns,\n viewportColumns,\n alwaysFetchColumnNames\n ) {\n const columnsToFetch = [...viewportColumns];\n alwaysFetchColumnNames.forEach(columnName => {\n const column = tableColumns.find(({ name }) => name === columnName);\n if (column != null && !viewportColumns.includes(column)) {\n columnsToFetch.push(column);\n }\n });\n return columnsToFetch;\n }\n\n static getModelViewportColumns(\n columns,\n left,\n right,\n movedColumns = [],\n hiddenColumns = [],\n alwaysFetchColumnNames = [],\n bufferPages = 0\n ) {\n if (left == null || right == null) {\n return null;\n }\n\n const columnsCenter = IrisGridUtils.getVisibleColumnsInRange(\n columns,\n left,\n right,\n movedColumns,\n hiddenColumns\n );\n const bufferWidth = columnsCenter.length * bufferPages;\n const columnsLeft = IrisGridUtils.getPrevVisibleColumns(\n columns,\n left - 1,\n bufferWidth,\n movedColumns,\n hiddenColumns\n );\n const columnsRight = IrisGridUtils.getNextVisibleColumns(\n columns,\n right + 1,\n bufferWidth,\n movedColumns,\n hiddenColumns\n );\n\n const bufferedColumns = [...columnsLeft, ...columnsCenter, ...columnsRight];\n\n return IrisGridUtils.getColumnsToFetch(\n columns,\n bufferedColumns,\n alwaysFetchColumnNames\n );\n }\n\n /**\n * Get the dh.RangeSet representation of the provided ranges.\n * Ranges are sorted prior to creating the RangeSet. Only the rows are taken into account,\n * RangeSet does not have an option for columns.\n * @param {GridRange[]} ranges The ranges to get the range set for\n * @returns {dh.RangeSet} The rangeset for the provided ranges\n */\n static rangeSetFromRanges(ranges) {\n const rangeSets = ranges\n .slice()\n .sort((a, b) => a.startRow - b.startRow)\n .map(range => {\n const { startRow, endRow } = range;\n return dh.RangeSet.ofRange(startRow, endRow);\n });\n return dh.RangeSet.ofRanges(rangeSets);\n }\n\n /**\n * Validate whether the ranges passed in are valid to take a snapshot from.\n * Multiple selections are valid if all of the selected rows have the same columns selected.\n *\n * @param {GridRange[]} ranges The ranges to validate\n * @returns {boolean} True if the ranges are valid, false otherwise\n */\n static isValidSnapshotRanges(ranges) {\n if (!ranges || ranges.length === 0) {\n return false;\n }\n\n // To verify all the rows selected have the same set of columns selected, build a map with string representations\n // of each range.\n const rangeMap = new Map();\n for (let i = 0; i < ranges.length; i += 1) {\n const range = ranges[i];\n const rowMapIndex = `${range.startRow}:${range.endRow}`;\n const columnMapIndex = `${range.startColumn}:${range.endColumn}`;\n if (!rangeMap.has(rowMapIndex)) {\n rangeMap.set(rowMapIndex, []);\n }\n rangeMap.get(rowMapIndex).push(columnMapIndex);\n }\n\n const keys = [...rangeMap.keys()];\n const matchColumnRanges = rangeMap.get(keys[0]).sort().join(',');\n for (let i = 1; i < keys.length; i += 1) {\n if (rangeMap.get(keys[i]).sort().join(',') !== matchColumnRanges) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Check if the provided value is a valid table index\n * @param {any} value A value to check if it's a valid table index\n */\n static isValidIndex(value) {\n return Number.isInteger(value) && value >= 0;\n }\n\n /**\n * Returns all columns used in any of the ranges provided\n * @param {GridRange[]} ranges The model ranges to get columns for\n * @param {dh.Column[]} allColumns All the columns to pull from\n * @returns {dh.Column[]} The columns selected in the range\n */\n static columnsFromRanges(ranges, allColumns) {\n if (!ranges || ranges.length === 0) {\n return [];\n }\n if (ranges[0].startColumn === null && ranges[0].endColumn === null) {\n // Snapshot of all the columns\n return allColumns;\n }\n\n const columnSet = new Set();\n for (let i = 0; i < ranges.length; i += 1) {\n const range = ranges[i];\n for (\n let c = range.startColumn ?? 0;\n c <= (range.endColumn ?? allColumns.length - 1);\n c += 1\n ) {\n columnSet.add(c);\n }\n }\n return [...columnSet].map(c => allColumns[c]);\n }\n\n /**\n * Transforms an iris data snapshot into a simple data matrix\n * @param {dh.TableData} data The Iris formatted table data\n * @returns {unknown[][]} A matrix of the values of the data\n */\n static snapshotDataToMatrix(data) {\n const { columns, rows } = data;\n const result = [];\n for (let r = 0; r < rows.length; r += 1) {\n const row = rows[r];\n const rowData = [];\n for (let c = 0; c < columns.length; c += 1) {\n const column = columns[c];\n const value = row.get(column);\n rowData.push(value);\n }\n result.push(rowData);\n }\n return result;\n }\n\n /**\n * Hydrate model rollup config\n * @param {Array} originalColumns Original model columns\n * @param {Object} config Dehydrated rollup config\n * @param {Object} aggregationSettings Aggregation settings\n * @returns {Object} Rollup config for the model\n */\n static getModelRollupConfig(originalColumns, config, aggregationSettings) {\n if ((config?.columns?.length ?? 0) === 0) {\n return null;\n }\n\n const {\n columns: groupingColumns = [],\n showConstituents: includeConstituents = true,\n showNonAggregatedColumns = true,\n includeDescriptions = true,\n } = config ?? {};\n const { aggregations = [] } = aggregationSettings ?? {};\n const aggregationColumns = aggregations.map(\n ({ operation, selected, invert }) =>\n AggregationUtils.isRollupOperation(operation)\n ? []\n : AggregationUtils.getOperationColumnNames(\n originalColumns,\n operation,\n selected,\n invert\n )\n );\n\n const aggregationMap = {};\n // Aggregation columns should show first, add them first\n for (let i = 0; i < aggregations.length; i += 1) {\n aggregationMap[aggregations[i].operation] = aggregationColumns[i];\n }\n\n if (showNonAggregatedColumns) {\n // Filter out any column that already has an aggregation or grouping\n const nonAggregatedColumnSet = new Set(\n originalColumns\n .map(c => c.name)\n .filter(name => !groupingColumns.includes(name))\n );\n aggregationColumns.forEach(columns => {\n columns.forEach(name => nonAggregatedColumnSet.delete(name));\n });\n\n if (nonAggregatedColumnSet.size > 0) {\n const existingColumns =\n aggregationMap[AggregationOperation.FIRST] ?? [];\n aggregationMap[AggregationOperation.FIRST] = [\n ...existingColumns,\n ...nonAggregatedColumnSet,\n ];\n }\n }\n\n return {\n groupingColumns,\n includeConstituents,\n includeDescriptions,\n aggregations: aggregationMap,\n };\n }\n\n /**\n * @param {Map} pendingDataMap Map of pending data\n * @returns {Map} A map with the errors in the pending data\n */\n static getPendingErrors(pendingDataMap) {\n pendingDataMap.forEach((row, rowIndex) => {\n if (!IrisGridUtils.isValidIndex(rowIndex)) {\n throw new Error('Invalid rowIndex', rowIndex);\n }\n\n const { data } = row;\n data.forEach((value, columnIndex) => {\n if (!IrisGridUtils.isValidIndex(columnIndex)) {\n throw new Error('Invalid columnIndex', columnIndex);\n }\n });\n });\n }\n\n /**\n * Retrieves a column from the provided array at the index, or `null` and logs an error if it's invalid\n *\n * @param {dh.Columns[]} columns The columns to get the column from\n * @param {Number} columnIndex The column index to get\n */\n static getColumn(columns, columnIndex) {\n if (columnIndex < columns.length) {\n return columns[columnIndex];\n }\n\n log.error('Unable to retrieve column', columnIndex, '>=', columns.length);\n\n return null;\n }\n\n /**\n * Retrieves a column from the provided array matching the name, or `null` and logs an error if not found\n * @param {dh.Column[]} columns The columns to get the column from\n * @param {String} columnName The column name to retrieve\n */\n static getColumnByName(columns, columnName) {\n const column = columns.find(({ name }) => name === columnName);\n if (column == null) {\n log.error(\n 'Unable to retrieve column by name',\n columnName,\n columns.map(({ name }) => name)\n );\n }\n\n return column;\n }\n}\n\nexport default IrisGridUtils;\n"],"file":"IrisGridUtils.js"}
|
|
@@ -7,7 +7,7 @@ import IrisGridBottomBar from "./IrisGridBottomBar.js";
|
|
|
7
7
|
import "./PendingDataBottomBar.css";
|
|
8
8
|
var HIDE_TIMEOUT = 3000;
|
|
9
9
|
var MAX_NUMBER_ROWS_SHOWN = 5;
|
|
10
|
-
export var PendingDataBottomBar =
|
|
10
|
+
export var PendingDataBottomBar = _ref => {
|
|
11
11
|
var {
|
|
12
12
|
isSaving = false,
|
|
13
13
|
onSave,
|