<!--
@license
Copyright (C) 2017 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.
-->
<link rel="import" href="../../../bower_components/polymer/polymer.html">

<link rel="import" href="../../../behaviors/gr-list-view-behavior/gr-list-view-behavior.html">
<link rel="import" href="../../../bower_components/iron-input/iron-input.html">
<link rel="import" href="../../../styles/gr-table-styles.html">
<link rel="import" href="../../../styles/shared-styles.html">
<link rel="import" href="../../shared/gr-confirm-dialog/gr-confirm-dialog.html">
<link rel="import" href="../../shared/gr-list-view/gr-list-view.html">
<link rel="import" href="../../shared/gr-overlay/gr-overlay.html">
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
<link rel="import" href="../gr-create-repo-dialog/gr-create-repo-dialog.html">

<dom-module id="gr-repo-list">
  <template>
    <style include="shared-styles"></style>
    <style include="gr-table-styles"></style>
    <gr-list-view
        create-new=[[_createNewCapability]]
        filter="[[_filter]]"
        items-per-page="[[_reposPerPage]]"
        items="[[_repos]]"
        loading="[[_loading]]"
        offset="[[_offset]]"
        on-create-clicked="_handleCreateClicked"
        path="[[_path]]">
      <table id="list" class="genericList">
        <tr class="headerRow">
          <th class="name topHeader">Repository Name</th>
          <th class="description topHeader">Repository Description</th>
          <th class="repositoryBrowser topHeader">Repository Browser</th>
          <th class="readOnly topHeader">Read only</th>
        </tr>
        <tr id="loading" class$="loadingMsg [[computeLoadingClass(_loading)]]">
          <td>Loading...</td>
        </tr>
        <tbody class$="[[computeLoadingClass(_loading)]]">
          <template is="dom-repeat" items="[[_shownRepos]]">
            <tr class="table">
              <td class="name">
                <a href$="[[_computeRepoUrl(item.name)]]">[[item.name]]</a>
              </td>
              <td class="description">[[item.description]]</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="readOnly">[[_readOnly(item)]]</td>
            </tr>
          </template>
        </tbody>
      </table>
    </gr-list-view>
    <gr-overlay id="createOverlay" with-backdrop>
      <gr-confirm-dialog
          id="createDialog"
          class="confirmDialog"
          disabled="[[!_hasNewRepoName]]"
          confirm-label="Create"
          on-confirm="_handleCreateRepo"
          on-cancel="_handleCloseCreate">
        <div class="header" slot="header">
          Create Repository
        </div>
        <div class="main" slot="main">
          <gr-create-repo-dialog
              has-new-repo-name="{{_hasNewRepoName}}"
              params="[[params]]"
              id="createNewModal"></gr-create-repo-dialog>
        </div>
      </gr-confirm-dialog>
    </gr-overlay>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
  </template>
  <script src="gr-repo-list.js"></script>
</dom-module>
