<!DOCTYPE html>
<html>
  <head>
    <title>Performance Result Comparison</title>
    <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;
}
tr.diff td {
  font-size: 80%;
  font-family: sans-serif;
  vertical-align: top;
}
th.label {
  text-align: left;
  vertical-align: top;
}
td.count {
  text-align: right;
}
#labels {
  float: left;
  margin-right: 1em;
  border-right: 1px solid black;
  border-collapse: collapse;
  vertical-align: top;
}
#labels tbody {
  border-collapse: collapse;
  border-bottom: 1px solid black;
}
#labels > tbody > tr:last-child > th, #labels > tbody > tr:last-child > td {
  padding-bottom: 1em;
}
#labels tbody tr:first-child th, #benchstat {
  padding-top: 1em;
}
#labels tbody.diff tr:first-child th {
  padding-top: 1em;
  border-collapse: collapse;
  border-top: 1px solid black;
}
#labels .diff {
  padding-bottom: 1em;
}
#labels .diff table td, #labels .diff .query {
  max-width: 20em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.benchstat tr.configs th {
  max-width: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.benchstat { border-collapse: collapse; }
.benchstat th:nth-child(1) { text-align: left; }
.benchstat tbody td:nth-child(1n+2):not(.note) { text-align: right; padding: 0em 1em; }
.benchstat tr:not(.configs) th { border-top: 1px solid #666; border-bottom: 1px solid #ccc; }
.benchstat .nodelta { text-align: center !important; }
.benchstat .better td.delta { font-weight: bold; }
.benchstat .worse td.delta { font-weight: bold; color: #c00; }

    </style>
  </head>
  <body>
    <div id="header">
      <h1>Go Performance Dashboard</h1>
      <a href="/">about</a>
    </div>
    <div id="search">
      <form action="/search">
        <input type="text" name="q" value="{{.Q}}" size="120">
        <input type="submit" value="Search">
      </form>
    </div>
    <div id="results">
      {{with .Error}}
      <p>{{.}}</p>
      {{else}}
        <table id="labels">
          {{with .CommonLabels}}
            <tbody>
              <tr>
                <th>label</th><th>common value</th>
              </tr>
              {{range $label, $value := .}}
                <tr>
                  <th class="label">{{$label}}</th><td>{{$value}}</td>
                </tr>
              {{end}}
            </tbody>
          {{end}}
          <tbody class="diff">
            <tr>
              <th>label</th>
              <th>values</th>
            </tr>
            {{range $label, $exists := .Labels}}
            <tr class="diff">
              <th class="label">{{$label}}</th>
              <td>
                {{range $index, $group := $.Groups}}
                <div class="query">{{$group.Q}}:</div>
                <table>
                  {{with index $group.LabelValues $label}}
                    {{range .TopN 4}}
                      <tr>
                        <td class="count">
                          {{.Count}}
                        </td>
                        <td>
                          {{if eq .Value ""}}
                            missing
                          {{else if eq .Value "…"}}
                            {{.Value}}
                          {{else}}
                            <a href="/search?q={{addToQuery $.Q (printf "%s:%s" $label .Value)}}">
                              {{printf "%q" .Value}}
                            </a>
                          {{end}}
                        </td>
                      </tr>
                    {{end}}
                  {{end}}
                </table>
              {{end}}
              </td>
            </tr>
            {{end}}
            </tbody>
        </table>
        <div id="benchstat">
          {{.Benchstat}}
        </div>
      {{end}}
      </div>
  </body>
</html>
