sidebar: few fixes for panel rendering of reviewers/observers for both commits and PRS.

This commit is contained in:
Marcin Kuzminski 2020-10-06 10:46:42 +02:00
parent 8a81eb3f8a
commit e81d17f45c
4 changed files with 46 additions and 33 deletions

View file

@ -171,6 +171,9 @@ class RepoCommitsView(RepoAppView):
reviewers_duplicates.add(_user_id)
c.allowed_reviewers = reviewers
c.reviewers_count = len(reviewers)
c.observers_count = 0
# from associated statuses, check the pull requests, and
# show comments from them
for pr in prs:

View file

@ -806,6 +806,7 @@ window.ReviewersPanel = {
removeButtons: null,
reviewRules: null,
setReviewers: null,
controller: null,
setSelectors: function () {
var self = this;
@ -815,17 +816,18 @@ window.ReviewersPanel = {
self.removeButtons = $('.reviewer_member_remove,.reviewer_member_mandatory_remove');
},
init: function (reviewRules, setReviewers) {
init: function (controller, reviewRules, setReviewers) {
var self = this;
self.setSelectors();
this.reviewRules = reviewRules;
this.setReviewers = setReviewers;
self.controller = controller;
self.reviewRules = reviewRules;
self.setReviewers = setReviewers;
this.editButton.on('click', function (e) {
self.editButton.on('click', function (e) {
self.edit();
});
this.closeButton.on('click', function (e) {
self.closeButton.on('click', function (e) {
self.close();
self.renderReviewers();
});
@ -835,20 +837,22 @@ window.ReviewersPanel = {
},
renderReviewers: function () {
if (this.setReviewers.reviewers === undefined) {
var self = this;
if (self.setReviewers.reviewers === undefined) {
return
}
if (this.setReviewers.reviewers.length === 0) {
reviewersController.emptyReviewersTable('<tr id="reviewer-empty-msg"><td colspan="6">No reviewers</td></tr>');
if (self.setReviewers.reviewers.length === 0) {
self.controller.emptyReviewersTable('<tr id="reviewer-empty-msg"><td colspan="6">No reviewers</td></tr>');
return
}
reviewersController.emptyReviewersTable();
self.controller.emptyReviewersTable();
$.each(this.setReviewers.reviewers, function (key, val) {
$.each(self.setReviewers.reviewers, function (key, val) {
var member = val;
if (member.role === reviewersController.ROLE_REVIEWER) {
if (member.role === self.controller.ROLE_REVIEWER) {
var entry = renderTemplate('reviewMemberEntry', {
'member': member,
'mandatory': member.mandatory,
@ -861,7 +865,7 @@ window.ReviewersPanel = {
'create': false
});
$(reviewersController.$reviewMembers.selector).append(entry)
$(self.controller.$reviewMembers.selector).append(entry)
}
});
@ -869,21 +873,23 @@ window.ReviewersPanel = {
},
edit: function (event) {
this.editButton.hide();
this.closeButton.show();
this.addButton.show();
$(this.removeButtons.selector).css('visibility', 'visible');
var self = this;
self.editButton.hide();
self.closeButton.show();
self.addButton.show();
$(self.removeButtons.selector).css('visibility', 'visible');
// review rules
reviewersController.loadReviewRules(this.reviewRules);
self.controller.loadReviewRules(this.reviewRules);
},
close: function (event) {
var self = this;
this.editButton.show();
this.closeButton.hide();
this.addButton.hide();
$(this.removeButtons.selector).css('visibility', 'hidden');
// hide review rules
reviewersController.hideReviewRules();
self.controller.hideReviewRules();
}
};
@ -897,6 +903,7 @@ window.ObserversPanel = {
removeButtons: null,
reviewRules: null,
setReviewers: null,
controller: null,
setSelectors: function () {
var self = this;
@ -906,17 +913,18 @@ window.ObserversPanel = {
self.removeButtons = $('.observer_member_remove,.observer_member_mandatory_remove');
},
init: function (reviewRules, setReviewers) {
init: function (controller, reviewRules, setReviewers) {
var self = this;
self.setSelectors();
this.reviewRules = reviewRules;
this.setReviewers = setReviewers;
self.controller = controller;
self.reviewRules = reviewRules;
self.setReviewers = setReviewers;
this.editButton.on('click', function (e) {
self.editButton.on('click', function (e) {
self.edit();
});
this.closeButton.on('click', function (e) {
self.closeButton.on('click', function (e) {
self.close();
self.renderObservers();
});
@ -926,19 +934,20 @@ window.ObserversPanel = {
},
renderObservers: function () {
if (this.setReviewers.observers === undefined) {
var self = this;
if (self.setReviewers.observers === undefined) {
return
}
if (this.setReviewers.observers.length === 0) {
reviewersController.emptyObserversTable('<tr id="observer-empty-msg"><td colspan="6">No observers</td></tr>');
if (self.setReviewers.observers.length === 0) {
self.controller.emptyObserversTable('<tr id="observer-empty-msg"><td colspan="6">No observers</td></tr>');
return
}
reviewersController.emptyObserversTable();
self.controller.emptyObserversTable();
$.each(this.setReviewers.observers, function (key, val) {
$.each(self.setReviewers.observers, function (key, val) {
var member = val;
if (member.role === reviewersController.ROLE_OBSERVER) {
if (member.role === self.controller.ROLE_OBSERVER) {
var entry = renderTemplate('reviewMemberEntry', {
'member': member,
'mandatory': member.mandatory,
@ -951,7 +960,7 @@ window.ObserversPanel = {
'create': false
});
$(reviewersController.$observerMembers.selector).append(entry)
$(self.controller.$observerMembers.selector).append(entry)
}
});

View file

@ -420,7 +420,8 @@
e.preventDefault();
});
ReviewersPanel.init(null, setReviewersData);
reviewersController = new ReviewersController();
ReviewersPanel.init(reviewersController, null, setReviewersData);
var channel = '${c.commit_broadcast_channel}';
new ReviewerPresenceController(channel)

View file

@ -853,8 +853,8 @@ window.setObserversData = ${c.pull_request_set_observers_data_json | n};
var codeMirrorInstance = $('#pr-description-input').get(0).MarkupForm.cm;
PRDetails.init();
ReviewersPanel.init(reviewerRulesData, setReviewersData);
ObserversPanel.init(reviewerRulesData, setObserversData);
ReviewersPanel.init(reviewersController, reviewerRulesData, setReviewersData);
ObserversPanel.init(reviewersController, reviewerRulesData, setObserversData);
window.showOutdated = function (self) {
$('.comment-inline.comment-outdated').show();