<!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>
    <title>{{$.Dashboard.Name}} Build Dashboard</title>
    <link rel="stylesheet" href="/static/style.css"/>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
    <script>
    var showUnsupported = window.location.hash.substr(1) != "short";
    function redraw() {
        showUnsupported = !$("#showshort").prop('checked');
        $('.unsupported')[showUnsupported?'show':'hide']();
        window.location.hash = showUnsupported?'':'short';
    }
    $(document).ready(function() {
        $("#showshort").attr('checked', !showUnsupported).change(redraw);
        redraw();
    })
    </script>
  </head>

  <body>
    <header id="topbar">
      <h1>
        <a href="https://farmer.golang.org/">Go Build Coordinator</a>
      </h1>
      <nav>
        <ul>
          <li><a href="/">Build Dashboard</a></li>
          <li><a href="https://perf.golang.org/dashboard">Performance Dashboard</a></li>
          <li><a href="https://farmer.golang.org/builders">Builders</a></li>
        </ul>
      </nav>
      <div class="clear"></div>
    </header>

    <form action="." method="GET">
    <input type="hidden" name="repo" value="{{.Package.Path}}">
    <nav class="dashboards">
      {{if not (eq .Branch "")}}
      <label>
        <select name="branch" onchange="this.form.submit()">
        {{range $.Branches}}
          <option value="{{.}}"{{if eq $.Branch .}} selected{{end}}>{{.}}</option>
        {{end}}
        </select>
      </label>
      {{end}}
      <label>
        <input type=checkbox id="showshort">
        show only <a href="http://golang.org/wiki/PortingPolicy">first-class ports</a>
      </label>
    </nav>
    </form>
    {{with $.Package.Name}}<h2>{{.}}</h2>{{end}}

  <div class="page">

    {{if $.Commits}}

    <table class="build">
      <colgroup class="col-hash" {{if $.Package.Path}}span="2"{{end}}></colgroup>
      <colgroup class="col-user"></colgroup>
      <colgroup class="col-time"></colgroup>
      <colgroup class="col-desc"></colgroup>
    {{range $.Builders | builderSpans}}
      <colgroup class="col-result{{if .Unsupported}} unsupported{{end}}" span="{{.N}}"></colgroup>
    {{end}}
      <tr>
        <!-- extra row to make alternating colors use dark for first result -->
      </tr>
      <tr>
    {{if $.Package.Path}}
        <th colspan="2">revision</th>
    {{else}}
        <th>&nbsp;</th>
    {{end}}
        <th></th>
        <th></th>
        <th></th>
    {{range $.Builders | builderSpans}}
        <th {{if .Unsupported}}class="unsupported"{{end}} colspan="{{.N}}">{{.OS}}</th>
    {{end}}
      </tr>

      <tr>
    {{if $.Package.Path}}
        <th class="result arch">repo</th>
        <th class="result arch">{{$.Dashboard.Name}}</th>
    {{else}}
        <th>&nbsp;</th>
    {{end}}
        <th></th>
        <th></th>
        <th></th>
    {{range $.Builders}}
        {{$ki := knownIssue .}}
        <th class="result arch{{if (unsupported .)}} unsupported{{end}}{{if $ki}} noise{{end}}" title="{{.}}
          {{- with $ki}}{{"\n\n"}}This builder has a known issue. See go.dev/issue/{{.}}.{{end}}"
        >{{builderSubheading .}}</th>
    {{end}}
      </tr>

      <tr class="subheading2">
        <th {{if $.Package.Path}}colspan="2"{{end}}>&nbsp;</th>
        <th></th>
        <th></th>
        <th></th>
    {{range $.Builders}}
        {{$ki := knownIssue .}}
        <th class="result arch{{if (unsupported .)}} unsupported{{end}}{{if $ki}} noise{{end}}" title="{{.}}
          {{- with $ki}}{{"\n\n"}}This builder has a known issue. See go.dev/issue/{{.}}.{{end}}"
        >{{builderSubheading2 .}}</th>
    {{end}}
      </tr>

      {{range $c := $.Commits}}
      {{range $i, $h := $c.ResultGoHashes}}
        <tr class="commit">
        {{if $i}}
          <td>&nbsp;</td>
        {{if $h}}
          <td class="hash"><a href="https://go-review.googlesource.com/q/{{$h}}">{{shortHash $h}}</a></td>
        {{end}}
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        {{else}}
          <td class="hash"><a href="https://go-review.googlesource.com/q/{{$c.Hash}}">{{shortHash $c.Hash}}</a></td>
        {{if $h}}
          <td class="hash"><a href="https://go-review.googlesource.com/q/{{$h}}">{{shortHash $h}}</a></td>
        {{end}}
          <td class="user" title="{{$c.User}}">{{shortUser $c.User}}</td>
          <td class="time">{{formatTime $c.Time}}</td>
          <td class="desc" title="{{$c.Desc}}">{{shortDesc $c.Desc}}</td>
        {{end}}
          {{range $builderName := $.Builders}}
            <td class="result{{if (unsupported .)}} unsupported{{end}}">
            {{if and (eq $.Repo "go") (isUntested $builderName "go" $.Branch "")}}•{{else}}
              {{with $c.Result $builderName $h}}
                {{$ki := knownIssue $builderName}}
                {{if .BuildingURL}}
                  <a href="{{.BuildingURL}}"><img src="https://go.dev/favicon.ico" height=16 width=16 border=0></a>
                {{else}}
                  <a href="/log/{{.LogHash}}"
                    class="{{if .OK}}ok{{else}}fail{{end}}
                      {{- if $ki}} noise{{end}}"
                    title="Build log of {{$builderName}} on commit {{shortHash $c.Hash}}{{with $h}} (using Go commit {{shortHash .}}){{end}}.
                      {{- with $ki}}{{"\n\n"}}This builder has a known issue. See go.dev/issue/{{.}}.{{end}}"
                  >{{if .OK}}ok{{else}}fail{{end}}</a>
                {{end}}
              {{else}}
                &nbsp;
              {{end}}
            {{end}}
            </td>
          {{end}}
        </tr>
      {{end}}
    {{end}}
    </table>

    {{with $.Pagination}}
    <div class="paginate">
      <nav>
        <a {{if .HasPrev}}href="?{{with $.Package.Path}}repo={{.}}&{{end}}page={{.Prev}}{{with $.Branch}}&branch={{.}}{{end}}"{{else}}class="inactive"{{end}}>newer</a>
        <a {{if .Next}}href="?{{with $.Package.Path}}repo={{.}}&{{end}}page={{.Next}}{{with $.Branch}}&branch={{.}}{{end}}"{{else}}class="inactive"{{end}}>older</a>
        <a {{if .HasPrev}}href=".{{with $.Branch}}?branch={{.}}{{end}}"{{else}}class="inactive"{{end}}>latest</a>
      </nav>
    </div>
    {{end}}

  {{else}}
    <p>No commits to display. Hm.</p>
  {{end}}

  {{range $.TagState}}
    {{$goHash := .Tag.Hash}}
    {{$goBranch := .Branch}}
    {{$builders := .Builders}}
    {{if .Packages}}
      <h2>
        golang.org/x repos at Go {{$goBranch}}
        <small>(<a href="https://go-review.googlesource.com/q/{{.Tag.Hash}}">{{shortHash .Tag.Hash}}</a>)</small>
      </h2>

      <table class="build">
      <colgroup class="col-package"></colgroup>
      <colgroup class="col-hash"></colgroup>
      <colgroup class="col-user"></colgroup>
      <colgroup class="col-time"></colgroup>
      <colgroup class="col-desc"></colgroup>
      {{range $builders | builderSpans}}
        <colgroup class="col-result{{if .Unsupported}} unsupported{{end}}" span="{{.N}}"></colgroup>
      {{end}}
      <tr>
        <!-- extra row to make alternating colors use dark for first result -->
      </tr>
      <tr>
        <th></th>
        <th></th>
        <th></th>
        <th></th>
        <th></th>
        {{range $builders | builderSpans}}
          <th {{if .Unsupported}}class="unsupported"{{end}} colspan="{{.N}}">{{.OS}}</th>
        {{end}}
      </tr>
      <tr>
        <th></th>
        <th></th>
        <th></th>
        <th></th>
        <th></th>
        {{range $builders}}
          {{$ki := knownIssue .}}
          <th class="result arch{{if (unsupported .)}} unsupported{{end}}{{if $ki}} noise{{end}}" title="{{.}}
            {{- with $ki}}{{"\n\n"}}This builder has a known issue. See go.dev/issue/{{.}}.{{end}}"
          >{{builderSubheading .}}</th>
        {{end}}
      </tr>
      <tr class="subheading2">
        <th>&nbsp;</th>
        <th></th>
        <th></th>
        <th></th>
        <th></th>
        {{range $builders}}
          {{$ki := knownIssue .}}
          <th class="result arch{{if (unsupported .)}} unsupported{{end}}{{if $ki}} noise{{end}}" title="{{.}}
            {{- with $ki}}{{"\n\n"}}This builder has a known issue. See go.dev/issue/{{.}}.{{end}}"
          >{{builderSubheading2 .}}</th>
        {{end}}
      </tr>
    {{range $pkg := .Packages}}
      <tr class="commit">
        <td><a title="{{.Package.Path}}" href="?repo={{.Package.Path}}">{{.Package.Name}}</a></td>
        <td class="hash">
          {{$h := $pkg.Commit.Hash}}
          <a href="https://go-review.googlesource.com/q/{{$h}}">{{shortHash $h}}</a>
        </td>
        {{with $pkg.Commit}}
          <td class="user" title="{{.User}}">{{shortUser .User}}</td>
          <td class="time">{{formatTime .Time}}</td>
          <td class="desc" title="{{.Desc}}">{{shortDesc .Desc}}</td>
        {{end}}
        {{range $builderName := $builders}}
          <td class="result{{if (unsupported .)}} unsupported{{end}}">
            {{if isUntested $builderName $pkg.Package.Name "master" $goBranch}}
              •
            {{else}}
              {{with $pkg.Commit.Result $builderName $goHash}}
                {{$ki := knownIssue $builderName}}
                {{if .BuildingURL}}
                  <a href="{{.BuildingURL}}"><img src="https://go.dev/favicon.ico" height=16 width=16 border=0></a>
                {{else}}
                  <a href="/log/{{.LogHash}}"
                    class="{{if .OK}}ok{{else}}fail{{end}}
                      {{- if $ki}} noise{{end}}"
                    title="Build log of {{$builderName}} on commit {{shortHash $h}} (using Go commit {{shortHash $goHash}}).
                      {{- with $ki}}{{"\n\n"}}This builder has a known issue. See go.dev/issue/{{.}}.{{end}}"
                  >{{if .OK}}ok{{else}}fail{{end}}</a>
                {{end}}
              {{else}}
                &nbsp;
              {{end}}
            {{end}}
          </td>
        {{end}}
      </tr>
    {{end}}
    </table>
   {{end}}
  {{end}}

  </div>
  </body>
</html>
