mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
* First pass at showing data override dots * Added test * Adding override rule dots * Added unit test * Minor changes * Update public/app/features/dashboard/components/PanelEditor/OptionsPaneItemDescriptor.tsx Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com> * Fixed ts issues * review feedback changes * skipp broken e2e test Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
50 lines
1.4 KiB
TypeScript
50 lines
1.4 KiB
TypeScript
import { DataFrame, FieldConfigPropertyItem, FieldConfigSource } from '@grafana/data';
|
|
import { get as lodashGet } from 'lodash';
|
|
import { OptionPaneItemOverrideInfo } from '../types';
|
|
|
|
export const dataOverrideTooltipDescription =
|
|
'Some data fields have this option pre-configured. Add a field override rule to override the pre-configured value.';
|
|
export const overrideRuleTooltipDescription = 'An override rule exists for this property';
|
|
|
|
export function getOptionOverrides(
|
|
fieldOption: FieldConfigPropertyItem,
|
|
fieldConfig: FieldConfigSource,
|
|
frames: DataFrame[] | undefined
|
|
): OptionPaneItemOverrideInfo[] {
|
|
const infoDots: OptionPaneItemOverrideInfo[] = [];
|
|
|
|
// Look for options overriden in data field config
|
|
if (frames) {
|
|
for (const frame of frames) {
|
|
for (const field of frame.fields) {
|
|
const value = lodashGet(field.config, fieldOption.path);
|
|
if (value == null) {
|
|
continue;
|
|
}
|
|
|
|
infoDots.push({
|
|
type: 'data',
|
|
description: dataOverrideTooltipDescription,
|
|
tooltip: dataOverrideTooltipDescription,
|
|
});
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
const overrideRuleFound = fieldConfig.overrides.some((rule) =>
|
|
rule.properties.some((prop) => prop.id === fieldOption.id)
|
|
);
|
|
|
|
if (overrideRuleFound) {
|
|
infoDots.push({
|
|
type: 'rule',
|
|
description: overrideRuleTooltipDescription,
|
|
tooltip: overrideRuleTooltipDescription,
|
|
});
|
|
}
|
|
|
|
return infoDots;
|
|
}
|