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

  <body>
    <a id="top"></a>

    <ul class="menu">
      <li>Build Status</li>
      <li><a href="/package">Packages</a></li>
      <li><a href="/project">Projects</a></li>
      <li><a href="http://golang.org/">golang.org</a></li>
    </ul>
    
    <h1>Go Dashboard</h1>
    
    <h2>Build Status</h2>
    <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 b in r.builds %}
          <td class="result">
          {% if b.ok %}
            <span class="ok">ok</span>
          {% else %}
            {% if b.log %}
              <a class="fail" href="/log/{{b.log}}">fail</a>
            {% else %}
              &nbsp;
            {% endif %}
          {% 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 %}
    </table>
    <div class="paginate">
	<a{% if prev %} href="?n={{num}}&p={{prev}}"{% else %} class="inactive"{% endif %}>prev</a>
	<a{% if next %} href="?n={{num}}&p={{next}}"{% else %} class="inactive"{% endif %}>next</a>
	<a{% if prev %} href="?n={{num}}&p=1"{% else %} class="inactive"{% endif %}>top</a>
    </div>
  </body>
</html>
