Logs: Use result range instead of timepicker range for log histogram (#25027)

* Logs: Use result range instead of timepicker range for log histogram

If a logs datasource does not send histogram data for the requested
time range, the logs model computes a timeseries based on the log row
counts, bucketed by an automcatically calculated time interval. Even
when this histogram time series did not span the whole requested time
range it was still rendered in the graph across the whole range, leaving
an empty area at its start. Users find this confusing and are lead to
believe their log data is missing.

This change fixes this by anchoring the start of the timeseries on the
first log row's timestamp from the result, and adds this smaller range
as `visibleRange` to the logs model and passes it through to the logs
component that optionally takes it into account to not render the empty
area.
The interval (bucket size) is also adjusted to account for a potentially
finer resolution on the shorter visible time interval.
The bucketsize multiplier was also changed from 10 to 20 to account for
the space between the chart's bars.

* Aligned visible range with buckets

* Extract bucket size calculation and add test
This commit is contained in:
David
2020-05-29 15:39:13 +02:00
committed by GitHub
parent f0eb124278
commit 57abf39f25
6 changed files with 98 additions and 13 deletions
+2
View File
@@ -1,6 +1,7 @@
import { Labels } from './data';
import { GraphSeriesXY } from './graph';
import { DataFrame } from './dataFrame';
import { AbsoluteTimeRange } from './time';
/**
* Mapping of log level abbreviation to canonical log level.
@@ -74,6 +75,7 @@ export interface LogsModel {
meta?: LogsMetaItem[];
rows: LogRowModel[];
series?: GraphSeriesXY[];
visibleRange?: AbsoluteTimeRange;
}
export interface LogSearchMatch {