Files
gerrit/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.html
Wyatt Allen 6cf5875d6e Check for newer patch sets before setting labels
If the user opens the reply dialog or clicks on the quick-review button,
request a fresh copy of the change detail to check whether a newer patch
has been uploaded in the meantime.

The `fetchIsLatestKnown` method is added to the `gr-patch-set-behavior`
along with some supporting methods that are moved out of
`gr-change-view`. `fetchIsLatestKnown` can be used to check whether the
newest known patch number for a given change matches the newest actual
patch.

Bug: Issue 6046
Change-Id: I517d804b55a041f3d802c20ec3f5a6f0c791bc3d
2017-04-27 10:21:26 +02:00

151 lines
5.5 KiB
HTML

<!--
Copyright (C) 2016 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/gr-patch-set-behavior/gr-patch-set-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="../../../bower_components/iron-input/iron-input.html">
<link rel="import" href="../../shared/gr-button/gr-button.html">
<link rel="import" href="../../shared/gr-dropdown/gr-dropdown.html">
<link rel="import" href="../../shared/gr-js-api-interface/gr-js-api-interface.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">
<link rel="import" href="../gr-confirm-abandon-dialog/gr-confirm-abandon-dialog.html">
<link rel="import" href="../gr-confirm-cherrypick-dialog/gr-confirm-cherrypick-dialog.html">
<link rel="import" href="../gr-confirm-rebase-dialog/gr-confirm-rebase-dialog.html">
<link rel="import" href="../gr-confirm-revert-dialog/gr-confirm-revert-dialog.html">
<dom-module id="gr-change-actions">
<template>
<style>
:host {
display: inline-block;
font-family: var(--font-family);
}
section {
display: inline-block;
}
gr-button,
gr-dropdown {
margin-left: .5em;
}
gr-button:before {
content: attr(data-label);
}
#actionLoadingMessage {
color: #777;
}
@media screen and (max-width: 50em) {
:host,
section,
gr-button,
gr-dropdown {
display: block;
}
gr-button,
gr-dropdown {
margin-bottom: .5em;
margin-left: 0;
}
.confirmDialog {
width: 90vw;
}
#actionLoadingMessage {
display: block;
margin: .5em;
text-align: center;
}
}
</style>
<div>
<span
id="actionLoadingMessage"
hidden$="[[!_actionLoadingMessage]]">
[[_actionLoadingMessage]]</span>
<gr-dropdown
id="moreActions"
down-arrow
vertical-offset="32"
horizontal-align="right"
on-tap-item="_handleOveflowItemTap"
hidden$="[[_shouldHideActions(_menuActions.*, _loading)]]"
disabled-ids="[[_disabledMenuActions]]"
items="[[_menuActions]]">More</gr-dropdown>
<section hidden$="[[_shouldHideActions(_topLevelActions.*, _loading)]]">
<template
is="dom-repeat"
items="[[_topLevelActions]]"
as="action">
<gr-button title$="[[action.title]]"
primary$="[[action.__primary]]"
data-action-key$="[[action.__key]]"
data-action-type$="[[action.__type]]"
data-label$="[[action.label]]"
disabled$="[[_calculateDisabled(action, _hasKnownChainState)]]"
on-tap="_handleActionTap"></gr-button>
</template>
</section>
<gr-button hidden$="[[!_loading]]" disabled>Loading actions...</gr-button>
</div>
<gr-overlay id="overlay" with-backdrop>
<gr-confirm-rebase-dialog id="confirmRebase"
class="confirmDialog"
on-confirm="_handleRebaseConfirm"
on-cancel="_handleConfirmDialogCancel"
branch="[[change.branch]]"
has-parent="[[hasParent]]"
rebase-on-current="[[revisionActions.rebase.rebaseOnCurrent]]"
hidden></gr-confirm-rebase-dialog>
<gr-confirm-cherrypick-dialog id="confirmCherrypick"
class="confirmDialog"
change-status="[[changeStatus]]"
commit-message="[[commitMessage]]"
commit-num="[[commitNum]]"
on-confirm="_handleCherrypickConfirm"
on-cancel="_handleConfirmDialogCancel"
hidden></gr-confirm-cherrypick-dialog>
<gr-confirm-revert-dialog id="confirmRevertDialog"
class="confirmDialog"
on-confirm="_handleRevertDialogConfirm"
on-cancel="_handleConfirmDialogCancel"
hidden></gr-confirm-revert-dialog>
<gr-confirm-abandon-dialog id="confirmAbandonDialog"
class="confirmDialog"
on-confirm="_handleAbandonDialogConfirm"
on-cancel="_handleConfirmDialogCancel"
hidden></gr-confirm-abandon-dialog>
<gr-confirm-dialog
id="confirmDeleteDialog"
class="confirmDialog"
confirm-label="Delete"
on-cancel="_handleConfirmDialogCancel"
on-confirm="_handleDeleteConfirm">
<div class="header">
Delete Change
</div>
<div class="main">
Do you really want to delete the change?
</div>
</gr-confirm-dialog>
</gr-overlay>
<gr-js-api-interface id="jsAPI"></gr-js-api-interface>
<gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
</template>
<script src="gr-change-actions.js"></script>
</dom-module>