@deephaven/iris-grid 1.7.1 → 1.7.2-beta.3

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 (206) hide show
  1. package/dist/AdvancedFilterCreator.js +5 -7
  2. package/dist/AdvancedFilterCreator.js.map +1 -1
  3. package/dist/AdvancedFilterCreatorFilterItem.js +6 -7
  4. package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
  5. package/dist/AdvancedFilterCreatorSelectValue.js +1 -2
  6. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
  7. package/dist/AdvancedFilterCreatorSelectValueList.js +2 -3
  8. package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
  9. package/dist/ColumnHeaderGroup.js.map +1 -1
  10. package/dist/ColumnStatistics.d.ts +2 -2
  11. package/dist/ColumnStatistics.d.ts.map +1 -1
  12. package/dist/ColumnStatistics.js +2 -5
  13. package/dist/ColumnStatistics.js.map +1 -1
  14. package/dist/CommonTypes.js.map +1 -1
  15. package/dist/CrossColumnSearch.js +2 -4
  16. package/dist/CrossColumnSearch.js.map +1 -1
  17. package/dist/EmptyIrisGridModel.js.map +1 -1
  18. package/dist/FilterInputField.js +4 -5
  19. package/dist/FilterInputField.js.map +1 -1
  20. package/dist/GotoRow.js +4 -6
  21. package/dist/GotoRow.js.map +1 -1
  22. package/dist/IrisGrid.d.ts +39 -49
  23. package/dist/IrisGrid.d.ts.map +1 -1
  24. package/dist/IrisGrid.js +158 -175
  25. package/dist/IrisGrid.js.map +1 -1
  26. package/dist/IrisGridBottomBar.js.map +1 -1
  27. package/dist/IrisGridCacheUtils.js.map +1 -1
  28. package/dist/IrisGridCellOverflowModal.js +1 -2
  29. package/dist/IrisGridCellOverflowModal.js.map +1 -1
  30. package/dist/IrisGridCellRendererUtils.js.map +1 -1
  31. package/dist/IrisGridCopyHandler.js +4 -6
  32. package/dist/IrisGridCopyHandler.js.map +1 -1
  33. package/dist/IrisGridDataBarCellRenderer.js.map +1 -1
  34. package/dist/IrisGridIcons.js.map +1 -1
  35. package/dist/IrisGridMetricCalculator.d.ts +1 -2
  36. package/dist/IrisGridMetricCalculator.d.ts.map +1 -1
  37. package/dist/IrisGridMetricCalculator.js +3 -2
  38. package/dist/IrisGridMetricCalculator.js.map +1 -1
  39. package/dist/IrisGridModel.js.map +1 -1
  40. package/dist/IrisGridModelFactory.js.map +1 -1
  41. package/dist/IrisGridModelUpdater.js.map +1 -1
  42. package/dist/IrisGridPartitionSelector.d.ts.map +1 -1
  43. package/dist/IrisGridPartitionSelector.js +6 -8
  44. package/dist/IrisGridPartitionSelector.js.map +1 -1
  45. package/dist/IrisGridPartitionedTableModel.js.map +1 -1
  46. package/dist/IrisGridProxyModel.js +6 -7
  47. package/dist/IrisGridProxyModel.js.map +1 -1
  48. package/dist/IrisGridRenderer.js +0 -1
  49. package/dist/IrisGridRenderer.js.map +1 -1
  50. package/dist/IrisGridShortcuts.js.map +1 -1
  51. package/dist/IrisGridTableModel.js +1 -2
  52. package/dist/IrisGridTableModel.js.map +1 -1
  53. package/dist/IrisGridTableModelTemplate.d.ts +1 -1
  54. package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
  55. package/dist/IrisGridTableModelTemplate.js +57 -61
  56. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  57. package/dist/IrisGridTestUtils.js.map +1 -1
  58. package/dist/IrisGridTextCellRenderer.js.map +1 -1
  59. package/dist/IrisGridTheme.js.map +1 -1
  60. package/dist/IrisGridThemeProvider.js.map +1 -1
  61. package/dist/IrisGridTreeTableModel.js +12 -13
  62. package/dist/IrisGridTreeTableModel.js.map +1 -1
  63. package/dist/IrisGridUtils.js +56 -56
  64. package/dist/IrisGridUtils.js.map +1 -1
  65. package/dist/LazyIrisGrid.d.ts +55 -78
  66. package/dist/LazyIrisGrid.d.ts.map +1 -1
  67. package/dist/LazyIrisGrid.js.map +1 -1
  68. package/dist/MissingKeyError.js.map +1 -1
  69. package/dist/MissingPartitionError.js.map +1 -1
  70. package/dist/NoPastePermissionModal.js +1 -2
  71. package/dist/NoPastePermissionModal.js.map +1 -1
  72. package/dist/PartitionedGridModel.js.map +1 -1
  73. package/dist/PendingDataBottomBar.js +1 -2
  74. package/dist/PendingDataBottomBar.js.map +1 -1
  75. package/dist/ToastBottomBar.js.map +1 -1
  76. package/dist/declaration.d.js.map +1 -1
  77. package/dist/format-context-menus/CustomFormatAction.js +1 -2
  78. package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
  79. package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
  80. package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
  81. package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
  82. package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
  83. package/dist/format-context-menus/TextAlignmentFormatContextMenu.js +6 -4
  84. package/dist/format-context-menus/TextAlignmentFormatContextMenu.js.map +1 -1
  85. package/dist/format-context-menus/index.js.map +1 -1
  86. package/dist/index.js.map +1 -1
  87. package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -1
  88. package/dist/key-handlers/CopyCellKeyHandler.js.map +1 -1
  89. package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
  90. package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
  91. package/dist/key-handlers/index.js.map +1 -1
  92. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
  93. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
  94. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.d.ts.map +1 -1
  95. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +5 -2
  96. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
  97. package/dist/mousehandlers/IrisGridContextMenuHandler.js +1 -2
  98. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  99. package/dist/mousehandlers/IrisGridCopyCellMouseHandler.js.map +1 -1
  100. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
  101. package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
  102. package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.js.map +1 -1
  103. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js.map +1 -1
  104. package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
  105. package/dist/mousehandlers/IrisGridTokenMouseHandler.js +1 -3
  106. package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +1 -1
  107. package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
  108. package/dist/mousehandlers/index.js.map +1 -1
  109. package/dist/sidebar/AdvancedSettings.js.map +1 -1
  110. package/dist/sidebar/AdvancedSettingsMenu.d.ts +1 -1
  111. package/dist/sidebar/AdvancedSettingsMenu.d.ts.map +1 -1
  112. package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
  113. package/dist/sidebar/AdvancedSettingsType.js +3 -3
  114. package/dist/sidebar/AdvancedSettingsType.js.map +1 -1
  115. package/dist/sidebar/ChartBuilder.d.ts +2 -2
  116. package/dist/sidebar/ChartBuilder.d.ts.map +1 -1
  117. package/dist/sidebar/ChartBuilder.js +1 -2
  118. package/dist/sidebar/ChartBuilder.js.map +1 -1
  119. package/dist/sidebar/CustomColumnBuilder.js +3 -5
  120. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  121. package/dist/sidebar/CustomColumnInput.js +1 -2
  122. package/dist/sidebar/CustomColumnInput.js.map +1 -1
  123. package/dist/sidebar/DownloadServiceWorkerUtils.js +1 -1
  124. package/dist/sidebar/DownloadServiceWorkerUtils.js.map +1 -1
  125. package/dist/sidebar/InputEditor.js +8 -9
  126. package/dist/sidebar/InputEditor.js.map +1 -1
  127. package/dist/sidebar/OptionType.js +3 -3
  128. package/dist/sidebar/OptionType.js.map +1 -1
  129. package/dist/sidebar/RollupRows.js +7 -9
  130. package/dist/sidebar/RollupRows.js.map +1 -1
  131. package/dist/sidebar/SelectDistinctBuilder.js +1 -2
  132. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  133. package/dist/sidebar/TableCsvExporter.js +5 -7
  134. package/dist/sidebar/TableCsvExporter.js.map +1 -1
  135. package/dist/sidebar/TableSaver.js +9 -10
  136. package/dist/sidebar/TableSaver.js.map +1 -1
  137. package/dist/sidebar/aggregations/AggregationEdit.js +4 -5
  138. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
  139. package/dist/sidebar/aggregations/AggregationOperation.js +3 -3
  140. package/dist/sidebar/aggregations/AggregationOperation.js.map +1 -1
  141. package/dist/sidebar/aggregations/AggregationUtils.js +0 -1
  142. package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
  143. package/dist/sidebar/aggregations/Aggregations.d.ts.map +1 -1
  144. package/dist/sidebar/aggregations/Aggregations.js +2 -4
  145. package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
  146. package/dist/sidebar/aggregations/index.js.map +1 -1
  147. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts.map +1 -1
  148. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +1 -3
  149. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
  150. package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -1
  151. package/dist/sidebar/conditional-formatting/ConditionEditor.js +2 -3
  152. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
  153. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +1 -2
  154. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
  155. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
  156. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +1 -2
  157. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
  158. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +21 -21
  159. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
  160. package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts.map +1 -1
  161. package/dist/sidebar/conditional-formatting/RowFormatEditor.js +1 -3
  162. package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
  163. package/dist/sidebar/conditional-formatting/StyleEditor.d.ts.map +1 -1
  164. package/dist/sidebar/conditional-formatting/StyleEditor.js +2 -3
  165. package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
  166. package/dist/sidebar/icons/BarIcon.js +1 -2
  167. package/dist/sidebar/icons/BarIcon.js.map +1 -1
  168. package/dist/sidebar/icons/FormatColumnWhereIcon.js +1 -2
  169. package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -1
  170. package/dist/sidebar/icons/FormatRowWhereIcon.js +1 -2
  171. package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -1
  172. package/dist/sidebar/icons/HistogramIcon.js +1 -2
  173. package/dist/sidebar/icons/HistogramIcon.js.map +1 -1
  174. package/dist/sidebar/icons/LineIcon.js +1 -2
  175. package/dist/sidebar/icons/LineIcon.js.map +1 -1
  176. package/dist/sidebar/icons/PieIcon.js +1 -2
  177. package/dist/sidebar/icons/PieIcon.js.map +1 -1
  178. package/dist/sidebar/icons/ScatterIcon.js +1 -2
  179. package/dist/sidebar/icons/ScatterIcon.js.map +1 -1
  180. package/dist/sidebar/icons/index.js.map +1 -1
  181. package/dist/sidebar/index.js.map +1 -1
  182. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts +2 -2
  183. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts.map +1 -1
  184. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +34 -36
  185. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
  186. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +3 -3
  187. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -1
  188. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js +3 -5
  189. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -1
  190. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.d.ts.map +1 -1
  191. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +2 -4
  192. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
  193. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map +1 -1
  194. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js +4 -4
  195. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -1
  196. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js +3 -6
  197. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js.map +1 -1
  198. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -1
  199. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js +1 -2
  200. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -1
  201. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +1 -1
  202. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js.map +1 -1
  203. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts +1 -2
  204. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts.map +1 -1
  205. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
  206. package/package.json +17 -18
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridModelUpdater.js","names":["useEffect","useMemo","EMPTY_ARRAY","EMPTY_MAP","useOnChange","IrisGridUtils","isPartitionedGridModel","isIrisGridTreeTableModel","COLUMN_BUFFER_PAGES","IrisGridModelUpdater","_ref","model","top","bottom","left","right","filter","formatter","columnAlignmentMap","reverse","sorts","customColumns","movedColumns","hiddenColumns","alwaysFetchColumns","rollupConfig","totalsConfig","selectDistinctColumns","pendingRowCount","pendingDataMap","frozenColumns","formatColumns","columnHeaderGroups","partitionConfig","showExtraGroupColumn","isTotalsAvailable","isRollupAvailable","columns","getModelViewportColumns","updateFilter","updateSorts","sortsForModel","push","dh","Table","sort","updateFormatter","updateColumnAlignmentMap","updateCustomColumns","isCustomColumnsAvailable","updateFormatColumns","isFormatColumnsAvailable","updateViewport","setViewport","updateRollupCOnfig","updateSelectDistinctColumns","isSelectDistinctAvailable","updateTotalsConfig","updateColumnHeaderGroups","updatePartitionConfig","updateFrozenColumns","updatePendingRowCount","updatePendingDataMap","displayName"],"sources":["../src/IrisGridModelUpdater.tsx"],"sourcesContent":["/* eslint-disable react/require-default-props */\n/* eslint-disable no-param-reassign */\nimport { useEffect, useMemo } from 'react';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { type ModelIndex, type MoveOperation } from '@deephaven/grid';\nimport { type Formatter } from '@deephaven/jsapi-utils';\nimport { EMPTY_ARRAY, EMPTY_MAP } from '@deephaven/utils';\nimport { useOnChange } from '@deephaven/react-hooks';\nimport IrisGridUtils from './IrisGridUtils';\nimport {\n type ColumnName,\n type UITotalsTableConfig,\n type PendingDataMap,\n} from './CommonTypes';\nimport type IrisGridModel from './IrisGridModel';\nimport type ColumnHeaderGroup from './ColumnHeaderGroup';\nimport {\n type PartitionConfig,\n isPartitionedGridModel,\n} from './PartitionedGridModel';\nimport { isIrisGridTreeTableModel } from './IrisGridTreeTableModel';\n\nconst COLUMN_BUFFER_PAGES = 1;\n\ninterface IrisGridModelUpdaterProps {\n model: IrisGridModel;\n top: number;\n bottom: number;\n left: number | null;\n right: number | null;\n filter: readonly dh.FilterCondition[];\n sorts: readonly dh.Sort[];\n reverse?: boolean;\n customColumns: readonly ColumnName[];\n movedColumns: readonly MoveOperation[];\n hiddenColumns: readonly ModelIndex[];\n frozenColumns?: readonly ColumnName[];\n columnHeaderGroups: readonly ColumnHeaderGroup[];\n formatColumns: readonly dh.CustomColumn[];\n alwaysFetchColumns: readonly ColumnName[];\n formatter: Formatter;\n columnAlignmentMap: Map<string, CanvasTextAlign>;\n rollupConfig?: dh.RollupConfig | null;\n totalsConfig?: UITotalsTableConfig | null;\n selectDistinctColumns?: readonly ColumnName[];\n pendingRowCount?: number;\n pendingDataMap?: PendingDataMap;\n partitionConfig?: PartitionConfig;\n showExtraGroupColumn?: boolean;\n}\n\n/**\n * React component to keep IrisGridModel in sync\n */\nfunction IrisGridModelUpdater({\n model,\n top,\n bottom,\n left,\n right,\n filter,\n formatter,\n columnAlignmentMap,\n reverse = false,\n sorts,\n customColumns,\n movedColumns,\n hiddenColumns,\n alwaysFetchColumns,\n rollupConfig = null,\n totalsConfig = null,\n selectDistinctColumns = EMPTY_ARRAY,\n pendingRowCount = 0,\n pendingDataMap = EMPTY_MAP,\n frozenColumns,\n formatColumns,\n columnHeaderGroups,\n partitionConfig,\n showExtraGroupColumn,\n}: IrisGridModelUpdaterProps): JSX.Element | null {\n const { isTotalsAvailable, isRollupAvailable } = model;\n // Check for showExtraGroupColumn before memoizing columns, since updating it will change the columns\n useOnChange(() => {\n if (isIrisGridTreeTableModel(model) && showExtraGroupColumn != null) {\n model.showExtraGroupColumn = showExtraGroupColumn;\n }\n }, [model, showExtraGroupColumn]);\n\n const columns = useMemo(\n () =>\n IrisGridUtils.getModelViewportColumns(\n model.columns,\n left,\n right,\n movedColumns,\n hiddenColumns,\n alwaysFetchColumns,\n COLUMN_BUFFER_PAGES\n ),\n [\n model.columns,\n left,\n right,\n movedColumns,\n hiddenColumns,\n alwaysFetchColumns,\n ]\n );\n useOnChange(\n function updateFilter() {\n model.filter = filter;\n },\n [model, filter]\n );\n useOnChange(\n function updateSorts() {\n const sortsForModel = [...sorts];\n if (reverse) {\n sortsForModel.push(model.dh.Table.reverse());\n }\n model.sort = sortsForModel;\n },\n [model, sorts, reverse]\n );\n useOnChange(\n function updateFormatter() {\n model.formatter = formatter;\n },\n [model, formatter]\n );\n useOnChange(\n function updateColumnAlignmentMap() {\n model.columnAlignmentMap = columnAlignmentMap;\n },\n [model, columnAlignmentMap]\n );\n useOnChange(\n function updateCustomColumns() {\n if (model.isCustomColumnsAvailable) {\n model.customColumns = customColumns;\n }\n },\n [model, customColumns]\n );\n useOnChange(\n function updateFormatColumns() {\n if (model.isFormatColumnsAvailable) {\n model.formatColumns = formatColumns;\n }\n },\n [model, formatColumns]\n );\n useOnChange(\n function updateViewport() {\n model.setViewport(top, bottom, columns);\n },\n [model, top, bottom, columns]\n );\n useOnChange(\n function updateRollupCOnfig() {\n if (isRollupAvailable) {\n model.rollupConfig = rollupConfig;\n }\n },\n [model, isRollupAvailable, rollupConfig]\n );\n useOnChange(\n function updateSelectDistinctColumns() {\n if (model.isSelectDistinctAvailable) {\n model.selectDistinctColumns = selectDistinctColumns;\n }\n },\n [model, selectDistinctColumns]\n );\n useOnChange(\n function updateTotalsConfig() {\n if (isTotalsAvailable) {\n model.totalsConfig = totalsConfig;\n }\n },\n [model, isTotalsAvailable, totalsConfig]\n );\n useOnChange(\n function updateColumnHeaderGroups() {\n model.columnHeaderGroups = columnHeaderGroups;\n },\n [model, columnHeaderGroups]\n );\n useOnChange(\n function updatePartitionConfig() {\n if (partitionConfig && isPartitionedGridModel(model)) {\n model.partitionConfig = partitionConfig;\n }\n },\n [model, partitionConfig]\n );\n // These setters are wrapped in useEffect instead of useOnChange because they emit an event\n // that potentially causes side effects, violating the rule that render should be a pure function.\n useEffect(\n function updateFrozenColumns() {\n if (frozenColumns) {\n model.updateFrozenColumns(frozenColumns);\n }\n },\n [model, frozenColumns]\n );\n useEffect(\n function updatePendingRowCount() {\n model.pendingRowCount = pendingRowCount;\n },\n [model, pendingRowCount]\n );\n useEffect(\n function updatePendingDataMap() {\n model.pendingDataMap = pendingDataMap;\n },\n [model, pendingDataMap]\n );\n\n return null;\n}\n\nIrisGridModelUpdater.displayName = 'IrisGridModelUpdater';\n\nexport default IrisGridModelUpdater;\n"],"mappings":"AAAA;AACA;AACA,SAASA,SAAS,EAAEC,OAAO,QAAQ,OAAO;AAI1C,SAASC,WAAW,EAAEC,SAAS,QAAQ,kBAAkB;AACzD,SAASC,WAAW,QAAQ,wBAAwB;AAAC,OAC9CC,aAAa;AAAA,SAUlBC,sBAAsB;AAAA,SAEfC,wBAAwB;AAEjC,IAAMC,mBAAmB,GAAG,CAAC;AA6B7B;AACA;AACA;AACA,SAASC,oBAAoBA,CAAAC,IAAA,EAyBqB;EAAA,IAzBpB;IAC5BC,KAAK;IACLC,GAAG;IACHC,MAAM;IACNC,IAAI;IACJC,KAAK;IACLC,MAAM;IACNC,SAAS;IACTC,kBAAkB;IAClBC,OAAO,GAAG,KAAK;IACfC,KAAK;IACLC,aAAa;IACbC,YAAY;IACZC,aAAa;IACbC,kBAAkB;IAClBC,YAAY,GAAG,IAAI;IACnBC,YAAY,GAAG,IAAI;IACnBC,qBAAqB,GAAGzB,WAAW;IACnC0B,eAAe,GAAG,CAAC;IACnBC,cAAc,GAAG1B,SAAS;IAC1B2B,aAAa;IACbC,aAAa;IACbC,kBAAkB;IAClBC,eAAe;IACfC;EACyB,CAAC,GAAAxB,IAAA;EAC1B,IAAM;IAAEyB,iBAAiB;IAAEC;EAAkB,CAAC,GAAGzB,KAAK;EACtD;EACAP,WAAW,CAAC,MAAM;IAChB,IAAIG,wBAAwB,CAACI,KAAK,CAAC,IAAIuB,oBAAoB,IAAI,IAAI,EAAE;MACnEvB,KAAK,CAACuB,oBAAoB,GAAGA,oBAAoB;IACnD;EACF,CAAC,EAAE,CAACvB,KAAK,EAAEuB,oBAAoB,CAAC,CAAC;EAEjC,IAAMG,OAAO,GAAGpC,OAAO,CACrB,MACEI,aAAa,CAACiC,uBAAuB,CACnC3B,KAAK,CAAC0B,OAAO,EACbvB,IAAI,EACJC,KAAK,EACLO,YAAY,EACZC,aAAa,EACbC,kBAAkB,EAClBhB,mBACF,CAAC,EACH,CACEG,KAAK,CAAC0B,OAAO,EACbvB,IAAI,EACJC,KAAK,EACLO,YAAY,EACZC,aAAa,EACbC,kBAAkB,CAEtB,CAAC;EACDpB,WAAW,CACT,SAASmC,YAAYA,CAAA,EAAG;IACtB5B,KAAK,CAACK,MAAM,GAAGA,MAAM;EACvB,CAAC,EACD,CAACL,KAAK,EAAEK,MAAM,CAChB,CAAC;EACDZ,WAAW,CACT,SAASoC,WAAWA,CAAA,EAAG;IACrB,IAAMC,aAAa,GAAG,CAAC,GAAGrB,KAAK,CAAC;IAChC,IAAID,OAAO,EAAE;MACXsB,aAAa,CAACC,IAAI,CAAC/B,KAAK,CAACgC,EAAE,CAACC,KAAK,CAACzB,OAAO,CAAC,CAAC,CAAC;IAC9C;IACAR,KAAK,CAACkC,IAAI,GAAGJ,aAAa;EAC5B,CAAC,EACD,CAAC9B,KAAK,EAAES,KAAK,EAAED,OAAO,CACxB,CAAC;EACDf,WAAW,CACT,SAAS0C,eAAeA,CAAA,EAAG;IACzBnC,KAAK,CAACM,SAAS,GAAGA,SAAS;EAC7B,CAAC,EACD,CAACN,KAAK,EAAEM,SAAS,CACnB,CAAC;EACDb,WAAW,CACT,SAAS2C,wBAAwBA,CAAA,EAAG;IAClCpC,KAAK,CAACO,kBAAkB,GAAGA,kBAAkB;EAC/C,CAAC,EACD,CAACP,KAAK,EAAEO,kBAAkB,CAC5B,CAAC;EACDd,WAAW,CACT,SAAS4C,mBAAmBA,CAAA,EAAG;IAC7B,IAAIrC,KAAK,CAACsC,wBAAwB,EAAE;MAClCtC,KAAK,CAACU,aAAa,GAAGA,aAAa;IACrC;EACF,CAAC,EACD,CAACV,KAAK,EAAEU,aAAa,CACvB,CAAC;EACDjB,WAAW,CACT,SAAS8C,mBAAmBA,CAAA,EAAG;IAC7B,IAAIvC,KAAK,CAACwC,wBAAwB,EAAE;MAClCxC,KAAK,CAACoB,aAAa,GAAGA,aAAa;IACrC;EACF,CAAC,EACD,CAACpB,KAAK,EAAEoB,aAAa,CACvB,CAAC;EACD3B,WAAW,CACT,SAASgD,cAAcA,CAAA,EAAG;IACxBzC,KAAK,CAAC0C,WAAW,CAACzC,GAAG,EAAEC,MAAM,EAAEwB,OAAO,CAAC;EACzC,CAAC,EACD,CAAC1B,KAAK,EAAEC,GAAG,EAAEC,MAAM,EAAEwB,OAAO,CAC9B,CAAC;EACDjC,WAAW,CACT,SAASkD,kBAAkBA,CAAA,EAAG;IAC5B,IAAIlB,iBAAiB,EAAE;MACrBzB,KAAK,CAACc,YAAY,GAAGA,YAAY;IACnC;EACF,CAAC,EACD,CAACd,KAAK,EAAEyB,iBAAiB,EAAEX,YAAY,CACzC,CAAC;EACDrB,WAAW,CACT,SAASmD,2BAA2BA,CAAA,EAAG;IACrC,IAAI5C,KAAK,CAAC6C,yBAAyB,EAAE;MACnC7C,KAAK,CAACgB,qBAAqB,GAAGA,qBAAqB;IACrD;EACF,CAAC,EACD,CAAChB,KAAK,EAAEgB,qBAAqB,CAC/B,CAAC;EACDvB,WAAW,CACT,SAASqD,kBAAkBA,CAAA,EAAG;IAC5B,IAAItB,iBAAiB,EAAE;MACrBxB,KAAK,CAACe,YAAY,GAAGA,YAAY;IACnC;EACF,CAAC,EACD,CAACf,KAAK,EAAEwB,iBAAiB,EAAET,YAAY,CACzC,CAAC;EACDtB,WAAW,CACT,SAASsD,wBAAwBA,CAAA,EAAG;IAClC/C,KAAK,CAACqB,kBAAkB,GAAGA,kBAAkB;EAC/C,CAAC,EACD,CAACrB,KAAK,EAAEqB,kBAAkB,CAC5B,CAAC;EACD5B,WAAW,CACT,SAASuD,qBAAqBA,CAAA,EAAG;IAC/B,IAAI1B,eAAe,IAAI3B,sBAAsB,CAACK,KAAK,CAAC,EAAE;MACpDA,KAAK,CAACsB,eAAe,GAAGA,eAAe;IACzC;EACF,CAAC,EACD,CAACtB,KAAK,EAAEsB,eAAe,CACzB,CAAC;EACD;EACA;EACAjC,SAAS,CACP,SAAS4D,mBAAmBA,CAAA,EAAG;IAC7B,IAAI9B,aAAa,EAAE;MACjBnB,KAAK,CAACiD,mBAAmB,CAAC9B,aAAa,CAAC;IAC1C;EACF,CAAC,EACD,CAACnB,KAAK,EAAEmB,aAAa,CACvB,CAAC;EACD9B,SAAS,CACP,SAAS6D,qBAAqBA,CAAA,EAAG;IAC/BlD,KAAK,CAACiB,eAAe,GAAGA,eAAe;EACzC,CAAC,EACD,CAACjB,KAAK,EAAEiB,eAAe,CACzB,CAAC;EACD5B,SAAS,CACP,SAAS8D,oBAAoBA,CAAA,EAAG;IAC9BnD,KAAK,CAACkB,cAAc,GAAGA,cAAc;EACvC,CAAC,EACD,CAAClB,KAAK,EAAEkB,cAAc,CACxB,CAAC;EAED,OAAO,IAAI;AACb;AAEApB,oBAAoB,CAACsD,WAAW,GAAG,sBAAsB;AAEzD,eAAetD,oBAAoB"}
1
+ {"version":3,"file":"IrisGridModelUpdater.js","names":["useEffect","useMemo","EMPTY_ARRAY","EMPTY_MAP","useOnChange","IrisGridUtils","isPartitionedGridModel","isIrisGridTreeTableModel","COLUMN_BUFFER_PAGES","IrisGridModelUpdater","_ref","model","top","bottom","left","right","filter","formatter","columnAlignmentMap","reverse","sorts","customColumns","movedColumns","hiddenColumns","alwaysFetchColumns","rollupConfig","totalsConfig","selectDistinctColumns","pendingRowCount","pendingDataMap","frozenColumns","formatColumns","columnHeaderGroups","partitionConfig","showExtraGroupColumn","isTotalsAvailable","isRollupAvailable","columns","getModelViewportColumns","updateFilter","updateSorts","sortsForModel","push","dh","Table","sort","updateFormatter","updateColumnAlignmentMap","updateCustomColumns","isCustomColumnsAvailable","updateFormatColumns","isFormatColumnsAvailable","updateViewport","setViewport","updateRollupCOnfig","updateSelectDistinctColumns","isSelectDistinctAvailable","updateTotalsConfig","updateColumnHeaderGroups","updatePartitionConfig","updateFrozenColumns","updatePendingRowCount","updatePendingDataMap","displayName"],"sources":["../src/IrisGridModelUpdater.tsx"],"sourcesContent":["/* eslint-disable react/require-default-props */\n/* eslint-disable no-param-reassign */\nimport { useEffect, useMemo } from 'react';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { type ModelIndex, type MoveOperation } from '@deephaven/grid';\nimport { type Formatter } from '@deephaven/jsapi-utils';\nimport { EMPTY_ARRAY, EMPTY_MAP } from '@deephaven/utils';\nimport { useOnChange } from '@deephaven/react-hooks';\nimport IrisGridUtils from './IrisGridUtils';\nimport {\n type ColumnName,\n type UITotalsTableConfig,\n type PendingDataMap,\n} from './CommonTypes';\nimport type IrisGridModel from './IrisGridModel';\nimport type ColumnHeaderGroup from './ColumnHeaderGroup';\nimport {\n type PartitionConfig,\n isPartitionedGridModel,\n} from './PartitionedGridModel';\nimport { isIrisGridTreeTableModel } from './IrisGridTreeTableModel';\n\nconst COLUMN_BUFFER_PAGES = 1;\n\ninterface IrisGridModelUpdaterProps {\n model: IrisGridModel;\n top: number;\n bottom: number;\n left: number | null;\n right: number | null;\n filter: readonly dh.FilterCondition[];\n sorts: readonly dh.Sort[];\n reverse?: boolean;\n customColumns: readonly ColumnName[];\n movedColumns: readonly MoveOperation[];\n hiddenColumns: readonly ModelIndex[];\n frozenColumns?: readonly ColumnName[];\n columnHeaderGroups: readonly ColumnHeaderGroup[];\n formatColumns: readonly dh.CustomColumn[];\n alwaysFetchColumns: readonly ColumnName[];\n formatter: Formatter;\n columnAlignmentMap: Map<string, CanvasTextAlign>;\n rollupConfig?: dh.RollupConfig | null;\n totalsConfig?: UITotalsTableConfig | null;\n selectDistinctColumns?: readonly ColumnName[];\n pendingRowCount?: number;\n pendingDataMap?: PendingDataMap;\n partitionConfig?: PartitionConfig;\n showExtraGroupColumn?: boolean;\n}\n\n/**\n * React component to keep IrisGridModel in sync\n */\nfunction IrisGridModelUpdater({\n model,\n top,\n bottom,\n left,\n right,\n filter,\n formatter,\n columnAlignmentMap,\n reverse = false,\n sorts,\n customColumns,\n movedColumns,\n hiddenColumns,\n alwaysFetchColumns,\n rollupConfig = null,\n totalsConfig = null,\n selectDistinctColumns = EMPTY_ARRAY,\n pendingRowCount = 0,\n pendingDataMap = EMPTY_MAP,\n frozenColumns,\n formatColumns,\n columnHeaderGroups,\n partitionConfig,\n showExtraGroupColumn,\n}: IrisGridModelUpdaterProps): JSX.Element | null {\n const { isTotalsAvailable, isRollupAvailable } = model;\n // Check for showExtraGroupColumn before memoizing columns, since updating it will change the columns\n useOnChange(() => {\n if (isIrisGridTreeTableModel(model) && showExtraGroupColumn != null) {\n model.showExtraGroupColumn = showExtraGroupColumn;\n }\n }, [model, showExtraGroupColumn]);\n\n const columns = useMemo(\n () =>\n IrisGridUtils.getModelViewportColumns(\n model.columns,\n left,\n right,\n movedColumns,\n hiddenColumns,\n alwaysFetchColumns,\n COLUMN_BUFFER_PAGES\n ),\n [\n model.columns,\n left,\n right,\n movedColumns,\n hiddenColumns,\n alwaysFetchColumns,\n ]\n );\n useOnChange(\n function updateFilter() {\n model.filter = filter;\n },\n [model, filter]\n );\n useOnChange(\n function updateSorts() {\n const sortsForModel = [...sorts];\n if (reverse) {\n sortsForModel.push(model.dh.Table.reverse());\n }\n model.sort = sortsForModel;\n },\n [model, sorts, reverse]\n );\n useOnChange(\n function updateFormatter() {\n model.formatter = formatter;\n },\n [model, formatter]\n );\n useOnChange(\n function updateColumnAlignmentMap() {\n model.columnAlignmentMap = columnAlignmentMap;\n },\n [model, columnAlignmentMap]\n );\n useOnChange(\n function updateCustomColumns() {\n if (model.isCustomColumnsAvailable) {\n model.customColumns = customColumns;\n }\n },\n [model, customColumns]\n );\n useOnChange(\n function updateFormatColumns() {\n if (model.isFormatColumnsAvailable) {\n model.formatColumns = formatColumns;\n }\n },\n [model, formatColumns]\n );\n useOnChange(\n function updateViewport() {\n model.setViewport(top, bottom, columns);\n },\n [model, top, bottom, columns]\n );\n useOnChange(\n function updateRollupCOnfig() {\n if (isRollupAvailable) {\n model.rollupConfig = rollupConfig;\n }\n },\n [model, isRollupAvailable, rollupConfig]\n );\n useOnChange(\n function updateSelectDistinctColumns() {\n if (model.isSelectDistinctAvailable) {\n model.selectDistinctColumns = selectDistinctColumns;\n }\n },\n [model, selectDistinctColumns]\n );\n useOnChange(\n function updateTotalsConfig() {\n if (isTotalsAvailable) {\n model.totalsConfig = totalsConfig;\n }\n },\n [model, isTotalsAvailable, totalsConfig]\n );\n useOnChange(\n function updateColumnHeaderGroups() {\n model.columnHeaderGroups = columnHeaderGroups;\n },\n [model, columnHeaderGroups]\n );\n useOnChange(\n function updatePartitionConfig() {\n if (partitionConfig && isPartitionedGridModel(model)) {\n model.partitionConfig = partitionConfig;\n }\n },\n [model, partitionConfig]\n );\n // These setters are wrapped in useEffect instead of useOnChange because they emit an event\n // that potentially causes side effects, violating the rule that render should be a pure function.\n useEffect(\n function updateFrozenColumns() {\n if (frozenColumns) {\n model.updateFrozenColumns(frozenColumns);\n }\n },\n [model, frozenColumns]\n );\n useEffect(\n function updatePendingRowCount() {\n model.pendingRowCount = pendingRowCount;\n },\n [model, pendingRowCount]\n );\n useEffect(\n function updatePendingDataMap() {\n model.pendingDataMap = pendingDataMap;\n },\n [model, pendingDataMap]\n );\n\n return null;\n}\n\nIrisGridModelUpdater.displayName = 'IrisGridModelUpdater';\n\nexport default IrisGridModelUpdater;\n"],"mappings":"AAAA;AACA;AACA,SAASA,SAAS,EAAEC,OAAO,QAAQ,OAAO;AAI1C,SAASC,WAAW,EAAEC,SAAS,QAAQ,kBAAkB;AACzD,SAASC,WAAW,QAAQ,wBAAwB;AAAC,OAC9CC,aAAa;AAAA,SAUlBC,sBAAsB;AAAA,SAEfC,wBAAwB;AAEjC,IAAMC,mBAAmB,GAAG,CAAC;AA6B7B;AACA;AACA;AACA,SAASC,oBAAoBA,CAAAC,IAAA,EAyBqB;EAAA,IAzBpB;IAC5BC,KAAK;IACLC,GAAG;IACHC,MAAM;IACNC,IAAI;IACJC,KAAK;IACLC,MAAM;IACNC,SAAS;IACTC,kBAAkB;IAClBC,OAAO,GAAG,KAAK;IACfC,KAAK;IACLC,aAAa;IACbC,YAAY;IACZC,aAAa;IACbC,kBAAkB;IAClBC,YAAY,GAAG,IAAI;IACnBC,YAAY,GAAG,IAAI;IACnBC,qBAAqB,GAAGzB,WAAW;IACnC0B,eAAe,GAAG,CAAC;IACnBC,cAAc,GAAG1B,SAAS;IAC1B2B,aAAa;IACbC,aAAa;IACbC,kBAAkB;IAClBC,eAAe;IACfC;EACyB,CAAC,GAAAxB,IAAA;EAC1B,IAAM;IAAEyB,iBAAiB;IAAEC;EAAkB,CAAC,GAAGzB,KAAK;EACtD;EACAP,WAAW,CAAC,MAAM;IAChB,IAAIG,wBAAwB,CAACI,KAAK,CAAC,IAAIuB,oBAAoB,IAAI,IAAI,EAAE;MACnEvB,KAAK,CAACuB,oBAAoB,GAAGA,oBAAoB;IACnD;EACF,CAAC,EAAE,CAACvB,KAAK,EAAEuB,oBAAoB,CAAC,CAAC;EAEjC,IAAMG,OAAO,GAAGpC,OAAO,CACrB,MACEI,aAAa,CAACiC,uBAAuB,CACnC3B,KAAK,CAAC0B,OAAO,EACbvB,IAAI,EACJC,KAAK,EACLO,YAAY,EACZC,aAAa,EACbC,kBAAkB,EAClBhB,mBACF,CAAC,EACH,CACEG,KAAK,CAAC0B,OAAO,EACbvB,IAAI,EACJC,KAAK,EACLO,YAAY,EACZC,aAAa,EACbC,kBAAkB,CAEtB,CAAC;EACDpB,WAAW,CACT,SAASmC,YAAYA,CAAA,EAAG;IACtB5B,KAAK,CAACK,MAAM,GAAGA,MAAM;EACvB,CAAC,EACD,CAACL,KAAK,EAAEK,MAAM,CAChB,CAAC;EACDZ,WAAW,CACT,SAASoC,WAAWA,CAAA,EAAG;IACrB,IAAMC,aAAa,GAAG,CAAC,GAAGrB,KAAK,CAAC;IAChC,IAAID,OAAO,EAAE;MACXsB,aAAa,CAACC,IAAI,CAAC/B,KAAK,CAACgC,EAAE,CAACC,KAAK,CAACzB,OAAO,CAAC,CAAC,CAAC;IAC9C;IACAR,KAAK,CAACkC,IAAI,GAAGJ,aAAa;EAC5B,CAAC,EACD,CAAC9B,KAAK,EAAES,KAAK,EAAED,OAAO,CACxB,CAAC;EACDf,WAAW,CACT,SAAS0C,eAAeA,CAAA,EAAG;IACzBnC,KAAK,CAACM,SAAS,GAAGA,SAAS;EAC7B,CAAC,EACD,CAACN,KAAK,EAAEM,SAAS,CACnB,CAAC;EACDb,WAAW,CACT,SAAS2C,wBAAwBA,CAAA,EAAG;IAClCpC,KAAK,CAACO,kBAAkB,GAAGA,kBAAkB;EAC/C,CAAC,EACD,CAACP,KAAK,EAAEO,kBAAkB,CAC5B,CAAC;EACDd,WAAW,CACT,SAAS4C,mBAAmBA,CAAA,EAAG;IAC7B,IAAIrC,KAAK,CAACsC,wBAAwB,EAAE;MAClCtC,KAAK,CAACU,aAAa,GAAGA,aAAa;IACrC;EACF,CAAC,EACD,CAACV,KAAK,EAAEU,aAAa,CACvB,CAAC;EACDjB,WAAW,CACT,SAAS8C,mBAAmBA,CAAA,EAAG;IAC7B,IAAIvC,KAAK,CAACwC,wBAAwB,EAAE;MAClCxC,KAAK,CAACoB,aAAa,GAAGA,aAAa;IACrC;EACF,CAAC,EACD,CAACpB,KAAK,EAAEoB,aAAa,CACvB,CAAC;EACD3B,WAAW,CACT,SAASgD,cAAcA,CAAA,EAAG;IACxBzC,KAAK,CAAC0C,WAAW,CAACzC,GAAG,EAAEC,MAAM,EAAEwB,OAAO,CAAC;EACzC,CAAC,EACD,CAAC1B,KAAK,EAAEC,GAAG,EAAEC,MAAM,EAAEwB,OAAO,CAC9B,CAAC;EACDjC,WAAW,CACT,SAASkD,kBAAkBA,CAAA,EAAG;IAC5B,IAAIlB,iBAAiB,EAAE;MACrBzB,KAAK,CAACc,YAAY,GAAGA,YAAY;IACnC;EACF,CAAC,EACD,CAACd,KAAK,EAAEyB,iBAAiB,EAAEX,YAAY,CACzC,CAAC;EACDrB,WAAW,CACT,SAASmD,2BAA2BA,CAAA,EAAG;IACrC,IAAI5C,KAAK,CAAC6C,yBAAyB,EAAE;MACnC7C,KAAK,CAACgB,qBAAqB,GAAGA,qBAAqB;IACrD;EACF,CAAC,EACD,CAAChB,KAAK,EAAEgB,qBAAqB,CAC/B,CAAC;EACDvB,WAAW,CACT,SAASqD,kBAAkBA,CAAA,EAAG;IAC5B,IAAItB,iBAAiB,EAAE;MACrBxB,KAAK,CAACe,YAAY,GAAGA,YAAY;IACnC;EACF,CAAC,EACD,CAACf,KAAK,EAAEwB,iBAAiB,EAAET,YAAY,CACzC,CAAC;EACDtB,WAAW,CACT,SAASsD,wBAAwBA,CAAA,EAAG;IAClC/C,KAAK,CAACqB,kBAAkB,GAAGA,kBAAkB;EAC/C,CAAC,EACD,CAACrB,KAAK,EAAEqB,kBAAkB,CAC5B,CAAC;EACD5B,WAAW,CACT,SAASuD,qBAAqBA,CAAA,EAAG;IAC/B,IAAI1B,eAAe,IAAI3B,sBAAsB,CAACK,KAAK,CAAC,EAAE;MACpDA,KAAK,CAACsB,eAAe,GAAGA,eAAe;IACzC;EACF,CAAC,EACD,CAACtB,KAAK,EAAEsB,eAAe,CACzB,CAAC;EACD;EACA;EACAjC,SAAS,CACP,SAAS4D,mBAAmBA,CAAA,EAAG;IAC7B,IAAI9B,aAAa,EAAE;MACjBnB,KAAK,CAACiD,mBAAmB,CAAC9B,aAAa,CAAC;IAC1C;EACF,CAAC,EACD,CAACnB,KAAK,EAAEmB,aAAa,CACvB,CAAC;EACD9B,SAAS,CACP,SAAS6D,qBAAqBA,CAAA,EAAG;IAC/BlD,KAAK,CAACiB,eAAe,GAAGA,eAAe;EACzC,CAAC,EACD,CAACjB,KAAK,EAAEiB,eAAe,CACzB,CAAC;EACD5B,SAAS,CACP,SAAS8D,oBAAoBA,CAAA,EAAG;IAC9BnD,KAAK,CAACkB,cAAc,GAAGA,cAAc;EACvC,CAAC,EACD,CAAClB,KAAK,EAAEkB,cAAc,CACxB,CAAC;EAED,OAAO,IAAI;AACb;AAEApB,oBAAoB,CAACsD,WAAW,GAAG,sBAAsB;AAEzD,eAAetD,oBAAoB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridPartitionSelector.d.ts","sourceRoot":"","sources":["../src/IrisGridPartitionSelector.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAMhC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAiB,OAAO,EAAgB,MAAM,kBAAkB,CAAC;AACxE,OAAO,kCAAkC,CAAC;AAC1C,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,oBAAoB,EAC1B,MAAM,wBAAwB,CAAC;AAIhC,UAAU,8BAA8B;IACtC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,QAAQ,EAAE,CAAC,eAAe,EAAE,eAAe,KAAK,IAAI,CAAC;CACtD;AACD,UAAU,8BAA8B;IACtC,SAAS,EAAE,OAAO,CAAC;IAEnB,SAAS,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC;IAE3B,SAAS,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC;IAE3B,eAAe,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC;CACpC;AACD,cAAM,yBAA0B,SAAQ,SAAS,CAC/C,8BAA8B,EAC9B,8BAA8B,CAC/B;gBACa,KAAK,EAAE,8BAA8B;IAqB3C,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IA2BxC,kBAAkB,CAAC,SAAS,EAAE,8BAA8B,GAAG,IAAI;IAUnE,oBAAoB,IAAI,IAAI;IAS5B,OAAO,EAAE,OAAO,CAAC;IAEjB,UAAU,EAAE,UAAU,CAAC;IAEvB,yBAAyB,IAAI,IAAI;IAajC,gBAAgB,IAAI,IAAI;IAYxB;;;;OAIG;IACG,qBAAqB,CACzB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,OAAO,GACrB,OAAO,CAAC,IAAI,CAAC;IAoDhB,UAAU,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAOlD;;;;OAIG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM;IAiBtD;;OAEG;IACG,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB7C,mBAAmB,CAAC,eAAe,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,EAAE;IAmCxE,uBAAuB,WACb,MAAM,aAAa,OAAO,gDAA1B,MAAM,aAAa,OAAO,oBAGlC;IAEF,4BAA4B,WAClB,MAAM,aAAa,OAAO,yCAA1B,MAAM,aAAa,OAAO,aAElC;IAEF,MAAM,IAAI,GAAG,CAAC,OAAO;CA8DtB;AAED,eAAe,yBAAyB,CAAC"}
1
+ {"version":3,"file":"IrisGridPartitionSelector.d.ts","sourceRoot":"","sources":["../src/IrisGridPartitionSelector.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAMhC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAiB,OAAO,EAAgB,MAAM,kBAAkB,CAAC;AACxE,OAAO,kCAAkC,CAAC;AAC1C,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,oBAAoB,EAC1B,MAAM,wBAAwB,CAAC;AAIhC,UAAU,8BAA8B;IACtC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,QAAQ,EAAE,CAAC,eAAe,EAAE,eAAe,KAAK,IAAI,CAAC;CACtD;AACD,UAAU,8BAA8B;IACtC,SAAS,EAAE,OAAO,CAAC;IAEnB,SAAS,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC;IAE3B,SAAS,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC;IAE3B,eAAe,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC;CACpC;AACD,cAAM,yBAA0B,SAAQ,SAAS,CAC/C,8BAA8B,EAC9B,8BAA8B,CAC/B;gBACa,KAAK,EAAE,8BAA8B;IAqB3C,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IA6BxC,kBAAkB,CAAC,SAAS,EAAE,8BAA8B,GAAG,IAAI;IAUnE,oBAAoB,IAAI,IAAI;IAS5B,OAAO,EAAE,OAAO,CAAC;IAEjB,UAAU,EAAE,UAAU,CAAC;IAEvB,yBAAyB,IAAI,IAAI;IAajC,gBAAgB,IAAI,IAAI;IAYxB;;;;OAIG;IACG,qBAAqB,CACzB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,OAAO,GACrB,OAAO,CAAC,IAAI,CAAC;IAoDhB,UAAU,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAOlD;;;;OAIG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM;IAiBtD;;OAEG;IACG,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB7C,mBAAmB,CAAC,eAAe,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,EAAE;IAmCxE,uBAAuB,WACb,MAAM,aAAa,OAAO,gDAA1B,MAAM,aAAa,OAAO,oBAGlC;IAEF,4BAA4B,WAClB,MAAM,aAAa,OAAO,yCAA1B,MAAM,aAAa,OAAO,aAElC;IAEF,MAAM,IAAI,GAAG,CAAC,OAAO;CA8DtB;AAED,eAAe,yBAAyB,CAAC"}
@@ -15,8 +15,7 @@ import { Picker } from '@deephaven/jsapi-components';
15
15
  import { TableUtils } from '@deephaven/jsapi-utils';
16
16
  import { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';
17
17
  import "./IrisGridPartitionSelector.css";
18
- import { jsx as _jsx } from "react/jsx-runtime";
19
- import { jsxs as _jsxs } from "react/jsx-runtime";
18
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
20
19
  var log = Log.module('IrisGridPartitionSelector');
21
20
  class IrisGridPartitionSelector extends Component {
22
21
  constructor(props) {
@@ -58,8 +57,7 @@ class IrisGridPartitionSelector extends Component {
58
57
  keysTable,
59
58
  baseTable,
60
59
  isLoading: false
61
- });
62
- _this.updatePartitionOptions();
60
+ }, _this.updatePartitionOptions);
63
61
  } catch (e) {
64
62
  if (!PromiseUtils.isCanceled(e)) {
65
63
  // Just re-throw the error if it's not a cancel
@@ -86,9 +84,9 @@ class IrisGridPartitionSelector extends Component {
86
84
  baseTable,
87
85
  partitionTables
88
86
  } = this.state;
89
- baseTable === null || baseTable === void 0 ? void 0 : baseTable.close();
90
- keysTable === null || keysTable === void 0 ? void 0 : keysTable.close();
91
- partitionTables === null || partitionTables === void 0 ? void 0 : partitionTables.forEach(table => table.close());
87
+ baseTable === null || baseTable === void 0 || baseTable.close();
88
+ keysTable === null || keysTable === void 0 || keysTable.close();
89
+ partitionTables === null || partitionTables === void 0 || partitionTables.forEach(table => table.close());
92
90
  }
93
91
  handlePartitionTableClick() {
94
92
  log.debug2('handlePartitionTableClick');
@@ -223,7 +221,7 @@ class IrisGridPartitionSelector extends Component {
223
221
  var partitionColumn = keysTable.columns[i];
224
222
  return _this3.tableUtils.makeNullableEqFilter(partitionColumn, partition);
225
223
  });
226
- var partitionTables = yield Promise.all(model.partitionColumns.map( /*#__PURE__*/function () {
224
+ var partitionTables = yield Promise.all(model.partitionColumns.map(/*#__PURE__*/function () {
227
225
  var _ref = _asyncToGenerator(function* (_, i) {
228
226
  keysTable.applyFilter(partitionFilters.slice(0, i));
229
227
  return keysTable.selectDistinct(model.partitionColumns.slice(0, i + 1));
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridPartitionSelector.js","names":["React","Component","memoizee","FontAwesomeIcon","Button","vsChevronRight","vsMerge","vsKey","Log","Picker","TableUtils","assertNotNull","Pending","PromiseUtils","jsx","_jsx","jsxs","_jsxs","log","module","IrisGridPartitionSelector","constructor","props","_defineProperty","index","value","handlePartitionSelect","max","getDisplayValue","handlePartitionTableClick","bind","handleMergeClick","model","tableUtils","dh","pending","state","isLoading","baseTable","keysTable","partitionTables","componentDidMount","_this","_asyncToGenerator","add","partitionKeysTable","then","keyTable","t","close","partitionBaseTable","setState","updatePartitionOptions","e","isCanceled","componentDidUpdate","prevProps","partitionConfig","prevConfig","componentWillUnmount","cancel","forEach","table","debug2","newPartitionConfig","_objectSpread","mode","sendUpdate","selectedValue","_this2","debug","newPartitions","partitions","copy","tCopy","partitionFilters","slice","map","partition","i","partitionColumn","columns","makeNullableEqFilter","applyFilter","setViewport","data","getViewportData","newConfig","column","rows","get","error","onChange","undefined","partitionColumns","isCharType","type","toString","length","String","fromCharCode","parseInt","displayString","name","_this3","Promise","all","_ref","_","selectDistinct","_x","_x2","apply","arguments","getPartitionFilters","Error","concat","push","previousFilter","previousPartition","previousColumn","partitionFilter","render","partitionSelectors","className","children","label","labelPosition","direction","shouldFlip","keyColumn","selectedKey","placeholder","labelColumn","getCachedChangeCallback","isDisabled","icon","onClick","kind","tooltip","isPartitionAwareSourceTable","active","disabled","rotation"],"sources":["../src/IrisGridPartitionSelector.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport memoizee from 'memoizee';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, type ItemKey } from '@deephaven/components';\nimport { vsChevronRight, vsMerge, vsKey } from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport { Picker } from '@deephaven/jsapi-components';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';\nimport './IrisGridPartitionSelector.scss';\nimport {\n type PartitionConfig,\n type PartitionedGridModel,\n} from './PartitionedGridModel';\n\nconst log = Log.module('IrisGridPartitionSelector');\n\ninterface IrisGridPartitionSelectorProps {\n model: PartitionedGridModel;\n partitionConfig?: PartitionConfig;\n onChange: (partitionConfig: PartitionConfig) => void;\n}\ninterface IrisGridPartitionSelectorState {\n isLoading: boolean;\n\n baseTable: dh.Table | null;\n\n keysTable: dh.Table | null;\n\n partitionTables: dh.Table[] | null;\n}\nclass IrisGridPartitionSelector extends Component<\n IrisGridPartitionSelectorProps,\n IrisGridPartitionSelectorState\n> {\n constructor(props: IrisGridPartitionSelectorProps) {\n super(props);\n\n this.handlePartitionTableClick = this.handlePartitionTableClick.bind(this);\n this.handleMergeClick = this.handleMergeClick.bind(this);\n this.handlePartitionSelect = this.handlePartitionSelect.bind(this);\n\n const { model } = props;\n this.tableUtils = new TableUtils(model.dh);\n this.pending = new Pending();\n\n this.state = {\n // We start be loading the partition tables, so we should be in a loading state\n isLoading: true,\n\n baseTable: null,\n keysTable: null,\n partitionTables: null,\n };\n }\n\n async componentDidMount(): Promise<void> {\n const { model } = this.props;\n\n try {\n const keysTable = await this.pending.add(\n model.partitionKeysTable().then(keyTable => keyTable),\n t => t.close()\n );\n\n const baseTable = await this.pending.add(model.partitionBaseTable(), t =>\n t.close()\n );\n\n this.setState({\n keysTable,\n baseTable,\n isLoading: false,\n });\n this.updatePartitionOptions();\n } catch (e) {\n if (!PromiseUtils.isCanceled(e)) {\n // Just re-throw the error if it's not a cancel\n throw e;\n }\n }\n }\n\n componentDidUpdate(prevProps: IrisGridPartitionSelectorProps): void {\n const { partitionConfig: prevConfig } = prevProps;\n\n const { partitionConfig } = this.props;\n\n if (prevConfig !== partitionConfig) {\n this.updatePartitionOptions();\n }\n }\n\n componentWillUnmount(): void {\n this.pending.cancel();\n\n const { keysTable, baseTable, partitionTables } = this.state;\n baseTable?.close();\n keysTable?.close();\n partitionTables?.forEach(table => table.close());\n }\n\n pending: Pending;\n\n tableUtils: TableUtils;\n\n handlePartitionTableClick(): void {\n log.debug2('handlePartitionTableClick');\n\n const { partitionConfig } = this.props;\n assertNotNull(partitionConfig);\n\n const newPartitionConfig = { ...partitionConfig };\n // Toggle between Keys and Partition mode\n newPartitionConfig.mode =\n partitionConfig.mode === 'keys' ? 'partition' : 'keys';\n this.sendUpdate(newPartitionConfig);\n }\n\n handleMergeClick(): void {\n log.debug2('handleMergeClick');\n\n const { partitionConfig } = this.props;\n assertNotNull(partitionConfig);\n const newPartitionConfig = { ...partitionConfig };\n // Toggle between Merged and Partition mode\n newPartitionConfig.mode =\n partitionConfig.mode === 'merged' ? 'partition' : 'merged';\n this.sendUpdate(newPartitionConfig);\n }\n\n /**\n * Handles when a partition dropdown selection is changed. Will send an update with the new partition config\n * @param index Index of the partition column that was changed\n * @param selectedValue Selected value of the partition column\n */\n async handlePartitionSelect(\n index: number,\n selectedValue: unknown\n ): Promise<void> {\n const { partitionConfig: prevConfig } = this.props;\n assertNotNull(prevConfig);\n\n log.debug('handlePartitionSelect', index, selectedValue, prevConfig);\n\n const newPartitions = [...prevConfig.partitions];\n newPartitions[index] = selectedValue;\n\n const { baseTable } = this.state;\n const { keysTable } = this.state;\n\n assertNotNull(baseTable);\n assertNotNull(keysTable);\n try {\n this.setState({ isLoading: true });\n\n const t = await this.pending.add(baseTable.copy(), tCopy =>\n tCopy.close()\n );\n\n // Apply our partition filters, and just get the first value\n const partitionFilters = newPartitions\n .slice(0, index + 1)\n .map((partition, i) => {\n const partitionColumn = t.columns[i];\n return this.tableUtils.makeNullableEqFilter(\n partitionColumn,\n partition\n );\n });\n t.applyFilter(partitionFilters);\n t.setViewport(0, 0, t.columns);\n const data = await this.pending.add(t.getViewportData());\n const newConfig: PartitionConfig = {\n // Core JSAPI returns undefined for null table values,\n // coalesce with null to differentiate null from no selection in the dropdown\n // https://github.com/deephaven/deephaven-core/issues/5400\n partitions: keysTable.columns.map(column => data.rows[0].get(column)),\n mode: 'partition',\n };\n t.close();\n this.sendUpdate(newConfig);\n } catch (e) {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to get partition tables', e);\n }\n } finally {\n this.setState({ isLoading: false });\n }\n }\n\n sendUpdate(partitionConfig: PartitionConfig): void {\n log.debug2('sendUpdate', partitionConfig);\n\n const { onChange } = this.props;\n onChange(partitionConfig);\n }\n\n /**\n * Calls model.displayString with a special character case\n * @param index The index of the partition column to get the display value for\n * @param value The partition value to get the display value for\n */\n getDisplayValue(index: number, value: unknown): string {\n const { model } = this.props;\n\n if (value === null) {\n return '(null)';\n }\n\n if (value === undefined || value === '') {\n return '';\n }\n const column = model.partitionColumns[index];\n if (TableUtils.isCharType(column.type) && value.toString().length > 0) {\n return String.fromCharCode(parseInt(value.toString(), 10));\n }\n return model.displayString(value, column.type, column.name);\n }\n\n /**\n * Update the options on the partition dropdown tables\n */\n async updatePartitionOptions(): Promise<void> {\n const { model } = this.props;\n const { partitionConfig: prevConfig } = this.props;\n if (prevConfig == null) {\n return;\n }\n\n const { keysTable } = this.state;\n assertNotNull(keysTable);\n\n const partitionFilters = [...prevConfig.partitions].map((partition, i) => {\n const partitionColumn = keysTable.columns[i];\n return this.tableUtils.makeNullableEqFilter(partitionColumn, partition);\n });\n\n const partitionTables = await Promise.all(\n model.partitionColumns.map(async (_, i) => {\n keysTable.applyFilter(partitionFilters.slice(0, i));\n return keysTable.selectDistinct(model.partitionColumns.slice(0, i + 1));\n })\n );\n\n this.setState({ partitionTables });\n }\n\n getPartitionFilters(partitionTables: dh.Table[]): dh.FilterCondition[][] {\n const { model, partitionConfig } = this.props;\n assertNotNull(partitionConfig);\n const { partitions } = partitionConfig;\n log.debug('getPartitionFilters', partitionConfig);\n\n if (partitions.length !== partitionTables.length) {\n throw new Error(\n `Invalid partition config set. Expected ${partitionTables.length} partitions, but got ${partitions.length}`\n );\n }\n\n // The filters are applied in order, so we need to build up the filters for each partition\n const partitionFilters: dh.FilterCondition[][] = [];\n for (let i = 0; i < partitions.length; i += 1) {\n if (i === 0) {\n // There's no reason to ever filter the first table\n partitionFilters.push([]);\n } else {\n const previousFilter = partitionFilters[i - 1];\n const previousPartition = partitions[i - 1];\n const previousColumn = model.partitionColumns[i - 1];\n const partitionFilter = [\n ...previousFilter,\n this.tableUtils.makeNullableEqFilter(\n previousColumn,\n previousPartition\n ),\n ];\n partitionFilters.push(partitionFilter);\n }\n }\n return partitionFilters;\n }\n\n getCachedChangeCallback = memoizee(\n (index: number) => (value: unknown) =>\n this.handlePartitionSelect(index, value),\n { max: 100 }\n );\n\n getCachedFormatValueCallback = memoizee(\n (index: number) => (value: unknown) => this.getDisplayValue(index, value),\n { max: 100 }\n );\n\n render(): JSX.Element {\n const { model, partitionConfig } = this.props;\n const { isLoading, partitionTables } = this.state;\n\n const partitionSelectors = model.partitionColumns.map((column, index) => (\n <div key={`selector-${column.name}`} className=\"column-selector\">\n {partitionTables?.[index] && (\n <Picker\n label={column.name}\n labelPosition=\"side\"\n table={partitionTables[index]}\n direction=\"bottom\"\n shouldFlip={false}\n keyColumn={partitionTables[index].columns[index].name}\n selectedKey={\n partitionConfig?.mode === 'partition'\n ? (partitionConfig.partitions[index] as ItemKey)\n : null\n }\n placeholder=\"Select a key\"\n labelColumn={partitionTables[index].columns[index].name}\n onChange={this.getCachedChangeCallback(index)}\n isDisabled={isLoading || partitionConfig == null}\n />\n )}\n {model.partitionColumns.length - 1 === index || (\n <FontAwesomeIcon icon={vsChevronRight} />\n )}\n </div>\n ));\n return (\n <div className=\"iris-grid-partition-selector\">\n <div className=\"partition-button-group\">\n <Button\n onClick={this.handlePartitionTableClick}\n kind=\"inline\"\n tooltip={\n model.isPartitionAwareSourceTable\n ? 'View keys as table'\n : 'View underlying partition table'\n }\n icon={vsKey}\n active={partitionConfig?.mode === 'keys'}\n disabled={isLoading || partitionConfig == null}\n >\n Partitions\n </Button>\n <Button\n onClick={this.handleMergeClick}\n kind=\"inline\"\n tooltip=\"View all partitions as one merged table\"\n icon={<FontAwesomeIcon icon={vsMerge} rotation={90} />}\n active={partitionConfig?.mode === 'merged'}\n disabled={isLoading || partitionConfig == null}\n >\n {model.isPartitionAwareSourceTable ? 'Coalesce' : 'Merge'}\n </Button>\n </div>\n {partitionSelectors}\n </div>\n );\n }\n}\n\nexport default IrisGridPartitionSelector;\n"],"mappings":"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"}
1
+ {"version":3,"file":"IrisGridPartitionSelector.js","names":["React","Component","memoizee","FontAwesomeIcon","Button","vsChevronRight","vsMerge","vsKey","Log","Picker","TableUtils","assertNotNull","Pending","PromiseUtils","jsx","_jsx","jsxs","_jsxs","log","module","IrisGridPartitionSelector","constructor","props","_defineProperty","index","value","handlePartitionSelect","max","getDisplayValue","handlePartitionTableClick","bind","handleMergeClick","model","tableUtils","dh","pending","state","isLoading","baseTable","keysTable","partitionTables","componentDidMount","_this","_asyncToGenerator","add","partitionKeysTable","then","keyTable","t","close","partitionBaseTable","setState","updatePartitionOptions","e","isCanceled","componentDidUpdate","prevProps","partitionConfig","prevConfig","componentWillUnmount","cancel","forEach","table","debug2","newPartitionConfig","_objectSpread","mode","sendUpdate","selectedValue","_this2","debug","newPartitions","partitions","copy","tCopy","partitionFilters","slice","map","partition","i","partitionColumn","columns","makeNullableEqFilter","applyFilter","setViewport","data","getViewportData","newConfig","column","rows","get","error","onChange","undefined","partitionColumns","isCharType","type","toString","length","String","fromCharCode","parseInt","displayString","name","_this3","Promise","all","_ref","_","selectDistinct","_x","_x2","apply","arguments","getPartitionFilters","Error","concat","push","previousFilter","previousPartition","previousColumn","partitionFilter","render","partitionSelectors","className","children","label","labelPosition","direction","shouldFlip","keyColumn","selectedKey","placeholder","labelColumn","getCachedChangeCallback","isDisabled","icon","onClick","kind","tooltip","isPartitionAwareSourceTable","active","disabled","rotation"],"sources":["../src/IrisGridPartitionSelector.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport memoizee from 'memoizee';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, type ItemKey } from '@deephaven/components';\nimport { vsChevronRight, vsMerge, vsKey } from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport { Picker } from '@deephaven/jsapi-components';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';\nimport './IrisGridPartitionSelector.scss';\nimport {\n type PartitionConfig,\n type PartitionedGridModel,\n} from './PartitionedGridModel';\n\nconst log = Log.module('IrisGridPartitionSelector');\n\ninterface IrisGridPartitionSelectorProps {\n model: PartitionedGridModel;\n partitionConfig?: PartitionConfig;\n onChange: (partitionConfig: PartitionConfig) => void;\n}\ninterface IrisGridPartitionSelectorState {\n isLoading: boolean;\n\n baseTable: dh.Table | null;\n\n keysTable: dh.Table | null;\n\n partitionTables: dh.Table[] | null;\n}\nclass IrisGridPartitionSelector extends Component<\n IrisGridPartitionSelectorProps,\n IrisGridPartitionSelectorState\n> {\n constructor(props: IrisGridPartitionSelectorProps) {\n super(props);\n\n this.handlePartitionTableClick = this.handlePartitionTableClick.bind(this);\n this.handleMergeClick = this.handleMergeClick.bind(this);\n this.handlePartitionSelect = this.handlePartitionSelect.bind(this);\n\n const { model } = props;\n this.tableUtils = new TableUtils(model.dh);\n this.pending = new Pending();\n\n this.state = {\n // We start be loading the partition tables, so we should be in a loading state\n isLoading: true,\n\n baseTable: null,\n keysTable: null,\n partitionTables: null,\n };\n }\n\n async componentDidMount(): Promise<void> {\n const { model } = this.props;\n\n try {\n const keysTable = await this.pending.add(\n model.partitionKeysTable().then(keyTable => keyTable),\n t => t.close()\n );\n\n const baseTable = await this.pending.add(model.partitionBaseTable(), t =>\n t.close()\n );\n\n this.setState(\n {\n keysTable,\n baseTable,\n isLoading: false,\n },\n this.updatePartitionOptions\n );\n } catch (e) {\n if (!PromiseUtils.isCanceled(e)) {\n // Just re-throw the error if it's not a cancel\n throw e;\n }\n }\n }\n\n componentDidUpdate(prevProps: IrisGridPartitionSelectorProps): void {\n const { partitionConfig: prevConfig } = prevProps;\n\n const { partitionConfig } = this.props;\n\n if (prevConfig !== partitionConfig) {\n this.updatePartitionOptions();\n }\n }\n\n componentWillUnmount(): void {\n this.pending.cancel();\n\n const { keysTable, baseTable, partitionTables } = this.state;\n baseTable?.close();\n keysTable?.close();\n partitionTables?.forEach(table => table.close());\n }\n\n pending: Pending;\n\n tableUtils: TableUtils;\n\n handlePartitionTableClick(): void {\n log.debug2('handlePartitionTableClick');\n\n const { partitionConfig } = this.props;\n assertNotNull(partitionConfig);\n\n const newPartitionConfig = { ...partitionConfig };\n // Toggle between Keys and Partition mode\n newPartitionConfig.mode =\n partitionConfig.mode === 'keys' ? 'partition' : 'keys';\n this.sendUpdate(newPartitionConfig);\n }\n\n handleMergeClick(): void {\n log.debug2('handleMergeClick');\n\n const { partitionConfig } = this.props;\n assertNotNull(partitionConfig);\n const newPartitionConfig = { ...partitionConfig };\n // Toggle between Merged and Partition mode\n newPartitionConfig.mode =\n partitionConfig.mode === 'merged' ? 'partition' : 'merged';\n this.sendUpdate(newPartitionConfig);\n }\n\n /**\n * Handles when a partition dropdown selection is changed. Will send an update with the new partition config\n * @param index Index of the partition column that was changed\n * @param selectedValue Selected value of the partition column\n */\n async handlePartitionSelect(\n index: number,\n selectedValue: unknown\n ): Promise<void> {\n const { partitionConfig: prevConfig } = this.props;\n assertNotNull(prevConfig);\n\n log.debug('handlePartitionSelect', index, selectedValue, prevConfig);\n\n const newPartitions = [...prevConfig.partitions];\n newPartitions[index] = selectedValue;\n\n const { baseTable } = this.state;\n const { keysTable } = this.state;\n\n assertNotNull(baseTable);\n assertNotNull(keysTable);\n try {\n this.setState({ isLoading: true });\n\n const t = await this.pending.add(baseTable.copy(), tCopy =>\n tCopy.close()\n );\n\n // Apply our partition filters, and just get the first value\n const partitionFilters = newPartitions\n .slice(0, index + 1)\n .map((partition, i) => {\n const partitionColumn = t.columns[i];\n return this.tableUtils.makeNullableEqFilter(\n partitionColumn,\n partition\n );\n });\n t.applyFilter(partitionFilters);\n t.setViewport(0, 0, t.columns);\n const data = await this.pending.add(t.getViewportData());\n const newConfig: PartitionConfig = {\n // Core JSAPI returns undefined for null table values,\n // coalesce with null to differentiate null from no selection in the dropdown\n // https://github.com/deephaven/deephaven-core/issues/5400\n partitions: keysTable.columns.map(column => data.rows[0].get(column)),\n mode: 'partition',\n };\n t.close();\n this.sendUpdate(newConfig);\n } catch (e) {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to get partition tables', e);\n }\n } finally {\n this.setState({ isLoading: false });\n }\n }\n\n sendUpdate(partitionConfig: PartitionConfig): void {\n log.debug2('sendUpdate', partitionConfig);\n\n const { onChange } = this.props;\n onChange(partitionConfig);\n }\n\n /**\n * Calls model.displayString with a special character case\n * @param index The index of the partition column to get the display value for\n * @param value The partition value to get the display value for\n */\n getDisplayValue(index: number, value: unknown): string {\n const { model } = this.props;\n\n if (value === null) {\n return '(null)';\n }\n\n if (value === undefined || value === '') {\n return '';\n }\n const column = model.partitionColumns[index];\n if (TableUtils.isCharType(column.type) && value.toString().length > 0) {\n return String.fromCharCode(parseInt(value.toString(), 10));\n }\n return model.displayString(value, column.type, column.name);\n }\n\n /**\n * Update the options on the partition dropdown tables\n */\n async updatePartitionOptions(): Promise<void> {\n const { model } = this.props;\n const { partitionConfig: prevConfig } = this.props;\n if (prevConfig == null) {\n return;\n }\n\n const { keysTable } = this.state;\n assertNotNull(keysTable);\n\n const partitionFilters = [...prevConfig.partitions].map((partition, i) => {\n const partitionColumn = keysTable.columns[i];\n return this.tableUtils.makeNullableEqFilter(partitionColumn, partition);\n });\n\n const partitionTables = await Promise.all(\n model.partitionColumns.map(async (_, i) => {\n keysTable.applyFilter(partitionFilters.slice(0, i));\n return keysTable.selectDistinct(model.partitionColumns.slice(0, i + 1));\n })\n );\n\n this.setState({ partitionTables });\n }\n\n getPartitionFilters(partitionTables: dh.Table[]): dh.FilterCondition[][] {\n const { model, partitionConfig } = this.props;\n assertNotNull(partitionConfig);\n const { partitions } = partitionConfig;\n log.debug('getPartitionFilters', partitionConfig);\n\n if (partitions.length !== partitionTables.length) {\n throw new Error(\n `Invalid partition config set. Expected ${partitionTables.length} partitions, but got ${partitions.length}`\n );\n }\n\n // The filters are applied in order, so we need to build up the filters for each partition\n const partitionFilters: dh.FilterCondition[][] = [];\n for (let i = 0; i < partitions.length; i += 1) {\n if (i === 0) {\n // There's no reason to ever filter the first table\n partitionFilters.push([]);\n } else {\n const previousFilter = partitionFilters[i - 1];\n const previousPartition = partitions[i - 1];\n const previousColumn = model.partitionColumns[i - 1];\n const partitionFilter = [\n ...previousFilter,\n this.tableUtils.makeNullableEqFilter(\n previousColumn,\n previousPartition\n ),\n ];\n partitionFilters.push(partitionFilter);\n }\n }\n return partitionFilters;\n }\n\n getCachedChangeCallback = memoizee(\n (index: number) => (value: unknown) =>\n this.handlePartitionSelect(index, value),\n { max: 100 }\n );\n\n getCachedFormatValueCallback = memoizee(\n (index: number) => (value: unknown) => this.getDisplayValue(index, value),\n { max: 100 }\n );\n\n render(): JSX.Element {\n const { model, partitionConfig } = this.props;\n const { isLoading, partitionTables } = this.state;\n\n const partitionSelectors = model.partitionColumns.map((column, index) => (\n <div key={`selector-${column.name}`} className=\"column-selector\">\n {partitionTables?.[index] && (\n <Picker\n label={column.name}\n labelPosition=\"side\"\n table={partitionTables[index]}\n direction=\"bottom\"\n shouldFlip={false}\n keyColumn={partitionTables[index].columns[index].name}\n selectedKey={\n partitionConfig?.mode === 'partition'\n ? (partitionConfig.partitions[index] as ItemKey)\n : null\n }\n placeholder=\"Select a key\"\n labelColumn={partitionTables[index].columns[index].name}\n onChange={this.getCachedChangeCallback(index)}\n isDisabled={isLoading || partitionConfig == null}\n />\n )}\n {model.partitionColumns.length - 1 === index || (\n <FontAwesomeIcon icon={vsChevronRight} />\n )}\n </div>\n ));\n return (\n <div className=\"iris-grid-partition-selector\">\n <div className=\"partition-button-group\">\n <Button\n onClick={this.handlePartitionTableClick}\n kind=\"inline\"\n tooltip={\n model.isPartitionAwareSourceTable\n ? 'View keys as table'\n : 'View underlying partition table'\n }\n icon={vsKey}\n active={partitionConfig?.mode === 'keys'}\n disabled={isLoading || partitionConfig == null}\n >\n Partitions\n </Button>\n <Button\n onClick={this.handleMergeClick}\n kind=\"inline\"\n tooltip=\"View all partitions as one merged table\"\n icon={<FontAwesomeIcon icon={vsMerge} rotation={90} />}\n active={partitionConfig?.mode === 'merged'}\n disabled={isLoading || partitionConfig == null}\n >\n {model.isPartitionAwareSourceTable ? 'Coalesce' : 'Merge'}\n </Button>\n </div>\n {partitionSelectors}\n </div>\n );\n }\n}\n\nexport default IrisGridPartitionSelector;\n"],"mappings":";;;;;;;AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AACxC,OAAOC,QAAQ,MAAM,UAAU;AAC/B,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,MAAM,QAAsB,uBAAuB;AAC5D,SAASC,cAAc,EAAEC,OAAO,EAAEC,KAAK,QAAQ,kBAAkB;AACjE,OAAOC,GAAG,MAAM,gBAAgB;AAChC,SAASC,MAAM,QAAQ,6BAA6B;AAEpD,SAASC,UAAU,QAAQ,wBAAwB;AACnD,SAASC,aAAa,EAAEC,OAAO,EAAEC,YAAY,QAAQ,kBAAkB;AAAC;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAOxE,IAAMC,GAAG,GAAGV,GAAG,CAACW,MAAM,CAAC,2BAA2B,CAAC;AAgBnD,MAAMC,yBAAyB,SAASnB,SAAS,CAG/C;EACAoB,WAAWA,CAACC,KAAqC,EAAE;IACjD,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA;IAAAA,eAAA;IAAAA,eAAA,kCAyPWrB,QAAQ,CAC/BsB,KAAa,IAAMC,KAAc,IAChC,IAAI,CAACC,qBAAqB,CAACF,KAAK,EAAEC,KAAK,CAAC,EAC1C;MAAEE,GAAG,EAAE;IAAI,CACb,CAAC;IAAAJ,eAAA,uCAE8BrB,QAAQ,CACpCsB,KAAa,IAAMC,KAAc,IAAK,IAAI,CAACG,eAAe,CAACJ,KAAK,EAAEC,KAAK,CAAC,EACzE;MAAEE,GAAG,EAAE;IAAI,CACb,CAAC;IAhQC,IAAI,CAACE,yBAAyB,GAAG,IAAI,CAACA,yBAAyB,CAACC,IAAI,CAAC,IAAI,CAAC;IAC1E,IAAI,CAACC,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACD,IAAI,CAAC,IAAI,CAAC;IACxD,IAAI,CAACJ,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACI,IAAI,CAAC,IAAI,CAAC;IAElE,IAAM;MAAEE;IAAM,CAAC,GAAGV,KAAK;IACvB,IAAI,CAACW,UAAU,GAAG,IAAIvB,UAAU,CAACsB,KAAK,CAACE,EAAE,CAAC;IAC1C,IAAI,CAACC,OAAO,GAAG,IAAIvB,OAAO,CAAC,CAAC;IAE5B,IAAI,CAACwB,KAAK,GAAG;MACX;MACAC,SAAS,EAAE,IAAI;MAEfC,SAAS,EAAE,IAAI;MACfC,SAAS,EAAE,IAAI;MACfC,eAAe,EAAE;IACnB,CAAC;EACH;EAEMC,iBAAiBA,CAAA,EAAkB;IAAA,IAAAC,KAAA;IAAA,OAAAC,iBAAA;MACvC,IAAM;QAAEX;MAAM,CAAC,GAAGU,KAAI,CAACpB,KAAK;MAE5B,IAAI;QACF,IAAMiB,SAAS,SAASG,KAAI,CAACP,OAAO,CAACS,GAAG,CACtCZ,KAAK,CAACa,kBAAkB,CAAC,CAAC,CAACC,IAAI,CAACC,QAAQ,IAAIA,QAAQ,CAAC,EACrDC,CAAC,IAAIA,CAAC,CAACC,KAAK,CAAC,CACf,CAAC;QAED,IAAMX,SAAS,SAASI,KAAI,CAACP,OAAO,CAACS,GAAG,CAACZ,KAAK,CAACkB,kBAAkB,CAAC,CAAC,EAAEF,CAAC,IACpEA,CAAC,CAACC,KAAK,CAAC,CACV,CAAC;QAEDP,KAAI,CAACS,QAAQ,CACX;UACEZ,SAAS;UACTD,SAAS;UACTD,SAAS,EAAE;QACb,CAAC,EACDK,KAAI,CAACU,sBACP,CAAC;MACH,CAAC,CAAC,OAAOC,CAAC,EAAE;QACV,IAAI,CAACxC,YAAY,CAACyC,UAAU,CAACD,CAAC,CAAC,EAAE;UAC/B;UACA,MAAMA,CAAC;QACT;MACF;IAAC;EACH;EAEAE,kBAAkBA,CAACC,SAAyC,EAAQ;IAClE,IAAM;MAAEC,eAAe,EAAEC;IAAW,CAAC,GAAGF,SAAS;IAEjD,IAAM;MAAEC;IAAgB,CAAC,GAAG,IAAI,CAACnC,KAAK;IAEtC,IAAIoC,UAAU,KAAKD,eAAe,EAAE;MAClC,IAAI,CAACL,sBAAsB,CAAC,CAAC;IAC/B;EACF;EAEAO,oBAAoBA,CAAA,EAAS;IAC3B,IAAI,CAACxB,OAAO,CAACyB,MAAM,CAAC,CAAC;IAErB,IAAM;MAAErB,SAAS;MAAED,SAAS;MAAEE;IAAgB,CAAC,GAAG,IAAI,CAACJ,KAAK;IAC5DE,SAAS,aAATA,SAAS,eAATA,SAAS,CAAEW,KAAK,CAAC,CAAC;IAClBV,SAAS,aAATA,SAAS,eAATA,SAAS,CAAEU,KAAK,CAAC,CAAC;IAClBT,eAAe,aAAfA,eAAe,eAAfA,eAAe,CAAEqB,OAAO,CAACC,KAAK,IAAIA,KAAK,CAACb,KAAK,CAAC,CAAC,CAAC;EAClD;EAMApB,yBAAyBA,CAAA,EAAS;IAChCX,GAAG,CAAC6C,MAAM,CAAC,2BAA2B,CAAC;IAEvC,IAAM;MAAEN;IAAgB,CAAC,GAAG,IAAI,CAACnC,KAAK;IACtCX,aAAa,CAAC8C,eAAe,CAAC;IAE9B,IAAMO,kBAAkB,GAAAC,aAAA,KAAQR,eAAe,CAAE;IACjD;IACAO,kBAAkB,CAACE,IAAI,GACrBT,eAAe,CAACS,IAAI,KAAK,MAAM,GAAG,WAAW,GAAG,MAAM;IACxD,IAAI,CAACC,UAAU,CAACH,kBAAkB,CAAC;EACrC;EAEAjC,gBAAgBA,CAAA,EAAS;IACvBb,GAAG,CAAC6C,MAAM,CAAC,kBAAkB,CAAC;IAE9B,IAAM;MAAEN;IAAgB,CAAC,GAAG,IAAI,CAACnC,KAAK;IACtCX,aAAa,CAAC8C,eAAe,CAAC;IAC9B,IAAMO,kBAAkB,GAAAC,aAAA,KAAQR,eAAe,CAAE;IACjD;IACAO,kBAAkB,CAACE,IAAI,GACrBT,eAAe,CAACS,IAAI,KAAK,QAAQ,GAAG,WAAW,GAAG,QAAQ;IAC5D,IAAI,CAACC,UAAU,CAACH,kBAAkB,CAAC;EACrC;;EAEA;AACF;AACA;AACA;AACA;EACQtC,qBAAqBA,CACzBF,KAAa,EACb4C,aAAsB,EACP;IAAA,IAAAC,MAAA;IAAA,OAAA1B,iBAAA;MACf,IAAM;QAAEc,eAAe,EAAEC;MAAW,CAAC,GAAGW,MAAI,CAAC/C,KAAK;MAClDX,aAAa,CAAC+C,UAAU,CAAC;MAEzBxC,GAAG,CAACoD,KAAK,CAAC,uBAAuB,EAAE9C,KAAK,EAAE4C,aAAa,EAAEV,UAAU,CAAC;MAEpE,IAAMa,aAAa,GAAG,CAAC,GAAGb,UAAU,CAACc,UAAU,CAAC;MAChDD,aAAa,CAAC/C,KAAK,CAAC,GAAG4C,aAAa;MAEpC,IAAM;QAAE9B;MAAU,CAAC,GAAG+B,MAAI,CAACjC,KAAK;MAChC,IAAM;QAAEG;MAAU,CAAC,GAAG8B,MAAI,CAACjC,KAAK;MAEhCzB,aAAa,CAAC2B,SAAS,CAAC;MACxB3B,aAAa,CAAC4B,SAAS,CAAC;MACxB,IAAI;QACF8B,MAAI,CAAClB,QAAQ,CAAC;UAAEd,SAAS,EAAE;QAAK,CAAC,CAAC;QAElC,IAAMW,CAAC,SAASqB,MAAI,CAAClC,OAAO,CAACS,GAAG,CAACN,SAAS,CAACmC,IAAI,CAAC,CAAC,EAAEC,KAAK,IACtDA,KAAK,CAACzB,KAAK,CAAC,CACd,CAAC;;QAED;QACA,IAAM0B,gBAAgB,GAAGJ,aAAa,CACnCK,KAAK,CAAC,CAAC,EAAEpD,KAAK,GAAG,CAAC,CAAC,CACnBqD,GAAG,CAAC,CAACC,SAAS,EAAEC,CAAC,KAAK;UACrB,IAAMC,eAAe,GAAGhC,CAAC,CAACiC,OAAO,CAACF,CAAC,CAAC;UACpC,OAAOV,MAAI,CAACpC,UAAU,CAACiD,oBAAoB,CACzCF,eAAe,EACfF,SACF,CAAC;QACH,CAAC,CAAC;QACJ9B,CAAC,CAACmC,WAAW,CAACR,gBAAgB,CAAC;QAC/B3B,CAAC,CAACoC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAEpC,CAAC,CAACiC,OAAO,CAAC;QAC9B,IAAMI,IAAI,SAAShB,MAAI,CAAClC,OAAO,CAACS,GAAG,CAACI,CAAC,CAACsC,eAAe,CAAC,CAAC,CAAC;QACxD,IAAMC,SAA0B,GAAG;UACjC;UACA;UACA;UACAf,UAAU,EAAEjC,SAAS,CAAC0C,OAAO,CAACJ,GAAG,CAACW,MAAM,IAAIH,IAAI,CAACI,IAAI,CAAC,CAAC,CAAC,CAACC,GAAG,CAACF,MAAM,CAAC,CAAC;UACrEtB,IAAI,EAAE;QACR,CAAC;QACDlB,CAAC,CAACC,KAAK,CAAC,CAAC;QACToB,MAAI,CAACF,UAAU,CAACoB,SAAS,CAAC;MAC5B,CAAC,CAAC,OAAOlC,CAAC,EAAE;QACV,IAAI,CAACxC,YAAY,CAACyC,UAAU,CAACD,CAAC,CAAC,EAAE;UAC/BnC,GAAG,CAACyE,KAAK,CAAC,gCAAgC,EAAEtC,CAAC,CAAC;QAChD;MACF,CAAC,SAAS;QACRgB,MAAI,CAAClB,QAAQ,CAAC;UAAEd,SAAS,EAAE;QAAM,CAAC,CAAC;MACrC;IAAC;EACH;EAEA8B,UAAUA,CAACV,eAAgC,EAAQ;IACjDvC,GAAG,CAAC6C,MAAM,CAAC,YAAY,EAAEN,eAAe,CAAC;IAEzC,IAAM;MAAEmC;IAAS,CAAC,GAAG,IAAI,CAACtE,KAAK;IAC/BsE,QAAQ,CAACnC,eAAe,CAAC;EAC3B;;EAEA;AACF;AACA;AACA;AACA;EACE7B,eAAeA,CAACJ,KAAa,EAAEC,KAAc,EAAU;IACrD,IAAM;MAAEO;IAAM,CAAC,GAAG,IAAI,CAACV,KAAK;IAE5B,IAAIG,KAAK,KAAK,IAAI,EAAE;MAClB,OAAO,QAAQ;IACjB;IAEA,IAAIA,KAAK,KAAKoE,SAAS,IAAIpE,KAAK,KAAK,EAAE,EAAE;MACvC,OAAO,EAAE;IACX;IACA,IAAM+D,MAAM,GAAGxD,KAAK,CAAC8D,gBAAgB,CAACtE,KAAK,CAAC;IAC5C,IAAId,UAAU,CAACqF,UAAU,CAACP,MAAM,CAACQ,IAAI,CAAC,IAAIvE,KAAK,CAACwE,QAAQ,CAAC,CAAC,CAACC,MAAM,GAAG,CAAC,EAAE;MACrE,OAAOC,MAAM,CAACC,YAAY,CAACC,QAAQ,CAAC5E,KAAK,CAACwE,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5D;IACA,OAAOjE,KAAK,CAACsE,aAAa,CAAC7E,KAAK,EAAE+D,MAAM,CAACQ,IAAI,EAAER,MAAM,CAACe,IAAI,CAAC;EAC7D;;EAEA;AACF;AACA;EACQnD,sBAAsBA,CAAA,EAAkB;IAAA,IAAAoD,MAAA;IAAA,OAAA7D,iBAAA;MAC5C,IAAM;QAAEX;MAAM,CAAC,GAAGwE,MAAI,CAAClF,KAAK;MAC5B,IAAM;QAAEmC,eAAe,EAAEC;MAAW,CAAC,GAAG8C,MAAI,CAAClF,KAAK;MAClD,IAAIoC,UAAU,IAAI,IAAI,EAAE;QACtB;MACF;MAEA,IAAM;QAAEnB;MAAU,CAAC,GAAGiE,MAAI,CAACpE,KAAK;MAChCzB,aAAa,CAAC4B,SAAS,CAAC;MAExB,IAAMoC,gBAAgB,GAAG,CAAC,GAAGjB,UAAU,CAACc,UAAU,CAAC,CAACK,GAAG,CAAC,CAACC,SAAS,EAAEC,CAAC,KAAK;QACxE,IAAMC,eAAe,GAAGzC,SAAS,CAAC0C,OAAO,CAACF,CAAC,CAAC;QAC5C,OAAOyB,MAAI,CAACvE,UAAU,CAACiD,oBAAoB,CAACF,eAAe,EAAEF,SAAS,CAAC;MACzE,CAAC,CAAC;MAEF,IAAMtC,eAAe,SAASiE,OAAO,CAACC,GAAG,CACvC1E,KAAK,CAAC8D,gBAAgB,CAACjB,GAAG;QAAA,IAAA8B,IAAA,GAAAhE,iBAAA,CAAC,WAAOiE,CAAC,EAAE7B,CAAC,EAAK;UACzCxC,SAAS,CAAC4C,WAAW,CAACR,gBAAgB,CAACC,KAAK,CAAC,CAAC,EAAEG,CAAC,CAAC,CAAC;UACnD,OAAOxC,SAAS,CAACsE,cAAc,CAAC7E,KAAK,CAAC8D,gBAAgB,CAAClB,KAAK,CAAC,CAAC,EAAEG,CAAC,GAAG,CAAC,CAAC,CAAC;QACzE,CAAC;QAAA,iBAAA+B,EAAA,EAAAC,GAAA;UAAA,OAAAJ,IAAA,CAAAK,KAAA,OAAAC,SAAA;QAAA;MAAA,IACH,CAAC;MAEDT,MAAI,CAACrD,QAAQ,CAAC;QAAEX;MAAgB,CAAC,CAAC;IAAC;EACrC;EAEA0E,mBAAmBA,CAAC1E,eAA2B,EAA0B;IACvE,IAAM;MAAER,KAAK;MAAEyB;IAAgB,CAAC,GAAG,IAAI,CAACnC,KAAK;IAC7CX,aAAa,CAAC8C,eAAe,CAAC;IAC9B,IAAM;MAAEe;IAAW,CAAC,GAAGf,eAAe;IACtCvC,GAAG,CAACoD,KAAK,CAAC,qBAAqB,EAAEb,eAAe,CAAC;IAEjD,IAAIe,UAAU,CAAC0B,MAAM,KAAK1D,eAAe,CAAC0D,MAAM,EAAE;MAChD,MAAM,IAAIiB,KAAK,2CAAAC,MAAA,CAC6B5E,eAAe,CAAC0D,MAAM,2BAAAkB,MAAA,CAAwB5C,UAAU,CAAC0B,MAAM,CAC3G,CAAC;IACH;;IAEA;IACA,IAAMvB,gBAAwC,GAAG,EAAE;IACnD,KAAK,IAAII,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGP,UAAU,CAAC0B,MAAM,EAAEnB,CAAC,IAAI,CAAC,EAAE;MAC7C,IAAIA,CAAC,KAAK,CAAC,EAAE;QACX;QACAJ,gBAAgB,CAAC0C,IAAI,CAAC,EAAE,CAAC;MAC3B,CAAC,MAAM;QACL,IAAMC,cAAc,GAAG3C,gBAAgB,CAACI,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAMwC,iBAAiB,GAAG/C,UAAU,CAACO,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAMyC,cAAc,GAAGxF,KAAK,CAAC8D,gBAAgB,CAACf,CAAC,GAAG,CAAC,CAAC;QACpD,IAAM0C,eAAe,GAAG,CACtB,GAAGH,cAAc,EACjB,IAAI,CAACrF,UAAU,CAACiD,oBAAoB,CAClCsC,cAAc,EACdD,iBACF,CAAC,CACF;QACD5C,gBAAgB,CAAC0C,IAAI,CAACI,eAAe,CAAC;MACxC;IACF;IACA,OAAO9C,gBAAgB;EACzB;EAaA+C,MAAMA,CAAA,EAAgB;IACpB,IAAM;MAAE1F,KAAK;MAAEyB;IAAgB,CAAC,GAAG,IAAI,CAACnC,KAAK;IAC7C,IAAM;MAAEe,SAAS;MAAEG;IAAgB,CAAC,GAAG,IAAI,CAACJ,KAAK;IAEjD,IAAMuF,kBAAkB,GAAG3F,KAAK,CAAC8D,gBAAgB,CAACjB,GAAG,CAAC,CAACW,MAAM,EAAEhE,KAAK,kBAClEP,KAAA;MAAqC2G,SAAS,EAAC,iBAAiB;MAAAC,QAAA,GAC7D,CAAArF,eAAe,aAAfA,eAAe,uBAAfA,eAAe,CAAGhB,KAAK,CAAC,kBACvBT,IAAA,CAACN,MAAM;QACLqH,KAAK,EAAEtC,MAAM,CAACe,IAAK;QACnBwB,aAAa,EAAC,MAAM;QACpBjE,KAAK,EAAEtB,eAAe,CAAChB,KAAK,CAAE;QAC9BwG,SAAS,EAAC,QAAQ;QAClBC,UAAU,EAAE,KAAM;QAClBC,SAAS,EAAE1F,eAAe,CAAChB,KAAK,CAAC,CAACyD,OAAO,CAACzD,KAAK,CAAC,CAAC+E,IAAK;QACtD4B,WAAW,EACT,CAAA1E,eAAe,aAAfA,eAAe,uBAAfA,eAAe,CAAES,IAAI,MAAK,WAAW,GAChCT,eAAe,CAACe,UAAU,CAAChD,KAAK,CAAC,GAClC,IACL;QACD4G,WAAW,EAAC,cAAc;QAC1BC,WAAW,EAAE7F,eAAe,CAAChB,KAAK,CAAC,CAACyD,OAAO,CAACzD,KAAK,CAAC,CAAC+E,IAAK;QACxDX,QAAQ,EAAE,IAAI,CAAC0C,uBAAuB,CAAC9G,KAAK,CAAE;QAC9C+G,UAAU,EAAElG,SAAS,IAAIoB,eAAe,IAAI;MAAK,CAClD,CACF,EACAzB,KAAK,CAAC8D,gBAAgB,CAACI,MAAM,GAAG,CAAC,KAAK1E,KAAK,iBAC1CT,IAAA,CAACZ,eAAe;QAACqI,IAAI,EAAEnI;MAAe,CAAE,CACzC;IAAA,eAAA+G,MAAA,CAtBmB5B,MAAM,CAACe,IAAI,CAuB5B,CACN,CAAC;IACF,oBACEtF,KAAA;MAAK2G,SAAS,EAAC,8BAA8B;MAAAC,QAAA,gBAC3C5G,KAAA;QAAK2G,SAAS,EAAC,wBAAwB;QAAAC,QAAA,gBACrC9G,IAAA,CAACX,MAAM;UACLqI,OAAO,EAAE,IAAI,CAAC5G,yBAA0B;UACxC6G,IAAI,EAAC,QAAQ;UACbC,OAAO,EACL3G,KAAK,CAAC4G,2BAA2B,GAC7B,oBAAoB,GACpB,iCACL;UACDJ,IAAI,EAAEjI,KAAM;UACZsI,MAAM,EAAE,CAAApF,eAAe,aAAfA,eAAe,uBAAfA,eAAe,CAAES,IAAI,MAAK,MAAO;UACzC4E,QAAQ,EAAEzG,SAAS,IAAIoB,eAAe,IAAI,IAAK;UAAAoE,QAAA,EAChD;QAED,CAAQ,CAAC,eACT9G,IAAA,CAACX,MAAM;UACLqI,OAAO,EAAE,IAAI,CAAC1G,gBAAiB;UAC/B2G,IAAI,EAAC,QAAQ;UACbC,OAAO,EAAC,yCAAyC;UACjDH,IAAI,eAAEzH,IAAA,CAACZ,eAAe;YAACqI,IAAI,EAAElI,OAAQ;YAACyI,QAAQ,EAAE;UAAG,CAAE,CAAE;UACvDF,MAAM,EAAE,CAAApF,eAAe,aAAfA,eAAe,uBAAfA,eAAe,CAAES,IAAI,MAAK,QAAS;UAC3C4E,QAAQ,EAAEzG,SAAS,IAAIoB,eAAe,IAAI,IAAK;UAAAoE,QAAA,EAE9C7F,KAAK,CAAC4G,2BAA2B,GAAG,UAAU,GAAG;QAAO,CACnD,CAAC;MAAA,CACN,CAAC,EACLjB,kBAAkB;IAAA,CAChB,CAAC;EAEV;AACF;AAEA,eAAevG,yBAAyB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridPartitionedTableModel.js","names":["Formatter","EmptyIrisGridModel","MissingPartitionError","isMissingPartitionError","isPartitionedTableWithBaseTable","partitionedTable","getBaseTable","IrisGridPartitionedTableModel","constructor","dh","formatter","arguments","length","undefined","_defineProperty","isPartitionRequired","isPartitionAwareSourceTable","isReversible","displayString","value","columnType","columnName","close","columns","partitionColumns","keyColumns","columnCount","getColumnIndexByName","findIndex","column","name","textForColumnHeader","depth","_this$columns$column$","partitionKeysTable","_this","_asyncToGenerator","getKeyTable","partitionBaseTable","_this2","partitionMergedTable","_this3","getMergedTable","partitionTable","partitions","_this4","table","getTable","e"],"sources":["../src/IrisGridPartitionedTableModel.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { Formatter } from '@deephaven/jsapi-utils';\nimport { type ColumnName } from './CommonTypes';\nimport EmptyIrisGridModel from './EmptyIrisGridModel';\nimport MissingPartitionError, {\n isMissingPartitionError,\n} from './MissingPartitionError';\nimport { type PartitionedGridModelProvider } from './PartitionedGridModel';\n\ntype PartitionedTableWithBaseTable = DhType.PartitionedTable & {\n getBaseTable: () => DhType.Table;\n};\n\nfunction isPartitionedTableWithBaseTable(\n partitionedTable: DhType.PartitionedTable\n): partitionedTable is PartitionedTableWithBaseTable {\n return (\n 'getBaseTable' in partitionedTable &&\n typeof partitionedTable.getBaseTable === 'function'\n );\n}\n\nclass IrisGridPartitionedTableModel\n extends EmptyIrisGridModel\n implements PartitionedGridModelProvider\n{\n readonly partitionedTable: DhType.PartitionedTable;\n\n /**\n * @param dh JSAPI instance\n * @param table Partitioned table to be used in the model\n * @param formatter The formatter to use when getting formats\n */\n constructor(\n dh: typeof DhType,\n partitionedTable: DhType.PartitionedTable,\n formatter = new Formatter(dh)\n ) {\n super(dh, formatter);\n this.partitionedTable = partitionedTable;\n }\n\n get isPartitionRequired(): boolean {\n return true;\n }\n\n get isPartitionAwareSourceTable(): boolean {\n return false;\n }\n\n get isReversible(): boolean {\n return false;\n }\n\n displayString(\n value: unknown,\n columnType: string,\n columnName?: ColumnName\n ): string {\n return '';\n }\n\n close(): void {\n this.partitionedTable.close();\n }\n\n get columns(): readonly DhType.Column[] {\n return this.partitionedTable.columns;\n }\n\n get partitionColumns(): readonly DhType.Column[] {\n return this.partitionedTable.keyColumns;\n }\n\n get columnCount(): number {\n return this.columns.length;\n }\n\n getColumnIndexByName(columnName: string): number {\n return this.columns.findIndex(column => column.name === columnName);\n }\n\n textForColumnHeader(\n column: number,\n depth?: number | undefined\n ): string | undefined {\n return this.columns[column].name ?? '';\n }\n\n async partitionKeysTable(): Promise<DhType.Table> {\n return this.partitionedTable.getKeyTable();\n }\n\n async partitionBaseTable(): Promise<DhType.Table> {\n if (isPartitionedTableWithBaseTable(this.partitionedTable)) {\n return this.partitionedTable.getBaseTable();\n }\n // Fallback to the key table if the base table API is not available\n return this.partitionedTable.getKeyTable();\n }\n\n async partitionMergedTable(): Promise<DhType.Table> {\n return this.partitionedTable.getMergedTable();\n }\n\n async partitionTable(partitions: unknown[]): Promise<DhType.Table> {\n try {\n const table = await this.partitionedTable.getTable(partitions);\n if (table == null) {\n // TODO: Will be unnecessary with https://github.com/deephaven/deephaven-core/pull/5050\n throw new MissingPartitionError('Partition not found');\n }\n return table;\n } catch (e) {\n if (!isMissingPartitionError(e)) {\n throw new MissingPartitionError('Unable to retrieve partition');\n } else {\n throw e;\n }\n }\n }\n}\n\nexport default IrisGridPartitionedTableModel;\n"],"mappings":";;;;;AAAA;;AAEA,SAASA,SAAS,QAAQ,wBAAwB;AAAC,OAE5CC,kBAAkB;AAAA,OAClBC,qBAAqB,IAC1BC,uBAAuB;AAQzB,SAASC,+BAA+BA,CACtCC,gBAAyC,EACU;EACnD,OACE,cAAc,IAAIA,gBAAgB,IAClC,OAAOA,gBAAgB,CAACC,YAAY,KAAK,UAAU;AAEvD;AAEA,MAAMC,6BAA6B,SACzBN,kBAAkB,CAE5B;EAGE;AACF;AACA;AACA;AACA;EACEO,WAAWA,CACTC,EAAiB,EACjBJ,gBAAyC,EAEzC;IAAA,IADAK,SAAS,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAIX,SAAS,CAACS,EAAE,CAAC;IAE7B,KAAK,CAACA,EAAE,EAAEC,SAAS,CAAC;IAACI,eAAA;IACrB,IAAI,CAACT,gBAAgB,GAAGA,gBAAgB;EAC1C;EAEA,IAAIU,mBAAmBA,CAAA,EAAY;IACjC,OAAO,IAAI;EACb;EAEA,IAAIC,2BAA2BA,CAAA,EAAY;IACzC,OAAO,KAAK;EACd;EAEA,IAAIC,YAAYA,CAAA,EAAY;IAC1B,OAAO,KAAK;EACd;EAEAC,aAAaA,CACXC,KAAc,EACdC,UAAkB,EAClBC,UAAuB,EACf;IACR,OAAO,EAAE;EACX;EAEAC,KAAKA,CAAA,EAAS;IACZ,IAAI,CAACjB,gBAAgB,CAACiB,KAAK,CAAC,CAAC;EAC/B;EAEA,IAAIC,OAAOA,CAAA,EAA6B;IACtC,OAAO,IAAI,CAAClB,gBAAgB,CAACkB,OAAO;EACtC;EAEA,IAAIC,gBAAgBA,CAAA,EAA6B;IAC/C,OAAO,IAAI,CAACnB,gBAAgB,CAACoB,UAAU;EACzC;EAEA,IAAIC,WAAWA,CAAA,EAAW;IACxB,OAAO,IAAI,CAACH,OAAO,CAACX,MAAM;EAC5B;EAEAe,oBAAoBA,CAACN,UAAkB,EAAU;IAC/C,OAAO,IAAI,CAACE,OAAO,CAACK,SAAS,CAACC,MAAM,IAAIA,MAAM,CAACC,IAAI,KAAKT,UAAU,CAAC;EACrE;EAEAU,mBAAmBA,CACjBF,MAAc,EACdG,KAA0B,EACN;IAAA,IAAAC,qBAAA;IACpB,QAAAA,qBAAA,GAAO,IAAI,CAACV,OAAO,CAACM,MAAM,CAAC,CAACC,IAAI,cAAAG,qBAAA,cAAAA,qBAAA,GAAI,EAAE;EACxC;EAEMC,kBAAkBA,CAAA,EAA0B;IAAA,IAAAC,KAAA;IAAA,OAAAC,iBAAA;MAChD,OAAOD,KAAI,CAAC9B,gBAAgB,CAACgC,WAAW,CAAC,CAAC;IAAC;EAC7C;EAEMC,kBAAkBA,CAAA,EAA0B;IAAA,IAAAC,MAAA;IAAA,OAAAH,iBAAA;MAChD,IAAIhC,+BAA+B,CAACmC,MAAI,CAAClC,gBAAgB,CAAC,EAAE;QAC1D,OAAOkC,MAAI,CAAClC,gBAAgB,CAACC,YAAY,CAAC,CAAC;MAC7C;MACA;MACA,OAAOiC,MAAI,CAAClC,gBAAgB,CAACgC,WAAW,CAAC,CAAC;IAAC;EAC7C;EAEMG,oBAAoBA,CAAA,EAA0B;IAAA,IAAAC,MAAA;IAAA,OAAAL,iBAAA;MAClD,OAAOK,MAAI,CAACpC,gBAAgB,CAACqC,cAAc,CAAC,CAAC;IAAC;EAChD;EAEMC,cAAcA,CAACC,UAAqB,EAAyB;IAAA,IAAAC,MAAA;IAAA,OAAAT,iBAAA;MACjE,IAAI;QACF,IAAMU,KAAK,SAASD,MAAI,CAACxC,gBAAgB,CAAC0C,QAAQ,CAACH,UAAU,CAAC;QAC9D,IAAIE,KAAK,IAAI,IAAI,EAAE;UACjB;UACA,MAAM,IAAI5C,qBAAqB,CAAC,qBAAqB,CAAC;QACxD;QACA,OAAO4C,KAAK;MACd,CAAC,CAAC,OAAOE,CAAC,EAAE;QACV,IAAI,CAAC7C,uBAAuB,CAAC6C,CAAC,CAAC,EAAE;UAC/B,MAAM,IAAI9C,qBAAqB,CAAC,8BAA8B,CAAC;QACjE,CAAC,MAAM;UACL,MAAM8C,CAAC;QACT;MACF;IAAC;EACH;AACF;AAEA,eAAezC,6BAA6B"}
1
+ {"version":3,"file":"IrisGridPartitionedTableModel.js","names":["Formatter","EmptyIrisGridModel","MissingPartitionError","isMissingPartitionError","isPartitionedTableWithBaseTable","partitionedTable","getBaseTable","IrisGridPartitionedTableModel","constructor","dh","formatter","arguments","length","undefined","_defineProperty","isPartitionRequired","isPartitionAwareSourceTable","isReversible","displayString","value","columnType","columnName","close","columns","partitionColumns","keyColumns","columnCount","getColumnIndexByName","findIndex","column","name","textForColumnHeader","depth","_this$columns$column$","partitionKeysTable","_this","_asyncToGenerator","getKeyTable","partitionBaseTable","_this2","partitionMergedTable","_this3","getMergedTable","partitionTable","partitions","_this4","table","getTable","e"],"sources":["../src/IrisGridPartitionedTableModel.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { Formatter } from '@deephaven/jsapi-utils';\nimport { type ColumnName } from './CommonTypes';\nimport EmptyIrisGridModel from './EmptyIrisGridModel';\nimport MissingPartitionError, {\n isMissingPartitionError,\n} from './MissingPartitionError';\nimport { type PartitionedGridModelProvider } from './PartitionedGridModel';\n\ntype PartitionedTableWithBaseTable = DhType.PartitionedTable & {\n getBaseTable: () => DhType.Table;\n};\n\nfunction isPartitionedTableWithBaseTable(\n partitionedTable: DhType.PartitionedTable\n): partitionedTable is PartitionedTableWithBaseTable {\n return (\n 'getBaseTable' in partitionedTable &&\n typeof partitionedTable.getBaseTable === 'function'\n );\n}\n\nclass IrisGridPartitionedTableModel\n extends EmptyIrisGridModel\n implements PartitionedGridModelProvider\n{\n readonly partitionedTable: DhType.PartitionedTable;\n\n /**\n * @param dh JSAPI instance\n * @param table Partitioned table to be used in the model\n * @param formatter The formatter to use when getting formats\n */\n constructor(\n dh: typeof DhType,\n partitionedTable: DhType.PartitionedTable,\n formatter = new Formatter(dh)\n ) {\n super(dh, formatter);\n this.partitionedTable = partitionedTable;\n }\n\n get isPartitionRequired(): boolean {\n return true;\n }\n\n get isPartitionAwareSourceTable(): boolean {\n return false;\n }\n\n get isReversible(): boolean {\n return false;\n }\n\n displayString(\n value: unknown,\n columnType: string,\n columnName?: ColumnName\n ): string {\n return '';\n }\n\n close(): void {\n this.partitionedTable.close();\n }\n\n get columns(): readonly DhType.Column[] {\n return this.partitionedTable.columns;\n }\n\n get partitionColumns(): readonly DhType.Column[] {\n return this.partitionedTable.keyColumns;\n }\n\n get columnCount(): number {\n return this.columns.length;\n }\n\n getColumnIndexByName(columnName: string): number {\n return this.columns.findIndex(column => column.name === columnName);\n }\n\n textForColumnHeader(\n column: number,\n depth?: number | undefined\n ): string | undefined {\n return this.columns[column].name ?? '';\n }\n\n async partitionKeysTable(): Promise<DhType.Table> {\n return this.partitionedTable.getKeyTable();\n }\n\n async partitionBaseTable(): Promise<DhType.Table> {\n if (isPartitionedTableWithBaseTable(this.partitionedTable)) {\n return this.partitionedTable.getBaseTable();\n }\n // Fallback to the key table if the base table API is not available\n return this.partitionedTable.getKeyTable();\n }\n\n async partitionMergedTable(): Promise<DhType.Table> {\n return this.partitionedTable.getMergedTable();\n }\n\n async partitionTable(partitions: unknown[]): Promise<DhType.Table> {\n try {\n const table = await this.partitionedTable.getTable(partitions);\n if (table == null) {\n // TODO: Will be unnecessary with https://github.com/deephaven/deephaven-core/pull/5050\n throw new MissingPartitionError('Partition not found');\n }\n return table;\n } catch (e) {\n if (!isMissingPartitionError(e)) {\n throw new MissingPartitionError('Unable to retrieve partition');\n } else {\n throw e;\n }\n }\n }\n}\n\nexport default IrisGridPartitionedTableModel;\n"],"mappings":"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","ignoreList":[]}
@@ -31,13 +31,6 @@ function makeModel(dh, table, formatter, inputTable) {
31
31
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
32
32
  // @ts-ignore
33
33
  class IrisGridProxyModel extends IrisGridModel {
34
- /**
35
- * @param dh JSAPI instance
36
- * @param table Iris data table to be used in the model
37
- * @param formatter The formatter to use when getting formats
38
- * @param inputTable Iris input table associated with this table
39
- */
40
-
41
34
  constructor(dh, table) {
42
35
  var formatter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Formatter(dh);
43
36
  var inputTable = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
@@ -45,6 +38,12 @@ class IrisGridProxyModel extends IrisGridModel {
45
38
 
46
39
  // The EventTarget methods must be bound to this instance
47
40
  // Otherwise they throw errors because of the Proxy
41
+ /**
42
+ * @param dh JSAPI instance
43
+ * @param table Iris data table to be used in the model
44
+ * @param formatter The formatter to use when getting formats
45
+ * @param inputTable Iris input table associated with this table
46
+ */
48
47
  _defineProperty(this, "model", void 0);
49
48
  _defineProperty(this, "dh", void 0);
50
49
  _defineProperty(this, "originalModel", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridProxyModel.js","names":["deepEqual","Formatter","TableUtils","Log","EventShimCustomEvent","PromiseUtils","IrisGridTableModel","IrisGridPartitionedTableModel","IrisGridTreeTableModel","IrisGridModel","isIrisGridTableModelTemplate","isPartitionedGridModelProvider","isPartitionedGridModel","log","module","makeModel","dh","table","formatter","inputTable","isTreeTable","isPartitionedTable","IrisGridProxyModel","constructor","arguments","length","undefined","_defineProperty","top","bottom","columns","currentViewport","model","setViewport","addEventListener","bind","removeEventListener","dispatchEvent","handleModelEvent","originalModel","modelPromise","rollup","partition","selectDistinct","Proxy","get","target","prop","receiver","_Object$getOwnPropert","proxyHasGetter","Object","getOwnPropertyDescriptor","getPrototypeOf","Reflect","proxyHasProp","prototype","hasOwnProperty","call","proxyHasFn","trueTarget","set","value","_Object$getOwnPropert2","proxyHasSetter","close","cancel","event","debug2","detail","type","setModel","debug","oldModel","oldColumns","listenerCount","addListeners","EVENT","COLUMNS_CHANGED","TABLE_CHANGED","setNextModel","removeListeners","makeCancelable","then","catch","err","isCanceled","error","REQUEST_FAILED","startListening","stopListening","events","keys","i","isCustomColumnsAvailable","isSelectDistinctAvailable","selectDistinctColumns","isRollupAvailable","originalColumns","partitionColumns","partitionConfig","isPartitionRequired","Error","Promise","resolve","mode","partitionBaseTable","partitionMergedTable","partitionTable","partitions","partitionKeysTable","rollupConfig","columnNames","map","name","find","column","filter","isFilterRequired","isPartitionAwareSourceTable","columnAlignmentMap"],"sources":["../src/IrisGridProxyModel.ts"],"sourcesContent":["import deepEqual from 'fast-deep-equal';\nimport { Formatter, TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport {\n type CancelablePromise,\n EventShimCustomEvent,\n PromiseUtils,\n} from '@deephaven/utils';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport IrisGridTableModel from './IrisGridTableModel';\nimport IrisGridPartitionedTableModel from './IrisGridPartitionedTableModel';\nimport IrisGridTreeTableModel from './IrisGridTreeTableModel';\nimport IrisGridModel from './IrisGridModel';\nimport { type ColumnName } from './CommonTypes';\nimport { isIrisGridTableModelTemplate } from './IrisGridTableModelTemplate';\nimport {\n type PartitionConfig,\n type PartitionedGridModel,\n isPartitionedGridModelProvider,\n isPartitionedGridModel,\n} from './PartitionedGridModel';\n\nconst log = Log.module('IrisGridProxyModel');\n\nfunction makeModel(\n dh: typeof DhType,\n table: DhType.Table | DhType.TreeTable | DhType.PartitionedTable,\n formatter?: Formatter,\n inputTable?: DhType.InputTable | null\n): IrisGridModel {\n if (TableUtils.isTreeTable(table)) {\n return new IrisGridTreeTableModel(dh, table, formatter);\n }\n if (TableUtils.isPartitionedTable(table)) {\n return new IrisGridPartitionedTableModel(dh, table, formatter);\n }\n return new IrisGridTableModel(dh, table, formatter, inputTable);\n}\n\n/**\n * Model which proxies calls to other IrisGridModels.\n * This allows for operations that generate new tables, like rollups.\n * The proxy model will call any methods it has implemented and delegate any\n * it does not implement to the underlying model.\n */\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nclass IrisGridProxyModel extends IrisGridModel implements PartitionedGridModel {\n /**\n * @param dh JSAPI instance\n * @param table Iris data table to be used in the model\n * @param formatter The formatter to use when getting formats\n * @param inputTable Iris input table associated with this table\n */\n\n model: IrisGridModel;\n\n dh: typeof DhType;\n\n private originalModel: IrisGridModel;\n\n private modelPromise: CancelablePromise<IrisGridModel> | null;\n\n private rollup: DhType.RollupConfig | null;\n\n private partition: PartitionConfig | null;\n\n private selectDistinct: ColumnName[];\n\n private currentViewport?: {\n top: number;\n bottom: number;\n columns?: DhType.Column[];\n };\n\n constructor(\n dh: typeof DhType,\n table: DhType.Table | DhType.TreeTable | DhType.PartitionedTable,\n formatter = new Formatter(dh),\n inputTable: DhType.InputTable | null = null\n ) {\n super(dh);\n\n // The EventTarget methods must be bound to this instance\n // Otherwise they throw errors because of the Proxy\n this.addEventListener = this.addEventListener.bind(this);\n this.removeEventListener = this.removeEventListener.bind(this);\n this.dispatchEvent = this.dispatchEvent.bind(this);\n\n this.handleModelEvent = this.handleModelEvent.bind(this);\n\n const model = makeModel(dh, table, formatter, inputTable);\n this.dh = dh;\n this.originalModel = model;\n this.model = model;\n this.modelPromise = null;\n this.rollup = null;\n this.partition = null;\n this.selectDistinct = [];\n\n // eslint-disable-next-line no-constructor-return\n return new Proxy(this, {\n // We want to use any properties on the proxy model if defined\n // If not, then proxy to the underlying model\n get(target, prop, receiver) {\n // Does this class have a getter for the prop\n // Getter functions are on the prototype\n const proxyHasGetter =\n Object.getOwnPropertyDescriptor(Object.getPrototypeOf(target), prop)\n ?.get != null;\n\n if (proxyHasGetter) {\n return Reflect.get(target, prop, receiver);\n }\n\n // Does this class implement the property\n const proxyHasProp = Object.prototype.hasOwnProperty.call(target, prop);\n\n // Does the class implement a function for the property\n const proxyHasFn = Object.prototype.hasOwnProperty.call(\n Object.getPrototypeOf(target),\n prop\n );\n\n const trueTarget = proxyHasProp || proxyHasFn ? target : target.model;\n return Reflect.get(trueTarget, prop);\n },\n set(target, prop, value) {\n const proxyHasSetter =\n Object.getOwnPropertyDescriptor(Object.getPrototypeOf(target), prop)\n ?.set != null;\n\n const proxyHasProp = Object.prototype.hasOwnProperty.call(target, prop);\n\n if (proxyHasSetter || proxyHasProp) {\n return Reflect.set(target, prop, value, target);\n }\n\n return Reflect.set(target.model, prop, value, target.model);\n },\n });\n }\n\n close(): void {\n this.originalModel.close();\n if (this.model !== this.originalModel) {\n this.model.close();\n }\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n }\n }\n\n handleModelEvent(event: CustomEvent): void {\n log.debug2('handleModelEvent', event);\n\n const { detail, type } = event;\n this.dispatchEvent(new EventShimCustomEvent(type, { detail }));\n }\n\n setModel(model: IrisGridModel): void {\n log.debug('setModel', model);\n\n const oldModel = this.model;\n const { columns: oldColumns } = oldModel;\n\n if (oldModel !== this.originalModel) {\n oldModel.close();\n }\n\n this.model = model;\n\n if (this.listenerCount > 0) {\n this.addListeners(model);\n }\n\n if (oldColumns !== model.columns) {\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.COLUMNS_CHANGED, {\n detail: model.columns,\n })\n );\n } else if (this.currentViewport != null) {\n // If the columns haven't changed, the current viewport should still valid, and needs to be set on the new model\n const { top, bottom, columns } = this.currentViewport;\n model.setViewport(top, bottom, columns);\n }\n\n if (isIrisGridTableModelTemplate(model)) {\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.TABLE_CHANGED, {\n detail: model.table,\n })\n );\n }\n }\n\n setNextModel(modelPromise: Promise<IrisGridModel>): void {\n log.debug2('setNextModel');\n\n if (this.modelPromise) {\n this.modelPromise.cancel();\n }\n\n if (this.listenerCount > 0) {\n this.removeListeners(this.model);\n }\n\n this.modelPromise = PromiseUtils.makeCancelable(\n modelPromise,\n (model: IrisGridModel) => model.close()\n );\n this.modelPromise\n .then(model => {\n this.modelPromise = null;\n this.setModel(model);\n })\n .catch((err: unknown) => {\n if (PromiseUtils.isCanceled(err)) {\n log.debug2('setNextModel cancelled');\n return;\n }\n\n log.error('Unable to set next model', err);\n this.modelPromise = null;\n\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.REQUEST_FAILED, {\n detail: err,\n })\n );\n });\n }\n\n startListening(): void {\n super.startListening();\n\n this.addListeners(this.model);\n }\n\n stopListening(): void {\n super.stopListening();\n\n this.removeListeners(this.model);\n }\n\n addListeners(model: IrisGridModel): void {\n const events = Object.keys(IrisGridModel.EVENT);\n for (let i = 0; i < events.length; i += 1) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n model.addEventListener(events[i], this.handleModelEvent);\n }\n }\n\n removeListeners(model: IrisGridModel): void {\n const events = Object.keys(IrisGridModel.EVENT);\n for (let i = 0; i < events.length; i += 1) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n model.removeEventListener(events[i], this.handleModelEvent);\n }\n }\n\n get isCustomColumnsAvailable(): boolean {\n return (\n this.model.isCustomColumnsAvailable &&\n // Disable for selectDistinct tables\n !(this.isSelectDistinctAvailable && this.selectDistinctColumns.length > 0)\n );\n }\n\n get isRollupAvailable(): boolean {\n return (\n (this.originalModel.isRollupAvailable || this.rollup != null) &&\n this.selectDistinct.length === 0\n );\n }\n\n get isSelectDistinctAvailable(): boolean {\n return (\n (this.originalModel.isSelectDistinctAvailable ||\n this.selectDistinct.length > 0) &&\n this.rollup == null\n );\n }\n\n get originalColumns(): readonly DhType.Column[] {\n return this.originalModel.columns;\n }\n\n get partitionColumns(): readonly DhType.Column[] {\n if (!isPartitionedGridModelProvider(this.originalModel)) {\n return [];\n }\n return this.originalModel.partitionColumns;\n }\n\n get partitionConfig(): PartitionConfig | null {\n if (\n !isPartitionedGridModelProvider(this.originalModel) ||\n !this.originalModel.isPartitionRequired\n ) {\n if (!isPartitionedGridModel(this.originalModel)) {\n // @ts-expect-error If the original model has an undefined partitionConfig return undefined to make the proxy model also return false in isPartitionedGridModel\n return undefined;\n }\n return null;\n }\n return this.partition;\n }\n\n set partitionConfig(partitionConfig: PartitionConfig | null) {\n if (!this.isPartitionRequired) {\n throw new Error('Partitions are not available');\n }\n log.debug('set partitionConfig', partitionConfig);\n this.partition = partitionConfig;\n\n let modelPromise = Promise.resolve(this.originalModel);\n if (\n partitionConfig != null &&\n isPartitionedGridModelProvider(this.originalModel)\n ) {\n if (partitionConfig.mode === 'keys') {\n modelPromise = this.originalModel\n .partitionBaseTable()\n .then(table => makeModel(this.dh, table, this.formatter));\n } else if (partitionConfig.mode === 'merged') {\n modelPromise = this.originalModel\n .partitionMergedTable()\n .then(table => makeModel(this.dh, table, this.formatter));\n } else {\n modelPromise = this.originalModel\n .partitionTable(partitionConfig.partitions)\n .then(table => makeModel(this.dh, table, this.formatter));\n }\n }\n\n this.setNextModel(modelPromise);\n }\n\n partitionKeysTable(): Promise<DhType.Table> {\n if (!isPartitionedGridModelProvider(this.originalModel)) {\n throw new Error('Partitions are not available');\n }\n return this.originalModel.partitionKeysTable();\n }\n\n partitionMergedTable(): Promise<DhType.Table> {\n if (!isPartitionedGridModelProvider(this.originalModel)) {\n throw new Error('Partitions are not available');\n }\n return this.originalModel.partitionMergedTable();\n }\n\n partitionTable(partitions: unknown[]): Promise<DhType.Table> {\n if (!isPartitionedGridModelProvider(this.originalModel)) {\n throw new Error('Partitions are not available');\n }\n return this.originalModel.partitionTable(partitions);\n }\n\n get rollupConfig(): DhType.RollupConfig | null {\n return this.rollup;\n }\n\n set rollupConfig(rollupConfig: DhType.RollupConfig | null) {\n log.debug('set rollupConfig', rollupConfig);\n\n if (!this.isRollupAvailable) {\n throw new Error('Rollup Rows are not available');\n }\n\n // Prevent model update when IrisGridModelUpdater is mounted\n // if rollup is already initialized in IrisGridPanel\n if (deepEqual(rollupConfig, this.rollup)) {\n return;\n }\n\n this.rollup = rollupConfig;\n\n let modelPromise = Promise.resolve(this.originalModel);\n\n if (\n isIrisGridTableModelTemplate(this.originalModel) &&\n rollupConfig != null\n ) {\n modelPromise = this.originalModel.table\n .rollup(rollupConfig)\n .then(table => makeModel(this.dh, table, this.formatter));\n }\n this.setNextModel(modelPromise);\n }\n\n get selectDistinctColumns(): ColumnName[] {\n return this.selectDistinct;\n }\n\n set selectDistinctColumns(columnNames: string[]) {\n log.debug('set selectDistinctColumns', columnNames);\n\n if (!this.isSelectDistinctAvailable) {\n throw new Error('Select distinct is not available');\n }\n\n if (\n columnNames === this.selectDistinctColumns ||\n (columnNames.length === 0 && this.selectDistinctColumns.length === 0)\n ) {\n log.debug('Ignore same selectDistinctColumns', columnNames);\n return;\n }\n\n this.selectDistinct = columnNames;\n\n const selectDistinctColumns = columnNames\n .map(name => this.originalColumns.find(column => column.name === name))\n .filter(column => column != null) as DhType.Column[];\n\n let modelPromise = Promise.resolve(this.originalModel);\n\n if (\n isIrisGridTableModelTemplate(this.originalModel) &&\n selectDistinctColumns.length > 0\n ) {\n modelPromise = this.originalModel.table\n .selectDistinct(selectDistinctColumns)\n .then(table => makeModel(this.dh, table, this.formatter));\n }\n this.setNextModel(modelPromise);\n }\n\n get isFilterRequired(): boolean {\n return this.originalModel.isFilterRequired;\n }\n\n get isPartitionRequired(): boolean {\n // @ts-expect-error If the original model is not a partitioned model return undefined to make the proxy model also return false in isPartitionedGridModelProvider\n return isPartitionedGridModelProvider(this.originalModel)\n ? this.originalModel.isPartitionRequired\n : undefined;\n }\n\n get isPartitionAwareSourceTable(): boolean {\n return (\n isPartitionedGridModelProvider(this.originalModel) &&\n this.originalModel.isPartitionAwareSourceTable\n );\n }\n\n get formatter(): Formatter {\n return this.originalModel.formatter;\n }\n\n set formatter(formatter: Formatter) {\n this.originalModel.formatter = formatter;\n }\n\n get columnAlignmentMap(): ReadonlyMap<string, CanvasTextAlign> {\n return this.originalModel.columnAlignmentMap;\n }\n\n set columnAlignmentMap(columnAlignmentMap: Map<string, CanvasTextAlign>) {\n this.originalModel.columnAlignmentMap = columnAlignmentMap;\n }\n\n setViewport = (\n top: number,\n bottom: number,\n columns?: DhType.Column[]\n ): void => {\n this.currentViewport = { top, bottom, columns };\n this.model.setViewport(top, bottom, columns);\n };\n}\n\nexport default IrisGridProxyModel;\n"],"mappings":";;;AAAA,OAAOA,SAAS,MAAM,iBAAiB;AACvC,SAASC,SAAS,EAAEC,UAAU,QAAQ,wBAAwB;AAC9D,OAAOC,GAAG,MAAM,gBAAgB;AAChC,SAEEC,oBAAoB,EACpBC,YAAY,QACP,kBAAkB;AAAC,OAEnBC,kBAAkB;AAAA,OAClBC,6BAA6B;AAAA,OAC7BC,sBAAsB;AAAA,OACtBC,aAAa;AAAA,SAEXC,4BAA4B;AAAA,SAInCC,8BAA8B,EAC9BC,sBAAsB;AAGxB,IAAMC,GAAG,GAAGV,GAAG,CAACW,MAAM,CAAC,oBAAoB,CAAC;AAE5C,SAASC,SAASA,CAChBC,EAAiB,EACjBC,KAAgE,EAChEC,SAAqB,EACrBC,UAAqC,EACtB;EACf,IAAIjB,UAAU,CAACkB,WAAW,CAACH,KAAK,CAAC,EAAE;IACjC,OAAO,IAAIT,sBAAsB,CAACQ,EAAE,EAAEC,KAAK,EAAEC,SAAS,CAAC;EACzD;EACA,IAAIhB,UAAU,CAACmB,kBAAkB,CAACJ,KAAK,CAAC,EAAE;IACxC,OAAO,IAAIV,6BAA6B,CAACS,EAAE,EAAEC,KAAK,EAAEC,SAAS,CAAC;EAChE;EACA,OAAO,IAAIZ,kBAAkB,CAACU,EAAE,EAAEC,KAAK,EAAEC,SAAS,EAAEC,UAAU,CAAC;AACjE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMG,kBAAkB,SAASb,aAAa,CAAiC;EAC7E;AACF;AACA;AACA;AACA;AACA;;EAsBEc,WAAWA,CACTP,EAAiB,EACjBC,KAAgE,EAGhE;IAAA,IAFAC,SAAS,GAAAM,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAIvB,SAAS,CAACe,EAAE,CAAC;IAAA,IAC7BG,UAAoC,GAAAK,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;IAE3C,KAAK,CAACR,EAAE,CAAC;;IAET;IACA;IAAAW,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA,sBA+XY,CACZC,GAAW,EACXC,MAAc,EACdC,OAAyB,KAChB;MACT,IAAI,CAACC,eAAe,GAAG;QAAEH,GAAG;QAAEC,MAAM;QAAEC;MAAQ,CAAC;MAC/C,IAAI,CAACE,KAAK,CAACC,WAAW,CAACL,GAAG,EAAEC,MAAM,EAAEC,OAAO,CAAC;IAC9C,CAAC;IArYC,IAAI,CAACI,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACC,IAAI,CAAC,IAAI,CAAC;IACxD,IAAI,CAACC,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAACD,IAAI,CAAC,IAAI,CAAC;IAC9D,IAAI,CAACE,aAAa,GAAG,IAAI,CAACA,aAAa,CAACF,IAAI,CAAC,IAAI,CAAC;IAElD,IAAI,CAACG,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACH,IAAI,CAAC,IAAI,CAAC;IAExD,IAAMH,KAAK,GAAGjB,SAAS,CAACC,EAAE,EAAEC,KAAK,EAAEC,SAAS,EAAEC,UAAU,CAAC;IACzD,IAAI,CAACH,EAAE,GAAGA,EAAE;IACZ,IAAI,CAACuB,aAAa,GAAGP,KAAK;IAC1B,IAAI,CAACA,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACQ,YAAY,GAAG,IAAI;IACxB,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB,IAAI,CAACC,SAAS,GAAG,IAAI;IACrB,IAAI,CAACC,cAAc,GAAG,EAAE;;IAExB;IACA,OAAO,IAAIC,KAAK,CAAC,IAAI,EAAE;MACrB;MACA;MACAC,GAAGA,CAACC,MAAM,EAAEC,IAAI,EAAEC,QAAQ,EAAE;QAAA,IAAAC,qBAAA;QAC1B;QACA;QACA,IAAMC,cAAc,GAClB,EAAAD,qBAAA,GAAAE,MAAM,CAACC,wBAAwB,CAACD,MAAM,CAACE,cAAc,CAACP,MAAM,CAAC,EAAEC,IAAI,CAAC,cAAAE,qBAAA,uBAApEA,qBAAA,CACIJ,GAAG,KAAI,IAAI;QAEjB,IAAIK,cAAc,EAAE;UAClB,OAAOI,OAAO,CAACT,GAAG,CAACC,MAAM,EAAEC,IAAI,EAAEC,QAAQ,CAAC;QAC5C;;QAEA;QACA,IAAMO,YAAY,GAAGJ,MAAM,CAACK,SAAS,CAACC,cAAc,CAACC,IAAI,CAACZ,MAAM,EAAEC,IAAI,CAAC;;QAEvE;QACA,IAAMY,UAAU,GAAGR,MAAM,CAACK,SAAS,CAACC,cAAc,CAACC,IAAI,CACrDP,MAAM,CAACE,cAAc,CAACP,MAAM,CAAC,EAC7BC,IACF,CAAC;QAED,IAAMa,UAAU,GAAGL,YAAY,IAAII,UAAU,GAAGb,MAAM,GAAGA,MAAM,CAACd,KAAK;QACrE,OAAOsB,OAAO,CAACT,GAAG,CAACe,UAAU,EAAEb,IAAI,CAAC;MACtC,CAAC;MACDc,GAAGA,CAACf,MAAM,EAAEC,IAAI,EAAEe,KAAK,EAAE;QAAA,IAAAC,sBAAA;QACvB,IAAMC,cAAc,GAClB,EAAAD,sBAAA,GAAAZ,MAAM,CAACC,wBAAwB,CAACD,MAAM,CAACE,cAAc,CAACP,MAAM,CAAC,EAAEC,IAAI,CAAC,cAAAgB,sBAAA,uBAApEA,sBAAA,CACIF,GAAG,KAAI,IAAI;QAEjB,IAAMN,YAAY,GAAGJ,MAAM,CAACK,SAAS,CAACC,cAAc,CAACC,IAAI,CAACZ,MAAM,EAAEC,IAAI,CAAC;QAEvE,IAAIiB,cAAc,IAAIT,YAAY,EAAE;UAClC,OAAOD,OAAO,CAACO,GAAG,CAACf,MAAM,EAAEC,IAAI,EAAEe,KAAK,EAAEhB,MAAM,CAAC;QACjD;QAEA,OAAOQ,OAAO,CAACO,GAAG,CAACf,MAAM,CAACd,KAAK,EAAEe,IAAI,EAAEe,KAAK,EAAEhB,MAAM,CAACd,KAAK,CAAC;MAC7D;IACF,CAAC,CAAC;EACJ;EAEAiC,KAAKA,CAAA,EAAS;IACZ,IAAI,CAAC1B,aAAa,CAAC0B,KAAK,CAAC,CAAC;IAC1B,IAAI,IAAI,CAACjC,KAAK,KAAK,IAAI,CAACO,aAAa,EAAE;MACrC,IAAI,CAACP,KAAK,CAACiC,KAAK,CAAC,CAAC;IACpB;IACA,IAAI,IAAI,CAACzB,YAAY,IAAI,IAAI,EAAE;MAC7B,IAAI,CAACA,YAAY,CAAC0B,MAAM,CAAC,CAAC;IAC5B;EACF;EAEA5B,gBAAgBA,CAAC6B,KAAkB,EAAQ;IACzCtD,GAAG,CAACuD,MAAM,CAAC,kBAAkB,EAAED,KAAK,CAAC;IAErC,IAAM;MAAEE,MAAM;MAAEC;IAAK,CAAC,GAAGH,KAAK;IAC9B,IAAI,CAAC9B,aAAa,CAAC,IAAIjC,oBAAoB,CAACkE,IAAI,EAAE;MAAED;IAAO,CAAC,CAAC,CAAC;EAChE;EAEAE,QAAQA,CAACvC,KAAoB,EAAQ;IACnCnB,GAAG,CAAC2D,KAAK,CAAC,UAAU,EAAExC,KAAK,CAAC;IAE5B,IAAMyC,QAAQ,GAAG,IAAI,CAACzC,KAAK;IAC3B,IAAM;MAAEF,OAAO,EAAE4C;IAAW,CAAC,GAAGD,QAAQ;IAExC,IAAIA,QAAQ,KAAK,IAAI,CAAClC,aAAa,EAAE;MACnCkC,QAAQ,CAACR,KAAK,CAAC,CAAC;IAClB;IAEA,IAAI,CAACjC,KAAK,GAAGA,KAAK;IAElB,IAAI,IAAI,CAAC2C,aAAa,GAAG,CAAC,EAAE;MAC1B,IAAI,CAACC,YAAY,CAAC5C,KAAK,CAAC;IAC1B;IAEA,IAAI0C,UAAU,KAAK1C,KAAK,CAACF,OAAO,EAAE;MAChC,IAAI,CAACO,aAAa,CAChB,IAAIjC,oBAAoB,CAACK,aAAa,CAACoE,KAAK,CAACC,eAAe,EAAE;QAC5DT,MAAM,EAAErC,KAAK,CAACF;MAChB,CAAC,CACH,CAAC;IACH,CAAC,MAAM,IAAI,IAAI,CAACC,eAAe,IAAI,IAAI,EAAE;MACvC;MACA,IAAM;QAAEH,GAAG;QAAEC,MAAM;QAAEC;MAAQ,CAAC,GAAG,IAAI,CAACC,eAAe;MACrDC,KAAK,CAACC,WAAW,CAACL,GAAG,EAAEC,MAAM,EAAEC,OAAO,CAAC;IACzC;IAEA,IAAIpB,4BAA4B,CAACsB,KAAK,CAAC,EAAE;MACvC,IAAI,CAACK,aAAa,CAChB,IAAIjC,oBAAoB,CAACK,aAAa,CAACoE,KAAK,CAACE,aAAa,EAAE;QAC1DV,MAAM,EAAErC,KAAK,CAACf;MAChB,CAAC,CACH,CAAC;IACH;EACF;EAEA+D,YAAYA,CAACxC,YAAoC,EAAQ;IACvD3B,GAAG,CAACuD,MAAM,CAAC,cAAc,CAAC;IAE1B,IAAI,IAAI,CAAC5B,YAAY,EAAE;MACrB,IAAI,CAACA,YAAY,CAAC0B,MAAM,CAAC,CAAC;IAC5B;IAEA,IAAI,IAAI,CAACS,aAAa,GAAG,CAAC,EAAE;MAC1B,IAAI,CAACM,eAAe,CAAC,IAAI,CAACjD,KAAK,CAAC;IAClC;IAEA,IAAI,CAACQ,YAAY,GAAGnC,YAAY,CAAC6E,cAAc,CAC7C1C,YAAY,EACXR,KAAoB,IAAKA,KAAK,CAACiC,KAAK,CAAC,CACxC,CAAC;IACD,IAAI,CAACzB,YAAY,CACd2C,IAAI,CAACnD,KAAK,IAAI;MACb,IAAI,CAACQ,YAAY,GAAG,IAAI;MACxB,IAAI,CAAC+B,QAAQ,CAACvC,KAAK,CAAC;IACtB,CAAC,CAAC,CACDoD,KAAK,CAAEC,GAAY,IAAK;MACvB,IAAIhF,YAAY,CAACiF,UAAU,CAACD,GAAG,CAAC,EAAE;QAChCxE,GAAG,CAACuD,MAAM,CAAC,wBAAwB,CAAC;QACpC;MACF;MAEAvD,GAAG,CAAC0E,KAAK,CAAC,0BAA0B,EAAEF,GAAG,CAAC;MAC1C,IAAI,CAAC7C,YAAY,GAAG,IAAI;MAExB,IAAI,CAACH,aAAa,CAChB,IAAIjC,oBAAoB,CAACK,aAAa,CAACoE,KAAK,CAACW,cAAc,EAAE;QAC3DnB,MAAM,EAAEgB;MACV,CAAC,CACH,CAAC;IACH,CAAC,CAAC;EACN;EAEAI,cAAcA,CAAA,EAAS;IACrB,KAAK,CAACA,cAAc,CAAC,CAAC;IAEtB,IAAI,CAACb,YAAY,CAAC,IAAI,CAAC5C,KAAK,CAAC;EAC/B;EAEA0D,aAAaA,CAAA,EAAS;IACpB,KAAK,CAACA,aAAa,CAAC,CAAC;IAErB,IAAI,CAACT,eAAe,CAAC,IAAI,CAACjD,KAAK,CAAC;EAClC;EAEA4C,YAAYA,CAAC5C,KAAoB,EAAQ;IACvC,IAAM2D,MAAM,GAAGxC,MAAM,CAACyC,IAAI,CAACnF,aAAa,CAACoE,KAAK,CAAC;IAC/C,KAAK,IAAIgB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,MAAM,CAAClE,MAAM,EAAEoE,CAAC,IAAI,CAAC,EAAE;MACzC;MACA;MACA7D,KAAK,CAACE,gBAAgB,CAACyD,MAAM,CAACE,CAAC,CAAC,EAAE,IAAI,CAACvD,gBAAgB,CAAC;IAC1D;EACF;EAEA2C,eAAeA,CAACjD,KAAoB,EAAQ;IAC1C,IAAM2D,MAAM,GAAGxC,MAAM,CAACyC,IAAI,CAACnF,aAAa,CAACoE,KAAK,CAAC;IAC/C,KAAK,IAAIgB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,MAAM,CAAClE,MAAM,EAAEoE,CAAC,IAAI,CAAC,EAAE;MACzC;MACA;MACA7D,KAAK,CAACI,mBAAmB,CAACuD,MAAM,CAACE,CAAC,CAAC,EAAE,IAAI,CAACvD,gBAAgB,CAAC;IAC7D;EACF;EAEA,IAAIwD,wBAAwBA,CAAA,EAAY;IACtC,OACE,IAAI,CAAC9D,KAAK,CAAC8D,wBAAwB;IACnC;IACA,EAAE,IAAI,CAACC,yBAAyB,IAAI,IAAI,CAACC,qBAAqB,CAACvE,MAAM,GAAG,CAAC,CAAC;EAE9E;EAEA,IAAIwE,iBAAiBA,CAAA,EAAY;IAC/B,OACE,CAAC,IAAI,CAAC1D,aAAa,CAAC0D,iBAAiB,IAAI,IAAI,CAACxD,MAAM,IAAI,IAAI,KAC5D,IAAI,CAACE,cAAc,CAAClB,MAAM,KAAK,CAAC;EAEpC;EAEA,IAAIsE,yBAAyBA,CAAA,EAAY;IACvC,OACE,CAAC,IAAI,CAACxD,aAAa,CAACwD,yBAAyB,IAC3C,IAAI,CAACpD,cAAc,CAAClB,MAAM,GAAG,CAAC,KAChC,IAAI,CAACgB,MAAM,IAAI,IAAI;EAEvB;EAEA,IAAIyD,eAAeA,CAAA,EAA6B;IAC9C,OAAO,IAAI,CAAC3D,aAAa,CAACT,OAAO;EACnC;EAEA,IAAIqE,gBAAgBA,CAAA,EAA6B;IAC/C,IAAI,CAACxF,8BAA8B,CAAC,IAAI,CAAC4B,aAAa,CAAC,EAAE;MACvD,OAAO,EAAE;IACX;IACA,OAAO,IAAI,CAACA,aAAa,CAAC4D,gBAAgB;EAC5C;EAEA,IAAIC,eAAeA,CAAA,EAA2B;IAC5C,IACE,CAACzF,8BAA8B,CAAC,IAAI,CAAC4B,aAAa,CAAC,IACnD,CAAC,IAAI,CAACA,aAAa,CAAC8D,mBAAmB,EACvC;MACA,IAAI,CAACzF,sBAAsB,CAAC,IAAI,CAAC2B,aAAa,CAAC,EAAE;QAC/C;QACA,OAAOb,SAAS;MAClB;MACA,OAAO,IAAI;IACb;IACA,OAAO,IAAI,CAACgB,SAAS;EACvB;EAEA,IAAI0D,eAAeA,CAACA,eAAuC,EAAE;IAC3D,IAAI,CAAC,IAAI,CAACC,mBAAmB,EAAE;MAC7B,MAAM,IAAIC,KAAK,CAAC,8BAA8B,CAAC;IACjD;IACAzF,GAAG,CAAC2D,KAAK,CAAC,qBAAqB,EAAE4B,eAAe,CAAC;IACjD,IAAI,CAAC1D,SAAS,GAAG0D,eAAe;IAEhC,IAAI5D,YAAY,GAAG+D,OAAO,CAACC,OAAO,CAAC,IAAI,CAACjE,aAAa,CAAC;IACtD,IACE6D,eAAe,IAAI,IAAI,IACvBzF,8BAA8B,CAAC,IAAI,CAAC4B,aAAa,CAAC,EAClD;MACA,IAAI6D,eAAe,CAACK,IAAI,KAAK,MAAM,EAAE;QACnCjE,YAAY,GAAG,IAAI,CAACD,aAAa,CAC9BmE,kBAAkB,CAAC,CAAC,CACpBvB,IAAI,CAAClE,KAAK,IAAIF,SAAS,CAAC,IAAI,CAACC,EAAE,EAAEC,KAAK,EAAE,IAAI,CAACC,SAAS,CAAC,CAAC;MAC7D,CAAC,MAAM,IAAIkF,eAAe,CAACK,IAAI,KAAK,QAAQ,EAAE;QAC5CjE,YAAY,GAAG,IAAI,CAACD,aAAa,CAC9BoE,oBAAoB,CAAC,CAAC,CACtBxB,IAAI,CAAClE,KAAK,IAAIF,SAAS,CAAC,IAAI,CAACC,EAAE,EAAEC,KAAK,EAAE,IAAI,CAACC,SAAS,CAAC,CAAC;MAC7D,CAAC,MAAM;QACLsB,YAAY,GAAG,IAAI,CAACD,aAAa,CAC9BqE,cAAc,CAACR,eAAe,CAACS,UAAU,CAAC,CAC1C1B,IAAI,CAAClE,KAAK,IAAIF,SAAS,CAAC,IAAI,CAACC,EAAE,EAAEC,KAAK,EAAE,IAAI,CAACC,SAAS,CAAC,CAAC;MAC7D;IACF;IAEA,IAAI,CAAC8D,YAAY,CAACxC,YAAY,CAAC;EACjC;EAEAsE,kBAAkBA,CAAA,EAA0B;IAC1C,IAAI,CAACnG,8BAA8B,CAAC,IAAI,CAAC4B,aAAa,CAAC,EAAE;MACvD,MAAM,IAAI+D,KAAK,CAAC,8BAA8B,CAAC;IACjD;IACA,OAAO,IAAI,CAAC/D,aAAa,CAACuE,kBAAkB,CAAC,CAAC;EAChD;EAEAH,oBAAoBA,CAAA,EAA0B;IAC5C,IAAI,CAAChG,8BAA8B,CAAC,IAAI,CAAC4B,aAAa,CAAC,EAAE;MACvD,MAAM,IAAI+D,KAAK,CAAC,8BAA8B,CAAC;IACjD;IACA,OAAO,IAAI,CAAC/D,aAAa,CAACoE,oBAAoB,CAAC,CAAC;EAClD;EAEAC,cAAcA,CAACC,UAAqB,EAAyB;IAC3D,IAAI,CAAClG,8BAA8B,CAAC,IAAI,CAAC4B,aAAa,CAAC,EAAE;MACvD,MAAM,IAAI+D,KAAK,CAAC,8BAA8B,CAAC;IACjD;IACA,OAAO,IAAI,CAAC/D,aAAa,CAACqE,cAAc,CAACC,UAAU,CAAC;EACtD;EAEA,IAAIE,YAAYA,CAAA,EAA+B;IAC7C,OAAO,IAAI,CAACtE,MAAM;EACpB;EAEA,IAAIsE,YAAYA,CAACA,YAAwC,EAAE;IACzDlG,GAAG,CAAC2D,KAAK,CAAC,kBAAkB,EAAEuC,YAAY,CAAC;IAE3C,IAAI,CAAC,IAAI,CAACd,iBAAiB,EAAE;MAC3B,MAAM,IAAIK,KAAK,CAAC,+BAA+B,CAAC;IAClD;;IAEA;IACA;IACA,IAAItG,SAAS,CAAC+G,YAAY,EAAE,IAAI,CAACtE,MAAM,CAAC,EAAE;MACxC;IACF;IAEA,IAAI,CAACA,MAAM,GAAGsE,YAAY;IAE1B,IAAIvE,YAAY,GAAG+D,OAAO,CAACC,OAAO,CAAC,IAAI,CAACjE,aAAa,CAAC;IAEtD,IACE7B,4BAA4B,CAAC,IAAI,CAAC6B,aAAa,CAAC,IAChDwE,YAAY,IAAI,IAAI,EACpB;MACAvE,YAAY,GAAG,IAAI,CAACD,aAAa,CAACtB,KAAK,CACpCwB,MAAM,CAACsE,YAAY,CAAC,CACpB5B,IAAI,CAAClE,KAAK,IAAIF,SAAS,CAAC,IAAI,CAACC,EAAE,EAAEC,KAAK,EAAE,IAAI,CAACC,SAAS,CAAC,CAAC;IAC7D;IACA,IAAI,CAAC8D,YAAY,CAACxC,YAAY,CAAC;EACjC;EAEA,IAAIwD,qBAAqBA,CAAA,EAAiB;IACxC,OAAO,IAAI,CAACrD,cAAc;EAC5B;EAEA,IAAIqD,qBAAqBA,CAACgB,WAAqB,EAAE;IAC/CnG,GAAG,CAAC2D,KAAK,CAAC,2BAA2B,EAAEwC,WAAW,CAAC;IAEnD,IAAI,CAAC,IAAI,CAACjB,yBAAyB,EAAE;MACnC,MAAM,IAAIO,KAAK,CAAC,kCAAkC,CAAC;IACrD;IAEA,IACEU,WAAW,KAAK,IAAI,CAAChB,qBAAqB,IACzCgB,WAAW,CAACvF,MAAM,KAAK,CAAC,IAAI,IAAI,CAACuE,qBAAqB,CAACvE,MAAM,KAAK,CAAE,EACrE;MACAZ,GAAG,CAAC2D,KAAK,CAAC,mCAAmC,EAAEwC,WAAW,CAAC;MAC3D;IACF;IAEA,IAAI,CAACrE,cAAc,GAAGqE,WAAW;IAEjC,IAAMhB,qBAAqB,GAAGgB,WAAW,CACtCC,GAAG,CAACC,IAAI,IAAI,IAAI,CAAChB,eAAe,CAACiB,IAAI,CAACC,MAAM,IAAIA,MAAM,CAACF,IAAI,KAAKA,IAAI,CAAC,CAAC,CACtEG,MAAM,CAACD,MAAM,IAAIA,MAAM,IAAI,IAAI,CAAoB;IAEtD,IAAI5E,YAAY,GAAG+D,OAAO,CAACC,OAAO,CAAC,IAAI,CAACjE,aAAa,CAAC;IAEtD,IACE7B,4BAA4B,CAAC,IAAI,CAAC6B,aAAa,CAAC,IAChDyD,qBAAqB,CAACvE,MAAM,GAAG,CAAC,EAChC;MACAe,YAAY,GAAG,IAAI,CAACD,aAAa,CAACtB,KAAK,CACpC0B,cAAc,CAACqD,qBAAqB,CAAC,CACrCb,IAAI,CAAClE,KAAK,IAAIF,SAAS,CAAC,IAAI,CAACC,EAAE,EAAEC,KAAK,EAAE,IAAI,CAACC,SAAS,CAAC,CAAC;IAC7D;IACA,IAAI,CAAC8D,YAAY,CAACxC,YAAY,CAAC;EACjC;EAEA,IAAI8E,gBAAgBA,CAAA,EAAY;IAC9B,OAAO,IAAI,CAAC/E,aAAa,CAAC+E,gBAAgB;EAC5C;EAEA,IAAIjB,mBAAmBA,CAAA,EAAY;IACjC;IACA,OAAO1F,8BAA8B,CAAC,IAAI,CAAC4B,aAAa,CAAC,GACrD,IAAI,CAACA,aAAa,CAAC8D,mBAAmB,GACtC3E,SAAS;EACf;EAEA,IAAI6F,2BAA2BA,CAAA,EAAY;IACzC,OACE5G,8BAA8B,CAAC,IAAI,CAAC4B,aAAa,CAAC,IAClD,IAAI,CAACA,aAAa,CAACgF,2BAA2B;EAElD;EAEA,IAAIrG,SAASA,CAAA,EAAc;IACzB,OAAO,IAAI,CAACqB,aAAa,CAACrB,SAAS;EACrC;EAEA,IAAIA,SAASA,CAACA,SAAoB,EAAE;IAClC,IAAI,CAACqB,aAAa,CAACrB,SAAS,GAAGA,SAAS;EAC1C;EAEA,IAAIsG,kBAAkBA,CAAA,EAAyC;IAC7D,OAAO,IAAI,CAACjF,aAAa,CAACiF,kBAAkB;EAC9C;EAEA,IAAIA,kBAAkBA,CAACA,kBAAgD,EAAE;IACvE,IAAI,CAACjF,aAAa,CAACiF,kBAAkB,GAAGA,kBAAkB;EAC5D;AAUF;AAEA,eAAelG,kBAAkB"}
1
+ {"version":3,"file":"IrisGridProxyModel.js","names":["deepEqual","Formatter","TableUtils","Log","EventShimCustomEvent","PromiseUtils","IrisGridTableModel","IrisGridPartitionedTableModel","IrisGridTreeTableModel","IrisGridModel","isIrisGridTableModelTemplate","isPartitionedGridModelProvider","isPartitionedGridModel","log","module","makeModel","dh","table","formatter","inputTable","isTreeTable","isPartitionedTable","IrisGridProxyModel","constructor","arguments","length","undefined","_defineProperty","top","bottom","columns","currentViewport","model","setViewport","addEventListener","bind","removeEventListener","dispatchEvent","handleModelEvent","originalModel","modelPromise","rollup","partition","selectDistinct","Proxy","get","target","prop","receiver","_Object$getOwnPropert","proxyHasGetter","Object","getOwnPropertyDescriptor","getPrototypeOf","Reflect","proxyHasProp","prototype","hasOwnProperty","call","proxyHasFn","trueTarget","set","value","_Object$getOwnPropert2","proxyHasSetter","close","cancel","event","debug2","detail","type","setModel","debug","oldModel","oldColumns","listenerCount","addListeners","EVENT","COLUMNS_CHANGED","TABLE_CHANGED","setNextModel","removeListeners","makeCancelable","then","catch","err","isCanceled","error","REQUEST_FAILED","startListening","stopListening","events","keys","i","isCustomColumnsAvailable","isSelectDistinctAvailable","selectDistinctColumns","isRollupAvailable","originalColumns","partitionColumns","partitionConfig","isPartitionRequired","Error","Promise","resolve","mode","partitionBaseTable","partitionMergedTable","partitionTable","partitions","partitionKeysTable","rollupConfig","columnNames","map","name","find","column","filter","isFilterRequired","isPartitionAwareSourceTable","columnAlignmentMap"],"sources":["../src/IrisGridProxyModel.ts"],"sourcesContent":["import deepEqual from 'fast-deep-equal';\nimport { Formatter, TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport {\n type CancelablePromise,\n EventShimCustomEvent,\n PromiseUtils,\n} from '@deephaven/utils';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport IrisGridTableModel from './IrisGridTableModel';\nimport IrisGridPartitionedTableModel from './IrisGridPartitionedTableModel';\nimport IrisGridTreeTableModel from './IrisGridTreeTableModel';\nimport IrisGridModel from './IrisGridModel';\nimport { type ColumnName } from './CommonTypes';\nimport { isIrisGridTableModelTemplate } from './IrisGridTableModelTemplate';\nimport {\n type PartitionConfig,\n type PartitionedGridModel,\n isPartitionedGridModelProvider,\n isPartitionedGridModel,\n} from './PartitionedGridModel';\n\nconst log = Log.module('IrisGridProxyModel');\n\nfunction makeModel(\n dh: typeof DhType,\n table: DhType.Table | DhType.TreeTable | DhType.PartitionedTable,\n formatter?: Formatter,\n inputTable?: DhType.InputTable | null\n): IrisGridModel {\n if (TableUtils.isTreeTable(table)) {\n return new IrisGridTreeTableModel(dh, table, formatter);\n }\n if (TableUtils.isPartitionedTable(table)) {\n return new IrisGridPartitionedTableModel(dh, table, formatter);\n }\n return new IrisGridTableModel(dh, table, formatter, inputTable);\n}\n\n/**\n * Model which proxies calls to other IrisGridModels.\n * This allows for operations that generate new tables, like rollups.\n * The proxy model will call any methods it has implemented and delegate any\n * it does not implement to the underlying model.\n */\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nclass IrisGridProxyModel extends IrisGridModel implements PartitionedGridModel {\n /**\n * @param dh JSAPI instance\n * @param table Iris data table to be used in the model\n * @param formatter The formatter to use when getting formats\n * @param inputTable Iris input table associated with this table\n */\n\n model: IrisGridModel;\n\n dh: typeof DhType;\n\n private originalModel: IrisGridModel;\n\n private modelPromise: CancelablePromise<IrisGridModel> | null;\n\n private rollup: DhType.RollupConfig | null;\n\n private partition: PartitionConfig | null;\n\n private selectDistinct: ColumnName[];\n\n private currentViewport?: {\n top: number;\n bottom: number;\n columns?: DhType.Column[];\n };\n\n constructor(\n dh: typeof DhType,\n table: DhType.Table | DhType.TreeTable | DhType.PartitionedTable,\n formatter = new Formatter(dh),\n inputTable: DhType.InputTable | null = null\n ) {\n super(dh);\n\n // The EventTarget methods must be bound to this instance\n // Otherwise they throw errors because of the Proxy\n this.addEventListener = this.addEventListener.bind(this);\n this.removeEventListener = this.removeEventListener.bind(this);\n this.dispatchEvent = this.dispatchEvent.bind(this);\n\n this.handleModelEvent = this.handleModelEvent.bind(this);\n\n const model = makeModel(dh, table, formatter, inputTable);\n this.dh = dh;\n this.originalModel = model;\n this.model = model;\n this.modelPromise = null;\n this.rollup = null;\n this.partition = null;\n this.selectDistinct = [];\n\n // eslint-disable-next-line no-constructor-return\n return new Proxy(this, {\n // We want to use any properties on the proxy model if defined\n // If not, then proxy to the underlying model\n get(target, prop, receiver) {\n // Does this class have a getter for the prop\n // Getter functions are on the prototype\n const proxyHasGetter =\n Object.getOwnPropertyDescriptor(Object.getPrototypeOf(target), prop)\n ?.get != null;\n\n if (proxyHasGetter) {\n return Reflect.get(target, prop, receiver);\n }\n\n // Does this class implement the property\n const proxyHasProp = Object.prototype.hasOwnProperty.call(target, prop);\n\n // Does the class implement a function for the property\n const proxyHasFn = Object.prototype.hasOwnProperty.call(\n Object.getPrototypeOf(target),\n prop\n );\n\n const trueTarget = proxyHasProp || proxyHasFn ? target : target.model;\n return Reflect.get(trueTarget, prop);\n },\n set(target, prop, value) {\n const proxyHasSetter =\n Object.getOwnPropertyDescriptor(Object.getPrototypeOf(target), prop)\n ?.set != null;\n\n const proxyHasProp = Object.prototype.hasOwnProperty.call(target, prop);\n\n if (proxyHasSetter || proxyHasProp) {\n return Reflect.set(target, prop, value, target);\n }\n\n return Reflect.set(target.model, prop, value, target.model);\n },\n });\n }\n\n close(): void {\n this.originalModel.close();\n if (this.model !== this.originalModel) {\n this.model.close();\n }\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n }\n }\n\n handleModelEvent(event: CustomEvent): void {\n log.debug2('handleModelEvent', event);\n\n const { detail, type } = event;\n this.dispatchEvent(new EventShimCustomEvent(type, { detail }));\n }\n\n setModel(model: IrisGridModel): void {\n log.debug('setModel', model);\n\n const oldModel = this.model;\n const { columns: oldColumns } = oldModel;\n\n if (oldModel !== this.originalModel) {\n oldModel.close();\n }\n\n this.model = model;\n\n if (this.listenerCount > 0) {\n this.addListeners(model);\n }\n\n if (oldColumns !== model.columns) {\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.COLUMNS_CHANGED, {\n detail: model.columns,\n })\n );\n } else if (this.currentViewport != null) {\n // If the columns haven't changed, the current viewport should still valid, and needs to be set on the new model\n const { top, bottom, columns } = this.currentViewport;\n model.setViewport(top, bottom, columns);\n }\n\n if (isIrisGridTableModelTemplate(model)) {\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.TABLE_CHANGED, {\n detail: model.table,\n })\n );\n }\n }\n\n setNextModel(modelPromise: Promise<IrisGridModel>): void {\n log.debug2('setNextModel');\n\n if (this.modelPromise) {\n this.modelPromise.cancel();\n }\n\n if (this.listenerCount > 0) {\n this.removeListeners(this.model);\n }\n\n this.modelPromise = PromiseUtils.makeCancelable(\n modelPromise,\n (model: IrisGridModel) => model.close()\n );\n this.modelPromise\n .then(model => {\n this.modelPromise = null;\n this.setModel(model);\n })\n .catch((err: unknown) => {\n if (PromiseUtils.isCanceled(err)) {\n log.debug2('setNextModel cancelled');\n return;\n }\n\n log.error('Unable to set next model', err);\n this.modelPromise = null;\n\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.REQUEST_FAILED, {\n detail: err,\n })\n );\n });\n }\n\n startListening(): void {\n super.startListening();\n\n this.addListeners(this.model);\n }\n\n stopListening(): void {\n super.stopListening();\n\n this.removeListeners(this.model);\n }\n\n addListeners(model: IrisGridModel): void {\n const events = Object.keys(IrisGridModel.EVENT);\n for (let i = 0; i < events.length; i += 1) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n model.addEventListener(events[i], this.handleModelEvent);\n }\n }\n\n removeListeners(model: IrisGridModel): void {\n const events = Object.keys(IrisGridModel.EVENT);\n for (let i = 0; i < events.length; i += 1) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n model.removeEventListener(events[i], this.handleModelEvent);\n }\n }\n\n get isCustomColumnsAvailable(): boolean {\n return (\n this.model.isCustomColumnsAvailable &&\n // Disable for selectDistinct tables\n !(this.isSelectDistinctAvailable && this.selectDistinctColumns.length > 0)\n );\n }\n\n get isRollupAvailable(): boolean {\n return (\n (this.originalModel.isRollupAvailable || this.rollup != null) &&\n this.selectDistinct.length === 0\n );\n }\n\n get isSelectDistinctAvailable(): boolean {\n return (\n (this.originalModel.isSelectDistinctAvailable ||\n this.selectDistinct.length > 0) &&\n this.rollup == null\n );\n }\n\n get originalColumns(): readonly DhType.Column[] {\n return this.originalModel.columns;\n }\n\n get partitionColumns(): readonly DhType.Column[] {\n if (!isPartitionedGridModelProvider(this.originalModel)) {\n return [];\n }\n return this.originalModel.partitionColumns;\n }\n\n get partitionConfig(): PartitionConfig | null {\n if (\n !isPartitionedGridModelProvider(this.originalModel) ||\n !this.originalModel.isPartitionRequired\n ) {\n if (!isPartitionedGridModel(this.originalModel)) {\n // @ts-expect-error If the original model has an undefined partitionConfig return undefined to make the proxy model also return false in isPartitionedGridModel\n return undefined;\n }\n return null;\n }\n return this.partition;\n }\n\n set partitionConfig(partitionConfig: PartitionConfig | null) {\n if (!this.isPartitionRequired) {\n throw new Error('Partitions are not available');\n }\n log.debug('set partitionConfig', partitionConfig);\n this.partition = partitionConfig;\n\n let modelPromise = Promise.resolve(this.originalModel);\n if (\n partitionConfig != null &&\n isPartitionedGridModelProvider(this.originalModel)\n ) {\n if (partitionConfig.mode === 'keys') {\n modelPromise = this.originalModel\n .partitionBaseTable()\n .then(table => makeModel(this.dh, table, this.formatter));\n } else if (partitionConfig.mode === 'merged') {\n modelPromise = this.originalModel\n .partitionMergedTable()\n .then(table => makeModel(this.dh, table, this.formatter));\n } else {\n modelPromise = this.originalModel\n .partitionTable(partitionConfig.partitions)\n .then(table => makeModel(this.dh, table, this.formatter));\n }\n }\n\n this.setNextModel(modelPromise);\n }\n\n partitionKeysTable(): Promise<DhType.Table> {\n if (!isPartitionedGridModelProvider(this.originalModel)) {\n throw new Error('Partitions are not available');\n }\n return this.originalModel.partitionKeysTable();\n }\n\n partitionMergedTable(): Promise<DhType.Table> {\n if (!isPartitionedGridModelProvider(this.originalModel)) {\n throw new Error('Partitions are not available');\n }\n return this.originalModel.partitionMergedTable();\n }\n\n partitionTable(partitions: unknown[]): Promise<DhType.Table> {\n if (!isPartitionedGridModelProvider(this.originalModel)) {\n throw new Error('Partitions are not available');\n }\n return this.originalModel.partitionTable(partitions);\n }\n\n get rollupConfig(): DhType.RollupConfig | null {\n return this.rollup;\n }\n\n set rollupConfig(rollupConfig: DhType.RollupConfig | null) {\n log.debug('set rollupConfig', rollupConfig);\n\n if (!this.isRollupAvailable) {\n throw new Error('Rollup Rows are not available');\n }\n\n // Prevent model update when IrisGridModelUpdater is mounted\n // if rollup is already initialized in IrisGridPanel\n if (deepEqual(rollupConfig, this.rollup)) {\n return;\n }\n\n this.rollup = rollupConfig;\n\n let modelPromise = Promise.resolve(this.originalModel);\n\n if (\n isIrisGridTableModelTemplate(this.originalModel) &&\n rollupConfig != null\n ) {\n modelPromise = this.originalModel.table\n .rollup(rollupConfig)\n .then(table => makeModel(this.dh, table, this.formatter));\n }\n this.setNextModel(modelPromise);\n }\n\n get selectDistinctColumns(): ColumnName[] {\n return this.selectDistinct;\n }\n\n set selectDistinctColumns(columnNames: string[]) {\n log.debug('set selectDistinctColumns', columnNames);\n\n if (!this.isSelectDistinctAvailable) {\n throw new Error('Select distinct is not available');\n }\n\n if (\n columnNames === this.selectDistinctColumns ||\n (columnNames.length === 0 && this.selectDistinctColumns.length === 0)\n ) {\n log.debug('Ignore same selectDistinctColumns', columnNames);\n return;\n }\n\n this.selectDistinct = columnNames;\n\n const selectDistinctColumns = columnNames\n .map(name => this.originalColumns.find(column => column.name === name))\n .filter(column => column != null) as DhType.Column[];\n\n let modelPromise = Promise.resolve(this.originalModel);\n\n if (\n isIrisGridTableModelTemplate(this.originalModel) &&\n selectDistinctColumns.length > 0\n ) {\n modelPromise = this.originalModel.table\n .selectDistinct(selectDistinctColumns)\n .then(table => makeModel(this.dh, table, this.formatter));\n }\n this.setNextModel(modelPromise);\n }\n\n get isFilterRequired(): boolean {\n return this.originalModel.isFilterRequired;\n }\n\n get isPartitionRequired(): boolean {\n // @ts-expect-error If the original model is not a partitioned model return undefined to make the proxy model also return false in isPartitionedGridModelProvider\n return isPartitionedGridModelProvider(this.originalModel)\n ? this.originalModel.isPartitionRequired\n : undefined;\n }\n\n get isPartitionAwareSourceTable(): boolean {\n return (\n isPartitionedGridModelProvider(this.originalModel) &&\n this.originalModel.isPartitionAwareSourceTable\n );\n }\n\n get formatter(): Formatter {\n return this.originalModel.formatter;\n }\n\n set formatter(formatter: Formatter) {\n this.originalModel.formatter = formatter;\n }\n\n get columnAlignmentMap(): ReadonlyMap<string, CanvasTextAlign> {\n return this.originalModel.columnAlignmentMap;\n }\n\n set columnAlignmentMap(columnAlignmentMap: Map<string, CanvasTextAlign>) {\n this.originalModel.columnAlignmentMap = columnAlignmentMap;\n }\n\n setViewport = (\n top: number,\n bottom: number,\n columns?: DhType.Column[]\n ): void => {\n this.currentViewport = { top, bottom, columns };\n this.model.setViewport(top, bottom, columns);\n };\n}\n\nexport default IrisGridProxyModel;\n"],"mappings":"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","ignoreList":[]}
@@ -475,7 +475,6 @@ export class IrisGridRenderer extends GridRenderer {
475
475
  context.rect(x1 + 0.5, y1 + 0.5, columnWidth, filterBarHeight - 2); // 1 for the border, 1 for the casing
476
476
  }
477
477
  }
478
-
479
478
  context.stroke();
480
479
  for (var _i = 0; _i < visibleColumns.length; _i += 1) {
481
480
  var _column = visibleColumns[_i];