feat(ui): DH-19818: add nested dashboard support#1302
feat(ui): DH-19818: add nested dashboard support#1302mofojed wants to merge 14 commits intodeephaven:mainfrom
Conversation
- Dashboard component now detects when inside a panel and delegates to NestedDashboard - NestedDashboard uses DHCDashboard from @deephaven/dashboard to create isolated GoldenLayout - NestedDashboardContent provides context providers for nested panels - DashboardContent extracted for top-level dashboard rendering - Add E2E tests and Python test fixtures for nested dashboards - Add unit tests for Dashboard and NestedDashboard components DH-19818
- Just using usePersistentState and it seems to work - Sometimes the nested dashboards don't load correctly, seems to be an intermittent issue/some sort of race condition. Will debug later, after writing docs
- Update rules to clarify root-level vs nested dashboard restrictions - Update bottom-level section to reference nested dashboards - Add Nested Dashboards section with examples to dashboard.md - Add Nested Dashboards section to creating-dashboards.md guide - Add example for sharing state between nested dashboards
1be29b1 to
6b71ddb
Compare
|
ui docs preview (Available for 14 days) |
- Separated into its own PR: deephaven#1303
|
ui docs preview (Available for 14 days) |
|
|
||
| ## Nested Dashboards | ||
|
|
||
| Dashboards can be nested inside panels to create complex layouts with isolated drag-and-drop regions. Each nested dashboard creates its own independent layout that users can rearrange without affecting the parent dashboard. |
There was a problem hiding this comment.
Do we need an enterprise only note that dashboards not defined at root won't appear in the shared dashboards list?
There was a problem hiding this comment.
Hmm well the dashboard doesn't have a name... but yea I'll make that clear. In DHC it won't appear in your panels list either.
| ) | ||
| ``` | ||
|
|
||
| ## Nested Dashboards |
There was a problem hiding this comment.
Do nested dashboards work with ui.resolve? Can I embed a dashboard from another PQ?
If so, please update docs for ui.resolve as well showing that.
There was a problem hiding this comment.
They should. I should also test that, because there might be an issue with that.
There was a problem hiding this comment.
They do not work. In fact, it doesn't look like you can ui.resolve another deephaven.ui widget at all? I'll dig a bit more into "why", if it's a bigger lift/change I'll separate it into a separate PR.
There was a problem hiding this comment.
@dsmmcken wiring that up I think should be a separate PR.
Digging into it, in UriObjectView we should be checking if we have a deephaven.ui element, and then rendering it. I think we'll need to separate WidgetHandler out to a component that takes the widget itself (since UriObjectView already loads the widget (it must to know the type), and WidgetHandler only takes a descriptor and loads the widget itself, rather than taking an already loaded widget). Or potentially register deephaven.ui plugin as a WidgetPlugin instead of a DashboardPlugin (or in addition to... problem being we still want DH.ui dashboards to open in a new dashboard tab, which you can't do with WidgetPlugins).
Kind of orthogonal work to just nesting dashboards, but that will be easier now that dashboards are nestable.
|
ui docs preview (Available for 14 days) |
|
|
||
| ### Nested dashboard component with state | ||
|
|
||
| Nested dashboards shine when combined with `@ui.component` to create stateful, reusable dashboard sections: |
There was a problem hiding this comment.
This might just be a me problem but the use of "shine" here seems a bit too peppy for a docs page.
I'm guessing this was AI generated? This might be more of a docs team question, but I wonder if it's worth having some guidance with writing docs for AI if we don't have some already. We want it to sound like us and the more we bring in that is AI generated the more it's going to slowly shift if we don't keep it in line.
There was a problem hiding this comment.
Yea, it was AI generated. I'd check with @margaretkennedy about what language is good/not good.
There was a problem hiding this comment.
Is there a compelling example to illustrate deep nesting? Or just a theoretical detail?
There was a problem hiding this comment.
Yea, it's just a theoretical detail. I'm not sure it's even worth mentioning; every deephaven.ui component can be nested how deep you want. I'll remove it.
There was a problem hiding this comment.
any reason not to import the hook directly?
|
ui docs preview (Available for 14 days) |
NestedDashboardNestedDashboardusesDashboardfrom@deephaven/dashboardto create isolated layoutNestedDashboardContentprovides context providers for nested panelsDashboardContentextracted for top-level dashboard renderingDashboardandNestedDashboardcomponents