forked from grafana.jool/grafana-jool
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.4 KiB
49 lines
1.4 KiB
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;
|
|
}
|
|
|