<!--
@license
Copyright (C) 2019 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

<dom-module id="zuul-status-view">
  <template>
    <style>
      #view-container {
        display: block;
      }
      .container {
        align-items: center;
        display: flex;
        flex-wrap: wrap;
      }
      .header {
        background-color: var(--table-header-background-color);
        justify-content: space-between;
        min-height: 3.2em;
        padding: .5em var(--default-horizontal-margin, 1rem);
        border-top: 1px solid var(--border-color);
        border-bottom: 1px solid var(--border-color);
      }
      .header .label {
        font: inherit;
        font-family: var(--font-family-bold);
        font-size: 1.17em;
        margin-right: 1em;
      }
      .progress {
        overflow: hidden;
        height: 20px;
        margin-bottom: 20px;
        background-color: #f5f5f5;
        border-radius: 4px;
        -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1);
        box-shadow: inset 0 1px 2px rgba(0,0,0,.1);
      }
      .progress-bar {
        float: left;
        width: 0;
        height: 100%;
        font-size: 12px;
        line-height: 20px;
        color: #fff;
        text-align: center;
        background-color: #428bca;
        -webkit-box-shadow: inset 0 -1px 0 rgba(0,0,0,.15);
        box-shadow: inset 0 -1px 0 rgba(0,0,0,.15);
        -webkit-transition: width .6s ease;
        transition: width .6s ease;
      }
      .zuul-job-result {
        float: right;
        width: 70px;
        height: 15px;
        margin: 2px 0 0 0;
      }
      #progressBar {
        width: var(--progress-bar-width, 0%);
      }
      .genericList th {
        white-space: nowrap;
      }
      .genericList th,
      .genericList td {
        padding-right: 1rem;
      }
      .genericList tr th:first-of-type,
      .genericList tr td:first-of-type {
        padding-left: 1rem;
      }
      .genericList td {
        flex-shrink: 0;
      }
      .genericList .topHeader {
        color: var(--primary-text-color);
        font-weight: var(--font-weight-bold);
        text-align: left;
        vertical-align: middle
      }
      .genericList a {
        color: var(--primary-text-color);
        text-decoration: none;
      }
      .genericList a:hover {
        text-decoration: underline;
      }
      #list {
        padding-bottom: 1em;
      }
      .zuul-job-result {
        float: right;
        width: 70px;
        height: 15px;
        margin: 2px 0 0 0;
      }
      .label {
        display: inline;
        padding: .2em .6em .3em;
        font-size: 75%;
        font-weight: 700;
        line-height: 1;
        color: #fff;
        text-align: center;
        white-space: nowrap;
        vertical-align: baseline;
        border-radius: .25em;
      }
      .label-danger {
        background-color: #d9534f;
      }
      .label-default {
        background-color: #999;
      }
      .label-info {
        background-color: #5bc0de;
      }
      .label-success {
        background-color: #5cb85c;
      }
      .label-warning {
        background-color: #f0ad4e;
      }
    </style>
    <template is="dom-if" if="[[zuulUrl]]">
      <div id="view-container">
        <div class="header container">
          <div class="container">
            <h3 class="labelName">[[_computeTitle(_response)]]</h3>
          </div>
          <div class="container">
            <template is="dom-if" if="[[!zuulDisable]]" restamp="true">
              <gr-button link on-tap="_handleDisableZuulStatus">Disable Zuul Status</gr-button>
            </template>
            <template is="dom-if" if="[[zuulDisable]]" restamp="true">
              <gr-button link on-tap="_handleEnableZuulStatus">Enable Zuul Status</gr-button>
            </template>
          </div>
        </div>
        <template is="dom-if" if="[[!zuulDisable]]" restamp="true">
          <div class="bottom container">
            <table id="list" class="genericList">
              <tr class="headerRow">
                <th class="pipeline topHeader">Pipeline</th>
                <th class="jobName topHeader">Job Name</th>
                <th class="progressName topHeader">Progress</th>
              </tr>
              <tbody>
                <template is="dom-repeat" items=[[_response]] as="response">
                  <template is="dom-repeat" items=[[response.jobs]] as="jobs">
                    <tr class="table">
                      <td class="pipeline">
                        [[jobs.pipeline]]
                      </td>
                      <td class="jobName">
                        <a href="[[_computeReportURL(jobs)]]" target="_blank"
                           hidden$="[[!jobs.name]]">
                          [[jobs.name]]
                        </a>
                      </td>
                      <td class="progressName">
                        <template is="dom-if" if="[[_getResults(jobs, 'true', 'in progress')]]">
                          <div class="progress zuul-job-result">
                            <div class="progress-bar"
                              id="progressBar"
                              role="progressbar"
                              aria-valuenow$="[[_progressPercent(jobs)]]"
                              aria-valuemin="0"
                              aria-valuemax="100"></div>
                          </div>
                        </template>
                        <template is="dom-if" if="[[!_getResults(jobs, 'true', 'in progress')]]">
                          <span class$="zuul-job-result label [[_renderJobStatusLabel(jobs)]]">
                            [[_getResults(jobs)]]
                          </span>
                        </template>
                      </td>
                    </tr>
                  </template>
                </template>
              </tbody>
            </table>
          </div>
        </template>
      </div>
    </template>
  </template>
  <script src="zuul-status-view.js"></script>
</dom-module>
