Front-end support for CC Feature: Issue 13773 Change-Id: Iadfa230f747b27c623224306cc43010c6783c040
diff --git a/rv-reviewers/rv-edit-screen.js b/rv-reviewers/rv-edit-screen.js index 0c692f5..b0419bf 100644 --- a/rv-reviewers/rv-edit-screen.js +++ b/rv-reviewers/rv-edit-screen.js
@@ -65,7 +65,7 @@ } _handleCreateSection() { - const section = {filter: '', reviewers: [], editing: true}; + const section = {filter: '', reviewers: [], ccs: [], editing: true}; this._editingFilter = true; this.push('_filterSections', section); }
diff --git a/rv-reviewers/rv-edit-screen_html.js b/rv-reviewers/rv-edit-screen_html.js index 63ea346..954d46c 100644 --- a/rv-reviewers/rv-edit-screen_html.js +++ b/rv-reviewers/rv-edit-screen_html.js
@@ -56,6 +56,7 @@ <rv-filter-section filter="[[section.filter]]" reviewers="[[section.reviewers]]" + ccs="[[section.ccs]]" editing="[[section.editing]]" reviewers-url="[[_getReviewersUrl(repoName)]]" repo-name="[[repoName]]"
diff --git a/rv-reviewers/rv-filter-section.js b/rv-reviewers/rv-filter-section.js index fab5420..e2e1b20 100644 --- a/rv-reviewers/rv-filter-section.js +++ b/rv-reviewers/rv-filter-section.js
@@ -33,6 +33,7 @@ pluginRestApi: Object, repoName: String, reviewers: Array, + ccs: Array, filter: String, canModifyConfig: Boolean, _originalFilter: String, @@ -77,19 +78,24 @@ } _handleReviewerDeleted(e) { + const type = e.detail.type; if (e.detail.editing) { - this.reviewers.pop(); + if (type === "CC") { + this.ccs.pop(); + } else { + this.reviewers.pop(); + } this._editingReviewer = false; } else { const index = e.model.index; - const deleted = this.reviewers[index]; - this._putReviewer(deleted, 'REMOVE'); + const deleted = type === 'CC' ? this.ccs[index] : this.reviewers[index]; + this._putReviewer(deleted, 'REMOVE', type); } } _handleReviewerAdded(e) { this._editingReviewer = false; - this._putReviewer(e.detail.reviewer, 'ADD').catch(err => { + this._putReviewer(e.detail.reviewer, 'ADD', e.detail.type).catch(err => { this.dispatchEvent(new CustomEvent('show-alert', { detail: { message: err, @@ -100,10 +106,11 @@ }); } - _putReviewer(reviewer, action) { + _putReviewer(reviewer, action, type) { return this.pluginRestApi.put(this.reviewersUrl, { action, reviewer, + type, filter: this.filter, }).then(result => { const detail = {result}; @@ -116,6 +123,11 @@ this.push('reviewers', ''); this._editingReviewer = true; } + + _handleAddCc() { + this.push('ccs', ''); + this._editingReviewer = true; + } } customElements.define(RvFilterSection.is, RvFilterSection);
diff --git a/rv-reviewers/rv-filter-section_html.js b/rv-reviewers/rv-filter-section_html.js index b4a72e4..87cc7a3 100644 --- a/rv-reviewers/rv-filter-section_html.js +++ b/rv-reviewers/rv-filter-section_html.js
@@ -84,6 +84,7 @@ items="{{reviewers}}"> <rv-reviewer reviewer="{{item}}" + type="REVIEWER" can-modify-config="[[canModifyConfig]]" plugin-rest-api="[[pluginRestApi]]" repo-name="[[repoName]]" @@ -91,12 +92,30 @@ on-reviewer-added="_handleReviewerAdded"> </rv-reviewer> </template> + <template + is="dom-repeat" + items="{{ccs}}"> + <rv-reviewer + reviewer="{{item}}" + type="CC" + can-modify-config="[[canModifyConfig]]" + plugin-rest-api="[[pluginRestApi]]" + repo-name="[[repoName]]" + on-reviewer-deleted="_handleReviewerDeleted" + on-reviewer-added="_handleReviewerAdded"> + </rv-reviewer> + </template> <div id="addReviewer"> <gr-button link - id="addBtn" + id="addRevBtn" on-tap="_handleAddReviewer" hidden="[[_computeAddBtnHidden(canModifyConfig, _editingReviewer)]]">Add Reviewer</gr-button> + <gr-button + link + id="addCcBtn" + on-tap="_handleAddCc" + hidden="[[_computeAddBtnHidden(canModifyConfig, _editingReviewer)]]">Add Cc</gr-button> </div><!-- addReviewer --> </div><!-- reviewers --> </div>
diff --git a/rv-reviewers/rv-reviewer.js b/rv-reviewers/rv-reviewer.js index dd516c4..f748b51 100644 --- a/rv-reviewers/rv-reviewer.js +++ b/rv-reviewers/rv-reviewer.js
@@ -34,6 +34,11 @@ pluginRestAPi: Object, repoName: String, reviewer: String, + type: String, + _header: { + type: String, + computed: '_computeHeader(type)', + }, _reviewerSearchId: String, _queryReviewers: { type: Function, @@ -55,6 +60,13 @@ this._originalReviewer = this.reviewer; } + _computeHeader(type) { + if (type === 'CC') { + return 'Cc'; + } + return 'Reviewer'; + } + _computeEditing(reviewer, _originalReviewer) { if (_originalReviewer === '') { return true; @@ -134,7 +146,7 @@ } _handleDeleteCancel() { - const detail = {editing: this._editing}; + const detail = {editing: this._editing, type: this.type}; if (this._editing) { this.remove(); } @@ -143,7 +155,7 @@ } _handleAddReviewer() { - const detail = {reviewer: this._reviewerSearchId}; + const detail = {reviewer: this._reviewerSearchId, type: this.type}; this._originalReviewer = this.reviewer; this.dispatchEvent( new CustomEvent('reviewer-added', {detail, bubbles: true}));
diff --git a/rv-reviewers/rv-reviewer_html.js b/rv-reviewers/rv-reviewer_html.js index 0e9becb..29b22de 100644 --- a/rv-reviewers/rv-reviewer_html.js +++ b/rv-reviewers/rv-reviewer_html.js
@@ -43,7 +43,7 @@ </style> <style include="gr-form-styles"></style> <div class="reviewerRow"> - <h4 id="reviewerHeader">Reviewer:</h4> + <h4 id="reviewerHeader">[[_header]]:</h4> <template is="dom-if" if="[[_computeEditing(reviewer, _originalReviewer)]]"> <span class="value"> <!--