mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
FieldConfig: Some name change suggestions and moving defaults to PanelPlugin (#23265)
* FieldConfig: Some name change suggestions and moving defaults to PanelPlugin * More name changes
This commit is contained in:
@@ -12,4 +12,4 @@ export * from './datetime';
|
|||||||
export * from './text';
|
export * from './text';
|
||||||
export * from './valueFormats';
|
export * from './valueFormats';
|
||||||
export * from './field';
|
export * from './field';
|
||||||
export { PanelPlugin, defaultStandardFieldConfigProperties } from './panel/PanelPlugin';
|
export { PanelPlugin } from './panel/PanelPlugin';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { identityOverrideProcessor, standardEditorsRegistry } from '../field';
|
import { identityOverrideProcessor, standardEditorsRegistry } from '../field';
|
||||||
import { PanelPlugin, standardFieldConfigProperties } from './PanelPlugin';
|
import { PanelPlugin, standardFieldConfigProperties } from './PanelPlugin';
|
||||||
import { StandardFieldConfigProperties } from '../types';
|
import { FieldConfigProperty } from '../types';
|
||||||
|
|
||||||
describe('PanelPlugin', () => {
|
describe('PanelPlugin', () => {
|
||||||
describe('declarative options', () => {
|
describe('declarative options', () => {
|
||||||
@@ -193,7 +193,7 @@ describe('PanelPlugin', () => {
|
|||||||
return <div>Panel</div>;
|
return <div>Panel</div>;
|
||||||
});
|
});
|
||||||
|
|
||||||
panel.useStandardFieldConfig([StandardFieldConfigProperties.Min, StandardFieldConfigProperties.Thresholds]);
|
panel.useStandardFieldConfig([FieldConfigProperty.Min, FieldConfigProperty.Thresholds]);
|
||||||
expect(panel.standardFieldConfigProperties).toEqual(['min', 'thresholds']);
|
expect(panel.standardFieldConfigProperties).toEqual(['min', 'thresholds']);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -203,9 +203,9 @@ describe('PanelPlugin', () => {
|
|||||||
return <div>Panel</div>;
|
return <div>Panel</div>;
|
||||||
});
|
});
|
||||||
|
|
||||||
panel.useStandardFieldConfig([StandardFieldConfigProperties.Color, StandardFieldConfigProperties.Min], {
|
panel.useStandardFieldConfig([FieldConfigProperty.Color, FieldConfigProperty.Min], {
|
||||||
[StandardFieldConfigProperties.Color]: '#ff00ff',
|
[FieldConfigProperty.Color]: '#ff00ff',
|
||||||
[StandardFieldConfigProperties.Min]: 10,
|
[FieldConfigProperty.Min]: 10,
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(panel.standardFieldConfigProperties).toEqual(['color', 'min']);
|
expect(panel.standardFieldConfigProperties).toEqual(['color', 'min']);
|
||||||
@@ -224,9 +224,9 @@ describe('PanelPlugin', () => {
|
|||||||
return <div>Panel</div>;
|
return <div>Panel</div>;
|
||||||
});
|
});
|
||||||
|
|
||||||
panel.useStandardFieldConfig([StandardFieldConfigProperties.Color], {
|
panel.useStandardFieldConfig([FieldConfigProperty.Color], {
|
||||||
[StandardFieldConfigProperties.Color]: '#ff00ff',
|
[FieldConfigProperty.Color]: '#ff00ff',
|
||||||
[StandardFieldConfigProperties.Min]: 10,
|
[FieldConfigProperty.Min]: 10,
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(panel.standardFieldConfigProperties).toEqual(['color']);
|
expect(panel.standardFieldConfigProperties).toEqual(['color']);
|
||||||
|
|||||||
@@ -8,33 +8,45 @@ import {
|
|||||||
PanelPluginMeta,
|
PanelPluginMeta,
|
||||||
PanelProps,
|
PanelProps,
|
||||||
PanelTypeChangedHandler,
|
PanelTypeChangedHandler,
|
||||||
StandardFieldConfigProperties,
|
FieldConfigProperty,
|
||||||
|
ThresholdsMode,
|
||||||
} from '../types';
|
} from '../types';
|
||||||
import { FieldConfigEditorBuilder, PanelOptionsEditorBuilder } from '../utils/OptionsUIBuilders';
|
import { FieldConfigEditorBuilder, PanelOptionsEditorBuilder } from '../utils/OptionsUIBuilders';
|
||||||
import { ComponentClass, ComponentType } from 'react';
|
import { ComponentClass, ComponentType } from 'react';
|
||||||
import set from 'lodash/set';
|
import set from 'lodash/set';
|
||||||
import { deprecationWarning } from '../utils';
|
import { deprecationWarning } from '../utils';
|
||||||
|
|
||||||
export const defaultStandardFieldConfigProperties: StandardFieldConfigProperties[] = [
|
export const allStandardFieldConfigProperties: FieldConfigProperty[] = [
|
||||||
StandardFieldConfigProperties.Min,
|
FieldConfigProperty.Min,
|
||||||
StandardFieldConfigProperties.Max,
|
FieldConfigProperty.Max,
|
||||||
StandardFieldConfigProperties.Title,
|
FieldConfigProperty.Title,
|
||||||
StandardFieldConfigProperties.Unit,
|
FieldConfigProperty.Unit,
|
||||||
StandardFieldConfigProperties.Decimals,
|
FieldConfigProperty.Decimals,
|
||||||
StandardFieldConfigProperties.NoValue,
|
FieldConfigProperty.NoValue,
|
||||||
StandardFieldConfigProperties.Color,
|
FieldConfigProperty.Color,
|
||||||
StandardFieldConfigProperties.Thresholds,
|
FieldConfigProperty.Thresholds,
|
||||||
StandardFieldConfigProperties.Mappings,
|
FieldConfigProperty.Mappings,
|
||||||
StandardFieldConfigProperties.Links,
|
FieldConfigProperty.Links,
|
||||||
];
|
];
|
||||||
|
|
||||||
export const standardFieldConfigProperties = new Map(defaultStandardFieldConfigProperties.map(p => [p, undefined]));
|
export const standardFieldConfigDefaults: Partial<Record<FieldConfigProperty, any>> = {
|
||||||
|
[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<TOptions = any, TFieldConfigOptions extends object = any> extends GrafanaPlugin<
|
export class PanelPlugin<TOptions = any, TFieldConfigOptions extends object = any> extends GrafanaPlugin<
|
||||||
PanelPluginMeta
|
PanelPluginMeta
|
||||||
> {
|
> {
|
||||||
private _defaults?: TOptions;
|
private _defaults?: TOptions;
|
||||||
private _standardFieldConfigProperties?: Map<StandardFieldConfigProperties, any>;
|
private _standardFieldConfigProperties?: Map<FieldConfigProperty, any>;
|
||||||
|
|
||||||
private _fieldConfigDefaults: FieldConfigSource<TFieldConfigOptions> = {
|
private _fieldConfigDefaults: FieldConfigSource<TFieldConfigOptions> = {
|
||||||
defaults: {},
|
defaults: {},
|
||||||
@@ -270,13 +282,13 @@ export class PanelPlugin<TOptions = any, TFieldConfigOptions extends object = an
|
|||||||
* // when plugin should only display specific standard options
|
* // when plugin should only display specific standard options
|
||||||
* // note, that options will be displayed in the order they are provided
|
* // note, that options will be displayed in the order they are provided
|
||||||
* export const plugin = new PanelPlugin<ShapePanelOptions>(ShapePanel)
|
* export const plugin = new PanelPlugin<ShapePanelOptions>(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
|
* // when standard option's default value needs to be provided
|
||||||
* export const plugin = new PanelPlugin<ShapePanelOptions>(ShapePanel)
|
* export const plugin = new PanelPlugin<ShapePanelOptions>(ShapePanel)
|
||||||
* .useStandardFieldConfig([StandardFieldConfigProperties.Min, StandardFieldConfigProperties.Max], {
|
* .useStandardFieldConfig([FieldConfigProperty.Min, FieldConfigProperty.Max], {
|
||||||
* [StandardFieldConfigProperties.Min]: 20,
|
* [FieldConfigProperty.Min]: 20,
|
||||||
* [StandardFieldConfigProperties.Max]: 100
|
* [FieldConfigProperty.Max]: 100
|
||||||
* });
|
* });
|
||||||
*
|
*
|
||||||
* ```
|
* ```
|
||||||
@@ -284,8 +296,8 @@ export class PanelPlugin<TOptions = any, TFieldConfigOptions extends object = an
|
|||||||
* @public
|
* @public
|
||||||
*/
|
*/
|
||||||
useStandardFieldConfig(
|
useStandardFieldConfig(
|
||||||
properties?: StandardFieldConfigProperties[],
|
properties?: FieldConfigProperty[] | null,
|
||||||
defauls?: Partial<Record<StandardFieldConfigProperties, any>>
|
customDefaults?: Partial<Record<FieldConfigProperty, any>>
|
||||||
) {
|
) {
|
||||||
if (!properties) {
|
if (!properties) {
|
||||||
this._standardFieldConfigProperties = standardFieldConfigProperties;
|
this._standardFieldConfigProperties = standardFieldConfigProperties;
|
||||||
@@ -294,13 +306,12 @@ export class PanelPlugin<TOptions = any, TFieldConfigOptions extends object = an
|
|||||||
this._standardFieldConfigProperties = new Map(properties.map(p => [p, standardFieldConfigProperties.get(p)]));
|
this._standardFieldConfigProperties = new Map(properties.map(p => [p, standardFieldConfigProperties.get(p)]));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (defauls) {
|
const defaults = customDefaults ?? standardFieldConfigDefaults;
|
||||||
Object.keys(defauls).map(k => {
|
|
||||||
if (properties.indexOf(k as StandardFieldConfigProperties) > -1) {
|
if (defaults) {
|
||||||
this._standardFieldConfigProperties!.set(
|
Object.keys(defaults).map(k => {
|
||||||
k as StandardFieldConfigProperties,
|
if (properties.indexOf(k as FieldConfigProperty) > -1) {
|
||||||
defauls[k as StandardFieldConfigProperties]
|
this._standardFieldConfigProperties!.set(k as FieldConfigProperty, defaults[k as FieldConfigProperty]);
|
||||||
);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ export interface ApplyFieldOverrideOptions {
|
|||||||
custom?: FieldConfigEditorRegistry;
|
custom?: FieldConfigEditorRegistry;
|
||||||
}
|
}
|
||||||
|
|
||||||
export enum StandardFieldConfigProperties {
|
export enum FieldConfigProperty {
|
||||||
Unit = 'unit',
|
Unit = 'unit',
|
||||||
Min = 'min',
|
Min = 'min',
|
||||||
Max = 'max',
|
Max = 'max',
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import {
|
|||||||
standardFieldConfigEditorRegistry,
|
standardFieldConfigEditorRegistry,
|
||||||
PanelPlugin,
|
PanelPlugin,
|
||||||
SelectableValue,
|
SelectableValue,
|
||||||
StandardFieldConfigProperties,
|
FieldConfigProperty,
|
||||||
} from '@grafana/data';
|
} from '@grafana/data';
|
||||||
import { Forms, fieldMatchersUI, ValuePicker, useTheme } from '@grafana/ui';
|
import { Forms, fieldMatchersUI, ValuePicker, useTheme } from '@grafana/ui';
|
||||||
import { getDataLinksVariableSuggestions } from '../../../panel/panellinks/link_srv';
|
import { getDataLinksVariableSuggestions } from '../../../panel/panellinks/link_srv';
|
||||||
@@ -18,7 +18,7 @@ import { css } from 'emotion';
|
|||||||
interface Props {
|
interface Props {
|
||||||
plugin: PanelPlugin;
|
plugin: PanelPlugin;
|
||||||
config: FieldConfigSource;
|
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;
|
onChange: (config: FieldConfigSource) => void;
|
||||||
/* Helpful for IntelliSense */
|
/* Helpful for IntelliSense */
|
||||||
data: DataFrame[];
|
data: DataFrame[];
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { PanelModel } from './PanelModel';
|
import { PanelModel } from './PanelModel';
|
||||||
import { getPanelPlugin } from '../../plugins/__mocks__/pluginMocks';
|
import { getPanelPlugin } from '../../plugins/__mocks__/pluginMocks';
|
||||||
import { PanelProps, StandardFieldConfigProperties } from '@grafana/data';
|
import { PanelProps, FieldConfigProperty } from '@grafana/data';
|
||||||
import { ComponentClass } from 'react';
|
import { ComponentClass } from 'react';
|
||||||
|
|
||||||
class TablePanelCtrl {}
|
class TablePanelCtrl {}
|
||||||
@@ -79,9 +79,9 @@ describe('PanelModel', () => {
|
|||||||
TablePanelCtrl // angular
|
TablePanelCtrl // angular
|
||||||
);
|
);
|
||||||
panelPlugin.setDefaults(defaultOptionsMock);
|
panelPlugin.setDefaults(defaultOptionsMock);
|
||||||
panelPlugin.useStandardFieldConfig([StandardFieldConfigProperties.Unit, StandardFieldConfigProperties.Decimals], {
|
panelPlugin.useStandardFieldConfig([FieldConfigProperty.Unit, FieldConfigProperty.Decimals], {
|
||||||
[StandardFieldConfigProperties.Unit]: 'flop',
|
[FieldConfigProperty.Unit]: 'flop',
|
||||||
[StandardFieldConfigProperties.Decimals]: 2,
|
[FieldConfigProperty.Decimals]: 2,
|
||||||
});
|
});
|
||||||
model.pluginLoaded(panelPlugin);
|
model.pluginLoaded(panelPlugin);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { sharedSingleStatPanelChangedHandler } from '@grafana/ui';
|
import { sharedSingleStatPanelChangedHandler } from '@grafana/ui';
|
||||||
import { defaultStandardFieldConfigProperties, PanelPlugin } from '@grafana/data';
|
import { PanelPlugin } from '@grafana/data';
|
||||||
import { BarGaugePanel } from './BarGaugePanel';
|
import { BarGaugePanel } from './BarGaugePanel';
|
||||||
import { BarGaugeOptions, defaults } from './types';
|
import { BarGaugeOptions, defaults } from './types';
|
||||||
import { standardFieldConfigDefaults, addStandardDataReduceOptions } from '../stat/types';
|
import { addStandardDataReduceOptions } from '../stat/types';
|
||||||
import { BarGaugePanelEditor } from './BarGaugePanelEditor';
|
import { BarGaugePanelEditor } from './BarGaugePanelEditor';
|
||||||
import { barGaugePanelMigrationHandler } from './BarGaugeMigrations';
|
import { barGaugePanelMigrationHandler } from './BarGaugeMigrations';
|
||||||
|
|
||||||
@@ -33,4 +33,4 @@ export const plugin = new PanelPlugin<BarGaugeOptions>(BarGaugePanel)
|
|||||||
})
|
})
|
||||||
.setPanelChangeHandler(sharedSingleStatPanelChangedHandler)
|
.setPanelChangeHandler(sharedSingleStatPanelChangedHandler)
|
||||||
.setMigrationHandler(barGaugePanelMigrationHandler)
|
.setMigrationHandler(barGaugePanelMigrationHandler)
|
||||||
.useStandardFieldConfig(defaultStandardFieldConfigProperties, standardFieldConfigDefaults);
|
.useStandardFieldConfig();
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { defaultStandardFieldConfigProperties, PanelPlugin } from '@grafana/data';
|
import { PanelPlugin } from '@grafana/data';
|
||||||
import { GaugePanelEditor } from './GaugePanelEditor';
|
import { GaugePanelEditor } from './GaugePanelEditor';
|
||||||
import { GaugePanel } from './GaugePanel';
|
import { GaugePanel } from './GaugePanel';
|
||||||
import { GaugeOptions, defaults } from './types';
|
import { GaugeOptions, defaults } from './types';
|
||||||
import { standardFieldConfigDefaults, addStandardDataReduceOptions } from '../stat/types';
|
import { addStandardDataReduceOptions } from '../stat/types';
|
||||||
import { gaugePanelMigrationHandler, gaugePanelChangedHandler } from './GaugeMigrations';
|
import { gaugePanelMigrationHandler, gaugePanelChangedHandler } from './GaugeMigrations';
|
||||||
|
|
||||||
export const plugin = new PanelPlugin<GaugeOptions>(GaugePanel)
|
export const plugin = new PanelPlugin<GaugeOptions>(GaugePanel)
|
||||||
@@ -25,4 +25,4 @@ export const plugin = new PanelPlugin<GaugeOptions>(GaugePanel)
|
|||||||
})
|
})
|
||||||
.setPanelChangeHandler(gaugePanelChangedHandler)
|
.setPanelChangeHandler(gaugePanelChangedHandler)
|
||||||
.setMigrationHandler(gaugePanelMigrationHandler)
|
.setMigrationHandler(gaugePanelMigrationHandler)
|
||||||
.useStandardFieldConfig(defaultStandardFieldConfigProperties, standardFieldConfigDefaults);
|
.useStandardFieldConfig();
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import { defaultStandardFieldConfigProperties, PanelPlugin, StandardFieldConfigProperties } from '@grafana/data';
|
import { PanelPlugin, FieldConfigProperty } from '@grafana/data';
|
||||||
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';
|
||||||
|
|
||||||
export const plugin = new PanelPlugin<PieChartOptions>(PieChartPanel)
|
export const plugin = new PanelPlugin<PieChartOptions>(PieChartPanel)
|
||||||
.setDefaults(defaults)
|
.setDefaults(defaults)
|
||||||
.useStandardFieldConfig(defaultStandardFieldConfigProperties, {
|
.useStandardFieldConfig(null, {
|
||||||
[StandardFieldConfigProperties.Unit]: 'short',
|
[FieldConfigProperty.Unit]: 'short',
|
||||||
})
|
})
|
||||||
.setEditor(PieChartPanelEditor);
|
.setEditor(PieChartPanelEditor);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { sharedSingleStatMigrationHandler, sharedSingleStatPanelChangedHandler } from '@grafana/ui';
|
import { sharedSingleStatMigrationHandler, sharedSingleStatPanelChangedHandler } from '@grafana/ui';
|
||||||
import { defaultStandardFieldConfigProperties, PanelPlugin } from '@grafana/data';
|
import { PanelPlugin } from '@grafana/data';
|
||||||
import { StatPanelOptions, defaults, standardFieldConfigDefaults, addStandardDataReduceOptions } from './types';
|
import { StatPanelOptions, defaults, addStandardDataReduceOptions } from './types';
|
||||||
import { StatPanel } from './StatPanel';
|
import { StatPanel } from './StatPanel';
|
||||||
import { StatPanelEditor } from './StatPanelEditor';
|
import { StatPanelEditor } from './StatPanelEditor';
|
||||||
|
|
||||||
@@ -48,4 +48,4 @@ export const plugin = new PanelPlugin<StatPanelOptions>(StatPanel)
|
|||||||
.setNoPadding()
|
.setNoPadding()
|
||||||
.setPanelChangeHandler(sharedSingleStatPanelChangedHandler)
|
.setPanelChangeHandler(sharedSingleStatPanelChangedHandler)
|
||||||
.setMigrationHandler(sharedSingleStatMigrationHandler)
|
.setMigrationHandler(sharedSingleStatMigrationHandler)
|
||||||
.useStandardFieldConfig(defaultStandardFieldConfigProperties, standardFieldConfigDefaults);
|
.useStandardFieldConfig();
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import {
|
|||||||
SelectableValue,
|
SelectableValue,
|
||||||
ThresholdsMode,
|
ThresholdsMode,
|
||||||
standardEditorsRegistry,
|
standardEditorsRegistry,
|
||||||
StandardFieldConfigProperties,
|
FieldConfigProperty,
|
||||||
} from '@grafana/data';
|
} from '@grafana/data';
|
||||||
import { PanelOptionsEditorBuilder } from '@grafana/data/src/utils/OptionsUIBuilders';
|
import { PanelOptionsEditorBuilder } from '@grafana/data/src/utils/OptionsUIBuilders';
|
||||||
|
|
||||||
@@ -37,15 +37,15 @@ export const commonValueOptionDefaults: ReduceDataOptions = {
|
|||||||
calcs: [ReducerID.mean],
|
calcs: [ReducerID.mean],
|
||||||
};
|
};
|
||||||
|
|
||||||
export const standardFieldConfigDefaults: Partial<Record<StandardFieldConfigProperties, any>> = {
|
export const standardFieldConfigDefaults: Partial<Record<FieldConfigProperty, any>> = {
|
||||||
[StandardFieldConfigProperties.Thresholds]: {
|
[FieldConfigProperty.Thresholds]: {
|
||||||
mode: ThresholdsMode.Absolute,
|
mode: ThresholdsMode.Absolute,
|
||||||
steps: [
|
steps: [
|
||||||
{ value: -Infinity, color: 'green' },
|
{ value: -Infinity, color: 'green' },
|
||||||
{ value: 80, color: 'red' }, // 80%
|
{ value: 80, color: 'red' },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
[StandardFieldConfigProperties.Mappings]: [],
|
[FieldConfigProperty.Mappings]: [],
|
||||||
};
|
};
|
||||||
|
|
||||||
export function addStandardDataReduceOptions(builder: PanelOptionsEditorBuilder<StatPanelOptions>) {
|
export function addStandardDataReduceOptions(builder: PanelOptionsEditorBuilder<StatPanelOptions>) {
|
||||||
|
|||||||
Reference in New Issue
Block a user