<!--
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="../../core/gr-navigation/gr-navigation.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="[[changeSection.sectionName]]">
          <tr class="groupHeader">
            <td class="cell"
                colspan$="[[_computeColspan(changeTableColumns, labelNames)]]">
              <a href$="[[_sectionHref(changeSection.query)]]">
                [[changeSection.sectionName]]
              </a>
            </td>
          </tr>
        </template>
        <template is="dom-if" if="[[!changeSection.results.length]]">
          <tr class="noChanges">
            <td class="cell"
                colspan$="[[_computeColspan(changeTableColumns, labelNames)]]">
              No changes
            </td>
          </tr>
        </template>
        <template is="dom-repeat" items="[[changeSection.results]]" as="change">
          <gr-change-list-item
              selected$="[[_computeItemSelected(sectionIndex, index, 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>
