Organize transformer: Use display name in field order comparer (#24984)
* Use display name in field order comparer * Post review
This commit is contained in:
@@ -47,7 +47,7 @@ export function getFieldDisplayName(field: Field, frame?: DataFrame, allFrames?:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get an appropriate display name. If the 'title' is set, use that
|
* Get an appropriate display name. If the 'displayName' field config is set, use that
|
||||||
*/
|
*/
|
||||||
function calculateFieldDisplayName(field: Field, frame?: DataFrame, allFrames?: DataFrame[]): string {
|
function calculateFieldDisplayName(field: Field, frame?: DataFrame, allFrames?: DataFrame[]): string {
|
||||||
const hasConfigTitle = field.config?.displayName && field.config?.displayName.length;
|
const hasConfigTitle = field.config?.displayName && field.config?.displayName.length;
|
||||||
|
|||||||
@@ -43,18 +43,30 @@ describe('Order Transformer', () => {
|
|||||||
name: 'temperature',
|
name: 'temperature',
|
||||||
type: FieldType.number,
|
type: FieldType.number,
|
||||||
values: new ArrayVector([10.3, 10.4, 10.5, 10.6]),
|
values: new ArrayVector([10.3, 10.4, 10.5, 10.6]),
|
||||||
|
labels: undefined,
|
||||||
|
state: {
|
||||||
|
displayName: 'temperature',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
config: {},
|
config: {},
|
||||||
name: 'humidity',
|
name: 'humidity',
|
||||||
type: FieldType.number,
|
type: FieldType.number,
|
||||||
values: new ArrayVector([10000.3, 10000.4, 10000.5, 10000.6]),
|
values: new ArrayVector([10000.3, 10000.4, 10000.5, 10000.6]),
|
||||||
|
labels: undefined,
|
||||||
|
state: {
|
||||||
|
displayName: 'humidity',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
config: {},
|
config: {},
|
||||||
name: 'time',
|
name: 'time',
|
||||||
type: FieldType.time,
|
type: FieldType.time,
|
||||||
values: new ArrayVector([3000, 4000, 5000, 6000]),
|
values: new ArrayVector([3000, 4000, 5000, 6000]),
|
||||||
|
labels: undefined,
|
||||||
|
state: {
|
||||||
|
displayName: 'time',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
@@ -90,18 +102,30 @@ describe('Order Transformer', () => {
|
|||||||
name: 'humidity',
|
name: 'humidity',
|
||||||
type: FieldType.number,
|
type: FieldType.number,
|
||||||
values: new ArrayVector([10000.3, 10000.4, 10000.5, 10000.6]),
|
values: new ArrayVector([10000.3, 10000.4, 10000.5, 10000.6]),
|
||||||
|
labels: undefined,
|
||||||
|
state: {
|
||||||
|
displayName: 'humidity',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
config: {},
|
config: {},
|
||||||
name: 'time',
|
name: 'time',
|
||||||
type: FieldType.time,
|
type: FieldType.time,
|
||||||
values: new ArrayVector([3000, 4000, 5000, 6000]),
|
values: new ArrayVector([3000, 4000, 5000, 6000]),
|
||||||
|
labels: undefined,
|
||||||
|
state: {
|
||||||
|
displayName: 'time',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
config: {},
|
config: {},
|
||||||
name: 'pressure',
|
name: 'pressure',
|
||||||
type: FieldType.number,
|
type: FieldType.number,
|
||||||
values: new ArrayVector([10.3, 10.4, 10.5, 10.6]),
|
values: new ArrayVector([10.3, 10.4, 10.5, 10.6]),
|
||||||
|
labels: undefined,
|
||||||
|
state: {
|
||||||
|
displayName: 'pressure',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { DataTransformerID } from './ids';
|
import { DataTransformerID } from './ids';
|
||||||
import { DataTransformerInfo } from '../../types/transformations';
|
import { DataTransformerInfo } from '../../types/transformations';
|
||||||
import { DataFrame } from '../..';
|
import { DataFrame, Field } from '../../types';
|
||||||
import { Field } from '../../types';
|
import { getFieldDisplayName } from '../../field/fieldState';
|
||||||
|
|
||||||
export interface OrderFieldsTransformerOptions {
|
export interface OrderFieldsTransformerOptions {
|
||||||
indexByName: Record<string, number>;
|
indexByName: Record<string, number>;
|
||||||
@@ -29,7 +29,7 @@ export const orderFieldsTransformer: DataTransformerInfo<OrderFieldsTransformerO
|
|||||||
|
|
||||||
return data.map(frame => ({
|
return data.map(frame => ({
|
||||||
...frame,
|
...frame,
|
||||||
fields: orderer(frame.fields),
|
fields: orderer(frame.fields, data, frame),
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
@@ -39,7 +39,11 @@ export const createOrderFieldsComparer = (indexByName: Record<string, number>) =
|
|||||||
return indexOfField(a, indexByName) - indexOfField(b, indexByName);
|
return indexOfField(a, indexByName) - indexOfField(b, indexByName);
|
||||||
};
|
};
|
||||||
|
|
||||||
const createFieldsOrderer = (indexByName: Record<string, number>) => (fields: Field[]) => {
|
const createFieldsOrderer = (indexByName: Record<string, number>) => (
|
||||||
|
fields: Field[],
|
||||||
|
data: DataFrame[],
|
||||||
|
frame: DataFrame
|
||||||
|
) => {
|
||||||
if (!Array.isArray(fields) || fields.length === 0) {
|
if (!Array.isArray(fields) || fields.length === 0) {
|
||||||
return fields;
|
return fields;
|
||||||
}
|
}
|
||||||
@@ -47,7 +51,7 @@ const createFieldsOrderer = (indexByName: Record<string, number>) => (fields: Fi
|
|||||||
return fields;
|
return fields;
|
||||||
}
|
}
|
||||||
const comparer = createOrderFieldsComparer(indexByName);
|
const comparer = createOrderFieldsComparer(indexByName);
|
||||||
return fields.sort((a, b) => comparer(a.name, b.name));
|
return 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>) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user