mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Fix orderFieldsTransformer sorting (#57635)
This commit is contained in:
parent
c5e420a94c
commit
069a4cb21b
@ -73,6 +73,60 @@ describe('Order Transformer', () => {
|
|||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should disable order according to config', async () => {
|
||||||
|
const cfg: DataTransformerConfig<OrderFieldsTransformerOptions> = {
|
||||||
|
id: DataTransformerID.order,
|
||||||
|
disabled: true,
|
||||||
|
options: {
|
||||||
|
indexByName: {
|
||||||
|
time: 2,
|
||||||
|
temperature: 0,
|
||||||
|
humidity: 1,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
await expect(transformDataFrame([cfg], [data])).toEmitValuesWith((received) => {
|
||||||
|
const data = received[0];
|
||||||
|
const ordered = data[0];
|
||||||
|
expect(ordered.fields).toEqual([
|
||||||
|
{
|
||||||
|
config: {},
|
||||||
|
name: 'time',
|
||||||
|
type: FieldType.time,
|
||||||
|
values: new ArrayVector([3000, 4000, 5000, 6000]),
|
||||||
|
labels: undefined,
|
||||||
|
state: {
|
||||||
|
displayName: 'time',
|
||||||
|
multipleFrames: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
config: {},
|
||||||
|
name: 'temperature',
|
||||||
|
type: FieldType.number,
|
||||||
|
values: new ArrayVector([10.3, 10.4, 10.5, 10.6]),
|
||||||
|
labels: undefined,
|
||||||
|
state: {
|
||||||
|
displayName: 'temperature',
|
||||||
|
multipleFrames: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
config: {},
|
||||||
|
name: 'humidity',
|
||||||
|
type: FieldType.number,
|
||||||
|
values: new ArrayVector([10000.3, 10000.4, 10000.5, 10000.6]),
|
||||||
|
labels: undefined,
|
||||||
|
state: {
|
||||||
|
displayName: 'humidity',
|
||||||
|
multipleFrames: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when inconsistent data is received', () => {
|
describe('when inconsistent data is received', () => {
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { clone } from 'lodash';
|
||||||
import { map } from 'rxjs/operators';
|
import { map } from 'rxjs/operators';
|
||||||
|
|
||||||
import { getFieldDisplayName } from '../../field/fieldState';
|
import { getFieldDisplayName } from '../../field/fieldState';
|
||||||
@ -52,7 +53,9 @@ const createFieldsOrderer =
|
|||||||
return fields;
|
return fields;
|
||||||
}
|
}
|
||||||
const comparer = createOrderFieldsComparer(indexByName);
|
const comparer = createOrderFieldsComparer(indexByName);
|
||||||
return fields.sort((a, b) => comparer(getFieldDisplayName(a, frame, data), getFieldDisplayName(b, frame, data)));
|
return clone(fields).sort((a, b) =>
|
||||||
|
comparer(getFieldDisplayName(a, frame, data), getFieldDisplayName(b, frame, data))
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const indexOfField = (fieldName: string, indexByName: Record<string, number>) => {
|
const indexOfField = (fieldName: string, indexByName: Record<string, number>) => {
|
||||||
|
Loading…
Reference in New Issue
Block a user