<!--
    Copyright 2022 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 "task_list"}}
  {{$workflow := .Workflow}}
  <table class="TaskList">
    <thead>
      <tr class="TaskList-item TaskList-itemHeader">
        <th class="TaskList-itemHeaderCol TaskList-itemExpand"></th>
        <th class="TaskList-itemHeaderCol TaskList-itemState">State</th>
        <th class="TaskList-itemHeaderCol TaskList-itemName">Name</th>
        <th class="TaskList-itemHeaderCol TaskList-itemStarted">Started</th>
        <th class="TaskList-itemHeaderCol TaskList-itemUpdated">Updated</th>
        <th class="TaskList-itemHeaderCol TaskList-itemResult">Result</th>
        <th class="TaskList-itemHeaderCol TaskList-itemActions">Actions</th>
      </tr>
    </thead>
    <tbody>
      {{range .Tasks}}
        {{- /*gotype: golang.org/x/build/internal/relui/db.TasksForWorkflowSortedRow*/ -}}
        {{$resultDetail := unmarshalResultDetail .Result.String}}
        <tr class="TaskList-item TaskList-itemSummary TaskList-expandableItem">
          <td class="TaskList-itemCol TaskList-itemExpand">
            <span class="TaskList-itemExpandClosed">
              <img
                class="TaskList-itemExpandControl"
                alt="unfold more"
                src="{{baseLink "/static/images/chevron_right_black_24dp.svg"}}" />
            </span>
            <span class="TaskList-ItemExpandOpened">
              <img
                class="TaskList-itemExpandControl"
                alt="unfold less"
                src="{{baseLink "/static/images/expand_more_black_24dp.svg"}}" />
            </span>
          </td>
          <td class="TaskList-itemCol TaskList-itemState">
            {{if .Error.Valid}}
              <img class="TaskList-itemStateIcon" alt="error" src="{{baseLink "/static/images/error_red_24dp.svg"}}" />
            {{else if .Finished}}
              <img
                class="TaskList-itemStateIcon"
                alt="finished"
                src="{{baseLink "/static/images/check_circle_green_24dp.svg"}}" />
            {{else if .Started}}
              <img
                class="TaskList-itemStateIcon"
                alt="started"
                src="{{baseLink "/static/images/pending_yellow_24dp.svg"}}" />
            {{else}}
              <img
                class="TaskList-itemStateIcon"
                alt="pending"
                src="{{baseLink "/static/images/pending_grey_24dp.svg"}}" />
            {{end}}
          </td>
          <td class="TaskList-itemCol TaskList-itemName">
            {{.Name}}
          </td>
          <td class="TaskList-itemCol TaskList-itemStarted">
            {{.CreatedAt.UTC.Format "Mon Jan _2 2006 15:04:05"}}
          </td>
          <td class="TaskList-itemCol TaskList-itemUpdated">
            {{.MostRecentUpdate.UTC.Format "Mon Jan _2 2006 15:04:05"}}
          </td>
          <td class="TaskList-itemCol TaskList-itemResult">
            {{if .ApprovedAt.Valid}}
              Approved
            {{else}}
              {{$resultDetail.Kind}}
            {{end}}
          </td>
          <td class="TaskList-itemCol TaskList-itemAction">
            {{if .Error.Valid}}
              <div class="TaskList-retryTask">
                <form
                  action="{{baseLink (printf "/workflows/%s/tasks/%s/retry" $workflow.ID .Name)}}"
                  method="post">
                  <input type="hidden" id="workflow.id" name="workflow.id" value="{{$workflow.ID}}" />
                  <input
                    class="Button Button--small"
                    name="task.reset"
                    type="submit"
                    value="Retry"
                    onclick="return this.form.reportValidity() && confirm('This will retry the task.\n\nReady to proceed?')" />
                </form>
              </div>
            {{else if and (not .ApprovedAt.Valid) (.ReadyForApproval)}}
              <div class="TaskList-approveTask">
                <form
                  action="{{baseLink (printf "/workflows/%s/tasks/%s/approve" $workflow.ID .Name)}}"
                  method="post">
                  <input type="hidden" id="workflow.id" name="workflow.id" value="{{$workflow.ID}}" />
                  <input
                    class="Button Button--small"
                    name="task.approve"
                    type="submit"
                    value="Approve"
                    onclick="return this.form.reportValidity() && confirm('This will mark the task approved and resume the workflow.\n\nReady to proceed?')" />
                </form>
              </div>
            {{end}}
          </td>
        </tr>
        <tr class="TaskList-itemLogsRow">
          <td class="TaskList-itemLogs" colspan="5">
            {{if .Error.Valid}}
              <div class="TaskList-itemLogLine TaskList-itemLogLineError">
                {{- .Error.Value -}}
              </div>
            {{end}}
            {{if .ApprovedAt.Valid}}
              <div class="TaskList-itemLogLine TaskList-itemLogLineApproved">
                {{- printf "Approved at: %s" (.ApprovedAt.Value.UTC.Format "2006/01/02 15:04:05") -}}
              </div>
            {{end}}
            {{range $log := index $.TaskLogs .Name}}
              <div class="TaskList-itemLogLine">
                {{- printf "%s %s" ($log.CreatedAt.UTC.Format "2006/01/02 15:04:05") $log.Body -}}
              </div>
            {{end}}
            {{if and .Result.Valid (ne .Result.String "null")}}
              <div class="TaskList-itemLogLine">
                {{- .Result.String -}}
              </div>
            {{end}}
          </td>
          <td class="TaskList-itemResultDetail" colspan="2">
            {{with $resultDetail}}
            {{template "itemResult" $resultDetail}}
            {{end}}
          </td>
        </tr>
      {{end}}
    </tbody>
  </table>
{{end}}

{{define "itemResult"}}
    {{- /*gotype: golang.org/x/build/internal/relui.resultDetail*/ -}}
    {{if eq .Kind "Artifact"}}
    <dl class="TaskList-itemResultDetailList">
      <dt class="TaskList-itemResultTerm">
        <div class="TaskList-itemResultTermContent">
          Name
        </div>
      </dt>
      <dd class="TaskList-itemResultDefinition">
        {{with .Artifact.Target}}
          {{.Name}}
        {{else}}
          {{.Artifact.Filename}}
        {{end}}
      </dd>
      <dt class="TaskList-itemResultTerm">
        <div class="TaskList-itemResultTermContent">
          Filename
        </div>
      </dt>
      <dd class="TaskList-itemResultDefinition">
        {{.Artifact.Filename}}
      </dd>
      <dt class="TaskList-itemResultTerm">
        <div class="TaskList-itemResultTermContent">
          ScratchPath
        </div>
      </dt>
      <dd class="TaskList-itemResultDefinition">
        {{.Artifact.ScratchPath}}
      </dd>
      <dt class="TaskList-itemResultTerm">
        <div class="TaskList-itemResultTermContent">
          StagingPath
        </div>
      </dt>
      <dd class="TaskList-itemResultDefinition">
        {{.Artifact.StagingPath}}
      </dd>
    </dl>
  {{else if eq .Kind "Outputs"}}
    {{range $key, $value := .Outputs}}
      <dt class="TaskList-itemResultTerm">
        <div class="TaskList-itemResultTermContent">
          {{$key}}
        </div>
      </dt>
      <dd class="TaskList-itemResultDefinition TaskList-itemResultDefinition--nested"></dd>
      {{template "itemResult" $value}}
    {{end}}
  {{else if eq .Kind "JSON"}}
    {{range $key, $value := .JSON}}
      <dt class="TaskList-itemResultTerm">
        <div class="TaskList-itemResultTermContent">
          {{$key}}
        </div>
      </dt>
      <dd class="TaskList-itemResultDefinition">
        {{$value}}
      </dd>
    {{end}}
  {{else if eq .Kind "String"}}
    <dt class="TaskList-itemResultTerm">
      <div class="TaskList-itemResultTermContent">
        String
      </div>
    </dt>
    <dd class="TaskList-itemResultDefinition TaskList-itemResultDefinition--string">
      <pre class="TaskList-preString">{{.String}}</pre>
    </dd>
  {{else if eq .Kind "Slice"}}
    {{with .Slice}}
      {{if eq (index . 0).Kind "Artifact"}}
        <dt class="TaskList-itemResultTerm">
          <div class="TaskList-itemResultTermContent">
            Filenames
          </div>
        </dt>
        <dd class="TaskList-itemResultDefinition">
          {{range $detail := .}}
            {{with $detail.Artifact}}
              <div class="TaskList-itemResultArtifact">
                <div class="TaskList-itemResultArtifactName">
                  {{if .Filename}}
                    {{.Filename}}
                  {{else if .Target}}
                    {{.Target.Name}}
                  {{else}}
                    {{pathBase .ScratchPath}}
                  {{end}}
                </div>
                <div class="TaskList-itemResultArtifactSize">{{prettySize .Size}}</div>
              </div>
            {{end}}
          {{end}}
        </dd>
      {{else}}
        <dt class="TaskList-itemResultTerm TaskList-itemResultTerm--nested">
          <div class="TaskList-itemResultTermContent">
            Slice
          </div>
        </dt>
        <dd class="TaskList-itemResultDefinition TaskList-itemResultDefinition--nested"></dd>
        {{range $value := .}}
          {{template "itemResult" $value}}
        {{end}}
      {{end}}
    {{end}}
  {{else if eq .Kind "Number"}}
    {{.Number}}
  {{else if eq .Kind "Boolean"}}
    <dd class="TaskList-itemResultDefinition TaskList-itemResultDefinition--string">
      {{.Boolean}}
    </dd>
  {{else}}
    {{with .}}
      {{.Unknown}}
    {{else}}
      <dd class="TaskList-itemResultDefinition TaskList-itemResultDefinition--string">
        None
      </dd>
    {{end}}
  {{end}}
{{end}}
