class Spoom::Coverage::D3::Timeline::Runtimes

def initialize(id, snapshots)

def initialize(id, snapshots)
  data = snapshots.map do |snapshot|
    {
      timestamp: snapshot.commit_timestamp,
      commit: snapshot.commit_sha,
      runtime: snapshot.duration.to_f / 1000.0 / 1000.0,
    }
  end
  super(id, data, [])
end

def plot

def plot
  <<~JS
    #{x_scale}
    #{y_scale(
      min: '0',
      max: "d3.max(data_#{id}, (d) => d.runtime)",
      ticks: 'ticks(10)'
    )}
    #{area(y: 'd.runtime')}
    #{line(y: 'd.runtime')}
    #{points(y: 'd.runtime')}
    #{x_ticks}
    #{y_ticks(ticks: 'ticks(5)', format: 'd.toFixed(2) + "s"', padding: 40)}
      .call(g => g.selectAll(".tick:first-of-type text").remove())
  JS
end

def tooltip

def tooltip
  <<~JS
    function tooltip_#{id}(d) {
      moveTooltip(d)
        .html("commit <b>" + d.commit + "</b><br>"
          + d3.timeFormat("%y/%m/%d")(parseDate(d.timestamp)) + "<br><br>"
          + "<b>" + d.runtime + "</b>s<br><br>"
          + "(sorbet user + system time)")
    }
  JS
end