diff --git a/frontend/components.d.ts b/frontend/components.d.ts index cd85de64..88e57b82 100644 --- a/frontend/components.d.ts +++ b/frontend/components.d.ts @@ -88,7 +88,6 @@ declare module 'vue' { PageModal: typeof import('./src/components/Modals/PageModal.vue')['default'] PaymentSettings: typeof import('./src/components/Settings/PaymentSettings.vue')['default'] Play: typeof import('./src/components/Icons/Play.vue')['default'] - ProgramForm: typeof import('./src/components/Modals/ProgramForm.vue')['default'] ProgressBar: typeof import('./src/components/ProgressBar.vue')['default'] Question: typeof import('./src/components/Modals/Question.vue')['default'] Quiz: typeof import('./src/components/Quiz.vue')['default'] diff --git a/frontend/src/pages/Batches.vue b/frontend/src/pages/Batches.vue index 6b687720..d61cb5d1 100644 --- a/frontend/src/pages/Batches.vue +++ b/frontend/src/pages/Batches.vue @@ -292,7 +292,12 @@ const batchTabs = computed(() => { const canCreateBatch = () => { if (readOnlyMode) return false - if (user.data?.is_moderator || user.data?.is_instructor) return true + if ( + user.data?.is_moderator || + user.data?.is_instructor || + user.data?.is_evaluator + ) + return true return false } diff --git a/frontend/src/pages/Home/Home.vue b/frontend/src/pages/Home/Home.vue index c5a8216a..6adfd9b8 100644 --- a/frontend/src/pages/Home/Home.vue +++ b/frontend/src/pages/Home/Home.vue @@ -94,31 +94,50 @@ const streakInfo = createResource({ const subtitle = computed(() => { if (isAdmin.value) { + let liveClassSuffix = + adminLiveClasses.data.length > 1 ? __('live classes') : __('live class') + let evalSuffix = + adminEvals.data.length > 1 ? __('evaluations') : __('evaluation') if (adminLiveClasses.data?.length > 0 && adminEvals.data?.length > 0) { - return __( - 'You have {0} upcoming live classes and {1} evaluations scheduled.' - ).format(adminLiveClasses.data.length, adminEvals.data.length) + return __('You have {0} upcoming {1} and {2} {3} scheduled.').format( + adminLiveClasses.data.length, + liveClassSuffix, + adminEvals.data.length, + evalSuffix + ) } else if (adminLiveClasses.data?.length > 0) { - return __('You have {0} upcoming live classes.').format( - adminLiveClasses.data.length + return __('You have {0} upcoming {1}.').format( + adminLiveClasses.data.length, + liveClassSuffix ) } else if (adminEvals.data?.length > 0) { - return __('You have {0} evaluations scheduled.').format( - adminEvals.data.length + return __('You have {0} {1} scheduled.').format( + adminEvals.data.length, + evalSuffix ) } return __('Manage your courses and batches at a glance') } else { + let liveClassSuffix = + myLiveClasses.data.length > 1 ? __('live classes') : __('live class') + let evalSuffix = evalCount.value > 1 ? __('evaluations') : __('evaluation') if (myLiveClasses.data?.length > 0 && evalCount.value > 0) { - return __( - 'You have {0} upcoming live classes and {1} evaluations scheduled.' - ).format(myLiveClasses.data.length, evalCount.value) + return __('You have {0} upcoming {1} and {2} {3} scheduled.').format( + myLiveClasses.data.length, + liveClassSuffix, + evalCount.value, + evalSuffix + ) } else if (myLiveClasses.data?.length > 0) { - return __('You have {0} upcoming live classes.').format( - myLiveClasses.data.length + return __('You have {0} upcoming {1}.').format( + myLiveClasses.data.length, + liveClassSuffix ) } else if (evalCount.value > 0) { - return __('You have {0} evaluations scheduled.').format(evalCount.value) + return __('You have {0} {1} scheduled.').format( + evalCount.value, + evalSuffix + ) } return __('Resume where you left off') }