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>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue