Commit e33a5bee authored by Bryce Johnson's avatar Bryce Johnson

Mock suggested approvers.

parent 8ba6244e
...@@ -4,23 +4,24 @@ ...@@ -4,23 +4,24 @@
(() => { (() => {
Vue.component('approvals-body', { Vue.component('approvals-body', {
name: 'approvals-body', name: 'approvals-body',
props: ['approvedBy', 'approvalsLeft', 'userCanApprove', 'userHasApproved'], props: ['approvedBy', 'approvalsLeft', 'userCanApprove', 'userHasApproved', 'suggestedApprovers'],
computed: { computed: {
approvalsRequiredStringified() { approvalsRequiredStringified() {
return this.approvalsLeft === 1 ? 'one more approval' : return this.approvalsLeft === 1 ? 'one more approval' :
`${this.approvalsLeft} more approvals`; `${this.approvalsLeft} more approvals`;
}, },
approverNamesStringified() { approverNamesStringified() {
const approvers = this.approvedBy; const approvers = this.suggestedApprovers;
if (approvers && approvers.length) { if (approvers && approvers.length) {
const lastIdx = approvers.length - 1; const lastIdx = approvers.length - 1;
return approvers.reduce((memo, curr, index) => { return approvers.reduce((memo, curr, index) => {
const userDisplayName = curr.user.name; const userDisplayName = curr;
const newList = index !== lastIdx ? `${memo} ${userDisplayName}, ` : const newList = index !== lastIdx ? `${memo} ${userDisplayName}, ` :
`${memo} or ${userDisplayName}`; `${memo} or ${userDisplayName}`;
return newList; return newList;
}, ''); }, '');
} }
return null;
}, },
showApproveButton() { showApproveButton() {
return this.userCanApprove && !this.userHasApproved; return this.userCanApprove && !this.userHasApproved;
......
...@@ -23,12 +23,14 @@ ...@@ -23,12 +23,14 @@
initApprovals() { initApprovals() {
gl.ApprovalsStore = new gl.ApprovalsStore(this); gl.ApprovalsStore = new gl.ApprovalsStore(this);
this.assignToData('approvals', this.dataset.approvals); this.assignToData('approvals', {});
} }
assignToData(key, val) { assignToData(key, val) {
this.data[key] = {}; // TODO: Remove when passed in json
return Object.assign(this.data[key], val); const base = { suggested_approvers: JSON.parse(this.dataset.suggestedApprovers) };
this.data[key] = Object.assign(base, val);
return this.data[key];
} }
} }
gl.MergeRequestWidgetStore = MergeRequestWidgetStore; gl.MergeRequestWidgetStore = MergeRequestWidgetStore;
......
...@@ -459,6 +459,9 @@ ...@@ -459,6 +459,9 @@
border-left: 1px solid $gl-gray-light; border-left: 1px solid $gl-gray-light;
padding-left: 15px; padding-left: 15px;
margin-left: 10px; margin-left: 10px;
&:hover {
color: lighten($gl-gray, 10%);
}
} }
.approver-avatar { .approver-avatar {
......
...@@ -86,6 +86,7 @@ module MergeRequestsHelper ...@@ -86,6 +86,7 @@ module MergeRequestsHelper
end end
end end
# This may be able to be removed with associated specs
def render_require_section(merge_request) def render_require_section(merge_request)
str = if merge_request.approvals_left == 1 str = if merge_request.approvals_left == 1
"Requires one more approval" "Requires one more approval"
......
- content_for :page_specific_javascripts do - content_for :page_specific_javascripts do
= page_specific_javascript_tag('merge_request_widget/widget_bundle.js') = page_specific_javascript_tag('merge_request_widget/widget_bundle.js')
#merge-request-widget-app.mr-state-widget{ approvals: @merge_request.approvals.to_json, 'data-endpoint'=> merge_request_path(@merge_request)} - approvers_names = @merge_request.approvers_left.map(&:name)
#merge-request-widget-app.mr-state-widget{ 'data-endpoint'=> merge_request_path(@merge_request), 'data-suggested-approvers' => approvers_names }
= render 'projects/merge_requests/widget/heading' = render 'projects/merge_requests/widget/heading'
.mr-widget-body .mr-widget-body
-# After conflicts are resolved, the user is redirected back to the MR page. -# After conflicts are resolved, the user is redirected back to the MR page.
...@@ -27,7 +29,7 @@ ...@@ -27,7 +29,7 @@
- elsif @merge_request.work_in_progress? - elsif @merge_request.work_in_progress?
= render 'projects/merge_requests/widget/open/wip' = render 'projects/merge_requests/widget/open/wip'
- elsif @merge_request.requires_approve? && !@merge_request.approved? - elsif @merge_request.requires_approve? && !@merge_request.approved?
%approvals-body{':user-can-approve' => 'approvals.user_can_approve', ':user-has-approved' => 'approvals.user_has_approved', ':approved-by' => 'approvals.approved_by', ':approvals-left':'approvals.approvals_left'} %approvals-body{':user-can-approve' => 'approvals.user_can_approve', ':user-has-approved' => 'approvals.user_has_approved', ':approved-by' => 'approvals.approved_by', ':approvals-left':'approvals.approvals_left', ':suggested-approvers' => 'approvals.suggested_approvers'}
- elsif @merge_request.merge_when_build_succeeds? - elsif @merge_request.merge_when_build_succeeds?
= render 'projects/merge_requests/widget/open/merge_when_build_succeeds' = render 'projects/merge_requests/widget/open/merge_when_build_succeeds'
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment