Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Dashboard Navigation] Save by Reference #154362

Closed
Tracked by #154354
ThomThomson opened this issue Apr 4, 2023 · 5 comments
Closed
Tracked by #154354

[Dashboard Navigation] Save by Reference #154362

ThomThomson opened this issue Apr 4, 2023 · 5 comments
Assignees
Labels
Feature:Dashboard Dashboard related features impact:high Addressing this issue will have a high level of impact on the quality/strength of our product. loe:large Large Level of Effort Project:Dashboard Navigation Related to the Dashboard Navigation Project Team:Presentation Presentation Team for Dashboard, Input Controls, and Canvas

Comments

@ThomThomson
Copy link
Contributor

ThomThomson commented Apr 4, 2023

Description

As part of the Dashboard Navigation Project, we require the ability to save the navigation system by reference so that the navigation panel can be easily re-used between different dashboards.

As part of this, we should cache by reference navigation configs in the session storage so that jumping between different dashboards doesn't cause by reference panels to reload from scratch each time. Ideally when navigating between dashboards that use the same navigation, there should be very little (ideally 0) visible loading on the navigation panel itself.

@ThomThomson ThomThomson added Feature:Dashboard Dashboard related features Team:Presentation Presentation Team for Dashboard, Input Controls, and Canvas loe:large Large Level of Effort impact:high Addressing this issue will have a high level of impact on the quality/strength of our product. Project:Dashboard Navigation Related to the Dashboard Navigation Project labels Apr 4, 2023
@elasticmachine
Copy link
Contributor

Pinging @elastic/kibana-presentation (Team:Presentation)

@Heenawter
Copy link
Contributor

Heenawter commented Apr 13, 2023

Had a small discussion with @ThomThomson about this and I figured I'd summarize my thoughts here.

My conclusion is that, at least as part of phase 1 of this project, we should only allow by reference navigation embeddables. As far as a justification for this, consider the following situation:

  • Alice wants an easy way to navigate between 5 related dashboards, and so she creates a navigation embeddable.
  • If the navigation embeddable is created by value by default (which is the current default behaviour for all other elements):
    • Alice wants all 5 dashboards to have the same navigation, and so she uses the Copy to dashboard action on the first navigation embeddable to add it to the remaining 4 dashboards.
    • What Alice may not know is that she now has 5 unique copies of the same by value navigation embeddable
    • If Alice later adds a 6th dashboard to this navigation tree, she would have to go to all 5 of the previous dashboards to add this new dashboard to the navigation embeddable.
  • If the navigation embeddable is created by reference by default:
    • Alice wants all 5 dashboards to have the same navigation, and so she either...
      1. uses the Copy to dashboard action on the first navigation embeddable to add it to the remaining 4 dashboards or....
      2. navigates to each dashboard from the listing page and adds the navigation embeddable via the "Add from library" flyout
    • If Alice later adds a 6th dashboard to this navigation tree, she can make a single change to the navigation embeddable from any of the 5 existing dashboards and the change will apply to all of them.

I believe that, if we keep the current default behaviour (everything is created by value by default), we are essentially guiding customers into a path of later frustration when they realize that they should have saved their navigation embeddable to the library from the very beginning - so we should, at the very least, make it so that navigation embeddables in particular are created by reference by default.

I had a hard time coming up with a use case for by value navigation embeddables, and so I wonder if it's even worth adding them in Phase 1 of the project or if they should always be by reference. I feel less strong about this (we could simply just stick to by reference by default) but Interested in thoughts 👀

cc @nickpeihl

@teresaalvarezsoler
Copy link

Totally agree with this @Heenawter . If adding "by value" functionality adds any effort, then I would skip it for now.

@ThomThomson
Copy link
Contributor Author

The by reference behaviour actually adds more work, because it means we will have to deal with saved objects. That said, I am convinced it'll be worth the extra effort.

@ThomThomson ThomThomson changed the title [Dashboard Navigation] Save by Value or By Reference [Dashboard Navigation] Save by Reference Jun 12, 2023
@nickpeihl nickpeihl self-assigned this Jun 26, 2023
nickpeihl added a commit that referenced this issue Aug 10, 2023
Fixes #154362

## Summary

Adds content management to navigation embeddable feature branch.

Allows Links panels to be by-value or by-reference on a Dashboard. The
UX for users to choose to save by-value or by-reference remains to be
finalized and is out of scope for this PR.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Hannah Mudge <hannah.wright@elastic.co>
@Heenawter
Copy link
Contributor

Closed by #160896

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feature:Dashboard Dashboard related features impact:high Addressing this issue will have a high level of impact on the quality/strength of our product. loe:large Large Level of Effort Project:Dashboard Navigation Related to the Dashboard Navigation Project Team:Presentation Presentation Team for Dashboard, Input Controls, and Canvas
Projects
None yet
Development

No branches or pull requests

5 participants