Hi everyone,
I’m working on a dashboard that visualizes event durations using the Marcus Olsson Gantt plugin. The data consists of tasks with a start and end time, and sometimes multiple tasks (with the same label) overlap in time.
Here’s a simplified example of the data:
Element, Start time, End time, Color
Buffer, 2025-06-05 04:00:00, 2025-06-05 04:11:00, blue
Prepare, 2025-06-05 04:20:00, 2025-06-05 04:31:00, green
Buffer, 2025-06-05 04:05:00, 2025-06-05 04:15:00, red
As you can see, the two “Buffer” entries overlap. The issue is that the Gantt plugin renders them on the same row, causing them to visually overlap. I’m looking for a way to automatically detect overlaps and put them on separate rows or lanes—without having to preprocess the data manually.
Constraints:
- The data is generated dynamically and cannot be preprocessed.
- I’m publishing this dashboard to 1,000+ users, so manual lane assignment is not feasible.
- I explored dashboard JSON editing and transformations, but they don’t support logic for overlap detection.
- I’m open to using other panels (like State Timeline or Time Series) if they can solve this.
What I’ve Tried:
- Using the “Group by” field in the Gantt plugin (works only if I manually assign lanes).
- Exploring transformations (no way to detect overlaps).
- Editing dashboard JSON (no scripting or conditional logic possible).
- State Timeline panel, but it assumes continuous states and extends the last state to infinity, which doesn’t work for discrete event durations.
Question:
Has anyone found a way—either through a plugin, transformation, or clever workaround—to automatically separate overlapping time intervals in Grafana?
Or is this something that would require a custom plugin or backend service?
Thanks in advance for any insights or suggestions!