<!DOCTYPE HTML>
<html>
  <head>
    <title>Packages - 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>Packages</li>
      <li><a href="/project">Projects</a></li>
      <li><a href="http://golang.org/">golang.org</a></li>
    </ul>

    <h1>Go Dashboard</h1>
    
    <p>
    Packages listed on this page are written by third parties and 
    may or may not build or be safe to use.
    </p>

<!--
    <p>
    An "ok" in the <b>build</b> column indicates that the package is
    <a href="http://golang.org/cmd/goinstall/">goinstallable</a>
    with the latest
    <a href="http://golang.org/doc/devel/release.html">release</a> of Go.
    </p>
-->

    <p>
    The <b>info</b> column shows the first paragraph from the
    <a href="http://blog.golang.org/2011/03/godoc-documenting-go-code.html">package doc comment</a>.
    </p>
    
    <h2>Most Installed Packages (this week)</h2>
    <table class="alternate" cellpadding="0" cellspacing="0">
      <tr><th>last install</th><th>count</th><th>build</th><th>path</th><th>info</th></tr>
      {% for r in by_week_count %}
        <tr>
          <td class="time">{{r.last_install|date:"Y-M-d H:i"}}</td>
          <td class="count">{{r.week_count}}</td>
<!--          <td class="ok">{% if r.ok %}<a title="{{r.last_ok|date:"Y-M-d H:i"}}">ok</a>{% else %}&nbsp;{% endif %}</td> -->
          <td class="path"><a href="{{r.web_url}}">{{r.path}}</a></td>
          <td class="info">{% if r.info %}{{r.info|escape}}{% endif %}</td>
        </tr>
      {% endfor %}
    </table>
    
    <h2>Recently Installed Packages</h2>
    <table class="alternate" cellpadding="0" cellspacing="0">
      <tr><th>last install</th><th>count</th><th>build</th><th>path</th><th>info</th></tr>
      {% for r in by_time %}
        <tr>
          <td class="time">{{r.last_install|date:"Y-M-d H:i"}}</td>
          <td class="count">{{r.count}}</td>
<!--          <td class="ok">{% if r.ok %}<a title="{{r.last_ok|date:"Y-M-d H:i"}}">ok</a>{% else %}&nbsp;{% endif %}</td> -->
          <td class="path"><a href="{{r.web_url}}">{{r.path}}</a></td>
          <td class="info">{% if r.info %}{{r.info|escape}}{% endif %}</td>
        </tr>
      {% endfor %}
    </table>

    <h2>Most Installed Packages (all time)</h2>
    <table class="alternate" cellpadding="0" cellspacing="0">
      <tr><th>last install</th><th>count</th><th>build</th><th>path</th><th>info</th></tr>
      {% for r in by_count %}
        <tr>
          <td class="time">{{r.last_install|date:"Y-M-d H:i"}}</td>
          <td class="count">{{r.count}}</td>
<!--          <td class="ok">{% if r.ok %}<a title="{{r.last_ok|date:"Y-M-d H:i"}}">ok</a>{% else %}&nbsp;{% endif %}</td> -->
          <td class="path"><a href="{{r.web_url}}">{{r.path}}</a></td>
          <td class="info">{% if r.info %}{{r.info|escape}}{% endif %}</td>
        </tr>
      {% endfor %}
    </table>
  </body>
</html>
