<!--
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/keyboard-shortcut-behavior.html">
<link rel="import" href="../styles/app-theme.html">

<link rel="import" href="./core/gr-error-manager/gr-error-manager.html">
<link rel="import" href="./core/gr-keyboard-shortcuts-dialog/gr-keyboard-shortcuts-dialog.html">
<link rel="import" href="./core/gr-main-header/gr-main-header.html">
<link rel="import" href="./core/gr-router/gr-router.html">

<link rel="import" href="./change-list/gr-change-list-view/gr-change-list-view.html">
<link rel="import" href="./change-list/gr-dashboard-view/gr-dashboard-view.html">
<link rel="import" href="./change/gr-change-view/gr-change-view.html">
<link rel="import" href="./diff/gr-diff-view/gr-diff-view.html">
<link rel="import" href="./settings/gr-settings-view/gr-settings-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">

<script src="../scripts/util.js"></script>

<dom-module id="gr-app">
  <template>
    <style>
      :host {
        display: flex;
        min-height: 100vh;
        flex-direction: column;
      }
      gr-main-header,
      footer {
        color: var(--primary-text-color);
        padding: .5rem var(--default-horizontal-margin);
      }
      gr-main-header {
        background-color: var(--header-background-color, #eee);
      }
      footer {
        background-color: var(--footer-background-color, #eee);
      }
      main {
        flex: 1;
        position: relative;
      }
      .errorView {
        align-items: center;
        display: flex;
        flex-direction: column;
        justify-content: center;
        position: absolute;
        top: 0;
        right: 0;
        bottom: 0;
        left: 0;
      }
      .errorEmoji {
        font-size: 2.6em;
      }
      .errorText,
      .errorMoreInfo {
        margin-top: .75em;
      }
      .errorText {
        font-size: 1.2em;
      }
      .errorMoreInfo {
        color: #999;
      }
      .feedback {
        color: #b71c1c;
      }
    </style>
    <gr-main-header search-query="{{params.query}}"></gr-main-header>
    <main>
      <template is="dom-if" if="[[_showChangeListView]]" restamp="true">
        <gr-change-list-view
            params="[[params]]"
            view-state="{{_viewState.changeListView}}"
            logged-in="[[_computeLoggedIn(_account)]]"></gr-change-list-view>
      </template>
      <template is="dom-if" if="[[_showDashboardView]]" restamp="true">
        <gr-dashboard-view
            account="[[_account]]"
            params="[[params]]"
            view-state="{{_viewState.dashboardView}}"></gr-dashboard-view>
      </template>
      <template is="dom-if" if="[[_showChangeView]]" restamp="true">
        <gr-change-view
            params="[[params]]"
            server-config="[[_serverConfig]]"
            view-state="{{_viewState.changeView}}"></gr-change-view>
      </template>
      <template is="dom-if" if="[[_showDiffView]]" restamp="true">
        <gr-diff-view
            params="[[params]]"
            change-view-state="{{_viewState.changeView}}"></gr-diff-view>
      </template>
      <template is="dom-if" if="[[_showSettingsView]]" restamp="true">
        <gr-settings-view></gr-settings-view>
      </template>
      <div id="errorView" class="errorView" hidden>
        <div class="errorEmoji">[[_lastError.emoji]]</div>
        <div class="errorText">[[_lastError.text]]</div>
        <div class="errorMoreInfo">[[_lastError.moreInfo]]</div>
      </div>
    </main>
    <footer role="contentinfo">
      Powered by <a href="https://www.gerritcodereview.com/" target="_blank">Gerrit Code Review</a>
      ([[_version]])
      |
      <a class="feedback"
          href="https://bugs.chromium.org/p/gerrit/issues/entry?template=PolyGerrit%20Issue"
          target="_blank">
        Report PolyGerrit Bug
      </a>
    </footer>
    <gr-overlay id="keyboardShortcuts" with-backdrop>
      <gr-keyboard-shortcuts-dialog
          view="[[params.view]]"
          on-close="_handleKeyboardShortcutDialogClose"></gr-keyboard-shortcuts-dialog>
    </gr-overlay>
    <gr-error-manager></gr-error-manager>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
  </template>
  <script src="gr-app.js"></script>
</dom-module>
