mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Transformations: Add includeByName to organize fields transformation (#77797)
* add includeByName inclusion list to transform, update ui to work with either filtering method
This commit is contained in:
@@ -70,6 +70,33 @@ describe('OrganizeFields Transformer', () => {
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
||||
it('should order and filter (inclusion) according to config', async () => {
|
||||
const cfg: DataTransformerConfig<OrganizeFieldsTransformerOptions> = {
|
||||
id: DataTransformerID.organize,
|
||||
options: {
|
||||
excludeByName: {},
|
||||
indexByName: {},
|
||||
includeByName: {
|
||||
time: true,
|
||||
},
|
||||
renameByName: {},
|
||||
},
|
||||
};
|
||||
|
||||
await expect(transformDataFrame([cfg], [data])).toEmitValuesWith((received) => {
|
||||
const data = received[0];
|
||||
const organized = data[0];
|
||||
expect(organized.fields).toEqual([
|
||||
{
|
||||
config: {},
|
||||
name: 'time',
|
||||
type: FieldType.time,
|
||||
values: [3000, 4000, 5000, 6000],
|
||||
},
|
||||
]);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('when inconsistent data is received', () => {
|
||||
|
||||
@@ -9,6 +9,7 @@ export interface OrganizeFieldsTransformerOptions
|
||||
extends OrderFieldsTransformerOptions,
|
||||
RenameFieldsTransformerOptions {
|
||||
excludeByName: Record<string, boolean>;
|
||||
includeByName?: Record<string, boolean>;
|
||||
}
|
||||
|
||||
export const organizeFieldsTransformer: DataTransformerInfo<OrganizeFieldsTransformerOptions> = {
|
||||
@@ -19,6 +20,7 @@ export const organizeFieldsTransformer: DataTransformerInfo<OrganizeFieldsTransf
|
||||
excludeByName: {},
|
||||
indexByName: {},
|
||||
renameByName: {},
|
||||
includeByName: {},
|
||||
},
|
||||
isApplicable: (data: DataFrame[]) => {
|
||||
return data.length > 1
|
||||
@@ -33,6 +35,7 @@ export const organizeFieldsTransformer: DataTransformerInfo<OrganizeFieldsTransf
|
||||
source.pipe(
|
||||
filterFieldsByNameTransformer.operator(
|
||||
{
|
||||
include: options.includeByName ? { names: mapToExcludeArray(options.includeByName) } : undefined,
|
||||
exclude: { names: mapToExcludeArray(options.excludeByName) },
|
||||
},
|
||||
ctx
|
||||
|
||||
Reference in New Issue
Block a user