or run

npx @tessl/cli init
Log in

Version

Files

tile.json

rubric.jsonevals/scenario-4/

{
  "context": "Evaluates how the solution uses Plotly.js layout and configuration APIs to render a responsive timeline, adjust its visible window and annotations in place, and switch interaction profiles without rebuilding the chart. Scoring focuses solely on correct and purposeful use of Plotly methods and config options.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Initial render",
      "description": "Uses Plotly.newPlot or Plotly.react to create the initial figure in the target container with data, layout, and config that include the titled axes, legend, and most-recent-point annotation described in the spec.",
      "max_score": 20
    },
    {
      "name": "Responsive config",
      "description": "Enables Plotly's responsive behavior (e.g., config.responsive plus layout sizing choices) so the plot reflows with its container while preserving axis and annotation positioning.",
      "max_score": 15
    },
    {
      "name": "Range relayout",
      "description": "Uses Plotly.relayout (or Plotly.update with layout fields) to set the x-axis range and add a shaded region/shape for the requested window instead of recreating the plot; retains existing layout elements when applying these updates.",
      "max_score": 25
    },
    {
      "name": "Annotation control",
      "description": "Adds/removes or replaces the alert annotation through layout updates (Plotly.relayout/update) without dropping other layout attributes or traces.",
      "max_score": 15
    },
    {
      "name": "Interaction profile config",
      "description": "Switches between the presentation and explore profiles by updating Plotly config (e.g., staticPlot/scrollZoom, modebar buttons such as download image, displaylogo) via Plotly.setPlotConfig or Plotly.react, rather than manual DOM tweaks.",
      "max_score": 20
    },
    {
      "name": "State preservation",
      "description": "Profile switches keep the current layout window and annotations intact (no full teardown/recreation like calling Plotly.newPlot again).",
      "max_score": 5
    }
  ]
}