TimeSeries: always try to detect & fix reverse-sorted time field (#47906)

This commit is contained in:
Leon Sorokin
2022-04-19 23:20:09 -05:00
committed by GitHub
parent 89fa35a53f
commit aa98123e72
5 changed files with 34 additions and 17 deletions

View File

@@ -28,6 +28,7 @@ import {
import { orderBy } from 'lodash';
import { findField } from 'app/features/dimensions';
import { getStackingGroups } from '@grafana/ui/src/components/uPlot/utils';
import { maybeSortFrame } from '@grafana/data/src/transformations/transformers/joinDataFrames';
function getBarCharScaleOrientation(orientation: VizOrientation) {
if (orientation === VizOrientation.Vertical) {
@@ -301,7 +302,13 @@ export function prepareBarChartDisplayValues(
}
// Bar chart requires a single frame
const frame = series.length === 1 ? series[0] : outerJoinDataFrames({ frames: series, enforceSort: false });
const frame =
series.length === 1
? maybeSortFrame(
series[0],
series[0].fields.findIndex((f) => f.type === FieldType.time)
)
: outerJoinDataFrames({ frames: series });
if (!frame) {
return { warn: 'Unable to join data' } as BarChartDisplayValues;
}

View File

@@ -7,6 +7,7 @@ import {
GrafanaTheme2,
outerJoinDataFrames,
} from '@grafana/data';
import { maybeSortFrame } from '@grafana/data/src/transformations/transformers/joinDataFrames';
import { findField } from 'app/features/dimensions';
import { prepareGraphableFields } from '../timeseries/utils';
import { CandlestickOptions, CandlestickFieldMap, VizDisplayMode } from './models.gen';
@@ -102,7 +103,13 @@ export function prepareCandlestickFields(
// All fields
const fieldMap = options.fields ?? {};
const aligned = series.length === 1 ? series[0] : outerJoinDataFrames({ frames: series, enforceSort: true });
const aligned =
series.length === 1
? maybeSortFrame(
series[0],
series[0].fields.findIndex((f) => f.type === FieldType.time)
)
: outerJoinDataFrames({ frames: series });
if (!aligned?.length) {
return null;
}