Becky Siegel e115b14541 Add events to thread list and diff view
Whenever a comment changes in either the thread view or the diff view,
the other view will need to be notified of the change in order to
re-render its comments, since they do not share a common data source
(The diff view's comments are added manually when the diff is rendered
via the diff builder).

Because the gr-diff-comment-thread is common to both uses, it can fire
events to be consumed in both cases.

From there, gr-diff and gr-list-view each fire a separate event, which
is listened for on the change view (common ancestor). The change view
will then trigger reloading of comments for the element that needs

Change-Id: Ia31c0ef512af408c4d099667558a32f86ed43152
2018-03-11 14:21:01 -07:00

121 lines
4.2 KiB
HTML

<!--
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/gr-path-list-behavior/gr-path-list-behavior.html">
<link rel="import" href="../../../styles/shared-styles.html">
<link rel="import" href="../../core/gr-navigation/gr-navigation.html">
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
<link rel="import" href="../../shared/gr-storage/gr-storage.html">
<link rel="import" href="../gr-diff-comment/gr-diff-comment.html">
<dom-module id="gr-diff-comment-thread">
<template>
<style include="shared-styles">
gr-button {
margin-left: .5em;
--gr-button-color: #212121;
}
#actions {
margin-left: auto;
padding: .5em .7em;
}
#container {
background-color: #fcfad6;
border: 1px solid #bbb;
display: block;
margin-bottom: 1px;
white-space: normal;
}
#container.unresolved {
background-color: #fcfaa6;
}
#commentInfoContainer {
border-top: 1px dotted #bbb;
display: flex;
}
#unresolvedLabel {
font-family: var(--font-family);
margin: auto 0;
padding: .5em .7em;
}
.pathInfo {
display: flex;
align-items: baseline;
}
.descriptionText {
margin-left: .5rem;
font-size: var(--font-size-small);
font-style: italic;
}
</style>
<template is="dom-if" if="[[showFilePath]]">
<div class="pathInfo">
<a href$="[[_getDiffUrlForComment(projectName, changeNum, path, patchNum)]]">[[_computeDisplayPath(path)]]</a>
<span class="descriptionText">Patchset [[patchNum]]</span>
</div>
</template>
<div id="container" class$="[[_computeHostClass(unresolved)]]">
<template id="commentList" is="dom-repeat" items="[[_orderedComments]]"
as="comment">
<gr-diff-comment
comment="{{comment}}"
robot-button-disabled="[[_hideActions(_showActions, _lastComment)]]"
change-num="[[changeNum]]"
patch-num="[[patchNum]]"
draft="[[_isDraft(comment)]]"
show-actions="[[_showActions]]"
comment-side="[[comment.__commentSide]]"
side="[[comment.side]]"
root-id="[[rootId]]"
project-config="[[_projectConfig]]"
on-create-fix-comment="_handleCommentFix"
on-comment-discard="_handleCommentDiscard"
on-comment-save="_handleCommentSavedOrDiscarded"></gr-diff-comment>
</template>
<div id="commentInfoContainer"
hidden$="[[_hideActions(_showActions, _lastComment)]]">
<span id="unresolvedLabel" hidden$="[[!unresolved]]">Unresolved</span>
<div id="actions">
<gr-button
id="replyBtn"
link
class="action reply"
on-tap="_handleCommentReply">Reply</gr-button>
<gr-button
id="quoteBtn"
link
class="action quote"
on-tap="_handleCommentQuote">Quote</gr-button>
<gr-button
id="ackBtn"
link
class="action ack"
on-tap="_handleCommentAck">Ack</gr-button>
<gr-button
id="doneBtn"
link
class="action done"
on-tap="_handleCommentDone">Done</gr-button>
</div>
</div>
</div>
<gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
<gr-storage id="storage"></gr-storage>
</template>
<script src="gr-diff-comment-thread.js"></script>
</dom-module>