DataSourcePlugin: support custom tabs (#16859)

* use ConfigEditor

* add tabs

* add tabs

* set the nav in state

* remove actions

* reorder imports

* catch plugin loading errors

* better text

* keep props

* fix typo

* update snapshot

* rename tab to page

* add missing pages
This commit is contained in:
Ryan McKinley
2019-05-13 22:55:49 -07:00
committed by Torkel Ödegaard
parent 1001cd7ac3
commit a87a763d83
14 changed files with 301 additions and 306 deletions

View File

@@ -91,17 +91,17 @@ export interface PluginMetaInfo {
version: string;
}
export interface PluginConfigTabProps<T extends PluginMeta> {
meta: T;
export interface PluginConfigPageProps<T extends GrafanaPlugin> {
plugin: T;
query: { [s: string]: any }; // The URL query parameters
}
export interface PluginConfigTab<T extends PluginMeta> {
export interface PluginConfigPage<T extends GrafanaPlugin> {
title: string; // Display
icon?: string;
id: string; // Unique, in URL
body: ComponentClass<PluginConfigTabProps<T>>;
body: ComponentClass<PluginConfigPageProps<T>>;
}
export class GrafanaPlugin<T extends PluginMeta = PluginMeta> {
@@ -112,14 +112,14 @@ export class GrafanaPlugin<T extends PluginMeta = PluginMeta> {
angularConfigCtrl?: any;
// Show configuration tabs on the plugin page
configTabs?: Array<PluginConfigTab<T>>;
configPages?: Array<PluginConfigPage<GrafanaPlugin>>;
// Tabs on the plugin page
addConfigTab(tab: PluginConfigTab<T>) {
if (!this.configTabs) {
this.configTabs = [];
addConfigPage(tab: PluginConfigPage<GrafanaPlugin>) {
if (!this.configPages) {
this.configPages = [];
}
this.configTabs.push(tab);
this.configPages.push(tab);
return this;
}
}