Fix orderFieldsTransformer sorting (#57635)

This commit is contained in:
Beto Muniz 2022-10-25 17:48:14 -03:00 committed by GitHub
parent c5e420a94c
commit 069a4cb21b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 58 additions and 1 deletions

View File

@ -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', () => {

View File

@ -1,3 +1,4 @@
import { clone } from 'lodash';
import { map } from 'rxjs/operators';
import { getFieldDisplayName } from '../../field/fieldState';
@ -52,7 +53,9 @@ const createFieldsOrderer =
return fields;
}
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>) => {