@deephaven/iris-grid 0.6.3-beta.0 → 0.6.3-beta.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/IrisGrid.d.ts.map +1 -1
  2. package/dist/IrisGrid.js +67 -18
  3. package/dist/IrisGrid.js.map +1 -1
  4. package/dist/IrisGridBottomBar.js +1 -1
  5. package/dist/IrisGridModelUpdater.js +1 -1
  6. package/dist/IrisGridModelUpdater.js.map +1 -1
  7. package/dist/IrisGridRenderer.js +4 -1
  8. package/dist/IrisGridRenderer.js.map +1 -1
  9. package/dist/IrisGridTableModel.d.ts.map +1 -1
  10. package/dist/IrisGridTableModel.js +2 -1
  11. package/dist/IrisGridTableModel.js.map +1 -1
  12. package/dist/IrisGridTreeTableModel.js +1 -1
  13. package/dist/IrisGridUtils.js +32 -32
  14. package/dist/IrisGridUtils.js.map +1 -1
  15. package/dist/PendingDataBottomBar.js +1 -1
  16. package/dist/PendingDataBottomBar.js.map +1 -1
  17. package/dist/TableUtils.js +1 -1
  18. package/dist/ToastBottomBar.js +1 -1
  19. package/dist/ToastBottomBar.js.map +1 -1
  20. package/dist/memoizeClear.js +1 -1
  21. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.d.ts.map +1 -1
  22. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +4 -12
  23. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
  24. package/dist/mousehandlers/IrisGridContextMenuHandler.js +1 -1
  25. package/dist/sidebar/AdvancedSettingsMenu.js +2 -2
  26. package/dist/sidebar/CustomColumnBuilder.js +2 -2
  27. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  28. package/dist/sidebar/InputEditor.js +1 -1
  29. package/dist/sidebar/RollupRows.js +10 -10
  30. package/dist/sidebar/RollupRows.js.map +1 -1
  31. package/dist/sidebar/SelectDistinctBuilder.js +5 -5
  32. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  33. package/dist/sidebar/VisibilityOrderingBuilder.js +10 -10
  34. package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
  35. package/dist/sidebar/aggregations/AggregationEdit.js +3 -3
  36. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
  37. package/dist/sidebar/aggregations/AggregationUtils.js +1 -1
  38. package/dist/sidebar/aggregations/Aggregations.js +4 -4
  39. package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
  40. package/dist/tsconfig.tsbuildinfo +1 -1
  41. package/package.json +13 -12
@@ -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((_ref) => {
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((_ref2) => {
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((_ref3) => {
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((_ref4) => {
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((_ref5) => {
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((_ref6) => {
156
+ userColumnWidths: [...userColumnWidths].filter(_ref6 => {
157
157
  var [columnIndex] = _ref6;
158
158
  return columnIndex != null && columnIndex >= 0 && columnIndex < columns.length;
159
- }).map((_ref7) => {
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((_ref8) => {
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((_ref9) => {
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((_ref10) => {
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((_ref11) => {
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((_ref12) => {
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((_ref13) => {
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((_ref14) => {
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((_ref15) => {
415
+ return [...pendingDataMap].map(_ref15 => {
416
416
  var [rowIndex, {
417
417
  data
418
418
  }] = _ref15;
419
419
  return [rowIndex, {
420
- data: [...data].map((_ref16) => {
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((_ref17) => {
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((_ref18) => {
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((_ref19) => {
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((_ref20) => {
642
+ return inputFilters.filter(_ref20 => {
643
643
  var {
644
644
  name,
645
645
  type
646
646
  } = _ref20;
647
- return columns.find((_ref21) => {
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((_ref22) => {
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((_ref23) => {
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((_ref24) => {
710
+ return [...userColumnWidths.entries()].filter(_ref24 => {
711
711
  var [, value] = _ref24;
712
712
  return value === 0;
713
- }).map((_ref25) => {
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((_ref26) => {
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((_ref27) => {
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((_ref28) => {
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((_ref29) => {
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((_ref30) => {
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((_ref31) => {
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 = (_ref) => {
10
+ export var PendingDataBottomBar = _ref => {
11
11
  var {
12
12
  isSaving = false,
13
13
  onSave,