FieldOverides: apply field overrides based on configuration (#22047)

* test apply

* test apply

* Move standard field config editor registry to grafana-data

* merge master

* Apply field config defaults

* Make field and dataFrameIndex optional on on FieldOverrideContext

* Apply custom field config overrides

* Gauge - make sure thresholds are set

* Move series and field scoped vars calculation

* Enable template variables interpolation in title fields

* Expose standars field configs from grafana ui via function

* Add missing option to the config for the min value to be derived from field values

* Fix ts issue

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
This commit is contained in:
Ryan McKinley
2020-02-13 21:37:24 +01:00
committed by GitHub
parent 824f7362d4
commit 2c9b321c48
23 changed files with 553 additions and 339 deletions

View File

@@ -7,8 +7,9 @@ import {
FieldPropertyEditorItem,
DynamicConfigValue,
VariableSuggestionsScope,
standardFieldConfigEditorRegistry,
} from '@grafana/data';
import { standardFieldConfigEditorRegistry, Forms, fieldMatchersUI, ValuePicker } from '@grafana/ui';
import { Forms, fieldMatchersUI, ValuePicker } from '@grafana/ui';
import { getDataLinksVariableSuggestions } from '../../../panel/panellinks/link_srv';
import { OptionsGroup } from './OptionsGroup';
@@ -151,6 +152,7 @@ export class FieldConfigEditor extends React.PureComponent<Props> {
<div>
{config.overrides.map((o, i) => {
const matcherUi = fieldMatchersUI.get(o.matcher.id);
// TODO: apply matcher to retrieve fields
return (
<div key={`${o.matcher.id}/${i}`} style={{ border: `2px solid red`, marginBottom: '10px' }}>
<Forms.Field label={matcherUi.name} description={matcherUi.description}>

View File

@@ -0,0 +1,22 @@
import { FieldConfig, standardFieldConfigEditorRegistry } from '@grafana/data';
describe('standardFieldConfigEditorRegistry', () => {
const dummyConfig: FieldConfig = {
title: 'Hello',
min: 10,
max: 10,
decimals: 10,
thresholds: {} as any,
noValue: 'no value',
unit: 'km/s',
links: {} as any,
};
it('make sure all fields have a valid name', () => {
standardFieldConfigEditorRegistry.list().forEach(v => {
if (!dummyConfig.hasOwnProperty(v.id)) {
fail(`Registry uses unknown property: ${v.id}`);
}
});
});
});