docs
evals
scenario-1
scenario-10
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
{
"context": "Evaluates how well the solution uses Plotly.js to construct an interactive dual-series time plot with the required hover details, range handling, controls, and export behavior. Checks focus on correct Plotly API calls and configurations that realize the spec's interactions.",
"type": "weighted_checklist",
"checklist": [
{
"name": "Interactive render",
"description": "Uses Plotly.newPlot on the provided container with two line traces mapped to the readings, sets the x-axis to date/time, applies axis labels, and pipes options.title into layout.title to surface the heading.",
"max_score": 20
},
{
"name": "Initial window",
"description": "Computes the trailing initialRangeHours window from the latest timestamp and applies it to layout.xaxis.range (or via Plotly.relayout) so the plot opens zoomed while retaining the full dataset for later zoom-out.",
"max_score": 15
},
{
"name": "Hover formatting",
"description": "Configures hovertemplate (and customdata as needed) on both traces so hovers show ISO timestamps, values suffixed with kW, and when both traces align on x, include the actual-versus-forecast delta rounded to one decimal; uses an interaction mode like hovermode: 'x unified' to keep the tooltip synchronized.",
"max_score": 20
},
{
"name": "Latest annotations",
"description": "Places layout.annotations (or per-trace text positioned at the final point) that label the most recent data point of each trace without breaking interactivity.",
"max_score": 10
},
{
"name": "Reset controls",
"description": "Enables Plotly's interactive controls for zoom/pan and a reset (resetScale2d/autoscale) in the modebar, keeping responsive behavior via config.responsive so users can navigate the full history.",
"max_score": 15
},
{
"name": "PNG export",
"description": "Wires a download control using Plotly.downloadImage or Plotly.toImage configured for PNG format, scale 2, and transparent background (paper_bgcolor/plot_bgcolor set to rgba(0,0,0,0)).",
"max_score": 20
}
]
}