or run

npx @tessl/cli init
Log in

Version

Files

tile.json

rubric.jsonevals/scenario-3/

{
  "context": "Evaluates how well the solution uses Plotly.js frame and animation APIs to build the animated timeline controller, including proper plot initialization, frame registration, playback, seeking, pausing, looping, and dynamic frame addition.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Plot setup",
      "description": "Creates the chart with Plotly.newPlot using the provided base data/layout/config and applies the initial frame via the frames array or first-frame data without manual DOM rendering.",
      "max_score": 20
    },
    {
      "name": "Frame loading",
      "description": "Registers all named frames with Plotly.addFrames (or via the frames option in the initial figure) so playback uses Plotly-managed frames with preserved names and durations instead of manual trace mutations.",
      "max_score": 20
    },
    {
      "name": "Animate playback",
      "description": "Uses Plotly.animate to advance through the frame sequence with frame/transition options that honor per-frame duration overrides, easing, and default duration, and implements looping by restarting Plotly.animate from the first frame when the last frame completes.",
      "max_score": 25
    },
    {
      "name": "Pause control",
      "description": "Pauses playback by cancelling or suspending Plotly.animate transitions (e.g., clearing queued animate calls or invoking Plotly.animate with mode:'immediate' and no next frame) while keeping the current frame rendered.",
      "max_score": 15
    },
    {
      "name": "Seek via animate",
      "description": "Implements seek by calling Plotly.animate with the target frame name in immediate/zero-duration mode rather than manually mutating traces or layout, ensuring later play resumes from that frame.",
      "max_score": 10
    },
    {
      "name": "Append frames",
      "description": "Adds new frames at runtime using Plotly.addFrames and ensures subsequent Plotly.animate calls include appended frames in order without reconstructing the entire plot.",
      "max_score": 10
    }
  ]
}