feat: DH-21476 Configurable TableOptions sidebar#2688
Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #2688 +/- ##
==========================================
+ Coverage 50.95% 51.10% +0.15%
==========================================
Files 791 793 +2
Lines 45083 45204 +121
Branches 11678 11703 +25
==========================================
+ Hits 22971 23103 +132
- Misses 22066 22082 +16
+ Partials 46 19 -27
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
…nents for plugins
There was a problem hiding this comment.
Pull request overview
This PR introduces new extension seams for @deephaven/iris-grid (configurable Table Options sidebar + model transforms) as a prerequisite for Pivot Builder, and includes related grid/model robustness improvements (pending-operation scrim signaling, proxy-model swap handling, header separator behavior, and shared remote-module re-exports for plugins).
Changes:
- Add
transformTableOptions+ pluginconfigPagesupport for the IrisGrid Table Options sidebar, including ordering, duplicate detection, and an error boundary for plugin pages. - Add
transformModelsupport so middleware/hosts can wrap or replace the builtIrisGridModel(sync/async), plus new model events to support swap/loading workflows. - Improve grid behavior for pivot-like scenarios (column header separators based on group identity, runtime swapping of renderer/metric calculator, proxy-model
hastrap + model-changed signaling).
Reviewed changes
Copilot reviewed 29 out of 32 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/plugin/src/PluginUtils.tsx | Ref-forwarding implementation for chained panel middleware. |
| packages/plugin/src/PluginTypes.ts | Make middleware panel Component ref-capable via ForwardRefExoticComponent. |
| packages/iris-grid/src/sidebar/PluginTableOptionsErrorBoundary.tsx | New error boundary for plugin-supplied sidebar pages. |
| packages/iris-grid/src/sidebar/OptionType.ts | Add OptionItemKey type for built-in vs plugin sidebar keys. |
| packages/iris-grid/src/sidebar/IrisGridTableOptionsWidgetProps.ts | New TableOptionsTransform + prop interface for threading transforms. |
| packages/iris-grid/src/sidebar/IrisGridSidebarItems.test.tsx | Tests for transform behavior, ordering, duplicate warnings, and plugin-page fallback. |
| packages/iris-grid/src/sidebar/index.ts | Export new sidebar-related types (OptionItemKey, widget props/transform type). |
| packages/iris-grid/src/RemoteComponentModules.ts | Re-export @dnd-kit/* namespaces for remote component module sharing. |
| packages/iris-grid/src/IrisGridUtils.ts | Extract totals/aggregation helpers (getOperationMap/order, totals config hydration). |
| packages/iris-grid/src/IrisGridTextCellRenderer.ts | Guard against missing column metadata before string-type checks. |
| packages/iris-grid/src/IrisGridProxyModel.ts | Add has trap for proxy duck-typing, emit MODEL_CHANGED, avoid closing originalModel, refine select-distinct capability check. |
| packages/iris-grid/src/IrisGridModelWidgetProps.ts | New transformModel type + prop interface for hosts/middleware. |
| packages/iris-grid/src/IrisGridModel.ts | Add MODEL_CHANGED, PENDING, PENDING_CLEARED events + dispatchPending helper. |
| packages/iris-grid/src/IrisGrid.tsx | Implement transformTableOptions, plugin page rendering, pending scrim handlers, model swap handling, metric calculator rebuild path, and menu ordering weights. |
| packages/iris-grid/src/index.ts | Re-export remote component modules + IrisGridModelWidgetProps. |
| packages/iris-grid/src/CommonTypes.tsx | Extend OptionItem to support plugin keys, ordering, and configPage; add pending-operation detail typing. |
| packages/iris-grid/README.md | Document Table Options customization + model transforms and middleware composition guidance. |
| packages/grid/src/GridUtils.ts | Improve header separator logic using group identity + empty-band semantics. |
| packages/grid/src/GridUtils.test.ts | Add tests for pivot/group-identity and empty-band separator behaviors. |
| packages/grid/src/GridRenderer.ts | Use GridUtils.hasColumnSeparatorAtDepth for separator highlight behavior. |
| packages/grid/src/Grid.tsx | Sync renderer/metricCalculator props into instance fields for runtime swapping. |
| packages/dashboard-core-plugins/src/useIrisGridModel.ts | Add optional transformModel application + base-model close-on-transform-failure. |
| packages/dashboard-core-plugins/src/useIrisGridModel.test.ts | Add tests for transformModel application and rejection cleanup. |
| packages/dashboard-core-plugins/src/panels/IrisGridPanel.tsx | Thread transformTableOptions, transformModel, irisGridProps, onModelChanged; apply model transform during load. |
| packages/dashboard-core-plugins/src/panels/IrisGridPanel.test.tsx | Add tests for forwarding table-options transform and applying/cleaning up model transform. |
| packages/dashboard-core-plugins/src/GridWidgetPlugin.tsx | Accept/thread transformTableOptions, transformModel, irisGridProps, onModelChanged; notify on model changes. |
| packages/dashboard-core-plugins/src/GridWidgetPlugin.test.tsx | Add tests for forwarding table-options transform and applying model transform. |
| packages/components/src/RemoteComponentModules.ts | Re-export FontAwesome namespaces for remote component module sharing. |
| packages/components/src/index.ts | Export the new components RemoteComponentModules entry point. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
…aven#2699) Mouse Up handler in the `Grid` component wasn't resetting the `isDragging` flag, this was blocking hover effects on column separators.
Pre-requisite for Pivot Builder.
Summary:
This PR introduces new extension seams for
@deephaven/iris-grid(configurable Table Options sidebar + model transforms) as a prerequisite for Pivot Builder, and includes related grid/model robustness improvements (pending-operation scrim signaling, proxy-model swap handling, header separator behavior, and shared remote-module re-exports for plugins).Changes:
transformTableOptions+ pluginconfigPagesupport for the IrisGrid Table Options sidebar, including ordering, duplicate detection, and an error boundary for plugin pages.transformModelsupport so middleware/hosts can wrap or replace the builtIrisGridModel(sync/async), plus new model events to support swap/loading workflows.Improve grid behavior for pivot-like scenarios (runtime swapping of renderer/metric calculator, model-changed signaling).
Testing:
The plugins have not been released yet, so they have to be served via Vite proxy in dev mode for testing. Use this branch to test in DHE - https://github.com/deephaven-ent/iris/pull/4525.