The main motivation of this change is to improve the performance of the timeline view.
Since there are hundreds of timelines, Plotly.js ends up being very slow.
Because it uses SVG, it takes much more resources than uPlot, which renders directly on the canvas, and which we used already in the comparison view.
The other goal was the bring the different ways of requesting "over time" data closer together.
There are:
the timeline view
the timeline plots on the comparison view
and the result view on the main page and project page
The code now uses mostly the same data format, except for the result view, where we avoid transferring arrays filled with nulls and indexes to minimize the data transfer.
Minor Features
added the same filter mechanism as on comparison view
added the navigation features as on comparison view
Other Changes
the SQL query in dashResults was refactored a little for readability, includes the check for the criterion, and aggregates the result into the result array directly.
constructTimelineQueryForRun is basically the same as the sql query for the timeline view, but uses the run id to identify the data
removed Plotly
render the list of benchmarks for the timeline view on the server to avoid another roundtrip
The main motivation of this change is to improve the performance of the timeline view. Since there are hundreds of timelines, Plotly.js ends up being very slow. Because it uses SVG, it takes much more resources than uPlot, which renders directly on the canvas, and which we used already in the comparison view.
The other goal was the bring the different ways of requesting "over time" data closer together. There are:
The code now uses mostly the same data format, except for the result view, where we avoid transferring arrays filled with nulls and indexes to minimize the data transfer.
Minor Features
Other Changes
dashResults
was refactored a little for readability, includes the check for the criterion, and aggregates the result into the result array directly.constructTimelineQueryForRun
is basically the same as the sql query for the timeline view, but uses the run id to identify the data