
These tags are preserved by the Closure compiler and vulcanize in order to serve the license notices embedded in the outputs. In a standalone Gerrit server, these license are also covered in the LICENSES.txt served with the documentation. When serving PG assets from a CDN, it's less obvious what the corresponding LICENSES.txt file is, since the CDN is not directly linked to a running Gerrit server. Safer to embed the licenses in the assets themselves. Change-Id: Id1add1451fad1baa7916882a6bda02c326ccc988
234 lines
8.8 KiB
HTML
234 lines
8.8 KiB
HTML
<!--
|
|
@license
|
|
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.
|
|
-->
|
|
<script>
|
|
// This must be set prior to loading Polymer for the first time.
|
|
if (localStorage.getItem('USE_SHADOW_DOM') === 'true') {
|
|
window.Polymer = {
|
|
dom: 'shadow',
|
|
};
|
|
}
|
|
</script>
|
|
|
|
<link rel="import" href="../bower_components/polymer/polymer.html">
|
|
<link rel="import" href="../bower_components/polymer-resin/standalone/polymer-resin.html">
|
|
<script>
|
|
security.polymer_resin.install({
|
|
allowedIdentifierPrefixes: [''],
|
|
reportHandler: security.polymer_resin.CONSOLE_LOGGING_REPORT_HANDLER,
|
|
});
|
|
</script>
|
|
|
|
<link rel="import" href="../behaviors/base-url-behavior/base-url-behavior.html">
|
|
<link rel="import" href="../behaviors/keyboard-shortcut-behavior/keyboard-shortcut-behavior.html">
|
|
<link rel="import" href="../styles/app-theme.html">
|
|
<link rel="import" href="../styles/shared-styles.html">
|
|
<link rel="import" href="./admin/gr-admin-view/gr-admin-view.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="./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-navigation/gr-navigation.html">
|
|
<link rel="import" href="./core/gr-reporting/gr-reporting.html">
|
|
<link rel="import" href="./core/gr-router/gr-router.html">
|
|
<link rel="import" href="./diff/gr-diff-view/gr-diff-view.html">
|
|
<link rel="import" href="./edit/gr-editor-view/gr-editor-view.html">
|
|
<link rel="import" href="./plugins/gr-endpoint-decorator/gr-endpoint-decorator.html">
|
|
<link rel="import" href="./plugins/gr-endpoint-param/gr-endpoint-param.html">
|
|
<link rel="import" href="./plugins/gr-external-style/gr-external-style.html">
|
|
<link rel="import" href="./plugins/gr-plugin-host/gr-plugin-host.html">
|
|
<link rel="import" href="./settings/gr-cla-view/gr-cla-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-fixed-panel/gr-fixed-panel.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 include="shared-styles">
|
|
:host {
|
|
display: flex;
|
|
min-height: 100%;
|
|
flex-direction: column;
|
|
}
|
|
gr-fixed-panel {
|
|
/**
|
|
* This one should be greater that the z-index in gr-diff-view
|
|
* because gr-main-header contains overlay.
|
|
*/
|
|
z-index: 10;
|
|
}
|
|
gr-main-header,
|
|
footer {
|
|
color: var(--primary-text-color);
|
|
}
|
|
gr-main-header {
|
|
background-color: var(--header-background-color);
|
|
padding: 0 var(--default-horizontal-margin);
|
|
border-bottom: 1px solid #ddd;
|
|
}
|
|
gr-main-header.shadow {
|
|
/* Make it obvious for shadow dom testing */
|
|
border-bottom: 1px solid pink;
|
|
}
|
|
footer {
|
|
background-color: var(--footer-background-color);
|
|
display: flex;
|
|
justify-content: space-between;
|
|
padding: .5rem var(--default-horizontal-margin);
|
|
z-index: 100;
|
|
}
|
|
main {
|
|
flex: 1;
|
|
padding-bottom: 2em;
|
|
position: relative;
|
|
}
|
|
.errorView {
|
|
align-items: center;
|
|
display: none;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
position: absolute;
|
|
top: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
left: 0;
|
|
}
|
|
.errorView.show {
|
|
display: flex;
|
|
}
|
|
.errorEmoji {
|
|
font-size: 2.6rem;
|
|
}
|
|
.errorText,
|
|
.errorMoreInfo {
|
|
margin-top: .75em;
|
|
}
|
|
.errorText {
|
|
font-size: 1.2rem;
|
|
}
|
|
.errorMoreInfo {
|
|
color: #999;
|
|
}
|
|
.feedback {
|
|
color: #b71c1c;
|
|
}
|
|
</style>
|
|
<gr-fixed-panel id="header">
|
|
<gr-main-header
|
|
id="mainHeader"
|
|
search-query="{{params.query}}"
|
|
class$="[[_computeShadowClass(_isShadowDom)]]">
|
|
</gr-main-header>
|
|
</gr-fixed-panel>
|
|
<main>
|
|
<template is="dom-if" if="[[_showChangeListView]]" restamp="true">
|
|
<gr-change-list-view
|
|
params="[[params]]"
|
|
account="[[_account]]"
|
|
view-state="{{_viewState.changeListView}}"></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]]"
|
|
view-state="{{_viewState.changeView}}"
|
|
back-page="[[_lastSearchPage]]"></gr-change-view>
|
|
</template>
|
|
<template is="dom-if" if="[[_showEditorView]]" restamp="true">
|
|
<gr-editor-view
|
|
params="[[params]]"></gr-editor-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
|
|
params="[[params]]"
|
|
on-account-detail-update="_handleAccountDetailUpdate">
|
|
</gr-settings-view>
|
|
</template>
|
|
<template is="dom-if" if="[[_showAdminView]]" restamp="true">
|
|
<gr-admin-view path="[[_path]]"
|
|
params=[[params]]></gr-admin-view>
|
|
</template>
|
|
<template is="dom-if" if="[[_showPluginScreen]]" restamp="true">
|
|
<gr-endpoint-decorator name="[[_pluginScreenName]]">
|
|
<gr-endpoint-param name="token" value="[[params.screen]]"></gr-endpoint-param>
|
|
</gr-endpoint-decorator>
|
|
</template>
|
|
<template is="dom-if" if="[[_showCLAView]]" restamp="true">
|
|
<gr-cla-view></gr-cla-view>
|
|
</template>
|
|
<div id="errorView" class="errorView">
|
|
<div class="errorEmoji">[[_lastError.emoji]]</div>
|
|
<div class="errorText">[[_lastError.text]]</div>
|
|
<div class="errorMoreInfo">[[_lastError.moreInfo]]</div>
|
|
</div>
|
|
</main>
|
|
<footer r="contentinfo" class$="[[_computeShadowClass(_isShadowDom)]]">
|
|
<div>
|
|
Powered by <a href="https://www.gerritcodereview.com/" rel="noopener"
|
|
target="_blank">Gerrit Code Review</a>
|
|
([[_version]])
|
|
</div>
|
|
<div>
|
|
<a class="feedback"
|
|
href="https://bugs.chromium.org/p/gerrit/issues/entry?template=PolyGerrit%20Issue"
|
|
rel="noopener" target="_blank">Send feedback</a>
|
|
<template is="dom-if" if="[[_computeShowGwtUiLink(_serverConfig)]]">
|
|
|
|
|
<a id="gwtLink" href$="[[computeGwtUrl(_path)]]" rel="external">Switch to Old UI</a>
|
|
</template>
|
|
| Press “?” for keyboard shortcuts
|
|
</div>
|
|
</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
|
|
settings-url="[[_settingsUrl]]"
|
|
on-account-detail-update="_handleAccountDetailUpdate"
|
|
on-close="_handleRegistrationDialogClose">
|
|
</gr-registration-dialog>
|
|
</gr-overlay>
|
|
<gr-endpoint-decorator name="plugin-overlay"></gr-endpoint-decorator>
|
|
<gr-error-manager id="errorManager"></gr-error-manager>
|
|
<gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
|
|
<gr-reporting id="reporting"></gr-reporting>
|
|
<gr-router id="router"></gr-router>
|
|
<gr-plugin-host id="plugins"
|
|
config="[[_serverConfig]]">
|
|
</gr-plugin-host>
|
|
<gr-external-style id="externalStyle" name="app-theme"></gr-external-style>
|
|
</template>
|
|
<script src="gr-app.js" crossorigin="anonymous"></script>
|
|
</dom-module>
|