<html>
<head>
  <meta name="description" content="Google COS build changelog">
  <link rel="stylesheet" href="/static/css/base.css">
  <link rel="stylesheet" href="/static/css/changelog.css">
</head>
<body>
  <div class="navbar">
    <p class="navbar-title">Container Optimized OS</p>
  </div>
  <div class="sidenav">
    <a href="/">Home</a>
    <a class="active" href="/changelog/">Changelog</a>
    <a href="/locatecl/">Locate CL</a>
    <a href="/login/">Login</a>
  </div>
  <div class="main">
    <h1>Search Changelog</h1>
    <form class="changelog-form" action="/changelog">
      <div class="text">
        <label for="source">From </label>
        {{if (ne .Source "")}}
          <input type="text" class="source" name="source" placeholder="COS build number" value={{.Source}} autocomplete="off">
        {{else}}
          <input type="text" class="source" name="source" placeholder="COS build number" autocomplete="off">
        {{end}}
        <label for="target"> to </label>
        {{if (ne .Target "")}}
          <input type="text" class="target" name="target" placeholder="COS build number" value={{.Target}} autocomplete="off" required>
        {{else}}
          <input type="text" class="target" name="target" placeholder="COS build number" autocomplete="off" required>
        {{end}}
        <input type="hidden" name="n" value={{.QuerySize}}>
        <input class="submit" type="submit" value="Submit"><br>
      </div>
      <div class="radio">
        {{if .Internal}}
          <input type="radio" class="internal" name="internal" value="true" checked>
          <label for="internal"> Internal </label>
          <input type="radio" class="external" name="internal" value="false">
          <label for="external"> External </label>
        {{else}}
          <input type="radio" class="internal" name="internal" value="true">
          <label for="internal"> Internal </label>
          <input type="radio" class="external" name="internal" value="false" checked>
          <label for="external"> External </label>
        {{end}}
      </div>
    </form>
    {{if (and (ne .Target "") (ne .Source ""))}}
      <div class="sha-legend">
        <div class="legend-row">
          <div class="circle addition"></div>
          <span>Commits introduced to build {{.Target}} since build {{.Source}}</span><br>
        </div>
        <div class="legend-row">
          <div class="circle removal"></div>
          <span>Commits introduced to build {{.Source}} since build {{.Target}}</span>
        </div>
      </div>
    {{end}}
    {{range $table := .RepoTables}}
    <h2 class="repo-header"> {{$table.Name}} </h2>
    <table class="repo-table">
      <tr>
        <th class="commit-sha">SHA</th>
        <th class="commit-subject">Subject</th>
        <th class="commit-bugs">Bugs</th>
        <th class="commit-author">Author</th>
        <th class="commit-committer">Committer</th>
        <th class="commit-time">Date</th>
        <th class="commit-release-notes">Release Notes</th>
      </tr>
    </table>
    <table class="repo-table">
      {{range $commit := $table.Additions}}
      <tr>
        <td class="commit-sha addition">
          <a href={{$commit.SHA.URL}}>{{$commit.SHA.Name}}</a>
        </td>
        <td class="commit-subject">{{$commit.Subject}}</td>
        <td class="commit-bugs">
          {{range $bugAttr := $commit.Bugs}}
          <a href={{$bugAttr.URL}}>{{$bugAttr.Name}}</a>
          {{end}}
        </td>
        <td class="commit-author">{{$commit.AuthorName}}</td>
        <td class="commit-committer">{{$commit.CommitterName}}</td>
        <td class="commit-time">{{$commit.CommitTime}}</td>
        <td class="commit-release-notes">{{$commit.ReleaseNote}}</td>
      </tr>
      {{end}}
    </table>
    {{if (ne $table.AdditionsLink "")}}
      <a class="gob-link" href={{$table.AdditionsLink}}>Show more commits</a>
    {{end}}
    <table class="repo-table">
      {{range $commit := $table.Removals}}
      <tr>
        <td class="commit-sha removal">
          <a href={{$commit.SHA.URL}}>{{$commit.SHA.Name}}</a>
        </td>
        <td class="commit-subject">{{$commit.Subject}}</td>
        <td class="commit-bugs">
          {{range $bugAttr := $commit.Bugs}}
          <a href={{$bugAttr.URL}}>{{$bugAttr.Name}}</a>
          {{end}}
        </td>
        <td class="commit-author">{{$commit.AuthorName}}</td>
        <td class="commit-committer">{{$commit.CommitterName}}</td>
        <td class="commit-time">{{$commit.CommitTime}}</td>
        <td class="commit-release-notes">{{$commit.ReleaseNote}}</td>
      </tr>
      {{end}}
    </table>
    {{if (ne $table.RemovalsLink "")}}
      <a class="gob-link" href={{$table.RemovalsLink}}>Show more commits</a>
    {{end}}
    {{end}}
  </div>
</body>
</html>