Commit 5e7210c0 authored by Bryce Johnson's avatar Bryce Johnson

Show avatars for approvals remaining.

parent 8b91a695
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
data() { data() {
return { return {
loading: true, loading: true,
pendingAvatar: '/assets/no_avatar.png'
}; };
}, },
computed: { computed: {
...@@ -34,14 +35,23 @@ ...@@ -34,14 +35,23 @@
}); });
}, },
template: ` template: `
<div v-if='hasApprovers' class='mr-widget-footer approved-by-users'> <div v-if='hasApprovers' class='mr-widget-footer approved-by-users approvals-footer'>
<div v-for='approver in approvedByUsers'> <span v-for='approver in approvedByUsers'>
<link-to-member-avatar <link-to-member-avatar
extra-link-class='approver-avatar'
:avatar-url='approver.avatar.url' :avatar-url='approver.avatar.url'
:display-name='approver.name' :display-name='approver.name'
:username='approver.username'> :username='approver.username'
:show-tooltip='true'>
</link-to-member-avatar> </link-to-member-avatar>
</div> </span>
<span v-for='n in approvalsLeft'>
<link-to-member-avatar
:non-user='true'
:avatar-url='pendingAvatar'
:show-tooltip='false'>
</link-to-member-avatar>
</span>
<span v-if='showUnapproveButton'> <span v-if='showUnapproveButton'>
<i class='fa fa-close'></i> <i class='fa fa-close'></i>
<button @click='removeApproval'>Remove your approval</button> <button @click='removeApproval'>Remove your approval</button>
......
...@@ -12,26 +12,36 @@ ...@@ -12,26 +12,36 @@
}, },
username: { username: {
type: String, type: String,
required: true required: false,
}, },
displayName: { displayName: {
type: String, type: String,
required: true, required: false,
}, },
avatarClass: { extraAvatarClass: {
type: String, type: String,
default: 'avatar avatar-inline s48', default: '',
required: false, required: false,
}, },
linkClass: { extraLinkClass: {
type: String, type: String,
default: 'author_link has-tooltip', default: '',
required: false, required: false,
}, },
showTooltip: {
type: Boolean,
required: false,
default: false,
},
size: { size: {
type: Number, type: Number,
default: 48, default: 48,
required: false required: false
},
nonUser: {
type: Boolean,
default: false,
required: false,
} }
}, },
data() { data() {
...@@ -41,16 +51,28 @@ ...@@ -41,16 +51,28 @@
}, },
computed: { computed: {
userProfileUrl() { userProfileUrl() {
return `/${this.username}`; return this.nonUser || !this.username ? '' : `/${this.username}`;
}, },
preppedAvatarUrl() { preppedAvatarUrl() {
return this.avatarUrl || this.noAvatarUrl; return this.avatarUrl || this.noAvatarUrl;
},
tooltipClass() {
return this.showTooltip ? 'has-tooltip' : '';
},
avatarClass() {
return `avatar avatar-inline s${this.size} ${this.extraAvatarClass}`
},
disabledClass() {
return this.nonUser ? 'disabled' : '';
},
linkClass() {
return `author_link ${this.tooltipClass} ${this.extraLinkClass} ${this.disabledClass}`
} }
}, },
template: ` template: `
<a :href='userProfileUrl' :class='linkClass' :data-original-title='displayName' data-container='body'> <a :href='userProfileUrl' :class='linkClass' :data-original-title='displayName' data-container='body'>
<img :class='avatarClass' :src='preppedAvatarUrl' :width='size' :height='size' :alt='displayName'/> <img :class='avatarClass' :src='preppedAvatarUrl' :width='size' :height='size' :alt='displayName'/>
</a> </a>
` `
}); });
})(); })();
\ No newline at end of file
...@@ -428,3 +428,23 @@ ...@@ -428,3 +428,23 @@
padding-right: 0; padding-right: 0;
} }
} }
.approvals-footer {
a.disabled {
pointer-events: none;
cursor: default;
}
.approver-avatar {
position: relative;
display: inline-block;
&::before {
content:'\2713';
color: green;
background: white;
position: absolute;
top: 0;
right: 32%;
}
}
}
...@@ -55,5 +55,4 @@ ...@@ -55,5 +55,4 @@
- if @merge_request.approvals.any? - if @merge_request.approvals.any?
%approvals-footer{':approved-by-users' => 'approvals.approvedByUsers', ':approver-names' => 'approvals.approverNames', ':approvals-left' => 'approvals.approvalsLeft', ':user-can-approve' => 'approvals.userCanApprove', ':user-has-approved' => 'approvals.userHasApproved'} %approvals-footer{':approved-by-users' => 'approvals.approvedByUsers', ':approver-names' => 'approvals.approverNames', ':approvals-left' => 'approvals.approvalsLeft', ':user-can-approve' => 'approvals.userCanApprove', ':user-has-approved' => 'approvals.userHasApproved'}
= icon('spinner spin', class: 'loading-icon')
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