From d979205efb6f3324389db8101be7b15ad6414582 Mon Sep 17 00:00:00 2001 From: Kavehhn174 Date: Sat, 15 Aug 2026 23:59:08 +0330 Subject: [PATCH] feat(classes): show class days and meeting time on my classes Surface the stored class schedule so students can see when their class meets. --- src/views/account/MyClassesView.vue | 43 ++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/src/views/account/MyClassesView.vue b/src/views/account/MyClassesView.vue index a1aae5e..050a0eb 100644 --- a/src/views/account/MyClassesView.vue +++ b/src/views/account/MyClassesView.vue @@ -49,6 +49,14 @@
پایان
{{ formatJalali(item.endDate) }}
+
+
روزها
+
{{ formatClassDays(item.days) }}
+
+
+
ساعت
+
{{ formatClassTime(item.startTime, item.endTime) }}
+
شهریه
{{ formatPrice(item.tuitionFee) }}
@@ -65,6 +73,39 @@ import { RouterLink } from 'vue-router' import { classesApi } from '@/api/classesApi' import { formatJalali, formatPrice, getApiErrorMessage } from '@/utils/format' +const WEEKDAY_LABELS = { + 0: 'یکشنبه', + 1: 'دوشنبه', + 2: 'سه‌شنبه', + 3: 'چهارشنبه', + 4: 'پنجشنبه', + 5: 'جمعه', + 6: 'شنبه' +} +const IRAN_WEEK_ORDER = [6, 0, 1, 2, 3, 4, 5] + +function joinFaList(items) { + if (!items.length) return '—' + if (items.length === 1) return items[0] + if (items.length === 2) return `${items[0]} و ${items[1]}` + return `${items.slice(0, -1).join('، ')} و ${items[items.length - 1]}` +} + +function formatClassDays(days = []) { + const unique = [...new Set((days || []).map(Number).filter((day) => day >= 0 && day <= 6))] + unique.sort((a, b) => IRAN_WEEK_ORDER.indexOf(a) - IRAN_WEEK_ORDER.indexOf(b)) + return joinFaList(unique.map((day) => WEEKDAY_LABELS[day]).filter(Boolean)) +} + +function formatClassTime(startTime, endTime) { + const start = String(startTime || '').trim() + const end = String(endTime || '').trim() + if (!start && !end) return '—' + if (!end) return start + if (!start) return end + return `${start} – ${end}` +} + const classes = ref([]) const loading = ref(true) const error = ref('') @@ -134,7 +175,7 @@ onMounted(load) .meta-grid { display: grid; - grid-template-columns: repeat(4, minmax(0, 1fr)); + grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.85rem; margin: 0; }