<!--
  Copyright 2020 The 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.
-->

{{define "robots"}}
  <meta name="robots" content="noindex">
{{end}}

{{define "main-styles"}}
  <link href="/static/frontend/unit/versions/versions.min.css?version={{.AppVersionLabel}}" rel="stylesheet">
{{end}}

{{define "main-header"}}
  {{template "unit-header" .}}
{{end}}

{{define "main-content"}}
  {{block "versions" .Details}}{{end}}
{{end}}

{{define "main-scripts"}}
  <script>
    loadScript("/static/frontend/unit/versions/versions.js")
  </script>
{{end}}

{{/* . is internal/frontend.VersionsDetails */}}

{{define "versions"}}
  <div class="Versions" data-test-id="UnitVersions">
    <div class="Versions-title">
      <h2 class="go-textTitle">Versions in this module</h2>
      <div class="Versions-titleButtonGroup js-buttonGroup">
        <button class="go-Button go-Button--inline js-versionsExpand" data-gtmc="versions button"
            aria-label="Expand All Versions">
          Expand all
        </button>
        <button class="go-Button go-Button--inline js-versionsCollapse" data-gtmc="versions button"
            aria-label="Collapse All Versions">
          Collapse all
        </button>
      </div>
    </div>
    {{template "version-list" .ThisModule}}
    {{if .IncompatibleModules}}
      <h2 class="Versions-modulesTitle">Incompatible versions in this module</h2>
      {{template "version-list" .IncompatibleModules}}
    {{end}}
    {{if .OtherModules}}
      <h2 class="Versions-modulesTitle">Other modules containing this package</h2>
      {{range .OtherModules}}
        <div><a href="/{{.}}">{{.}}</a></div>
      {{end}}
    {{end}}
  </div>
{{end}}

{{/* . is []*internal/frontend.VersionList */}}

{{define "version-list"}}
  <div class="Versions-list">
    {{range $major := .}}
      {{range $i, $v := $major.Versions}}
        <div class="Version-major">
          {{if and (eq $i 0) (not $major.Incompatible)}}
            <strong>{{$major.Major}}</strong>
            {{if $major.Deprecated}}<div><span class="go-Chip go-Chip--inverted">deprecated</span></div>{{end}}
          {{end}}
        </div>
        <div class="Version-tag">
          <a class="js-versionLink" href="{{$v.Link}}">{{$v.Version}}</a>
        </div>
        <div class="Version-dot{{if and $v.IsMinor (not $major.Incompatible)}} Version-dot--minor{{end}}"></div>
        {{if and (or $v.Symbols $v.Vulns) (not $major.Incompatible)}}
          {{template "symbol-history" $v}}
        {{else}}
          <div class="Version-commitTime">
            {{$v.CommitTime}}{{if $v.Retracted}}<div><span class="go-Chip go-Chip--inverted">retracted</span></div>{{end}}
            {{range $v.Vulns}}<div><span class="go-Chip go-Chip--alert">{{.ID}}</span></div>{{end}}
          </div>
        {{end}}
      {{end}}
    {{end}}
  </div>
{{end}}

{{define "symbol-history"}}
  <details class="Version-details js-versionDetails">
    <summary class="Version-summary">
      {{.CommitTime}}{{if .Retracted}}<div><span class="go-Chip go-Chip--inverted">retracted</span></div>{{end}}
      {{range .Vulns}}<span class="go-Chip go-Chip--alert">{{.ID}}</span>{{end}}
    </summary>
    <div class="Versions-vulns">
      {{range .Vulns}}{{template "vuln-message" .}}{{end}}
    </div>
    <div class="Versions-symbols">
      {{with .Symbols}}<div class="Versions-symbolsHeader">Changes in this version</div>{{end}}
      {{range .Symbols}}
        <div class="Versions-symbolSection">
          {{range .}}
            {{if eq .Kind "Type"}}
              <div class="Versions-symbolType">
                {{template "symbol" .}}
                {{range .Children}}
                  <div class="Versions-symbolChild">{{template "symbol" .}}</div>
                {{end}}
              </div>
            {{else}}
              <div>{{template "symbol" .}}</div>
            {{end}}
          {{end}}
        </div>
      {{end}}
    </div>
  </details>
{{end}}

{{define "symbol"}}
  <div>
    {{if .New}}
      <span class="Versions-symbolBulletNew">+</span>
      <a class="Versions-symbolSynopsis" href="{{.Link}}">{{.Synopsis}}</a>
    {{else}}
      <span class="Versions-symbolOld Versions-symbolSynopsis">{{.Synopsis}}</span>
    {{end}}
    {{if .Builds}}
      <span class="Versions-symbolBuildsDash">—</span>
      <span class="Versions-symbolBuilds">
        {{range $i, $b := .Builds}}{{if $i}}, {{end}}{{$b}}{{end}}
      </span>
    {{end}}
  </div>
{{end}}
