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:
Torkel Ödegaard
2020-04-02 13:24:50 +02:00
committed by GitHub
parent ce3a1fc56c
commit 61e6e41ead
11 changed files with 71 additions and 60 deletions
+1 -1
View File
@@ -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';
@@ -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 <div>Panel</div>;
});
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 <div>Panel</div>;
});
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 <div>Panel</div>;
});
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']);
+38 -27
View File
@@ -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<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<
PanelPluginMeta
> {
private _defaults?: TOptions;
private _standardFieldConfigProperties?: Map<StandardFieldConfigProperties, any>;
private _standardFieldConfigProperties?: Map<FieldConfigProperty, any>;
private _fieldConfigDefaults: FieldConfigSource<TFieldConfigOptions> = {
defaults: {},
@@ -270,13 +282,13 @@ export class PanelPlugin<TOptions = any, TFieldConfigOptions extends object = an
* // when plugin should only display specific standard options
* // note, that options will be displayed in the order they are provided
* 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
* export const plugin = new PanelPlugin<ShapePanelOptions>(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<TOptions = any, TFieldConfigOptions extends object = an
* @public
*/
useStandardFieldConfig(
properties?: StandardFieldConfigProperties[],
defauls?: Partial<Record<StandardFieldConfigProperties, any>>
properties?: FieldConfigProperty[] | null,
customDefaults?: Partial<Record<FieldConfigProperty, any>>
) {
if (!properties) {
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)]));
}
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]);
}
});
}
@@ -88,7 +88,7 @@ export interface ApplyFieldOverrideOptions {
custom?: FieldConfigEditorRegistry;
}
export enum StandardFieldConfigProperties {
export enum FieldConfigProperty {
Unit = 'unit',
Min = 'min',
Max = 'max',