refactor: badge page data

This commit is contained in:
Jannat Patel
2025-01-06 12:36:44 +05:30
parent bd2b558154
commit 052fffccef
3 changed files with 26 additions and 42 deletions

View File

@@ -2,31 +2,32 @@
<div v-if="badge.doc">
<div class="p-5 flex flex-col items-center mt-40">
<div class="text-3xl font-semibold">
{{ badge.doc.title }}
{{ badge.doc.badge }}
</div>
<img :src="badge.doc.image" :alt="badge.doc.title" class="h-60 mt-2" />
<img
:src="badge.doc.badge_image"
:alt="badge.doc.badge"
class="h-60 mt-2"
/>
<div class="text-lg">
{{
__('This badge has been awarded to {0} on {1}.').format(
userName,
dayjs(issuedOn.data?.issued_on).format('DD MMM YYYY')
badge.doc.member_name,
dayjs(badge.doc.issued_on).format('DD MMM YYYY')
)
}}
</div>
<div class="text-lg mt-2">
{{ badge.doc.description }}
{{ badge.doc.badge_description }}
</div>
</div>
</div>
</template>
<script setup>
import { createDocumentResource, createResource, Breadcrumbs } from 'frappe-ui'
import { createDocumentResource } from 'frappe-ui'
import { computed, inject } from 'vue'
import { useRouter } from 'vue-router'
const allUsers = inject('$allUsers')
const dayjs = inject('$dayjs')
const router = useRouter()
const props = defineProps({
badgeName: {
@@ -40,35 +41,11 @@ const props = defineProps({
})
const badge = createDocumentResource({
doctype: 'LMS Badge',
name: props.badgeName,
})
const userName = computed(() => {
const user = Object.values(allUsers.data).find(
(user) => user.name === props.email
)
return user ? user.full_name : props.email
})
const issuedOn = createResource({
url: 'frappe.client.get_value',
makeParams(values) {
return {
doctype: 'LMS Badge Assignment',
filters: {
member: props.email,
badge: props.badgeName,
},
fieldname: 'issued_on',
}
doctype: 'LMS Badge Assignment',
filters: {
badge: props.badgeName,
member: props.email,
},
onSuccess(data) {
if (!data.issued_on) {
router.push({ name: 'Courses' })
}
},
auto: true,
})
const breadcrumbs = computed(() => {
@@ -77,11 +54,11 @@ const breadcrumbs = computed(() => {
label: 'Badges',
},
{
label: badge.doc.title,
label: badge.doc.badge,
route: {
name: 'Badge',
params: {
badge: badge.doc.name,
badge: badge.doc.badge,
},
},
},

View File

@@ -228,8 +228,7 @@ router.beforeEach(async (to, from, next) => {
isLoggedIn &&
(to.name == 'Lesson' ||
to.name == 'Batch' ||
to.name == 'Notifications' ||
to.name == 'Badge')
to.name == 'Notifications')
) {
await allUsers.promise
}

View File

@@ -6,6 +6,7 @@
"engine": "InnoDB",
"field_order": [
"member",
"member_name",
"issued_on",
"column_break_ugix",
"badge",
@@ -57,11 +58,18 @@
"label": "Badge Description",
"read_only": 1,
"reqd": 1
},
{
"fetch_from": "member.full_name",
"fieldname": "member_name",
"fieldtype": "Data",
"label": "Member Name",
"read_only": 1
}
],
"index_web_pages_for_search": 1,
"links": [],
"modified": "2024-05-13 20:16:00.191517",
"modified": "2025-01-06 12:32:28.450028",
"modified_by": "Administrator",
"module": "LMS",
"name": "LMS Badge Assignment",