grafana/data: Move useFieldOverrides from core (#60817)
* grafana/data: Move useFieldOverrides from core * Update packages/grafana-data/src/field/fieldOverrides.ts Co-authored-by: Torkel Ödegaard <torkel@grafana.com> * Review Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
This commit is contained in:
co-authored by
Torkel Ödegaard
parent
6e89421544
commit
831e7697ae
@@ -49,6 +49,7 @@
|
||||
"moment-timezone": "0.5.38",
|
||||
"ol": "7.1.0",
|
||||
"papaparse": "5.3.2",
|
||||
"react-use": "17.4.0",
|
||||
"regenerator-runtime": "0.13.10",
|
||||
"rxjs": "7.5.7",
|
||||
"tinycolor2": "1.4.2",
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
import { isNumber, set, unset, get, cloneDeep } from 'lodash';
|
||||
import { useMemo, useRef } from 'react';
|
||||
import usePrevious from 'react-use/lib/usePrevious';
|
||||
|
||||
import { guessFieldTypeForField } from '../dataframe';
|
||||
import { compareArrayValues, compareDataFrameStructures, guessFieldTypeForField } from '../dataframe';
|
||||
import { getTimeField } from '../dataframe/processDataFrame';
|
||||
import { PanelPlugin } from '../panel/PanelPlugin';
|
||||
import { GrafanaTheme2 } from '../themes';
|
||||
import { asHexString } from '../themes/colorManipulator';
|
||||
import { fieldMatchers, reduceField, ReducerID } from '../transformations';
|
||||
import {
|
||||
@@ -16,11 +20,13 @@ import {
|
||||
FieldColorModeId,
|
||||
FieldConfig,
|
||||
FieldConfigPropertyItem,
|
||||
FieldConfigSource,
|
||||
FieldOverrideContext,
|
||||
FieldType,
|
||||
InterpolateFunction,
|
||||
LinkModel,
|
||||
NumericRange,
|
||||
PanelData,
|
||||
ScopedVars,
|
||||
TimeZone,
|
||||
ValueLinkConfig,
|
||||
@@ -503,3 +509,49 @@ export function applyRawFieldOverrides(data: DataFrame[]): DataFrame[] {
|
||||
|
||||
return newData;
|
||||
}
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
export function useFieldOverrides(
|
||||
plugin: PanelPlugin | undefined,
|
||||
fieldConfig: FieldConfigSource | undefined,
|
||||
data: PanelData | undefined,
|
||||
timeZone: string,
|
||||
theme: GrafanaTheme2,
|
||||
replace: InterpolateFunction
|
||||
): PanelData | undefined {
|
||||
const fieldConfigRegistry = plugin?.fieldConfigRegistry;
|
||||
const structureRev = useRef(0);
|
||||
const prevSeries = usePrevious(data?.series);
|
||||
|
||||
return useMemo(() => {
|
||||
if (!fieldConfigRegistry || !fieldConfig || !data) {
|
||||
return;
|
||||
}
|
||||
|
||||
const series = data?.series;
|
||||
|
||||
if (
|
||||
data.structureRev == null &&
|
||||
series &&
|
||||
prevSeries &&
|
||||
!compareArrayValues(series, prevSeries, compareDataFrameStructures)
|
||||
) {
|
||||
structureRev.current++;
|
||||
}
|
||||
|
||||
return {
|
||||
structureRev: structureRev.current,
|
||||
...data,
|
||||
series: applyFieldOverrides({
|
||||
data: series,
|
||||
fieldConfig,
|
||||
fieldConfigRegistry,
|
||||
replaceVariables: replace,
|
||||
theme,
|
||||
timeZone,
|
||||
}),
|
||||
};
|
||||
}, [fieldConfigRegistry, fieldConfig, data, prevSeries, timeZone, theme, replace]);
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ export {
|
||||
} from './fieldColor';
|
||||
export { FieldConfigOptionsRegistry } from './FieldConfigOptionsRegistry';
|
||||
export { sortThresholds, getActiveThreshold } from './thresholds';
|
||||
export { applyFieldOverrides, validateFieldConfig, applyRawFieldOverrides } from './fieldOverrides';
|
||||
export { applyFieldOverrides, validateFieldConfig, applyRawFieldOverrides, useFieldOverrides } from './fieldOverrides';
|
||||
export { getFieldDisplayValuesProxy } from './getFieldDisplayValuesProxy';
|
||||
export { getFieldDisplayName, getFrameDisplayName } from './fieldState';
|
||||
export { getScaleCalculator, getFieldConfigWithMinMax } from './scale';
|
||||
|
||||
Reference in New Issue
Block a user