<!DOCTYPE HTML>
<html>
  <head>
    <title>{{benchmark}} - Benchmarks - Go Dashboard</title>
    <link rel="stylesheet" type="text/css" href="/static/style.css">
  </head>

  <body>
    <ul class="menu">
      <li><a href="/">Build Status</a></li>
      <li><a href="/package">Packages</a></li>
      <li><a href="/project">Projects</a></li>
      <li><a href="/benchmarks">Benchmarks</a></li>
      <li><a href="http://golang.org/">golang.org</a></li>
    </ul>

    <h1>Go Dashboard</h1>

    <h2>{{benchmark}}</h2>

    <a href="{{benchmark}}?fmt=json">json</a>

    {% for g in graphs %}
      <h3>{{g.builder}}</h3>
      {% if g.url %}
        <img src="{{g.url}}&chs=600x150&chf=bg,s,00000000&chco=000000ff&chls=1,1,0">
      {% else %}
        (no data available)
      {% endif %}
    {% endfor %}
    
    <br><br>
    
    <table class="alternate" cellpadding="0" cellspacing="0">
      <tr>
        <th></th>
        {% for b in builders %}
          <th class="builder">{{b.goos}}<br>{{b.goarch}}<br>{{b.note}}</th>
        {% endfor %}
        <th></th>
        <th></th>
        <th></th>
      </tr>

      {% for r in revs %}
      <tr>
        <td class="revision"><span class="hash"><a href="https://code.google.com/p/go/source/detail?r={{r.node}}">{{r.node|slice:":12"}}</a></span></td>

        {% for ns in r.ns_by_builder %}
          <td class="result">
          {% if ns %}
            {{ns}}
          {% endif %}
          </td>
        {% endfor %}
        <td class="user">{{r.user|escape}}</td>
        <td class="date">{{r.date|escape}}</td>
        <td class="desc">{{r.shortdesc|escape}}</td>
      </tr>
      {% endfor %}
  </body>
</html>
