Explore: Ensure logs volume data points are in order (#77268)

* Ensure logs volume data points are ordered

* Add a test for data points order
This commit is contained in:
Piotr Jamróz 2023-10-30 13:40:44 +01:00 committed by GitHub
parent 107cf0dc04
commit 03ca9c7c66
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 6 deletions

View File

@ -407,6 +407,33 @@ describe('mergeLogsVolumeDataFrames', () => {
]);
expect(maximum).toBe(6);
});
it('produces merged results order by time', () => {
const frame1 = mockLogVolume('info', [1600000000001, 1600000000009], [1, 1]);
const frame2 = mockLogVolume('info', [1600000000000, 1600000000005], [1, 1]);
const { dataFrames: merged } = mergeLogsVolumeDataFrames([frame1, frame2]);
expect(merged).toMatchObject([
{
fields: [
{
name: 'Time',
type: FieldType.time,
values: [1600000000000, 1600000000001, 1600000000005, 1600000000009],
},
{
name: 'Value',
type: FieldType.number,
values: [1, 1, 1, 1],
config: {
displayNameFromDS: 'info',
},
},
],
},
]);
});
});
describe('getLogsVolumeDimensions', () => {

View File

@ -243,13 +243,14 @@ export const mergeLogsVolumeDataFrames = (dataFrames: DataFrame[]): { dataFrames
levelDataFrame.addField({ name: 'Time', type: FieldType.time, config: timeFieldConfig });
levelDataFrame.addField({ name: 'Value', type: FieldType.number, config: valueFieldConfig });
for (const time in aggregated[level]) {
const value = aggregated[level][time];
levelDataFrame.add({
Time: Number(time),
Value: value,
Object.entries(aggregated[level])
.sort((a, b) => Number(a[0]) - Number(b[0]))
.forEach(([time, value]) => {
levelDataFrame.add({
Time: Number(time),
Value: value,
});
});
}
results.push(levelDataFrame);
});