link backend Post Patch Delete Lesson
This commit is contained in:
@ -1,18 +1,17 @@
|
||||
<script setup>
|
||||
import { ref } from 'vue'
|
||||
import i18n from '@/i18n.js'
|
||||
import {getDifferenceTime,lastDateOfMonth,formatDate,getFirstDay,sortByDate,matrixFromList,sundayToTheEnd,getMarginTop,getHoursMinutes, monthFromList} from '../scheduleFunctions.js'
|
||||
import {getAllSchedule, getOwnSchedule, getCurriculumSchedule,addLessonToSchedule} from "@/rest/scheduleRest.js";
|
||||
import {getLessons, getOwnedLessons, createLesson } from "@/rest/lessonSchedule.js"
|
||||
import {isLogged, getSelf,getTeachers} from "@/rest/Users.js"
|
||||
import {getAllCurriculums, getcurriculum} from "@/rest/curriculum.js"
|
||||
import {getCourse} from "@/rest/courses.js"
|
||||
|
||||
import {formatDate,getHoursMinutes} from '../scheduleFunctions.js'
|
||||
import {getAllSchedule, deleteLessonFromSchedule ,getSchedule, getCurriculumSchedule,addLessonToSchedule} from "@/rest/scheduleRest.js";
|
||||
import {getLessons , createLesson, alterLesson , deleteLesson} from "@/rest/lessonSchedule.js"
|
||||
import {getTeachers} from "@/rest/Users.js"
|
||||
import { getcurriculum} from "@/rest/curriculum.js"
|
||||
|
||||
const trueSchedule = ref()
|
||||
const schedule = ref();
|
||||
const lessonFinder = ref();
|
||||
const curriculum = ref();
|
||||
const allSchedules = await getAllSchedule();
|
||||
const allSchedules = ref(await getAllSchedule());
|
||||
const filter = ref("null");
|
||||
const subFilter = ref("null");
|
||||
const lesson = ref();
|
||||
@ -28,7 +27,11 @@ import i18n from '@/i18n.js'
|
||||
const colors = {"TP":"rgb(36,175,255)","TD":"rgb(255,36,175)","Exam":"rgb(175,255,36)","Course":"rgb(255,36,175)"}
|
||||
const currentDate = new Date();
|
||||
|
||||
const editElementID = ref()
|
||||
|
||||
function editItem(id){
|
||||
editElementID.value = id;
|
||||
}
|
||||
|
||||
function invertedFormatDate(date) {
|
||||
var d = new Date(date),
|
||||
@ -47,7 +50,6 @@ function invertedFormatDate(date) {
|
||||
const maxDate = ref(invertedFormatDate(new Date([currentDate.getMonth()<7 ? currentDate.getFullYear() : (currentDate.getFullYear())+1],7,31)));
|
||||
|
||||
const minDate = ref(invertedFormatDate((new Date()).setDate(currentDate.getDate()+1)))
|
||||
console.log(minDate.value)
|
||||
|
||||
function createLessonEvent(date,hour){
|
||||
const str = date.concat(' ',hour);
|
||||
@ -66,7 +68,41 @@ function createLessonEvent(date,hour){
|
||||
"color": null,
|
||||
}
|
||||
|
||||
const lessonCreator = {
|
||||
"courseId" : null,
|
||||
"lessonStart":null,
|
||||
"lessonEnd":null,
|
||||
"lessonType":null,
|
||||
"local":null,
|
||||
"color":null,
|
||||
}
|
||||
|
||||
const patternModify = {
|
||||
"day": null,
|
||||
"lessonStart": null,
|
||||
"lesssonEnd": null,
|
||||
"local":null,
|
||||
"lessonType":null,
|
||||
}
|
||||
|
||||
const toModify = ref(Object.assign({}, pattern));
|
||||
const lessonBuffer = ref(Object.assign({}, pattern));
|
||||
const lessonCreatorBuffer = ref(Object.assign({},lessonCreator));
|
||||
|
||||
|
||||
function setModify(lesson){
|
||||
toModify.value.day = invertedFormatDate(new Date(lesson.lessonStart));
|
||||
toModify.value.lessonStart = getHoursMinutes(lesson.lessonStart);
|
||||
toModify.value.lessonEnd = getHoursMinutes(lesson.lessonEnd);
|
||||
toModify.value.local = lesson.local
|
||||
toModify.value.lessonType = lesson.lessonType
|
||||
}
|
||||
|
||||
function inFuture(lesson){
|
||||
let toCompare = new Date(lesson.lessonStart);
|
||||
let current = new Date();
|
||||
return (current < toCompare)
|
||||
}
|
||||
|
||||
async function setCourses(){
|
||||
courses.value = (await getcurriculum(curriculum.value.curriculumId)).courses
|
||||
@ -136,12 +172,7 @@ async function setCourses(){
|
||||
}
|
||||
|
||||
function findCreatedLesson(){
|
||||
console.log(lessonFinder.value);
|
||||
for(let element in lessonFinder.value){
|
||||
console.log(lessonFinder.value[element].course.courseId, lessonFinder.value[element].local);
|
||||
|
||||
console.log(lessonBuffer.value.course.courseId, lessonBuffer.value.local)
|
||||
|
||||
if((lessonFinder.value[element].course.courseId ==lessonBuffer.value.course.courseId) && (lessonFinder.value[element].local == lessonBuffer.value.local) ){
|
||||
return lessonFinder.value[element];
|
||||
}
|
||||
@ -160,35 +191,86 @@ async function setCourses(){
|
||||
}
|
||||
}
|
||||
if(!isnull){
|
||||
let course = await getCourse(lessonBuffer.value.course.courseId);
|
||||
console.log(course)
|
||||
|
||||
let start = createLessonEvent(lessonBuffer.value.day,lessonBuffer.value.lessonStart)
|
||||
let end = createLessonEvent(lessonBuffer.value.day,lessonBuffer.value.lessonEnd)
|
||||
await createLesson(course,
|
||||
start,
|
||||
end,
|
||||
lessonBuffer.value.lessonType,
|
||||
lessonBuffer.value.color,lessonBuffer.value.local)
|
||||
|
||||
lessonCreatorBuffer.value.lessonStart = start;
|
||||
lessonCreatorBuffer.value.lessonEnd = end;
|
||||
lessonCreatorBuffer.value.color = lessonBuffer.value.color;
|
||||
lessonCreatorBuffer.value.lessonType =lessonBuffer.value.lessonType;
|
||||
lessonCreatorBuffer.value.local = lessonBuffer.value.local;
|
||||
lessonCreatorBuffer.value.courseId = lessonBuffer.value.course.courseId;
|
||||
|
||||
await createLesson(lessonCreatorBuffer.value);
|
||||
|
||||
lessonFinder.value = await getLessons();
|
||||
lesson.value = findCreatedLesson();
|
||||
|
||||
trueSchedule.value = await getCurriculumSchedule(curriculum.value.curriculumId)
|
||||
await addLessonToSchedule(trueSchedule.value.scheduleId,lesson.value.lessonID)
|
||||
|
||||
}
|
||||
}
|
||||
lessonBuffer.value = Object.assign({}, pattern);
|
||||
lessonFinder.value = null;
|
||||
lessonCreatorBuffer.value = Object.assign({},lessonCreator)
|
||||
trueSchedule.value = null;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
async function patchLesson(lesson){
|
||||
|
||||
for (let element in toModify.value){
|
||||
if (element =="lessonType" && (toModify.value[element] != lesson[element])){
|
||||
await alterLesson(lesson.lessonID,{lessonType:toModify.value[element]});
|
||||
}
|
||||
if (element =="local" && (toModify.value[element] != lesson[element])){
|
||||
await alterLesson(lesson.lessonID,{local:toModify.value[element]});
|
||||
}
|
||||
if (element =="lessonStart" && (toModify.value[element] != lesson[element])){
|
||||
await alterLesson(lesson.lessonID,{lessonStart:createLessonEvent(toModify.value.day,toModify.value[element])
|
||||
});
|
||||
}
|
||||
if (element =="lessonEnd" && (toModify.value[element] != lesson[element])){
|
||||
await alterLesson(lesson.lessonID,{lessonEnd:createLessonEvent(toModify.value.day,toModify.value[element])
|
||||
});
|
||||
}
|
||||
if(element == "day" && (toModify.value[element] != invertedFormatDate(new Date(lesson.lessonStart))) ){
|
||||
|
||||
if(toModify.value.lessonStart == lesson.lessonStart){
|
||||
await alterLesson(lesson.lessonID,{lessonStart:createLessonEvent(toModify.value.day,lesson.lessonStart)
|
||||
});}
|
||||
if(toModify.value.lessonEnd == lesson.lessonEnd){
|
||||
await alterLesson(lesson.lessonID,{lessonStart:createLessonEvent(toModify.value.day,lesson.lessonStart)});
|
||||
}
|
||||
}
|
||||
}
|
||||
toModify.value= Object.assign({},patternModify);
|
||||
trueSchedule.value = await getSchedule(trueSchedule.value.scheduleId);
|
||||
schedule.value =trueSchedule.value.lessons;
|
||||
editElementID.value= '';
|
||||
}
|
||||
|
||||
|
||||
|
||||
async function removeLesson() {
|
||||
await deleteLessonFromSchedule(trueSchedule.value.scheduleId, editElementID.value)
|
||||
await deleteLesson(editElementID.value);
|
||||
trueSchedule.value = await getSchedule(trueSchedule.value.scheduleId);
|
||||
schedule.value =trueSchedule.value.lessons;
|
||||
editElementID.value= '';
|
||||
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
<template>
|
||||
<div class="body">
|
||||
<div class="listTitle buttonGrid"v-if="!deleteMod && !createMod" >
|
||||
<div class="listTitle buttonGrid"v-if="!createMod" >
|
||||
<button class="create" @click="createMod = true;">Create</button>
|
||||
<button class="delete" @click="deleteMod = true;">Delete</button>
|
||||
<button class="delete" @click="deleteMod = !deleteMod;">{{!deleteMod ? "Delete" : "Remove Delete"}}</button>
|
||||
|
||||
</div>
|
||||
<div v-if="createMod">
|
||||
<form class="listElement" style="width:40%; margin:0 auto 0 auto;">
|
||||
@ -241,7 +323,7 @@ async function setCourses(){
|
||||
|
||||
|
||||
|
||||
<div v-if="!deleteMod && !createMod">
|
||||
<div v-if="!createMod">
|
||||
<select @change="changeSchedule()" v-model="trueSchedule">
|
||||
<option v-for="item in allSchedules" :value='item'>{{item.curriculum.option}}</option>
|
||||
</select>
|
||||
@ -263,14 +345,58 @@ async function setCourses(){
|
||||
</select>
|
||||
|
||||
</div>
|
||||
<div v-for="element in schedule" style="width:50%;margin-left:auto; margin-right:auto;" >
|
||||
<div v-if="!createMod " :key="element.lessonID" v-for="element in schedule" style="width:50%;margin-left:auto; margin-right:auto;" >
|
||||
<div v-if="editElementID !== element.lessonID" style ="padding:15px 15px 15px 15px;">
|
||||
<button v-if="inFuture(element)" @click="editElementID = element.lessonID;setModify(element);">
|
||||
{{i18n("courses.modify")}}
|
||||
</button>
|
||||
</div>
|
||||
<div v-else>
|
||||
<button @click="patchLesson(element);"> {{i18n("courses.confirm")}} </button>
|
||||
<button @click="editElementID= '';"> {{i18n("courses.back")}} </button>
|
||||
</div>
|
||||
<div class="listElement">
|
||||
<div class="containerElement">
|
||||
<div v-if="editElementID != element.lessonID">
|
||||
<div>
|
||||
{{element.course.title}}
|
||||
</div>
|
||||
<div>{{formatDate(element.lessonStart)}}</div>
|
||||
<div>{{getHoursMinutes(element.lessonStart)}}-{{getHoursMinutes(element.lessonEnd)}}</div>
|
||||
<div>{{getHoursMinutes(element.lessonStart)}}-{{getHoursMinutes(element.lessonEnd)}}
|
||||
</div>
|
||||
<div>{{element.local}}</div>
|
||||
<div>{{element.lessonType}}</div>
|
||||
</div>
|
||||
|
||||
<div v-else>
|
||||
<div>{{element.course.title}}</div>
|
||||
<div style="margin-bottom:20px;">
|
||||
Day:
|
||||
<input type="date" :min="minDate" :max="maxDate" v-model="toModify.day">
|
||||
</div>
|
||||
<div style="margin-bottom:20px;">
|
||||
Start:
|
||||
<input v-model="toModify.lessonStart" type="time" min="8:00" max="20:00"/>
|
||||
</div>
|
||||
<div style="margin-bottom:20px;">
|
||||
End:
|
||||
<input v-model="toModify.lessonEnd" type="time" min="10:00" max="20:00" required />
|
||||
</div>
|
||||
<div style="margin-bottom:20px;">
|
||||
Type:
|
||||
<select v-model="toModify.lessonType">
|
||||
<option v-for="item in types" :value='item'>{{item}}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div style="margin-bottom:20px;">
|
||||
Local:
|
||||
<select v-model="toModify.local">
|
||||
<option v-for="item in locals" :value='item'>{{item}}</option>
|
||||
</select>
|
||||
<div v-if="deleteMod" style="float:right;">
|
||||
<button class="delete" @click="removeLesson(element);"> {{i18n("courses.deleteCourse")}} </button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -286,6 +412,7 @@ async function setCourses(){
|
||||
|
||||
.infosContainer {
|
||||
min-width:350px;
|
||||
width:70%;
|
||||
padding-bottom:50px;
|
||||
border:2px solid black;
|
||||
font-size:25px;
|
||||
@ -295,29 +422,6 @@ async function setCourses(){
|
||||
border-radius:20px;
|
||||
}
|
||||
|
||||
.containerElement{
|
||||
justify-content:center;
|
||||
display:grid;
|
||||
grid-template-columns:38.8% 38.8% 22.4%;
|
||||
grid-template-areas:
|
||||
"name teacher credits";
|
||||
column-gap:10px; }
|
||||
|
||||
.name {
|
||||
grid-area:name;
|
||||
align-self:center;
|
||||
}
|
||||
|
||||
.teacher{
|
||||
grid-area:teacher;
|
||||
align-self:center;
|
||||
}
|
||||
|
||||
.credits{
|
||||
grid-area:credits;
|
||||
align-self:center;
|
||||
}
|
||||
|
||||
.listElement{
|
||||
min-width:625px;
|
||||
border:2px solid black;
|
||||
|
Reference in New Issue
Block a user