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
Plugins: Support for link extensions #61663
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
mckn
added
area/plugins
area/backend
area/frontend
add to changelog
area/plugins/app
App Plugins
no-backport
Skip backport of PR
labels
Jan 18, 2023
…stry if trying to call it twice.
…into mckn/ui-extensions-link
mckn
removed
the
levitate breaking change
A label indicating a breaking change and assigned by Levitate.
label
Feb 6, 2023
my concerns are resolved, so i'm getting my review out of the way! |
grafanabot
added
the
levitate breaking change
A label indicating a breaking change and assigned by Levitate.
label
Feb 7, 2023
Very cool! The term "target" did throw me off initially since in html a link target refers to the name of the window the link should open in, whereas we're using it to mean the location that the link should be displayed. |
This was referenced Feb 8, 2023
9 tasks
ryantxu
pushed a commit
that referenced
this pull request
Mar 2, 2023
* added extensions to plugin.json and exposing it via frontend settings. * added extensions to the plugin.json schema. * changing the extensions in frontend settings to a map instead of an array. * wip * feat(pluginregistry): begin wiring up registry * feat(pluginextensions): prevent duplicate links and clean up * added test case for link extensions. * added tests and implemented the getPluginLink function. * wip * feat(pluginextensions): expose plugin extension registry * fix(pluginextensions): appease the typescript gods post rename * renamed file and will throw error if trying to call setExtensionsRegistry if trying to call it twice. * added reafactorings. * fixed failing test. * minor refactorings to make sure we only include extensions if the app is enabled. * fixed some nits. * Update public/app/features/plugins/extensions/registry.test.ts Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com> * Update packages/grafana-runtime/src/services/pluginExtensions/registry.ts Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com> * Update packages/grafana-runtime/src/services/pluginExtensions/registry.ts Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com> * Update public/app/features/plugins/extensions/registry.test.ts Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com> * Moved types for extensions from data to runtime. * added a small example on how you could consume link extensions. * renamed after feedback from levi. * updated the plugindef.cue. * using the generated plugin def. * added tests for apps and extensions. * fixed linting issues. * wip * wip * wip * wip * test(extensions): fix up failing tests * feat(extensions): freeze registry extension arrays, include type in registry items * added restrictions in the pugindef cue schema. * wip * added required fields. * added key to uniquely identify each item. * test(pluginextensions): align tests with implementation * chore(schema): refresh reference.md --------- Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com> Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
add to changelog
area/backend
area/frontend
area/plugins/app
App Plugins
area/plugins
enterprise-failed
levitate breaking change
A label indicating a breaking change and assigned by Levitate.
no-backport
Skip backport of PR
type/docs
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What is this feature?
This PR introduces an extensions registry that allows app plugins to extend core/plugins via plugin.json. It exposes a helper function for plugins/core to query the registry for extensions made by plugins allowing cross-plugin linking.
Links will only be registered if the app plugin defining the link:
Why do we need this feature?
Please read the epic for more details.
Who is this feature for?
Plugin developers, Grafana developers and end-users.
Example
Here is an example on how to extend Grafana with a link from a plugin. It will place a link in Grafana (grafana/sandbox/testing):
grafana/public/app/features/sandbox/TestStuffPage.tsx
Line 152 in b56bc15
This is due to removal of the preload plugins types. It got replaced by the
AppConfig
types and should not have been used by plugin authors.