diff --git a/public/app/features/dashboard/dashgrid/DashboardPanel.tsx b/public/app/features/dashboard/dashgrid/DashboardPanel.tsx index 9712cb75bd0..808c861f269 100644 --- a/public/app/features/dashboard/dashgrid/DashboardPanel.tsx +++ b/public/app/features/dashboard/dashgrid/DashboardPanel.tsx @@ -125,7 +125,7 @@ export class DashboardPanel extends PureComponent { // withMenuOptions={pluginExports.withMenuOptions} panel={this.props.panel} dashboard={this.props.dashboard} - moduleMenu={pluginExports.moduleMenu} + getMenuAdditional={pluginExports.getMenuAdditional} /> {this.props.panel.isEditing && ( diff --git a/public/app/features/dashboard/dashgrid/PanelChrome.tsx b/public/app/features/dashboard/dashgrid/PanelChrome.tsx index e4f5523680b..ba0e9ecedce 100644 --- a/public/app/features/dashboard/dashgrid/PanelChrome.tsx +++ b/public/app/features/dashboard/dashgrid/PanelChrome.tsx @@ -14,14 +14,14 @@ import { PanelHeaderMenu } from './PanelHeader/PanelHeaderMenu'; import { PanelModel } from '../panel_model'; import { DashboardModel } from '../dashboard_model'; import { TimeRange, PanelProps, TimeSeries } from 'app/types'; +import { PanelHeaderGetMenuAdditional } from 'app/types/panel'; import { DataSourceApi } from 'app/types/series'; export interface PanelChromeProps { panel: PanelModel; dashboard: DashboardModel; component: ComponentClass; - // withMenuOptions?: (c: typeof PanelHeaderMenu, p: PanelModel) => typeof PanelHeaderMenu; - moduleMenu?: any; + getMenuAdditional?: PanelHeaderGetMenuAdditional; } export interface PanelChromeState { @@ -52,7 +52,7 @@ export class PanelChrome extends PureComponent ({ + this.setState((prevState: PanelChromeState) => ({ ...prevState, dataSourceApi, })); @@ -95,11 +95,12 @@ export class PanelChrome extends PureComponent> { } export { Graph2 as PanelComponent, GraphOptions as PanelOptionsComponent }; -export { moduleMenu } from './moduleMenu'; +export { getMenuAdditional } from './moduleMenu'; diff --git a/public/app/plugins/panel/graph2/moduleMenu.tsx b/public/app/plugins/panel/graph2/moduleMenu.tsx index da08cbf5d9c..2951c9e0fe1 100644 --- a/public/app/plugins/panel/graph2/moduleMenu.tsx +++ b/public/app/plugins/panel/graph2/moduleMenu.tsx @@ -7,8 +7,11 @@ import { store } from 'app/store/configureStore'; import { getDatasourceSrv } from 'app/features/plugins/datasource_srv'; import appEvents from 'app/core/app_events'; import { PanelHeaderMenuItemProps, PanelHeaderMenuItemTypes } from 'app/types/panel'; +import { TimeSeries } from 'app/types/series'; +import { DataSource } from 'app/types/datasources'; +import { PanelModel } from 'app/features/dashboard/panel_model'; -export const moduleMenu = (panel, dataSourceApi, timeSeries) => { +export const getMenuAdditional = (panel: PanelModel, dataSourceApi: DataSource, timeSeries: TimeSeries[]) => { const onExploreClick = async () => { const datasourceSrv = getDatasourceSrv(); const timeSrv = getTimeSrv(); @@ -19,7 +22,7 @@ export const moduleMenu = (panel, dataSourceApi, timeSeries) => { }; const onExportCsv = () => { - const model = {} as { seriesList: string }; + const model = {} as { seriesList: TimeSeries[] }; model.seriesList = timeSeries; appEvents.emit('show-modal', { templateHtml: '', diff --git a/public/app/types/panel.ts b/public/app/types/panel.ts index 8b12caffe1a..815aefd6203 100644 --- a/public/app/types/panel.ts +++ b/public/app/types/panel.ts @@ -1,4 +1,5 @@ -import { LoadingState, TimeSeries, TimeRange } from './series'; +import { LoadingState, TimeSeries, TimeRange, DataSourceApi } from './series'; +import { PanelModel } from 'app/features/dashboard/panel_model'; export interface PanelProps { timeSeries: TimeSeries[]; @@ -31,7 +32,11 @@ export interface PanelHeaderMenuItemProps { role?: string; } -export interface PanelMenuExtras { +export interface PanelHeaderMenuAdditional { additionalMenuItems: PanelHeaderMenuItemProps[]; additionalSubMenuItems: PanelHeaderMenuItemProps[]; } + +export interface PanelHeaderGetMenuAdditional { + (panel: PanelModel, dataSourceApi: DataSourceApi, timeSeries: TimeSeries[]): PanelHeaderMenuAdditional; +} diff --git a/public/app/types/plugins.ts b/public/app/types/plugins.ts index 0f4b2928595..114979641b8 100644 --- a/public/app/types/plugins.ts +++ b/public/app/types/plugins.ts @@ -1,5 +1,6 @@ import { ComponentClass } from 'react'; import { PanelProps, PanelOptionsProps } from './panel'; +import { PanelHeaderGetMenuAdditional } from 'app/types/panel'; export interface PluginExports { Datasource?: any; @@ -13,7 +14,7 @@ export interface PluginExports { PanelCtrl?; PanelComponent?: ComponentClass; PanelOptionsComponent: ComponentClass; - moduleMenu?: any; + getMenuAdditional?: PanelHeaderGetMenuAdditional; } export interface PanelPlugin {