Skip to content

feat: DH-21476 Configurable TableOptions sidebar#2688

Merged
vbabich merged 47 commits into
deephaven:mainfrom
vbabich:vlad-DH-21476-table-options
Jun 25, 2026
Merged

feat: DH-21476 Configurable TableOptions sidebar#2688
vbabich merged 47 commits into
deephaven:mainfrom
vbabich:vlad-DH-21476-table-options

Conversation

@vbabich

@vbabich vbabich commented May 21, 2026

Copy link
Copy Markdown
Collaborator

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:

  • Add transformTableOptions + plugin configPage support for the IrisGrid Table Options sidebar, including ordering, duplicate detection, and an error boundary for plugin pages.
  • Add transformModel support so middleware/hosts can wrap or replace the built IrisGridModel (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.

@codecov

codecov Bot commented May 21, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 74.35897% with 40 lines in your changes missing coverage. Please review.
✅ Project coverage is 51.10%. Comparing base (b7574c0) to head (f750d88).

Files with missing lines Patch % Lines
packages/iris-grid/src/IrisGrid.tsx 63.23% 25 Missing ⚠️
...rc/styleguide/grid-examples/PluginErrorExample.tsx 0.00% 9 Missing ⚠️
packages/grid/src/Grid.tsx 50.00% 2 Missing ⚠️
packages/iris-grid/src/IrisGridModel.ts 0.00% 2 Missing ⚠️
packages/iris-grid/src/IrisGridProxyModel.ts 90.00% 1 Missing ⚠️
packages/iris-grid/src/IrisGridTextCellRenderer.ts 0.00% 1 Missing ⚠️
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     
Flag Coverage Δ
unit 51.10% <74.35%> (+0.15%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@vbabich vbabich marked this pull request as ready for review June 15, 2026 13:45
@vbabich vbabich requested a review from mofojed June 15, 2026 13:45

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 + plugin configPage support for the IrisGrid Table Options sidebar, including ordering, duplicate detection, and an error boundary for plugin pages.
  • Add transformModel support so middleware/hosts can wrap or replace the built IrisGridModel (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 has trap + 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.

Comment thread packages/grid/src/Grid.tsx Outdated
Comment thread packages/plugin/src/PluginUtils.tsx Outdated
vbabich and others added 3 commits June 15, 2026 13:19
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.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 24 out of 24 changed files in this pull request and generated 2 comments.

Comment thread packages/iris-grid/src/IrisGrid.tsx Outdated
Comment thread packages/iris-grid/src/IrisGrid.tsx
mofojed
mofojed previously approved these changes Jun 24, 2026
Comment thread packages/iris-grid/src/CommonTypes.tsx Outdated
@vbabich vbabich requested a review from mofojed June 24, 2026 16:55
@vbabich vbabich self-assigned this Jun 25, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 28 out of 31 changed files in this pull request and generated 1 comment.

Comment thread packages/iris-grid/src/sidebar/OptionType.ts Outdated
mofojed
mofojed previously approved these changes Jun 25, 2026
@vbabich vbabich enabled auto-merge (squash) June 25, 2026 18:52
@vbabich vbabich disabled auto-merge June 25, 2026 18:53
@vbabich vbabich enabled auto-merge (squash) June 25, 2026 19:23
@vbabich vbabich merged commit 9756457 into deephaven:main Jun 25, 2026
16 of 18 checks passed
@github-actions github-actions Bot locked and limited conversation to collaborators Jun 25, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants