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',
|
||||
type: FieldType.time,
|
||||
state: { calcs: undefined },
|
||||
values: [3000, 4000, 5000],
|
||||
config: {},
|
||||
},
|
||||
{
|
||||
name: 'message',
|
||||
type: FieldType.string,
|
||||
state: { calcs: undefined },
|
||||
values: ['one', 'two', 'two'],
|
||||
config: {},
|
||||
},
|
||||
{
|
||||
name: 'values',
|
||||
type: FieldType.number,
|
||||
state: { calcs: undefined },
|
||||
values: [1, 2, 2],
|
||||
config: {},
|
||||
},
|
||||
@@ -79,18 +82,21 @@ describe('Limit transformer', () => {
|
||||
{
|
||||
name: 'time',
|
||||
type: FieldType.time,
|
||||
state: { calcs: undefined },
|
||||
values: [6000, 7000, 8000],
|
||||
config: {},
|
||||
},
|
||||
{
|
||||
name: 'message',
|
||||
type: FieldType.string,
|
||||
state: { calcs: undefined },
|
||||
values: ['three', 'three', 'three'],
|
||||
config: {},
|
||||
},
|
||||
{
|
||||
name: 'values',
|
||||
type: FieldType.number,
|
||||
state: { calcs: undefined },
|
||||
values: [3, 3, 3],
|
||||
config: {},
|
||||
},
|
||||
|
||||
@@ -37,6 +37,12 @@ export const limitTransformer: DataTransformerInfo<LimitTransformerOptions> = {
|
||||
fields: frame.fields.map((f) => {
|
||||
return {
|
||||
...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:
|
||||
limit >= 0 ? f.values.slice(0, limit) : f.values.slice(f.values.length + limit, f.values.length),
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user