<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 and sysctl changes 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}}>
      </div>
      <div class="text">
        <label>From </label>
        {{if (ne .SourceMilestone "")}}
          <input type="text" class="source" name="source milestone" placeholder="Milestone Number" value={{.SourceMilestone}} required>
        {{else}}
          <input type="text" class="source" name="source milestone" placeholder="Milestone Number" required>
        {{end}}
        <label> to </label>
        {{if (ne .TargetMilestone "")}}
          <input type="text" class="target" name="target milestone" placeholder="Milestone Number" value={{.TargetMilestone}} required>
        {{else}}
          <input type="text" class="target" name="target milestone" placeholder="Milestone Number" required>
        {{end}}
        <input class="submit" type="submit" value="Submit"><br>
      </div>
      <div class="text" style="display: none;">
        <label>From </label>
        {{if (ne .SourceBoard "")}}
          <input type="hidden" class="source" name="source board" placeholder="Board Name" value={{.SourceBoard}} required>
        {{else}}
          <input type="hidden" class="source" name="source board" placeholder="Board Name" required>
        {{end}}
        <label> to </label>
        {{if (ne .TargetBoard "")}}
          <input type="hidden" class="target" name="target board" placeholder="Board Name" value={{.TargetBoard}} required>
        {{else}}
          <input type="hidden" class="target" name="target board" placeholder="Board Name" required>
        {{end}}
      </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}}
    {{if .Sysctl.NotEmpty}}
    <h2>Runtime Sysctl Changes:</h2>
      <div>{{.Sysctl.NotFound}}</div>
      <table class="repo-table">
        {{range $sysctl := .Sysctl.Added}}
        <tr>
          <td>Added:</td>
          <td>{{$sysctl}}</td>
        </tr>
        {{end}}
        {{range $sysctl := .Sysctl.Changed}}
        <tr>
          <td>Changed:</td>
          <td>{{$sysctl}}</td>
        </tr>
        {{end}}
        {{range $sysctl := .Sysctl.Deleted}}
        <tr>
          <td>Deleted:</td>
          <td>{{$sysctl}}</td>
        </tr>
        {{end}}
      </table>
    {{end}}
  </table>
  </div>
</body>
</html>