From 5c2d38126d5d99c0e298a5e806460efbc9ef2450 Mon Sep 17 00:00:00 2001 From: Ryan McKinley Date: Mon, 29 Apr 2019 08:17:35 -0700 Subject: [PATCH] Plugins: move PanelPluginMeta to grafana/ui (#16804) --- packages/grafana-ui/src/types/panel.ts | 19 +++++++++++++++++++ public/app/core/config.ts | 3 +-- .../DashExportModal/DashboardExporter.test.ts | 2 +- .../DashExportModal/DashboardExporter.ts | 2 +- .../dashboard/dashgrid/DashboardPanel.tsx | 3 +-- .../dashboard/dashgrid/PanelChrome.tsx | 3 +-- .../dashgrid/PanelPluginNotFound.tsx | 4 ++-- .../dashboard/panel_editor/PanelEditor.tsx | 4 +--- .../panel_editor/VisualizationTab.tsx | 2 +- .../panel_editor/VizPickerSearch.tsx | 3 +-- .../dashboard/panel_editor/VizTypePicker.tsx | 3 +-- .../panel_editor/VizTypePickerPlugin.tsx | 2 +- .../features/dashboard/state/PanelModel.ts | 3 +-- .../features/plugins/__mocks__/pluginMocks.ts | 4 ++-- public/app/types/plugins.ts | 16 +--------------- public/test/specs/helpers.ts | 3 +-- 16 files changed, 36 insertions(+), 40 deletions(-) diff --git a/packages/grafana-ui/src/types/panel.ts b/packages/grafana-ui/src/types/panel.ts index 5354df29d1d..6c0e827a9bf 100644 --- a/packages/grafana-ui/src/types/panel.ts +++ b/packages/grafana-ui/src/types/panel.ts @@ -2,9 +2,28 @@ import { ComponentClass, ComponentType } from 'react'; import { LoadingState, SeriesData } from './data'; import { TimeRange } from './time'; import { ScopedVars, DataQueryRequest, DataQueryError, LegacyResponseData } from './datasource'; +import { PluginMeta } from './plugin'; export type InterpolateFunction = (value: string, scopedVars?: ScopedVars, format?: string | Function) => string; +export interface PanelPluginMeta extends PluginMeta { + hideFromList?: boolean; + sort: number; + angularPlugin: AngularPanelPlugin | null; + vizPlugin: PanelPlugin | null; + hasBeenImported?: boolean; + + // if length>0 the query tab will show up + // Before 6.2 this could be table and/or series, but 6.2+ supports both transparently + // so it will be deprecated soon + dataFormats?: PanelDataFormat[]; +} + +export enum PanelDataFormat { + Table = 'table', + TimeSeries = 'time_series', +} + export interface PanelData { state: LoadingState; series: SeriesData[]; diff --git a/public/app/core/config.ts b/public/app/core/config.ts index 4d83cb8f5b1..8d762514e00 100644 --- a/public/app/core/config.ts +++ b/public/app/core/config.ts @@ -1,6 +1,5 @@ import _ from 'lodash'; -import { PanelPluginMeta } from 'app/types/plugins'; -import { GrafanaTheme, getTheme, GrafanaThemeType, DataSourceInstanceSettings } from '@grafana/ui'; +import { GrafanaTheme, getTheme, GrafanaThemeType, PanelPluginMeta, DataSourceInstanceSettings } from '@grafana/ui'; export interface BuildInfo { version: string; diff --git a/public/app/features/dashboard/components/DashExportModal/DashboardExporter.test.ts b/public/app/features/dashboard/components/DashExportModal/DashboardExporter.test.ts index 76151e26c15..00959e98a3c 100644 --- a/public/app/features/dashboard/components/DashExportModal/DashboardExporter.test.ts +++ b/public/app/features/dashboard/components/DashExportModal/DashboardExporter.test.ts @@ -9,7 +9,7 @@ import config from 'app/core/config'; import { DashboardExporter } from './DashboardExporter'; import { DashboardModel } from '../../state/DashboardModel'; import { DatasourceSrv } from 'app/features/plugins/datasource_srv'; -import { PanelPluginMeta } from 'app/types'; +import { PanelPluginMeta } from '@grafana/ui'; describe('given dashboard with repeated panels', () => { let dash: any, exported: any; diff --git a/public/app/features/dashboard/components/DashExportModal/DashboardExporter.ts b/public/app/features/dashboard/components/DashExportModal/DashboardExporter.ts index 78d84350b57..79cbe918434 100644 --- a/public/app/features/dashboard/components/DashExportModal/DashboardExporter.ts +++ b/public/app/features/dashboard/components/DashExportModal/DashboardExporter.ts @@ -4,7 +4,7 @@ import config from 'app/core/config'; import { DashboardModel } from '../../state/DashboardModel'; import DatasourceSrv from 'app/features/plugins/datasource_srv'; import { PanelModel } from 'app/features/dashboard/state'; -import { PanelPluginMeta } from 'app/types/plugins'; +import { PanelPluginMeta } from '@grafana/ui'; interface Input { name: string; diff --git a/public/app/features/dashboard/dashgrid/DashboardPanel.tsx b/public/app/features/dashboard/dashgrid/DashboardPanel.tsx index 44ae626cc20..a4f8eb2063b 100644 --- a/public/app/features/dashboard/dashgrid/DashboardPanel.tsx +++ b/public/app/features/dashboard/dashgrid/DashboardPanel.tsx @@ -17,8 +17,7 @@ import { PanelResizer } from './PanelResizer'; // Types import { PanelModel, DashboardModel } from '../state'; -import { PanelPluginMeta } from 'app/types'; -import { AngularPanelPlugin, PanelPlugin } from '@grafana/ui/src/types/panel'; +import { PanelPluginMeta, AngularPanelPlugin, PanelPlugin } from '@grafana/ui/src/types/panel'; import { AutoSizer } from 'react-virtualized'; export interface Props { diff --git a/public/app/features/dashboard/dashgrid/PanelChrome.tsx b/public/app/features/dashboard/dashgrid/PanelChrome.tsx index 148c559f6aa..57b80739e88 100644 --- a/public/app/features/dashboard/dashgrid/PanelChrome.tsx +++ b/public/app/features/dashboard/dashgrid/PanelChrome.tsx @@ -16,8 +16,7 @@ import config from 'app/core/config'; // Types import { DashboardModel, PanelModel } from '../state'; -import { PanelPluginMeta } from 'app/types'; -import { LoadingState, PanelData } from '@grafana/ui'; +import { PanelPluginMeta, LoadingState, PanelData } from '@grafana/ui'; import { ScopedVars } from '@grafana/ui'; import templateSrv from 'app/features/templating/template_srv'; diff --git a/public/app/features/dashboard/dashgrid/PanelPluginNotFound.tsx b/public/app/features/dashboard/dashgrid/PanelPluginNotFound.tsx index c8704f84ce9..76a7b16d4bf 100644 --- a/public/app/features/dashboard/dashgrid/PanelPluginNotFound.tsx +++ b/public/app/features/dashboard/dashgrid/PanelPluginNotFound.tsx @@ -6,8 +6,8 @@ import React, { PureComponent } from 'react'; import { AlertBox } from 'app/core/components/AlertBox/AlertBox'; // Types -import { PanelPluginMeta, AppNotificationSeverity } from 'app/types'; -import { PanelProps, PanelPlugin, PluginType } from '@grafana/ui'; +import { AppNotificationSeverity } from 'app/types'; +import { PanelPluginMeta, PanelProps, PanelPlugin, PluginType } from '@grafana/ui'; interface Props { pluginId: string; diff --git a/public/app/features/dashboard/panel_editor/PanelEditor.tsx b/public/app/features/dashboard/panel_editor/PanelEditor.tsx index bc49207e5cc..bae52158ea8 100644 --- a/public/app/features/dashboard/panel_editor/PanelEditor.tsx +++ b/public/app/features/dashboard/panel_editor/PanelEditor.tsx @@ -13,9 +13,7 @@ import { AngularComponent } from 'app/core/services/AngularLoader'; import { PanelModel } from '../state/PanelModel'; import { DashboardModel } from '../state/DashboardModel'; -import { PanelPluginMeta } from 'app/types/plugins'; - -import { Tooltip } from '@grafana/ui'; +import { PanelPluginMeta, Tooltip } from '@grafana/ui'; interface PanelEditorProps { panel: PanelModel; diff --git a/public/app/features/dashboard/panel_editor/VisualizationTab.tsx b/public/app/features/dashboard/panel_editor/VisualizationTab.tsx index 3247cf631a7..50858a30159 100644 --- a/public/app/features/dashboard/panel_editor/VisualizationTab.tsx +++ b/public/app/features/dashboard/panel_editor/VisualizationTab.tsx @@ -16,9 +16,9 @@ import { FadeIn } from 'app/core/components/Animations/FadeIn'; // Types import { PanelModel } from '../state'; import { DashboardModel } from '../state'; -import { PanelPluginMeta } from 'app/types/plugins'; import { VizPickerSearch } from './VizPickerSearch'; import PluginStateinfo from 'app/features/plugins/PluginStateInfo'; +import { PanelPluginMeta } from '@grafana/ui'; interface Props { panel: PanelModel; diff --git a/public/app/features/dashboard/panel_editor/VizPickerSearch.tsx b/public/app/features/dashboard/panel_editor/VizPickerSearch.tsx index beb9a8508f9..d4773f15895 100644 --- a/public/app/features/dashboard/panel_editor/VizPickerSearch.tsx +++ b/public/app/features/dashboard/panel_editor/VizPickerSearch.tsx @@ -1,8 +1,7 @@ import React, { PureComponent } from 'react'; import { FilterInput } from 'app/core/components/FilterInput/FilterInput'; - -import { PanelPluginMeta } from 'app/types'; +import { PanelPluginMeta } from '@grafana/ui'; interface Props { plugin: PanelPluginMeta; diff --git a/public/app/features/dashboard/panel_editor/VizTypePicker.tsx b/public/app/features/dashboard/panel_editor/VizTypePicker.tsx index 71a02f9644e..30da43940f9 100644 --- a/public/app/features/dashboard/panel_editor/VizTypePicker.tsx +++ b/public/app/features/dashboard/panel_editor/VizTypePicker.tsx @@ -1,9 +1,8 @@ import React, { PureComponent } from 'react'; import config from 'app/core/config'; -import { PanelPluginMeta } from 'app/types/plugins'; import VizTypePickerPlugin from './VizTypePickerPlugin'; -import { EmptySearchResult } from '@grafana/ui'; +import { PanelPluginMeta, EmptySearchResult } from '@grafana/ui'; export interface Props { current: PanelPluginMeta; diff --git a/public/app/features/dashboard/panel_editor/VizTypePickerPlugin.tsx b/public/app/features/dashboard/panel_editor/VizTypePickerPlugin.tsx index a91917e918c..dd04d2fd624 100644 --- a/public/app/features/dashboard/panel_editor/VizTypePickerPlugin.tsx +++ b/public/app/features/dashboard/panel_editor/VizTypePickerPlugin.tsx @@ -1,6 +1,6 @@ import React from 'react'; import classNames from 'classnames'; -import { PanelPluginMeta } from 'app/types/plugins'; +import { PanelPluginMeta } from '@grafana/ui'; interface Props { isCurrent: boolean; diff --git a/public/app/features/dashboard/state/PanelModel.ts b/public/app/features/dashboard/state/PanelModel.ts index e79d8df00ac..3b7f754bc40 100644 --- a/public/app/features/dashboard/state/PanelModel.ts +++ b/public/app/features/dashboard/state/PanelModel.ts @@ -6,8 +6,7 @@ import { Emitter } from 'app/core/utils/emitter'; import { getNextRefIdChar } from 'app/core/utils/query'; // Types -import { DataQuery, Threshold, ScopedVars, DataQueryResponseData } from '@grafana/ui'; -import { PanelPluginMeta } from 'app/types'; +import { PanelPluginMeta, DataQuery, Threshold, ScopedVars, DataQueryResponseData } from '@grafana/ui'; import config from 'app/core/config'; import { PanelQueryRunner } from './PanelQueryRunner'; diff --git a/public/app/features/plugins/__mocks__/pluginMocks.ts b/public/app/features/plugins/__mocks__/pluginMocks.ts index 089a39ff495..9990eec0aed 100644 --- a/public/app/features/plugins/__mocks__/pluginMocks.ts +++ b/public/app/features/plugins/__mocks__/pluginMocks.ts @@ -1,5 +1,5 @@ -import { Plugin, PanelPluginMeta, PanelDataFormat } from 'app/types'; -import { PluginType } from '@grafana/ui'; +import { Plugin } from 'app/types'; +import { PanelPluginMeta, PluginType, PanelDataFormat } from '@grafana/ui'; export const getMockPlugins = (amount: number): Plugin[] => { const plugins = []; diff --git a/public/app/types/plugins.ts b/public/app/types/plugins.ts index e1225a38742..c6f5fd223b0 100644 --- a/public/app/types/plugins.ts +++ b/public/app/types/plugins.ts @@ -1,18 +1,4 @@ -import { AngularPanelPlugin, PanelPlugin, PluginMeta } from '@grafana/ui/src/types'; - -export interface PanelPluginMeta extends PluginMeta { - hideFromList?: boolean; - sort: number; - angularPlugin: AngularPanelPlugin | null; - vizPlugin: PanelPlugin | null; - hasBeenImported?: boolean; - dataFormats: PanelDataFormat[]; -} - -export enum PanelDataFormat { - Table = 'table', - TimeSeries = 'time_series', -} +import { PluginMeta } from '@grafana/ui'; /** * Values we don't want in the public API diff --git a/public/test/specs/helpers.ts b/public/test/specs/helpers.ts index 9c56c652884..8b38f95f03e 100644 --- a/public/test/specs/helpers.ts +++ b/public/test/specs/helpers.ts @@ -3,8 +3,7 @@ import config from 'app/core/config'; import * as dateMath from 'app/core/utils/datemath'; import { angularMocks, sinon } from '../lib/common'; import { PanelModel } from 'app/features/dashboard/state/PanelModel'; -import { PanelPluginMeta } from 'app/types'; -import { RawTimeRange } from '@grafana/ui/src/types'; +import { PanelPluginMeta, RawTimeRange } from '@grafana/ui'; export function ControllerTestContext(this: any) { const self = this;