feat: assignment pagina is klaar voor studenten en leerkrachten
This commit is contained in:
		
							parent
							
								
									83b15a392d
								
							
						
					
					
						commit
						2c2aeca7ab
					
				
					 3 changed files with 99 additions and 4 deletions
				
			
		|  | @ -47,7 +47,7 @@ | ||||||
|     "learning-path": "Parcours d'apprentissage", |     "learning-path": "Parcours d'apprentissage", | ||||||
|     "choose-lp": "Choisissez un parcours d'apprentissage", |     "choose-lp": "Choisissez un parcours d'apprentissage", | ||||||
|     "choose-classes": "Choisissez des classes", |     "choose-classes": "Choisissez des classes", | ||||||
|     "create-groups": "Crée des groupes", |     "create-groups": "Créer des groupes", | ||||||
|     "title": "Titre", |     "title": "Titre", | ||||||
|     "pick-class": "Choisissez une classe", |     "pick-class": "Choisissez une classe", | ||||||
|     "choose-students": "Sélectionnez des élèves", |     "choose-students": "Sélectionnez des élèves", | ||||||
|  |  | ||||||
|  | @ -55,4 +55,19 @@ teacher01.classes = [class01]; | ||||||
| teacher02.classes = [class02]; | teacher02.classes = [class02]; | ||||||
| teacher03.classes = [class03]; | teacher03.classes = [class03]; | ||||||
| 
 | 
 | ||||||
|  | type Assignment = { | ||||||
|  |     id: string; | ||||||
|  |     title: string; | ||||||
|  |     description: string; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | export const assignments: Assignment[] = Array.from({ length: 4 }, (_, i) => ({ | ||||||
|  |     id: `assignment${i}`, | ||||||
|  |     title: `Assignment ${i}`, | ||||||
|  |     description: | ||||||
|  |         "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. " + | ||||||
|  |         "Aenean commodo ligula eget dolor. Aenean massa. " + | ||||||
|  |         "Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus." | ||||||
|  | })); | ||||||
|  | 
 | ||||||
| export const classes: Array<Class> = [class01, class02, class03]; | export const classes: Array<Class> = [class01, class02, class03]; | ||||||
|  |  | ||||||
|  | @ -1,7 +1,87 @@ | ||||||
| <script setup lang="ts"></script> | <script setup lang="ts"> | ||||||
|  |     import { ref, computed, onMounted } from 'vue'; | ||||||
|  |     import { useI18n } from 'vue-i18n'; | ||||||
|  |     import { useRouter } from 'vue-router'; | ||||||
|  |     import auth from "@/services/auth/auth-service.ts"; | ||||||
|  |     import {assignments} from "@/utils/tempData.ts"; | ||||||
|  | 
 | ||||||
|  |     const { t } = useI18n(); | ||||||
|  |     const router = useRouter(); | ||||||
|  | 
 | ||||||
|  |     const role = auth.authState.activeRole; | ||||||
|  | 
 | ||||||
|  |     const allAssignments = ref(assignments); | ||||||
|  |     const isTeacher = computed(() => role === 'teacher'); | ||||||
|  | 
 | ||||||
|  |     const loadAssignments = async () => { | ||||||
|  |         //TODO: replace with controller function | ||||||
|  |         // fetch all student's or teacher's assignments | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     onMounted(loadAssignments); | ||||||
|  | 
 | ||||||
|  |     const goToCreateAssignment = () => { | ||||||
|  |         router.push('/assignment/create'); | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     const goToEditAssignment = (id: number) => { | ||||||
|  |         router.push(`/assignment/edit/${id}`); | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     const goToAssignmentDetails = (id: number) => { | ||||||
|  |         router.push(`/assignment/${id}`); | ||||||
|  |     }; | ||||||
|  | </script> | ||||||
| 
 | 
 | ||||||
| <template> | <template> | ||||||
|     <main></main> |     <div class="assignments-container"> | ||||||
|  |         <h1>{{ t('assignments') }}</h1> | ||||||
|  | 
 | ||||||
|  |         <v-btn v-if="isTeacher" color="primary" class="mb-4" @click="goToCreateAssignment"> | ||||||
|  |             {{ t('new-assignment') }} | ||||||
|  |         </v-btn> | ||||||
|  | 
 | ||||||
|  |         <v-container> | ||||||
|  |             <v-row> | ||||||
|  |                 <v-col v-for="assignment in allAssignments" :key="assignment.id" cols="12"> | ||||||
|  |                     <v-card class="assignment-card" variant="outlined"> | ||||||
|  |                         <v-card-title>{{ assignment.title }}</v-card-title> | ||||||
|  |                         <v-divider></v-divider> | ||||||
|  |                         <v-card-text>{{ assignment.description }}</v-card-text> | ||||||
|  | 
 | ||||||
|  |                         <v-card-actions> | ||||||
|  |                             <v-btn color="primary" @click="goToAssignmentDetails(assignment.id)"> | ||||||
|  |                                 {{ t('view-assignment') }} | ||||||
|  |                             </v-btn> | ||||||
|  |                             <v-btn v-if="isTeacher" color="secondary" @click="goToEditAssignment(assignment.id)"> | ||||||
|  |                                 {{ t('edit') }} | ||||||
|  |                             </v-btn> | ||||||
|  |                         </v-card-actions> | ||||||
|  |                     </v-card> | ||||||
|  |                 </v-col> | ||||||
|  |             </v-row> | ||||||
|  |         </v-container> | ||||||
|  | 
 | ||||||
|  |     </div> | ||||||
| </template> | </template> | ||||||
| 
 | 
 | ||||||
| <style scoped></style> | <style scoped> | ||||||
|  | .assignments-container { | ||||||
|  |     display: flex; | ||||||
|  |     flex-direction: column; | ||||||
|  |     align-items: center; | ||||||
|  |     padding: 20px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .assignment-card { | ||||||
|  |     padding: 16px; | ||||||
|  |     display: flex; | ||||||
|  |     flex-direction: column; | ||||||
|  |     justify-content: space-between; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | h1 { | ||||||
|  |     text-align: left; | ||||||
|  |     width: 100%; | ||||||
|  | } | ||||||
|  | </style> | ||||||
|  |  | ||||||
		Reference in a new issue
	
	 Joyelle Ndagijimana
						Joyelle Ndagijimana