Limit: Invalidate field reducer calcs on applying limit transformation (#106723)
* fix: clear state calcs when limit transformation is applied * chore: fix limit tests expected values
This commit is contained in:
@@ -35,18 +35,21 @@ describe('Limit transformer', () => {
|
|||||||
{
|
{
|
||||||
name: 'time',
|
name: 'time',
|
||||||
type: FieldType.time,
|
type: FieldType.time,
|
||||||
|
state: { calcs: undefined },
|
||||||
values: [3000, 4000, 5000],
|
values: [3000, 4000, 5000],
|
||||||
config: {},
|
config: {},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'message',
|
name: 'message',
|
||||||
type: FieldType.string,
|
type: FieldType.string,
|
||||||
|
state: { calcs: undefined },
|
||||||
values: ['one', 'two', 'two'],
|
values: ['one', 'two', 'two'],
|
||||||
config: {},
|
config: {},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'values',
|
name: 'values',
|
||||||
type: FieldType.number,
|
type: FieldType.number,
|
||||||
|
state: { calcs: undefined },
|
||||||
values: [1, 2, 2],
|
values: [1, 2, 2],
|
||||||
config: {},
|
config: {},
|
||||||
},
|
},
|
||||||
@@ -79,18 +82,21 @@ describe('Limit transformer', () => {
|
|||||||
{
|
{
|
||||||
name: 'time',
|
name: 'time',
|
||||||
type: FieldType.time,
|
type: FieldType.time,
|
||||||
|
state: { calcs: undefined },
|
||||||
values: [6000, 7000, 8000],
|
values: [6000, 7000, 8000],
|
||||||
config: {},
|
config: {},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'message',
|
name: 'message',
|
||||||
type: FieldType.string,
|
type: FieldType.string,
|
||||||
|
state: { calcs: undefined },
|
||||||
values: ['three', 'three', 'three'],
|
values: ['three', 'three', 'three'],
|
||||||
config: {},
|
config: {},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'values',
|
name: 'values',
|
||||||
type: FieldType.number,
|
type: FieldType.number,
|
||||||
|
state: { calcs: undefined },
|
||||||
values: [3, 3, 3],
|
values: [3, 3, 3],
|
||||||
config: {},
|
config: {},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -37,6 +37,12 @@ export const limitTransformer: DataTransformerInfo<LimitTransformerOptions> = {
|
|||||||
fields: frame.fields.map((f) => {
|
fields: frame.fields.map((f) => {
|
||||||
return {
|
return {
|
||||||
...f,
|
...f,
|
||||||
|
// Clear cached field calculations since applying a limit changes the dataset
|
||||||
|
// and previously computed stats (min, max, mean, etc.) are no longer valid
|
||||||
|
state: {
|
||||||
|
...f.state,
|
||||||
|
calcs: undefined,
|
||||||
|
},
|
||||||
values:
|
values:
|
||||||
limit >= 0 ? f.values.slice(0, limit) : f.values.slice(f.values.length + limit, f.values.length),
|
limit >= 0 ? f.values.slice(0, limit) : f.values.slice(f.values.length + limit, f.values.length),
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user