Commit e341d4b2 by Hugo Häggmark Committed by GitHub

Reduce Transform: sort order is preserved as entered by user (#24494)

parent c3b6ee14
import { Registry } from './Registry';
import { FieldReducerInfo, fieldReducers, ReducerID } from '../transformations';
describe('Registry', () => {
describe('selectOptions', () => {
describe('when called with current', () => {
it('then order in select.current should be same as current', () => {
const list = fieldReducers.list();
const registry = new Registry<FieldReducerInfo>(() => list);
const current = [ReducerID.step, ReducerID.mean, ReducerID.allIsZero, ReducerID.first, ReducerID.delta];
const select = registry.selectOptions(current);
expect(select.current).toEqual([
{ description: 'Minimum interval between values', label: 'Step', value: 'step' },
{ description: 'Average Value', label: 'Mean', value: 'mean' },
{ description: 'All values are zero', label: 'All Zeros', value: 'allIsZero' },
{ description: 'First Value', label: 'First', value: 'first' },
{ description: 'Cumulative change in value', label: 'Delta', value: 'delta' },
]);
});
describe('when called without current', () => {
it('then it should return an empty array', () => {
const list = fieldReducers.list();
const registry = new Registry<FieldReducerInfo>(() => list);
const select = registry.selectOptions();
expect(select.current).toEqual([]);
});
});
});
});
});
......@@ -84,10 +84,10 @@ export class Registry<T extends RegistryItem> {
current: [],
} as RegistrySelectInfo;
const currentIds: any = {};
const currentOptions: Record<string, SelectableValue<string>> = {};
if (current) {
for (const id of current) {
currentIds[id] = true;
currentOptions[id] = {};
}
}
......@@ -106,10 +106,16 @@ export class Registry<T extends RegistryItem> {
};
select.options.push(option);
if (currentIds[ext.id]) {
select.current.push(option);
if (currentOptions[ext.id]) {
currentOptions[ext.id] = option;
}
}
if (current) {
// this makes sure we preserve the order of ids
select.current = Object.values(currentOptions);
}
return select;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment