/**
 * @license
 * Copyright (C) 2020 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.
 */
import {html} from '@polymer/polymer/lib/utils/html-tag';

export const htmlTemplate = html`
  <style include="shared-styles">
    :host {
      display: block;
    }
    :host([disabled]) {
      opacity: 0.5;
      pointer-events: none;
    }
    label {
      cursor: pointer;
    }
    .main {
      display: flex;
      flex-direction: column;
      width: 100%;
    }
    .main label,
    .main input[type='text'] {
      display: block;
      width: 100%;
    }
    iron-autogrow-textarea {
      font-family: var(--monospace-font-family);
      font-size: var(--font-size-mono);
      line-height: var(--line-height-mono);
      width: 73ch; /* Add a char to account for the border. */
    }
    .cherryPickTopicLayout {
      display: flex;
    }
    .cherryPickSingleChange,
    .cherryPickTopic {
      margin-left: var(--spacing-m);
      margin-bottom: var(--spacing-m);
    }
    .cherry-pick-topic-message {
      margin-bottom: var(--spacing-m);
    }
    label[for='messageInput'],
    label[for='baseInput'] {
      margin-top: var(--spacing-m);
    }
    .title {
      font-weight: var(--font-weight-bold);
    }
    tr > td {
      padding: var(--spacing-m);
    }
    th {
      color: var(--deemphasized-text-color);
    }
    table {
      border-collapse: collapse;
    }
    tr {
      border-bottom: 1px solid var(--border-color);
    }
    .error {
      color: var(--error-text-color);
    }
    .error-message {
      color: var(--error-text-color);
      margin: var(--spacing-m) 0 var(--spacing-m) 0;
    }
  </style>
  <gr-dialog
    confirm-label="Cherry Pick"
    cancel-label="[[_computeCancelLabel(_statuses)]]"
    disabled$="[[_computeDisableCherryPick(_cherryPickType, _duplicateProjectChanges, _statuses)]]"
    on-confirm="_handleConfirmTap"
    on-cancel="_handleCancelTap"
  >
    <div class="header title" slot="header">
      Cherry Pick Change to Another Branch
    </div>
    <div class="main" slot="main">
      <template is="dom-if" if="[[_showCherryPickTopic]]">
        <div class="cherryPickTopicLayout">
          <input
            name="cherryPickOptions"
            type="radio"
            id="cherryPickSingleChange"
            on-change="_handlecherryPickSingleChangeClicked"
            checked=""
          />
          <label for="cherryPickSingleChange" class="cherryPickSingleChange">
            Cherry Pick single change
          </label>
        </div>
        <div class="cherryPickTopicLayout">
          <input
            name="cherryPickOptions"
            type="radio"
            id="cherryPickTopic"
            on-change="_handlecherryPickTopicClicked"
          />
          <label for="cherryPickTopic" class="cherryPickTopic">
            Cherry Pick entire topic ([[_changesCount]] Changes)
          </label>
        </div></template
      >

      <label for="branchInput">
        Cherry Pick to branch
      </label>
      <gr-autocomplete
        id="branchInput"
        text="{{branch}}"
        query="[[_query]]"
        placeholder="Destination branch"
      >
      </gr-autocomplete>
      <template is="dom-if" if="[[_invalidBranch]]">
        <span class="error"> Branch name cannot contain space or commas. </span>
      </template>
      <template
        is="dom-if"
        if="[[_computeIfSinglecherryPick(_cherryPickType)]]"
      >
        <label for="baseInput">
          Provide base commit sha1 for cherry-pick
        </label>
        <iron-input
          maxlength="40"
          placeholder="(optional)"
          bind-value="{{baseCommit}}"
        >
          <input
            is="iron-input"
            id="baseCommitInput"
            maxlength="40"
            placeholder="(optional)"
            bind-value="{{baseCommit}}"
          />
        </iron-input>
        <label for="messageInput">
          Cherry Pick Commit Message
        </label>
      </template>
      <template
        is="dom-if"
        if="[[_computeIfSinglecherryPick(_cherryPickType)]]"
      >
        <iron-autogrow-textarea
          id="messageInput"
          class="message"
          autocomplete="on"
          rows="4"
          max-rows="15"
          bind-value="{{message}}"
        ></iron-autogrow-textarea>
      </template>
      <template is="dom-if" if="[[_computeIfCherryPickTopic(_cherryPickType)]]">
        <span class="error-message"
          >[[_computeTopicErrorMessage(_duplicateProjectChanges)]]</span
        >
        <span class="cherry-pick-topic-message">
          Commit Message will be auto generated
        </span>
        <table>
          <thead>
            <tr>
              <th>Change</th>
              <th>Subject</th>
              <th>Project</th>
              <th>Status</th>
              <!-- Error Message -->
              <th></th>
            </tr>
          </thead>
          <tbody>
            <template is="dom-repeat" items="[[changes]]">
              <tr>
                <td><span> [[_getChangeId(item)]] </span></td>
                <td>
                  <span> [[_getTrimmedChangeSubject(item.subject)]] </span>
                </td>
                <td><span> [[item.project]] </span></td>
                <td>
                  <span class$="[[_computeStatusClass(item, _statuses)]]">
                    [[_computeStatus(item, _statuses)]]
                  </span>
                </td>
                <td>
                  <span class="error">
                    [[_computeError(item, _statuses)]]
                  </span>
                </td>
              </tr>
            </template>
          </tbody>
        </table>
      </template>
    </div>
  </gr-dialog>
  <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
`;
