Explore: Make toolbar action extendable by plugins (#65524)
* Cleaned up solution and starting to make it work properly. * will disable add button if no queries available. * Changed so 'add to dashboard' is registered as an extension in explore. * moved utility function to utils * hides button if insufficent permissions. * Fixed ts issue. * cleaned up the code and change to using the 'getPluginLinkExtensions' * Added values to explore context. * truncating title in menu. * added tests to verify explore extension point. * fixed failing tests in explore. * made excludeModal optional. * removed temporary fix to force old button. * reverted generated files. * fixed according to feedback. * Update public/app/features/explore/extensions/ToolbarExtensionPoint.test.tsx Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com> * Update public/app/features/explore/extensions/ToolbarExtensionPoint.test.tsx Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com> * added tests suggested in reviews. * fixed failing tests after sync with main. * replaced exploreId type with stirng. * cleaned up code a bit more. --------- Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
This commit is contained in:
co-authored by
Levente Balogh
parent
05b997f3d9
commit
f1529997f2
@@ -4,6 +4,7 @@ import { DataQuery, DataSourceJsonData } from '@grafana/schema';
|
||||
|
||||
import { ScopedVars } from './ScopedVars';
|
||||
import { DataSourcePluginMeta, DataSourceSettings } from './datasource';
|
||||
import { IconName } from './icon';
|
||||
import { PanelData } from './panel';
|
||||
import { RawTimeRange, TimeZone } from './time';
|
||||
|
||||
@@ -27,6 +28,7 @@ export type PluginExtensionLink = PluginExtensionBase & {
|
||||
type: PluginExtensionTypes.link;
|
||||
path?: string;
|
||||
onClick?: (event?: React.MouseEvent) => void;
|
||||
icon?: IconName;
|
||||
};
|
||||
|
||||
export type PluginExtensionComponent = PluginExtensionBase & {
|
||||
@@ -62,8 +64,12 @@ export type PluginExtensionLinkConfig<Context extends object = object> = {
|
||||
description: string;
|
||||
path: string;
|
||||
onClick: (event: React.MouseEvent | undefined, helpers: PluginExtensionEventHelpers<Context>) => void;
|
||||
icon: IconName;
|
||||
}>
|
||||
| undefined;
|
||||
|
||||
// (Optional) A icon that can be displayed in the ui for the extension option.
|
||||
icon?: IconName;
|
||||
};
|
||||
|
||||
export type PluginExtensionComponentConfig<Context extends object = object> = {
|
||||
@@ -100,6 +106,7 @@ export type PluginExtensionEventHelpers<Context extends object = object> = {
|
||||
export enum PluginExtensionPoints {
|
||||
DashboardPanelMenu = 'grafana/dashboard/panel/menu',
|
||||
DataSourceConfig = 'grafana/datasources/config',
|
||||
ExploreToolbarAction = 'grafana/explore/toolbar/action',
|
||||
}
|
||||
|
||||
export type PluginExtensionPanelContext = {
|
||||
|
||||
Reference in New Issue
Block a user