|
@@ -1,4 +1,4 @@
|
|
|
-import { ReactPanelPlugin } from '@grafana/ui';
|
|
|
|
|
|
|
+import { ReactPanelPlugin, DisplayValueOptions } from '@grafana/ui';
|
|
|
import cloneDeep from 'lodash/cloneDeep';
|
|
import cloneDeep from 'lodash/cloneDeep';
|
|
|
|
|
|
|
|
import { GaugePanelEditor } from './GaugePanelEditor';
|
|
import { GaugePanelEditor } from './GaugePanelEditor';
|
|
@@ -8,9 +8,10 @@ import { GaugeOptions, defaults } from './types';
|
|
|
export const reactPanel = new ReactPanelPlugin<GaugeOptions>(GaugePanel);
|
|
export const reactPanel = new ReactPanelPlugin<GaugeOptions>(GaugePanel);
|
|
|
|
|
|
|
|
// Bar Gauge uses the same handler
|
|
// Bar Gauge uses the same handler
|
|
|
-export const gaugePreserveOptionsHandler = (pluginId: string, prevOptions: any) => {
|
|
|
|
|
- const options: Partial<GaugeOptions> = {};
|
|
|
|
|
|
|
|
|
|
|
|
+const optionsToCheck = ['display', 'stat', 'maxValue', 'maxValue'];
|
|
|
|
|
+
|
|
|
|
|
+export const gaugePanelTypeChangedHook = (options: Partial<GaugeOptions>, prevPluginId?: string, prevOptions?: any) => {
|
|
|
// TODO! migrate to new settings format
|
|
// TODO! migrate to new settings format
|
|
|
//
|
|
//
|
|
|
// thresholds?: Threshold[];
|
|
// thresholds?: Threshold[];
|
|
@@ -21,11 +22,32 @@ export const gaugePreserveOptionsHandler = (pluginId: string, prevOptions: any)
|
|
|
// console.warn('TODO!! how do we best migration options?');
|
|
// console.warn('TODO!! how do we best migration options?');
|
|
|
// }
|
|
// }
|
|
|
|
|
|
|
|
- if (prevOptions.display) {
|
|
|
|
|
- options.stat = prevOptions.stat;
|
|
|
|
|
- options.display = cloneDeep(prevOptions.display);
|
|
|
|
|
- options.maxValue = prevOptions.maxValue;
|
|
|
|
|
- options.minValue = prevOptions.minValue;
|
|
|
|
|
|
|
+ // 6.0 -> 6.1, settings were stored on the root, now moved to display
|
|
|
|
|
+ if (!options.display && !prevOptions && options.hasOwnProperty('thresholds')) {
|
|
|
|
|
+ console.log('Migrating old gauge settings format', options);
|
|
|
|
|
+ const migrate = options as any;
|
|
|
|
|
+ const display = (migrate.valueOptions || {}) as DisplayValueOptions;
|
|
|
|
|
+
|
|
|
|
|
+ display.thresholds = migrate.thresholds;
|
|
|
|
|
+ display.mappings = migrate.valueMappings;
|
|
|
|
|
+ if (migrate.valueMappings) {
|
|
|
|
|
+ options.stat = migrate.valueMappings.stat;
|
|
|
|
|
+ delete migrate.valueMappings.stat;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ delete migrate.valueOptions;
|
|
|
|
|
+ delete migrate.thresholds;
|
|
|
|
|
+ delete migrate.valueMappings;
|
|
|
|
|
+
|
|
|
|
|
+ options.display = display;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (prevOptions) {
|
|
|
|
|
+ optionsToCheck.forEach(v => {
|
|
|
|
|
+ if (prevOptions.hasOwnProperty(v)) {
|
|
|
|
|
+ options[v] = cloneDeep(prevOptions.display);
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return options;
|
|
return options;
|
|
@@ -33,4 +55,4 @@ export const gaugePreserveOptionsHandler = (pluginId: string, prevOptions: any)
|
|
|
|
|
|
|
|
reactPanel.setEditor(GaugePanelEditor);
|
|
reactPanel.setEditor(GaugePanelEditor);
|
|
|
reactPanel.setDefaults(defaults);
|
|
reactPanel.setDefaults(defaults);
|
|
|
-reactPanel.setPreserveOptionsHandler(gaugePreserveOptionsHandler);
|
|
|
|
|
|
|
+reactPanel.setPanelTypeChangedHook(gaugePanelTypeChangedHook);
|