feat(classes): show class days and meeting time on my classes

Surface the stored class schedule so students can see when their class meets.
This commit is contained in:
2026-08-15 23:59:08 +03:30
parent 3ef45964c6
commit d979205efb
+42 -1
View File
@@ -49,6 +49,14 @@
<dt>پایان</dt>
<dd>{{ formatJalali(item.endDate) }}</dd>
</div>
<div>
<dt>روزها</dt>
<dd>{{ formatClassDays(item.days) }}</dd>
</div>
<div>
<dt>ساعت</dt>
<dd>{{ formatClassTime(item.startTime, item.endTime) }}</dd>
</div>
<div>
<dt>شهریه</dt>
<dd>{{ formatPrice(item.tuitionFee) }}</dd>
@@ -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;
}