TimeSeries: Separate field unit config for axis ticks and other display means when stacking by percent (#43713)

This commit is contained in:
Dominik Prokop 2022-01-10 01:18:56 -08:00 committed by GitHub
parent 737bc35219
commit 4b814dbcea
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 8 deletions

View File

@ -11,6 +11,7 @@ import {
getFieldColorModeForField,
getFieldSeriesColor,
getFieldDisplayName,
getDisplayProcessor,
} from '@grafana/data';
import { UPlotConfigBuilder, UPlotConfigPrepFn } from '../uPlot/config/UPlotConfigBuilder';
@ -23,6 +24,7 @@ import {
ScaleDirection,
ScaleOrientation,
VizLegendOptions,
StackingMode,
} from '@grafana/schema';
import { collectStackingGroups, orderIdsByCalcs, preparePlotData } from '../uPlot/utils';
import uPlot from 'uplot';
@ -135,8 +137,19 @@ export const preparePlotConfigBuilder: UPlotConfigPrepFn<{ sync: DashboardCursor
// TODO: skip this for fields with custom renderers?
field.state!.seriesIndex = seriesIndex++;
const fmt = field.display ?? defaultFormatter;
let fmt = field.display ?? defaultFormatter;
if (field.config.custom?.stacking?.mode === StackingMode.Percent) {
fmt = getDisplayProcessor({
field: {
...field,
config: {
...field.config,
unit: 'percentunit',
},
},
theme,
});
}
const scaleKey = buildScaleKey(config);
const colorMode = getFieldColorModeForField(field);
const scaleColor = getFieldSeriesColor(field, theme);

View File

@ -7,7 +7,7 @@ import {
GrafanaTheme2,
isBooleanUnit,
} from '@grafana/data';
import { GraphFieldConfig, LineInterpolation, StackingMode } from '@grafana/schema';
import { GraphFieldConfig, LineInterpolation } from '@grafana/schema';
/**
* Returns null if there are no graphable fields
@ -47,11 +47,6 @@ export function prepareGraphableFields(series: DataFrame[], theme: GrafanaTheme2
),
};
if (copy.config.custom?.stacking?.mode === StackingMode.Percent) {
copy.config.unit = 'percentunit';
copy.display = getDisplayProcessor({ field: copy, theme });
}
fields.push(copy);
break; // ok
case FieldType.boolean: