<!--
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="./core/gr-reporting/gr-reporting.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-registration-dialog/gr-registration-dialog.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 id="mainHeader" 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}}"
            back-page="[[_lastSearchPage]]"></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
            on-account-detail-update="_handleAccountDetailUpdate">
        </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>
      <template is="dom-if" if="[[_computeShowGwtUiLink(_serverConfig)]]">
        |
        <a id="gwtLink" href$="/?polygerrit=0#[[_path]]" rel="external">GWT UI</a>
      </template>
    </footer>
    <gr-overlay id="keyboardShortcuts" with-backdrop>
      <gr-keyboard-shortcuts-dialog
          view="[[params.view]]"
          on-close="_handleKeyboardShortcutDialogClose"></gr-keyboard-shortcuts-dialog>
    </gr-overlay>
    <gr-overlay id="registration" with-backdrop>
      <gr-registration-dialog
          on-account-detail-update="_handleAccountDetailUpdate"
          on-close="_handleRegistrationDialogClose">
      </gr-registration-dialog>
    </gr-overlay>
    <gr-error-manager></gr-error-manager>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
    <gr-reporting id="reporting"></gr-reporting>
  </template>
  <script src="gr-app.js"></script>
</dom-module>
