<!DOCTYPE html>
<html>
  <head>
    <title>Performance Result Comparison</title>
    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
    <style type="text/css">
#header h1 {
  display: inline;
}
#search {
  padding: 1em .5em;
  width: 100%;
}
input[type="text"] {
  font-size: 100%;
}
#results {
  border-top: 1px solid black;
}
    </style>
  </head>
  <body>
    <div id="header">
      <h1>Go Performance Dashboard</h1>
      <a href="/">about</a>
    </div>
    <div id="search">
      <form action="/trend">
        <input type="text" name="q" value="{{.Q}}" size="120">
        <input type="submit" value="Search">
      </form>
    </div>
    <div id="results">
      {{if not .Q}}
        <h2>Recent Uploads</h2>
        <table>
          <tr><th>Upload ID</th><th>trend</th></tr>
          {{range .TrendUploads}}
          <tr><td><a href="/trend?q=upload:{{.UploadID}}">{{.UploadID}}</a></td><td>{{.LabelValues.trend}}</td></tr>
          {{end}}
        </table>
      {{else}}
        {{with .Error}}
        <p>{{.}}</p>
        {{else}}
          <div id="chart" style="height: 600px"></div>
          <script type="text/javascript">
            google.charts.load('current', {'packages':['corechart']});
            google.charts.setOnLoadCallback(draw);
            function draw() {
              var dt = new google.visualization.DataTable({{.PlotData}});
              var options = {
                title: 'Benchmark Trend',
                hAxis: {
                  title: 'commit index',
                },
                vAxis: {
                  title: 'normalized ns/op',
                },
                explorer: {
                  actions: ['dragToZoom', 'rightClickToReset'],
                  maxZoomIn: 0.05,
                },
              };
              var chart = new google.visualization.LineChart(document.getElementById('chart'));
              chart.draw(dt, options);
            }
          </script>
        {{end}}
      {{end}}
    </div>
  </body>
</html>
