diff --git a/packages/grafana-data/src/index.ts b/packages/grafana-data/src/index.ts
index 8581614c40e..43a488d7095 100644
--- a/packages/grafana-data/src/index.ts
+++ b/packages/grafana-data/src/index.ts
@@ -12,4 +12,4 @@ export * from './datetime';
export * from './text';
export * from './valueFormats';
export * from './field';
-export { PanelPlugin, defaultStandardFieldConfigProperties } from './panel/PanelPlugin';
+export { PanelPlugin } from './panel/PanelPlugin';
diff --git a/packages/grafana-data/src/panel/PanelPlugin.test.tsx b/packages/grafana-data/src/panel/PanelPlugin.test.tsx
index 1b272d20759..66ea67c2526 100644
--- a/packages/grafana-data/src/panel/PanelPlugin.test.tsx
+++ b/packages/grafana-data/src/panel/PanelPlugin.test.tsx
@@ -1,7 +1,7 @@
import React from 'react';
import { identityOverrideProcessor, standardEditorsRegistry } from '../field';
import { PanelPlugin, standardFieldConfigProperties } from './PanelPlugin';
-import { StandardFieldConfigProperties } from '../types';
+import { FieldConfigProperty } from '../types';
describe('PanelPlugin', () => {
describe('declarative options', () => {
@@ -193,7 +193,7 @@ describe('PanelPlugin', () => {
return
Panel
;
});
- panel.useStandardFieldConfig([StandardFieldConfigProperties.Min, StandardFieldConfigProperties.Thresholds]);
+ panel.useStandardFieldConfig([FieldConfigProperty.Min, FieldConfigProperty.Thresholds]);
expect(panel.standardFieldConfigProperties).toEqual(['min', 'thresholds']);
});
@@ -203,9 +203,9 @@ describe('PanelPlugin', () => {
return Panel
;
});
- panel.useStandardFieldConfig([StandardFieldConfigProperties.Color, StandardFieldConfigProperties.Min], {
- [StandardFieldConfigProperties.Color]: '#ff00ff',
- [StandardFieldConfigProperties.Min]: 10,
+ panel.useStandardFieldConfig([FieldConfigProperty.Color, FieldConfigProperty.Min], {
+ [FieldConfigProperty.Color]: '#ff00ff',
+ [FieldConfigProperty.Min]: 10,
});
expect(panel.standardFieldConfigProperties).toEqual(['color', 'min']);
@@ -224,9 +224,9 @@ describe('PanelPlugin', () => {
return Panel
;
});
- panel.useStandardFieldConfig([StandardFieldConfigProperties.Color], {
- [StandardFieldConfigProperties.Color]: '#ff00ff',
- [StandardFieldConfigProperties.Min]: 10,
+ panel.useStandardFieldConfig([FieldConfigProperty.Color], {
+ [FieldConfigProperty.Color]: '#ff00ff',
+ [FieldConfigProperty.Min]: 10,
});
expect(panel.standardFieldConfigProperties).toEqual(['color']);
diff --git a/packages/grafana-data/src/panel/PanelPlugin.ts b/packages/grafana-data/src/panel/PanelPlugin.ts
index 89c64721da6..c382b932c04 100644
--- a/packages/grafana-data/src/panel/PanelPlugin.ts
+++ b/packages/grafana-data/src/panel/PanelPlugin.ts
@@ -8,33 +8,45 @@ import {
PanelPluginMeta,
PanelProps,
PanelTypeChangedHandler,
- StandardFieldConfigProperties,
+ FieldConfigProperty,
+ ThresholdsMode,
} from '../types';
import { FieldConfigEditorBuilder, PanelOptionsEditorBuilder } from '../utils/OptionsUIBuilders';
import { ComponentClass, ComponentType } from 'react';
import set from 'lodash/set';
import { deprecationWarning } from '../utils';
-export const defaultStandardFieldConfigProperties: StandardFieldConfigProperties[] = [
- StandardFieldConfigProperties.Min,
- StandardFieldConfigProperties.Max,
- StandardFieldConfigProperties.Title,
- StandardFieldConfigProperties.Unit,
- StandardFieldConfigProperties.Decimals,
- StandardFieldConfigProperties.NoValue,
- StandardFieldConfigProperties.Color,
- StandardFieldConfigProperties.Thresholds,
- StandardFieldConfigProperties.Mappings,
- StandardFieldConfigProperties.Links,
+export const allStandardFieldConfigProperties: FieldConfigProperty[] = [
+ FieldConfigProperty.Min,
+ FieldConfigProperty.Max,
+ FieldConfigProperty.Title,
+ FieldConfigProperty.Unit,
+ FieldConfigProperty.Decimals,
+ FieldConfigProperty.NoValue,
+ FieldConfigProperty.Color,
+ FieldConfigProperty.Thresholds,
+ FieldConfigProperty.Mappings,
+ FieldConfigProperty.Links,
];
-export const standardFieldConfigProperties = new Map(defaultStandardFieldConfigProperties.map(p => [p, undefined]));
+export const standardFieldConfigDefaults: Partial> = {
+ [FieldConfigProperty.Thresholds]: {
+ mode: ThresholdsMode.Absolute,
+ steps: [
+ { value: -Infinity, color: 'green' },
+ { value: 80, color: 'red' },
+ ],
+ },
+ [FieldConfigProperty.Mappings]: [],
+};
+
+export const standardFieldConfigProperties = new Map(allStandardFieldConfigProperties.map(p => [p, undefined]));
export class PanelPlugin extends GrafanaPlugin<
PanelPluginMeta
> {
private _defaults?: TOptions;
- private _standardFieldConfigProperties?: Map;
+ private _standardFieldConfigProperties?: Map;
private _fieldConfigDefaults: FieldConfigSource = {
defaults: {},
@@ -270,13 +282,13 @@ export class PanelPlugin(ShapePanel)
- * .useStandardFieldConfig([StandardFieldConfigProperties.Min, StandardFieldConfigProperties.Max, StandardFieldConfigProperties.Links]);
+ * .useStandardFieldConfig([FieldConfigProperty.Min, FieldConfigProperty.Max, FieldConfigProperty.Links]);
*
* // when standard option's default value needs to be provided
* export const plugin = new PanelPlugin(ShapePanel)
- * .useStandardFieldConfig([StandardFieldConfigProperties.Min, StandardFieldConfigProperties.Max], {
- * [StandardFieldConfigProperties.Min]: 20,
- * [StandardFieldConfigProperties.Max]: 100
+ * .useStandardFieldConfig([FieldConfigProperty.Min, FieldConfigProperty.Max], {
+ * [FieldConfigProperty.Min]: 20,
+ * [FieldConfigProperty.Max]: 100
* });
*
* ```
@@ -284,8 +296,8 @@ export class PanelPlugin>
+ properties?: FieldConfigProperty[] | null,
+ customDefaults?: Partial>
) {
if (!properties) {
this._standardFieldConfigProperties = standardFieldConfigProperties;
@@ -294,13 +306,12 @@ export class PanelPlugin [p, standardFieldConfigProperties.get(p)]));
}
- if (defauls) {
- Object.keys(defauls).map(k => {
- if (properties.indexOf(k as StandardFieldConfigProperties) > -1) {
- this._standardFieldConfigProperties!.set(
- k as StandardFieldConfigProperties,
- defauls[k as StandardFieldConfigProperties]
- );
+ const defaults = customDefaults ?? standardFieldConfigDefaults;
+
+ if (defaults) {
+ Object.keys(defaults).map(k => {
+ if (properties.indexOf(k as FieldConfigProperty) > -1) {
+ this._standardFieldConfigProperties!.set(k as FieldConfigProperty, defaults[k as FieldConfigProperty]);
}
});
}
diff --git a/packages/grafana-data/src/types/fieldOverrides.ts b/packages/grafana-data/src/types/fieldOverrides.ts
index 7b1816acc49..6015e2b05df 100644
--- a/packages/grafana-data/src/types/fieldOverrides.ts
+++ b/packages/grafana-data/src/types/fieldOverrides.ts
@@ -88,7 +88,7 @@ export interface ApplyFieldOverrideOptions {
custom?: FieldConfigEditorRegistry;
}
-export enum StandardFieldConfigProperties {
+export enum FieldConfigProperty {
Unit = 'unit',
Min = 'min',
Max = 'max',
diff --git a/public/app/features/dashboard/components/PanelEditor/FieldConfigEditor.tsx b/public/app/features/dashboard/components/PanelEditor/FieldConfigEditor.tsx
index 2421d88c4ad..143a9bde6d0 100644
--- a/public/app/features/dashboard/components/PanelEditor/FieldConfigEditor.tsx
+++ b/public/app/features/dashboard/components/PanelEditor/FieldConfigEditor.tsx
@@ -8,7 +8,7 @@ import {
standardFieldConfigEditorRegistry,
PanelPlugin,
SelectableValue,
- StandardFieldConfigProperties,
+ FieldConfigProperty,
} from '@grafana/data';
import { Forms, fieldMatchersUI, ValuePicker, useTheme } from '@grafana/ui';
import { getDataLinksVariableSuggestions } from '../../../panel/panellinks/link_srv';
@@ -18,7 +18,7 @@ import { css } from 'emotion';
interface Props {
plugin: PanelPlugin;
config: FieldConfigSource;
- include?: StandardFieldConfigProperties[]; // Ordered list of which fields should be shown/included
+ include?: FieldConfigProperty[]; // Ordered list of which fields should be shown/included
onChange: (config: FieldConfigSource) => void;
/* Helpful for IntelliSense */
data: DataFrame[];
diff --git a/public/app/features/dashboard/state/PanelModel.test.ts b/public/app/features/dashboard/state/PanelModel.test.ts
index 4248ad85e94..aac9ae7af06 100644
--- a/public/app/features/dashboard/state/PanelModel.test.ts
+++ b/public/app/features/dashboard/state/PanelModel.test.ts
@@ -1,6 +1,6 @@
import { PanelModel } from './PanelModel';
import { getPanelPlugin } from '../../plugins/__mocks__/pluginMocks';
-import { PanelProps, StandardFieldConfigProperties } from '@grafana/data';
+import { PanelProps, FieldConfigProperty } from '@grafana/data';
import { ComponentClass } from 'react';
class TablePanelCtrl {}
@@ -79,9 +79,9 @@ describe('PanelModel', () => {
TablePanelCtrl // angular
);
panelPlugin.setDefaults(defaultOptionsMock);
- panelPlugin.useStandardFieldConfig([StandardFieldConfigProperties.Unit, StandardFieldConfigProperties.Decimals], {
- [StandardFieldConfigProperties.Unit]: 'flop',
- [StandardFieldConfigProperties.Decimals]: 2,
+ panelPlugin.useStandardFieldConfig([FieldConfigProperty.Unit, FieldConfigProperty.Decimals], {
+ [FieldConfigProperty.Unit]: 'flop',
+ [FieldConfigProperty.Decimals]: 2,
});
model.pluginLoaded(panelPlugin);
});
diff --git a/public/app/plugins/panel/bargauge/module.tsx b/public/app/plugins/panel/bargauge/module.tsx
index b4f4a99d3f8..6b44bfd0a3a 100644
--- a/public/app/plugins/panel/bargauge/module.tsx
+++ b/public/app/plugins/panel/bargauge/module.tsx
@@ -1,8 +1,8 @@
import { sharedSingleStatPanelChangedHandler } from '@grafana/ui';
-import { defaultStandardFieldConfigProperties, PanelPlugin } from '@grafana/data';
+import { PanelPlugin } from '@grafana/data';
import { BarGaugePanel } from './BarGaugePanel';
import { BarGaugeOptions, defaults } from './types';
-import { standardFieldConfigDefaults, addStandardDataReduceOptions } from '../stat/types';
+import { addStandardDataReduceOptions } from '../stat/types';
import { BarGaugePanelEditor } from './BarGaugePanelEditor';
import { barGaugePanelMigrationHandler } from './BarGaugeMigrations';
@@ -33,4 +33,4 @@ export const plugin = new PanelPlugin(BarGaugePanel)
})
.setPanelChangeHandler(sharedSingleStatPanelChangedHandler)
.setMigrationHandler(barGaugePanelMigrationHandler)
- .useStandardFieldConfig(defaultStandardFieldConfigProperties, standardFieldConfigDefaults);
+ .useStandardFieldConfig();
diff --git a/public/app/plugins/panel/gauge/module.tsx b/public/app/plugins/panel/gauge/module.tsx
index 9b4159b0058..16ad4b049c9 100644
--- a/public/app/plugins/panel/gauge/module.tsx
+++ b/public/app/plugins/panel/gauge/module.tsx
@@ -1,8 +1,8 @@
-import { defaultStandardFieldConfigProperties, PanelPlugin } from '@grafana/data';
+import { PanelPlugin } from '@grafana/data';
import { GaugePanelEditor } from './GaugePanelEditor';
import { GaugePanel } from './GaugePanel';
import { GaugeOptions, defaults } from './types';
-import { standardFieldConfigDefaults, addStandardDataReduceOptions } from '../stat/types';
+import { addStandardDataReduceOptions } from '../stat/types';
import { gaugePanelMigrationHandler, gaugePanelChangedHandler } from './GaugeMigrations';
export const plugin = new PanelPlugin(GaugePanel)
@@ -25,4 +25,4 @@ export const plugin = new PanelPlugin(GaugePanel)
})
.setPanelChangeHandler(gaugePanelChangedHandler)
.setMigrationHandler(gaugePanelMigrationHandler)
- .useStandardFieldConfig(defaultStandardFieldConfigProperties, standardFieldConfigDefaults);
+ .useStandardFieldConfig();
diff --git a/public/app/plugins/panel/piechart/module.tsx b/public/app/plugins/panel/piechart/module.tsx
index 1ff9e6885d1..d3bca4a506e 100644
--- a/public/app/plugins/panel/piechart/module.tsx
+++ b/public/app/plugins/panel/piechart/module.tsx
@@ -1,11 +1,11 @@
-import { defaultStandardFieldConfigProperties, PanelPlugin, StandardFieldConfigProperties } from '@grafana/data';
+import { PanelPlugin, FieldConfigProperty } from '@grafana/data';
import { PieChartPanelEditor } from './PieChartPanelEditor';
import { PieChartPanel } from './PieChartPanel';
import { PieChartOptions, defaults } from './types';
export const plugin = new PanelPlugin(PieChartPanel)
.setDefaults(defaults)
- .useStandardFieldConfig(defaultStandardFieldConfigProperties, {
- [StandardFieldConfigProperties.Unit]: 'short',
+ .useStandardFieldConfig(null, {
+ [FieldConfigProperty.Unit]: 'short',
})
.setEditor(PieChartPanelEditor);
diff --git a/public/app/plugins/panel/stat/module.tsx b/public/app/plugins/panel/stat/module.tsx
index 799ff473e2d..c872adfa174 100644
--- a/public/app/plugins/panel/stat/module.tsx
+++ b/public/app/plugins/panel/stat/module.tsx
@@ -1,6 +1,6 @@
import { sharedSingleStatMigrationHandler, sharedSingleStatPanelChangedHandler } from '@grafana/ui';
-import { defaultStandardFieldConfigProperties, PanelPlugin } from '@grafana/data';
-import { StatPanelOptions, defaults, standardFieldConfigDefaults, addStandardDataReduceOptions } from './types';
+import { PanelPlugin } from '@grafana/data';
+import { StatPanelOptions, defaults, addStandardDataReduceOptions } from './types';
import { StatPanel } from './StatPanel';
import { StatPanelEditor } from './StatPanelEditor';
@@ -48,4 +48,4 @@ export const plugin = new PanelPlugin(StatPanel)
.setNoPadding()
.setPanelChangeHandler(sharedSingleStatPanelChangedHandler)
.setMigrationHandler(sharedSingleStatMigrationHandler)
- .useStandardFieldConfig(defaultStandardFieldConfigProperties, standardFieldConfigDefaults);
+ .useStandardFieldConfig();
diff --git a/public/app/plugins/panel/stat/types.ts b/public/app/plugins/panel/stat/types.ts
index e2e9ff11c05..8426d9c138c 100644
--- a/public/app/plugins/panel/stat/types.ts
+++ b/public/app/plugins/panel/stat/types.ts
@@ -6,7 +6,7 @@ import {
SelectableValue,
ThresholdsMode,
standardEditorsRegistry,
- StandardFieldConfigProperties,
+ FieldConfigProperty,
} from '@grafana/data';
import { PanelOptionsEditorBuilder } from '@grafana/data/src/utils/OptionsUIBuilders';
@@ -37,15 +37,15 @@ export const commonValueOptionDefaults: ReduceDataOptions = {
calcs: [ReducerID.mean],
};
-export const standardFieldConfigDefaults: Partial> = {
- [StandardFieldConfigProperties.Thresholds]: {
+export const standardFieldConfigDefaults: Partial> = {
+ [FieldConfigProperty.Thresholds]: {
mode: ThresholdsMode.Absolute,
steps: [
{ value: -Infinity, color: 'green' },
- { value: 80, color: 'red' }, // 80%
+ { value: 80, color: 'red' },
],
},
- [StandardFieldConfigProperties.Mappings]: [],
+ [FieldConfigProperty.Mappings]: [],
};
export function addStandardDataReduceOptions(builder: PanelOptionsEditorBuilder) {