/**
 * @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="gr-form-styles">
    /* Workaround for empty style block - see https://github.com/Polymer/tools/issues/408 */
  </style>
  <style include="gr-table-styles">
    /* Workaround for empty style block - see https://github.com/Polymer/tools/issues/408 */
  </style>
  <style include="shared-styles">
    .tags td.name {
      min-width: 25em;
    }
    td.name,
    td.revision,
    td.message {
      word-break: break-word;
    }
    td.revision.tags {
      width: 27em;
    }
    td.message,
    td.tagger {
      max-width: 15em;
    }
    .editing .editItem {
      display: inherit;
    }
    .editItem,
    .editing .editBtn,
    .canEdit .revisionNoEditing,
    .editing .revisionWithEditing,
    .revisionEdit,
    .hideItem {
      display: none;
    }
    .revisionEdit gr-button {
      margin-left: var(--spacing-m);
    }
    .editBtn {
      margin-left: var(--spacing-l);
    }
    .canEdit .revisionEdit {
      align-items: center;
      display: flex;
    }
    .deleteButton:not(.show) {
      display: none;
    }
    .tagger.hide {
      display: none;
    }
  </style>
  <style include="gr-table-styles">
    /* Workaround for empty style block - see https://github.com/Polymer/tools/issues/408 */
  </style>
  <gr-list-view
    create-new="[[_loggedIn]]"
    filter="[[_filter]]"
    items-per-page="[[_itemsPerPage]]"
    items="[[_items]]"
    loading="[[_loading]]"
    offset="[[_offset]]"
    on-create-clicked="_handleCreateClicked"
    path="[[_getPath(_repo, detailType)]]"
  >
    <table id="list" class="genericList gr-form-styles">
      <tbody>
        <tr class="headerRow">
          <th class="name topHeader">Name</th>
          <th class="revision topHeader">Revision</th>
          <th class$="message topHeader [[_hideIfBranch(detailType)]]">
            Message
          </th>
          <th class$="tagger topHeader [[_hideIfBranch(detailType)]]">
            Tagger
          </th>
          <th class="repositoryBrowser topHeader">
            Repository Browser
          </th>
          <th class="delete topHeader"></th>
        </tr>
        <tr id="loading" class$="loadingMsg [[computeLoadingClass(_loading)]]">
          <td>Loading...</td>
        </tr>
      </tbody>
      <tbody class$="[[computeLoadingClass(_loading)]]">
        <template is="dom-repeat" items="[[_shownItems]]">
          <tr class="table">
            <td class$="[[detailType]] name">
              <a href$="[[_computeFirstWebLink(item)]]">
                [[_stripRefs(item.ref, detailType)]]
              </a>
            </td>
            <td
              class$="[[detailType]] revision [[_computeCanEditClass(item.ref, detailType, _isOwner)]]"
            >
              <span class="revisionNoEditing">
                [[item.revision]]
              </span>
              <span class$="revisionEdit [[_computeEditingClass(_isEditing)]]">
                <span class="revisionWithEditing">
                  [[item.revision]]
                </span>
                <gr-button
                  link=""
                  on-click="_handleEditRevision"
                  class="editBtn"
                >
                  edit
                </gr-button>
                <iron-input bind-value="{{_revisedRef}}" class="editItem">
                  <input is="iron-input" bind-value="{{_revisedRef}}" />
                </iron-input>
                <gr-button
                  link=""
                  on-click="_handleCancelRevision"
                  class="cancelBtn editItem"
                >
                  Cancel
                </gr-button>
                <gr-button
                  link=""
                  on-click="_handleSaveRevision"
                  class="saveBtn editItem"
                  disabled="[[!_revisedRef]]"
                >
                  Save
                </gr-button>
              </span>
            </td>
            <td class$="message [[_hideIfBranch(detailType)]]">
              [[_computeMessage(item.message)]]
            </td>
            <td class$="tagger [[_hideIfBranch(detailType)]]">
              <div class$="tagger [[_computeHideTagger(item.tagger)]]">
                <gr-account-link account="[[item.tagger]]"> </gr-account-link>
                (<gr-date-formatter
                  has-tooltip=""
                  date-str="[[item.tagger.date]]"
                >
                </gr-date-formatter
                >)
              </div>
            </td>
            <td class="repositoryBrowser">
              <template
                is="dom-repeat"
                items="[[_computeWeblink(item)]]"
                as="link"
              >
                <a
                  href$="[[link.url]]"
                  class="webLink"
                  rel="noopener"
                  target="_blank"
                >
                  ([[link.name]])
                </a>
              </template>
            </td>
            <td class="delete">
              <gr-button
                link=""
                class$="deleteButton [[_computeHideDeleteClass(_isOwner, item.can_delete)]]"
                on-click="_handleDeleteItem"
              >
                Delete
              </gr-button>
            </td>
          </tr>
        </template>
      </tbody>
    </table>
    <gr-overlay id="overlay" with-backdrop="">
      <gr-confirm-delete-item-dialog
        class="confirmDialog"
        on-confirm="_handleDeleteItemConfirm"
        on-cancel="_handleConfirmDialogCancel"
        item="[[_refName]]"
        item-type="[[detailType]]"
      ></gr-confirm-delete-item-dialog>
    </gr-overlay>
  </gr-list-view>
  <gr-overlay id="createOverlay" with-backdrop="">
    <gr-dialog
      id="createDialog"
      disabled="[[!_hasNewItemName]]"
      confirm-label="Create"
      on-confirm="_handleCreateItem"
      on-cancel="_handleCloseCreate"
    >
      <div class="header" slot="header">
        Create [[_computeItemName(detailType)]]
      </div>
      <div class="main" slot="main">
        <gr-create-pointer-dialog
          id="createNewModal"
          detail-type="[[_computeItemName(detailType)]]"
          has-new-item-name="{{_hasNewItemName}}"
          item-detail="[[detailType]]"
          repo-name="[[_repo]]"
        ></gr-create-pointer-dialog>
      </div>
    </gr-dialog>
  </gr-overlay>
  <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
`;
