<html>
<head>
  <title>Changelog</title>
  <meta name="description" content="Get the changelog between two COS builds">
  <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>
    <a class="signout" href="/signout/?redirect=/changelog/">Sign Out</a>
  </div>
  <div class="sidenav">
    <a href="/">Home</a>
    <a class="active" href="/changelog/">Changelog</a>
    <a href="/findbuild/">Find Build</a>
    <a href="/readme/">Readme</a>
  </div>
  <div class="main">
    <h1>Changelog</h1>
    <p class="feature-info">Retrieve a list of commits between two 
      Container-Optimized OS builds.<br>
      Example Input: <b>cos-rc-85-13310-1034-0</b> or <b>13310.1034.0</b>
    </p>
    <p class="feature-info"><b>Note:</b>
      <a href="https://crosland.corp.google.com/" target="_blank">
        go/crosland
      </a>
      should be used for pre-cusky builds
    </p>
    <form class="changelog-form" action="/changelog">
      <div class="text">
        <label>From </label>
        {{if (ne .Source "")}}
          <input type="text" class="source" name="source" placeholder="Image Name or Build Number" value={{.Source}} required>
        {{else}}
          <input type="text" class="source" name="source" placeholder="Image Name or Build Number" required>
        {{end}}
        <label> to </label>
        {{if (ne .Target "")}}
          <input type="text" class="target" name="target" placeholder="Image Name or Build Number" value={{.Target}} required>
        {{else}}
          <input type="text" class="target" name="target" placeholder="Image Name or Build Number" required>
        {{end}}
        <input type="hidden" name="n" value={{.QuerySize}}>
        <input class="submit" type="submit" value="Submit"><br>
      </div>
      <div class="radio">
        {{if .Internal}}
          <label>
            <input type="radio" class="internal" name="internal" value="true" checked>
            Internal
          </label>
          <label>
            <input type="radio" class="external" name="internal" value="false">
            External
          </label>
        {{else}}
          <label>
            <input type="radio" class="internal" name="internal" value="true">
            Internal
          </label>
          <label>
            <input type="radio" class="external" name="internal" value="false" checked>
            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 present in <b>{{.Target}}</b> but not in <b>{{.Source}}</b>
          </span><br>
        </div>
        <div class="legend-row">
          <div class="circle removal"></div>
          <span>
            Commits present in <b>{{.Source}}</b> but not in <b>{{.Target}}</b>
          </span>
        </div>
        <a href="/readme/">Read more</a>
      </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">Committer 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>