mirror of https://github.com/grafana/grafana
Merge pull request #16166 from ryantxu/drop-panel-plugin-setters
Refactor ReactPanelPlugin change hooks -> handler & add panel version to jsonpull/16183/head
commit
090b3f6c6d
@ -1,8 +1,6 @@ |
|||||||
import { ReactPanelPlugin } from '@grafana/ui'; |
import { ReactPanelPlugin } from '@grafana/ui'; |
||||||
|
|
||||||
import { GraphPanelEditor } from './GraphPanelEditor'; |
import { GraphPanelEditor } from './GraphPanelEditor'; |
||||||
import { GraphPanel } from './GraphPanel'; |
import { GraphPanel } from './GraphPanel'; |
||||||
import { Options } from './types'; |
import { Options, defaults } from './types'; |
||||||
|
|
||||||
export const reactPanel = new ReactPanelPlugin<Options>(GraphPanel); |
export const reactPanel = new ReactPanelPlugin<Options>(GraphPanel).setDefaults(defaults).setEditor(GraphPanelEditor); |
||||||
reactPanel.setEditor(GraphPanelEditor); |
|
||||||
|
@ -1,12 +1,8 @@ |
|||||||
import { ReactPanelPlugin } from '@grafana/ui'; |
import { ReactPanelPlugin } from '@grafana/ui'; |
||||||
|
import { PieChartPanelEditor } from './PieChartPanelEditor'; |
||||||
import PieChartPanelEditor from './PieChartPanelEditor'; |
|
||||||
import { PieChartPanel } from './PieChartPanel'; |
import { PieChartPanel } from './PieChartPanel'; |
||||||
import { PieChartOptions, defaults } from './types'; |
import { PieChartOptions, defaults } from './types'; |
||||||
import { singleStatBaseOptionsCheck } from '../singlestat2/module'; |
|
||||||
|
|
||||||
export const reactPanel = new ReactPanelPlugin<PieChartOptions>(PieChartPanel); |
|
||||||
|
|
||||||
reactPanel.setEditor(PieChartPanelEditor); |
export const reactPanel = new ReactPanelPlugin<PieChartOptions>(PieChartPanel) |
||||||
reactPanel.setDefaults(defaults); |
.setDefaults(defaults) |
||||||
reactPanel.setPanelTypeChangedHook(singleStatBaseOptionsCheck); |
.setEditor(PieChartPanelEditor); |
||||||
|
@ -1,39 +1,39 @@ |
|||||||
import { ReactPanelPlugin, getStatsCalculators } from '@grafana/ui'; |
import { ReactPanelPlugin, getStatsCalculators, PanelModel } from '@grafana/ui'; |
||||||
import { SingleStatOptions, defaults, SingleStatBaseOptions } from './types'; |
import { SingleStatOptions, defaults, SingleStatBaseOptions } from './types'; |
||||||
import { SingleStatPanel } from './SingleStatPanel'; |
import { SingleStatPanel } from './SingleStatPanel'; |
||||||
import cloneDeep from 'lodash/cloneDeep'; |
import cloneDeep from 'lodash/cloneDeep'; |
||||||
import { SingleStatEditor } from './SingleStatEditor'; |
import { SingleStatEditor } from './SingleStatEditor'; |
||||||
|
|
||||||
export const reactPanel = new ReactPanelPlugin<SingleStatOptions>(SingleStatPanel); |
|
||||||
|
|
||||||
const optionsToKeep = ['valueOptions', 'stat', 'maxValue', 'maxValue', 'thresholds', 'valueMappings']; |
const optionsToKeep = ['valueOptions', 'stat', 'maxValue', 'maxValue', 'thresholds', 'valueMappings']; |
||||||
|
|
||||||
export const singleStatBaseOptionsCheck = ( |
export const singleStatBaseOptionsCheck = ( |
||||||
options: Partial<SingleStatBaseOptions>, |
options: Partial<SingleStatBaseOptions>, |
||||||
prevPluginId: string, |
prevPluginId: string, |
||||||
prevOptions?: any |
prevOptions: any |
||||||
) => { |
) => { |
||||||
if (prevOptions) { |
optionsToKeep.forEach(v => { |
||||||
optionsToKeep.forEach(v => { |
if (prevOptions.hasOwnProperty(v)) { |
||||||
if (prevOptions.hasOwnProperty(v)) { |
options[v] = cloneDeep(prevOptions.display); |
||||||
options[v] = cloneDeep(prevOptions.display); |
} |
||||||
} |
}); |
||||||
}); |
|
||||||
} |
|
||||||
return options; |
return options; |
||||||
}; |
}; |
||||||
|
|
||||||
export const singleStatMigrationCheck = (options: Partial<SingleStatBaseOptions>) => { |
export const singleStatMigrationCheck = (panel: PanelModel<SingleStatOptions>) => { |
||||||
// 6.1 renamed some stats, This makes sure they are up to date
|
const options = panel.options; |
||||||
// avg -> mean, current -> last, total -> sum
|
if (options.valueOptions) { |
||||||
const { valueOptions } = options; |
// 6.1 renamed some stats, This makes sure they are up to date
|
||||||
if (valueOptions && valueOptions.stat) { |
// avg -> mean, current -> last, total -> sum
|
||||||
valueOptions.stat = getStatsCalculators([valueOptions.stat]).map(s => s.id)[0]; |
const { valueOptions } = options; |
||||||
|
if (valueOptions && valueOptions.stat) { |
||||||
|
valueOptions.stat = getStatsCalculators([valueOptions.stat]).map(s => s.id)[0]; |
||||||
|
} |
||||||
} |
} |
||||||
return options; |
return options; |
||||||
}; |
}; |
||||||
|
|
||||||
reactPanel.setEditor(SingleStatEditor); |
export const reactPanel = new ReactPanelPlugin<SingleStatOptions>(SingleStatPanel) |
||||||
reactPanel.setDefaults(defaults); |
.setDefaults(defaults) |
||||||
reactPanel.setPanelTypeChangedHook(singleStatBaseOptionsCheck); |
.setEditor(SingleStatEditor) |
||||||
reactPanel.setPanelMigrationHook(singleStatMigrationCheck); |
.setPanelChangeHandler(singleStatMigrationCheck) |
||||||
|
.setMigrationHandler(singleStatMigrationCheck); |
||||||
|
Loading…
Reference in new issue