[v10.2.x] Explore: Ensure logs volume data points are in order (#77367)

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

* Ensure logs volume data points are ordered

* Add a test for data points order

(cherry picked from commit 03ca9c7c66)

Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
This commit is contained in:
grafana-delivery-bot[bot]
2023-10-30 14:03:36 +01:00
committed by GitHub
co-authored by Piotr Jamróz
parent 08295aaf76
commit cd62af5db6
2 changed files with 34 additions and 6 deletions
+27
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', () => {
+7 -6
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);
});