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] [Meta] Tech Debt Roadmap #120182

Closed
2 of 15 tasks
ThomThomson opened this issue Dec 1, 2021 · 3 comments
Closed
2 of 15 tasks

[Dashboard] [Meta] Tech Debt Roadmap #120182

ThomThomson opened this issue Dec 1, 2021 · 3 comments
Labels
Feature:Dashboard Dashboard related features Meta Team:Presentation Presentation Team for Dashboard, Input Controls, and Canvas

Comments

@ThomThomson
Copy link
Contributor

ThomThomson commented Dec 1, 2021

Dashboard Tech Debt

The following is a meta issue tracking all major pieces of dashboard tech debt which should be cleaned up in order to provide a better experience for users, and a stronger and simpler foundation for Solutions teams who want to move towards providing dashboard-centric experiences or custom built domain-specific dashboard templates to their users.

By the end of this project, deliverables will include:

  • The removal of all deprecated dashboard systems such as the legacy saved object loader
  • A simpler, abstracted services system to enhance dashboard developer experience.
  • A portable dashboard container where all loading, saving, filtering, and state management complexity is encapsulated behind the dashboard container embeddable.
  • Embeddable-driven input persistence and diff checking to cut the amount of unnecessary input saved into dashboard saved objects, lessen the likelihood of invalid unsaved changes states.

Tasks / PRs

Migrate to Saved Objects Client

  • Move all functionality out of saved_dashboard
  • Load dashboard saved objects directly from the saved objects client
  • Move migrations out of the dashboard saved object loader

Embeddable Driven Diffing #121241

  • Add functions to the generic embeddable which give containers more granularity in what state they diff.
    getExplicitInput, getIsExplicitInputEqual,
  • re-write the diff_dashboard_input file to use the new functions
  • Apply the new getExplicitInputIsEqual functions in Maps to avoid the unsaved changes bug.
  • Warning when entering edit mode if dashboard state has deviated in view mode from its last saved state. Should have reset to last saved, and keep changes buttons.

Dashboard Service Abstractions

  • Define Service APIs for every dashboard requiredPlugin in the dashboard services folder
  • Remove all usages of 'useKibana', replace them with service abstractions
  • Ensure no functionality is imported directly from another plugin
  • Align dashboard services between the dashboard embeddable and the dashboard app
  • Replace all services stubs in dashboard test files

Portable Dashboard Container #52680

  • Shift Dashboard state management to the redux embeddable system from the Controls project to allow multiple dashboards to run in parallel.
  • Make dashboard container into a By Value / By Reference embeddable so that developers can save a dashboard or pass the input by value.
  • Move dashboard creation, filter integration and all external interactions (set view mode, set options, save etc.), into a public API which can be accessed outside the dashboard plugin.
@ThomThomson ThomThomson added Feature:Dashboard Dashboard related features Meta Team:Presentation Presentation Team for Dashboard, Input Controls, and Canvas labels Dec 1, 2021
@elasticmachine
Copy link
Contributor

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

@ThomThomson
Copy link
Contributor Author

Relevant context for the Portable Dashboard Container initiative can be found here and here

@ThomThomson
Copy link
Contributor Author

Closing this, because The Portable Dashboard Container project has come to encapsulate most of the remaining tasks in this meta issue.

The only remaining piece has been separated out here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feature:Dashboard Dashboard related features Meta Team:Presentation Presentation Team for Dashboard, Input Controls, and Canvas
Projects
None yet
Development

No branches or pull requests

2 participants