Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
101 changes: 74 additions & 27 deletions frontend/src/modules/member/components/list/member-list-toolbar.vue
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
Merge members
</el-dropdown-item>
<el-tooltip
v-if="areSelectedMembersNotEnriched"
placement="top"
content="Selected members lack an associated GitHub profile or Email"
:disabled="elegibleEnrichmentMembersIds.length"
Expand All @@ -44,7 +43,9 @@
class="max-w-[16px] h-4"
color="#9CA3AF"
/>
<span class="ml-2">Enrich members</span>
<span class="ml-2">{{
enrichmentLabel
}}</span>
</el-dropdown-item>
</span>
</el-tooltip>
Expand Down Expand Up @@ -130,22 +131,34 @@ export default {
},
elegibleEnrichmentMembersIds() {
return this.selectedRows
.filter(
(r) =>
(r.username?.github || r.email) &&
!r.lastEnriched
)
.filter((r) => r.username?.github || r.email)
.map((item) => item.id)
},
selectedIds() {
return this.selectedRows
.filter((item) => !item.lastEnriched)
.map((item) => item.id)
enrichedMembers() {
return this.selectedRows.filter((r) => r.lastEnriched)
.length
},
areSelectedMembersNotEnriched() {
return this.selectedRows.some(
(item) => !item.lastEnriched
)
enrichmentLabel() {
if (
this.enrichedMembers &&
this.enrichedMembers ===
this.elegibleEnrichmentMembersIds.length
) {
return `Re-enrich ${pluralize(
'member',
this.selectedIds.length,
false
)}`
}

return `Enrich ${pluralize(
'member',
this.selectedIds.length,
false
)}`
},
selectedIds() {
return this.selectedRows.map((item) => item.id)
},
markAsTeamMemberOptions() {
const isTeamView = this.activeView.id === 'team'
Expand Down Expand Up @@ -192,16 +205,45 @@ export default {
} else if (command.action === 'destroyAll') {
await this.doDestroyAllWithConfirm()
} else if (command.action === 'enrichMember') {
const enrichments =
this.elegibleEnrichmentMembersIds.length
let doEnrich = false
let reEnrichmentMessage = null

if (this.enrichedMembers) {
reEnrichmentMessage =
this.enrichedMembers === 1
? `You selected 1 member that was already enriched. If you proceed, this member will be re-enriched and counted towards your quota.`
: `You selected ${this.enrichedMembers} members that were already enriched. If you proceed, these members will be re-enriched and counted towards your quota.`
}

// All members are elegible for enrichment
if (
this.elegibleEnrichmentMembersIds.length ===
this.selectedIds.length
) {
await this.doBulkEnrich(
this.elegibleEnrichmentMembersIds
)
} else {
if (enrichments === this.selectedIds.length) {
// If there are already enriched members, show a warning dialog
if (this.enrichedMembers) {
try {
await ConfirmDialog({
type: 'warning',
title: 'Some members were already enriched',
message: reEnrichmentMessage,
confirmButtonText: `Proceed with enrichment (${pluralize(
'member',
enrichments,
true
)})`,
cancelButtonText: 'Cancel',
icon: 'ri-alert-line'
})

doEnrich = true
} catch (error) {
// no
}
} else {
doEnrich = true
}
// Only a few members are elegible for enrichment
} else {
try {
await ConfirmDialog({
type: 'warning',
Expand All @@ -211,20 +253,25 @@ export default {
'Member enrichment requires an associated GitHub profile or Email. If you proceed, only the members who fulfill this requirement will be enriched and counted towards your quota.',
confirmButtonText: `Proceed with enrichment (${pluralize(
'member',
this.elegibleEnrichmentMembersIds.length,
enrichments,
true
)})`,
highlightedInfo: reEnrichmentMessage,
cancelButtonText: 'Cancel',
icon: 'ri-alert-line'
})

await this.doBulkEnrich(
this.elegibleEnrichmentMembersIds
)
doEnrich = true
} catch (error) {
// no
}
}

if (doEnrich) {
await this.doBulkEnrich(
this.elegibleEnrichmentMembersIds
)
}
}
},

Expand Down
9 changes: 6 additions & 3 deletions frontend/src/modules/member/components/member-dropdown.vue
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
}
}"
>
<el-dropdown-item class="h-10"
<el-dropdown-item class="h-10 mb-1"
><i
class="ri-pencil-line text-base mr-2"
/><span class="text-xs text-gray-900"
Expand All @@ -31,7 +31,6 @@
>
</router-link>
<el-tooltip
v-if="!member.lastEnriched"
placement="top"
content="Member enrichment requires an associated GitHub profile or Email"
:disabled="!isEnrichmentDisabled"
Expand All @@ -56,7 +55,11 @@
:class="{
'text-gray-400': isEnrichmentDisabled
}"
>Enrich member</span
>{{
member.lastEnriched
? 'Re-enrich member'
: 'Enrich member'
}}</span
>
</el-dropdown-item>
</span>
Expand Down
24 changes: 20 additions & 4 deletions frontend/src/shared/dialog/confirm-dialog.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,26 @@ export default ({
)
]
),
h('p', {
innerHTML: message,
class: 'text-gray-500 text-sm'
})
h('div', [
h('p', {
innerHTML: message,
class: 'text-gray-500 text-sm'
}),
highlightedInfo
? h(
'div',
{
class:
'text-2xs text-yellow-600 flex items-center mt-4'
},
[
h('div', {
innerHTML: highlightedInfo
})
]
)
: undefined
])
]
)

Expand Down