<!DOCTYPE html>
<!--
 Copyright 2022 Go Authors All rights reserved.
 Use of this source code is governed by a BSD-style
 license that can be found in the LICENSE file.
-->

<html>
  <head>
    <meta charset="utf-8">
    <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.{{.PlotType}}(document.getElementById('chart'));
              chart.draw(dt, options);
            }
          </script>
        {{end}}
      {{end}}
    </div>
  </body>
</html>
