<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}}  target="_blank">{{$commit.SHA.Name}}</a>
        </td>
        <td class="commit-subject">{{$commit.Subject}}</td>
        <td class="commit-bugs">
          {{range $bugAttr := $commit.Bugs}}
          <a href={{$bugAttr.URL}}  target="_blank">{{$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}}  target="_blank">Show more commits</a>
    {{end}}
    <table class="repo-table">
      {{range $commit := $table.Removals}}
      <tr>
        <td class="commit-sha removal">
          <a href={{$commit.SHA.URL}}  target="_blank">{{$commit.SHA.Name}}</a>
        </td>
        <td class="commit-subject">{{$commit.Subject}}</td>
        <td class="commit-bugs">
          {{range $bugAttr := $commit.Bugs}}
          <a href={{$bugAttr.URL}}  target="_blank">{{$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}} target="_blank">Show more commits</a>
    {{end}}
    {{end}}
  </div>
</body>
</html>