-
Notifications
You must be signed in to change notification settings - Fork 8.3k
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
[Research][Embeddable Variables] Initial Project Description #134706
Labels
enhancement
New value added to drive a business result
Feature:Dashboard
Dashboard related features
Feature:Embeddables
Relating to the Embeddable system
Feature:Input Control
Input controls visualization
impact:medium
Addressing this issue will have a medium level of impact on the quality/strength of our product.
loe:x-large
Extra Large Level of Effort
Project:Controls
Team:Presentation
Presentation Team for Dashboard, Input Controls, and Canvas
Comments
ThomThomson
added
Feature:Dashboard
Dashboard related features
Feature:Input Control
Input controls visualization
enhancement
New value added to drive a business result
Team:Presentation
Presentation Team for Dashboard, Input Controls, and Canvas
Team:AppServicesSv
Project:Controls
labels
Jun 17, 2022
Pinging @elastic/kibana-app-services (Team:AppServicesSv) |
Pinging @elastic/kibana-presentation (Team:Presentation) |
exalate-issue-sync
bot
added
the
impact:needs-assessment
Product and/or Engineering needs to evaluate the impact of the change.
label
Jul 21, 2022
petrklapka
added
Feature:Embedding
Embedding content via iFrame
and removed
Team:AppServicesSv
labels
Dec 12, 2022
ThomThomson
added
impact:medium
Addressing this issue will have a medium level of impact on the quality/strength of our product.
and removed
impact:needs-assessment
Product and/or Engineering needs to evaluate the impact of the change.
labels
Jan 26, 2023
ThomThomson
changed the title
[Embeddable Variables] Initial Structure Thoughts
[Research][Embeddable Variables] Initial Structure Thoughts
Jan 26, 2023
This was referenced Jan 26, 2023
Closed
This was referenced Mar 9, 2023
1 task
ThomThomson
added
Feature:Embeddables
Relating to the Embeddable system
and removed
Feature:Embedding
Embedding content via iFrame
labels
Jun 14, 2023
Related: #160001 |
ThomThomson
changed the title
[Research][Embeddable Variables] Initial Structure Thoughts
[Research][Embeddable Variables] Initial Project Description
Jul 7, 2023
Closed
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
enhancement
New value added to drive a business result
Feature:Dashboard
Dashboard related features
Feature:Embeddables
Relating to the Embeddable system
Feature:Input Control
Input controls visualization
impact:medium
Addressing this issue will have a medium level of impact on the quality/strength of our product.
loe:x-large
Extra Large Level of Effort
Project:Controls
Team:Presentation
Presentation Team for Dashboard, Input Controls, and Canvas
Describe the project
There are a few use cases - for example #134592 and #134591 which require Embeddable Containers to pass input to their children which overrides the child's input. We will need to provide a mechanism for this type of inheritance. This mechanism should act as a standardized system for any future / existing requirements that involve a container storing state which should override one or more configuration options on its children.
In general, a generic container should not store state for any specific type of embeddable without a system in place to handle it generically. This issue is an initial exploration of how something like that could be built.
Rough Diagram
Concepts
Variable Controls
A new and totally separate type of Control should be built that interacts with variables instead of data. Creating / editing these controls would be a separate experience from the data controls, but they should exist in the same bar and look similar.
Each variable type will come with its own variable control embeddable, factory, and its own inline editor the same as controls do. UX-wise, when creating a variable control the user will be prompted with a list of types that they need to choose from.
Variable controls store all of their configuration with the Control Group Input, including initial / default selections. These controls publish their selections as
output
to the Control Group which in turn publishes all of itsVariables
into itsoutput
along with itsfilters
.A container like the Dashboard Container could subscribe to these output changes, and update its Variable Store accordingly.
Variable Store
Any embeddable container could implement a new interface
IVariableStore
which would be used to store variables.The
IVariableStore
interface would look something likeNote The variable store is meant to be ephemeral. It should not be stored in a saved object. The variable store is only an intermediary, and a communication method for inheritance. Any variable values which are saved should be saved in the Control Group to allow for extract / inject / migrations.
Variable Slots
Any embeddable could implement a new interface
IVariableSlotEmbeddable
which would provide methods for getting all variable slots. These can be hardcoded, or determined by the embeddables current state. Each Variable slot would follow an interface similar to:Variable Inheritance
If a container extends
IVariableStoreEmbeddable
it can pass the appropriate variables down to the child during thegetInputForChild
method. First the container would check if the current embeddable extendsIVariableSlotEmbeddable
, and if it does the container would:Variable Assign Action
If the embeddable extends
IVariableSlotEmbeddable
, and its parent extendsIVariableStoreEmbeddable
a new action should be compatible which opens a flyout that allows users to select variables by their ID / display name for each slot that the embeddable features.The text was updated successfully, but these errors were encountered: