<!--
Copyright (C) 2015 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="../../../behaviors/base-url-behavior/base-url-behavior.html">
<link rel="import" href="../../../behaviors/gr-change-table-behavior/gr-change-table-behavior.html">
<link rel="import" href="../../../behaviors/gr-url-encoding-behavior.html">
<link rel="import" href="../../../behaviors/keyboard-shortcut-behavior/keyboard-shortcut-behavior.html">
<link rel="import" href="../../../behaviors/rest-client-behavior/rest-client-behavior.html">
<link rel="import" href="../../../bower_components/polymer/polymer.html">
<link rel="import" href="../../../styles/gr-change-list-styles.html">
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
<link rel="import" href="../gr-change-list-item/gr-change-list-item.html">
<link rel="import" href="../../../styles/shared-styles.html">

<dom-module id="gr-change-list">
  <template>
    <style include="shared-styles">
      #changeList {
        border-collapse: collapse;
        width: 100%;
      }
      .cell {
        padding: .3em .5em;
      }
      th {
        text-align: left;
      }
      .groupHeader {
        background-color: #eee;
        border-top: 1em solid #fff;
      }
      .groupHeader a {
        color: #000;
        text-decoration: none;
      }
      .groupHeader a:hover {
        text-decoration: underline;
      }
      .headerRow + tr {
        border: none;
      }
    </style>
    <style include="gr-change-list-styles"></style>
    <table id="changeList">
      <tr class="headerRow">
        <th class="topHeader keyboard"></th>
        <th class="topHeader star" hidden$="[[!showStar]]" hidden></th>
        <th class="topHeader number" hidden$="[[!showNumber]]" hidden>#</th>
        <template is="dom-repeat" items="[[changeTableColumns]]" as="item">
          <th class$="[[_lowerCase(item)]] topHeader"
              hidden$="[[isColumnHidden(item, visibleChangeTableColumns)]]">
            [[item]]
          </th>
        </template>
        <template is="dom-repeat" items="[[labelNames]]" as="labelName">
          <th class="topHeader label" title$="[[labelName]]">
            [[_computeLabelShortcut(labelName)]]
          </th>
        </template>
      </tr>
      <template is="dom-repeat" items="[[sections]]" as="changeSection"
          index-as="sectionIndex">
        <template is="dom-if" if="[[_sectionTitle(sectionIndex)]]">
          <tr class="groupHeader">
            <td class="cell"
                colspan$="[[_computeColspan(changeTableColumns, labelNames)]]">
              <a
                  href$="[[_sectionHref(sectionIndex)]]">
                [[_sectionTitle(sectionIndex)]]
              </a>
            </td>
          </tr>
        </template>
        <template is="dom-if" if="[[!changeSection.length]]">
          <tr class="noChanges">
            <td class="cell"
                colspan$="[[_computeColspan(changeTableColumns, labelNames)]]">
              No changes
            </td>
          </tr>
        </template>
        <template is="dom-repeat" items="[[changeSection]]" as="change">
          <gr-change-list-item
              selected$="[[_computeItemSelected(index, sectionIndex, selectedIndex)]]"
              assigned$="[[_computeItemAssigned(account, change)]]"
              needs-review$="[[_computeItemNeedsReview(account, change, showReviewedState)]]"
              change="[[change]]"
              visible-change-table-columns="[[visibleChangeTableColumns]]"
              show-number="[[showNumber]]"
              show-star="[[showStar]]"
              label-names="[[labelNames]]"></gr-change-list-item>
        </template>
      </template>
    </table>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
  </template>
  <script src="gr-change-list.js"></script>
</dom-module>
