<!--
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="../../../bower_components/polymer/polymer.html">
<link rel="import" href="../../../behaviors/rest-client-behavior.html">
<link rel="import" href="../../shared/gr-ajax/gr-ajax.html">
<link rel="import" href="../gr-change-list/gr-change-list.html">

<dom-module id="gr-change-list-view">
  <template>
    <style>
      :host {
        background-color: var(--view-background-color);
        display: block;
        margin: 0 var(--default-horizontal-margin);
      }
      .loading,
      .error {
        margin-top: 1em;
        background-color: #f1f2f3;
      }
      .loading {
        color: #666;
      }
      .error {
        color: #D32F2F;
      }
      gr-change-list {
        margin-top: 1em;
        width: 100%;
      }
      nav {
        margin-bottom: 1em;
        padding: .5em 0;
        text-align: center;
      }
      nav a {
        display: inline-block;
      }
      nav a:first-of-type {
        margin-right: .5em;
      }
      @media only screen and (max-width: 50em) {
        :host {
          margin: 0;
        }
        .loading,
        .error {
          padding: 0 var(--default-horizontal-margin);
        }
      }
    </style>
    <gr-ajax
        auto
        url="/changes/"
        params="[[_computeQueryParams(_query, _offset, changesPerPage)]]"
        last-response="{{_changes}}"
        last-error="{{_lastError}}"
        loading="{{_loading}}"></gr-ajax>
    <div class="loading" hidden$="[[!_loading]]" hidden>Loading...</div>
    <div class="error" hidden$="[[_computeErrorHidden(_loading, _lastError)]]" hidden>
      [[_lastError.request.xhr.responseText]]
    </div>
    <div hidden$="[[_computeListHidden(_loading, _lastError)]]" hidden>
      <gr-change-list
          changes="{{_changes}}"
          selected-index="{{viewState.selectedChangeIndex}}"
          show-star="[[loggedIn]]"></gr-change-list>
      <nav>
        <a href$="[[_computeNavLink(_query, _offset, -1, changesPerPage)]]"
           hidden$="[[_hidePrevArrow(_offset)]]">&larr; Prev</a>
        <a href$="[[_computeNavLink(_query, _offset, 1, changesPerPage)]]"
           hidden$="[[_hideNextArrow(_changes.length, changesPerPage)]]">
          Next &rarr;</a>
      </nav>
    </div>
  </template>
  <script src="gr-change-list-view.js"></script>
</dom-module>
