1
0
forked from PGL/Clyde

Compare commits

...

3 Commits

Author SHA1 Message Date
7cdbf6de74 Merge remote-tracking branch 'origin/master' 2024-04-20 19:30:19 +02:00
be23c3ab91 FINAL WITHOUT CLEAN 2024-04-20 19:30:01 +02:00
9e0db361b8 Merge pull request 'Make app use full space' (#148) from tonitch/front/fullSpaceApp into master
Reviewed-on: PGL/Clyde#148
Reviewed-by: Wal <karpinskiwal@gmail.com>
Reviewed-by: Maxime <231026@umons.ac.be>
2024-03-24 22:32:46 +01:00
10 changed files with 178 additions and 49 deletions

View File

@ -108,6 +108,8 @@ public class LessonRequestsController {
else{ else{
lessonRequestServ.modifyDeleteRequest(lessonRequest, state); lessonRequestServ.modifyDeleteRequest(lessonRequest, state);
lessonRequest.setState(state);
} }
lessonRequestServ.save(lessonRequest); lessonRequestServ.save(lessonRequest);
return new ResponseEntity<>(HttpStatus.OK); return new ResponseEntity<>(HttpStatus.OK);

View File

@ -11,4 +11,7 @@ public interface LessonChangesRequestRepository extends CrudRepository<LessonCha
@Query("select lr from LessonChangesRequest lr where lr.user = ?1") @Query("select lr from LessonChangesRequest lr where lr.user = ?1")
Iterable<LessonChangesRequest> findOwnRequests(User user); Iterable<LessonChangesRequest> findOwnRequests(User user);
@Query("select lr from LessonChangesRequest lr where lr.lessonId = ?1")
Iterable<LessonChangesRequest> findRequestByLessonId(long id);
} }

View File

@ -74,6 +74,17 @@ public class LessonRequestService {
return true; return true;
} }
public Iterable<LessonChangesRequest> findRequestByLessonId(long id){
return lessonChangesRepo.findRequestByLessonId(id);
}
public void refuseAllByLessonId(long id){
Iterable<LessonChangesRequest> toRefuse = findRequestByLessonId(id);
for(LessonChangesRequest element : toRefuse)
element.setState(RequestState.Refused);
}
public boolean modifyChangeRequestState(Map<String, Object> updates, long lessonId,RequestState state){ public boolean modifyChangeRequestState(Map<String, Object> updates, long lessonId,RequestState state){
if(state == RequestState.Accepted){ if(state == RequestState.Accepted){
@ -87,7 +98,8 @@ public class LessonRequestService {
public void modifyDeleteRequest(LessonChangesRequest lessonChangesRequest, RequestState state){ public void modifyDeleteRequest(LessonChangesRequest lessonChangesRequest, RequestState state){
if(state == RequestState.Accepted){ if(state == RequestState.Accepted){
lessonServ.delete(lessonServ.findById(lessonChangesRequest.getLessonId())); lessonServ.delete(lessonServ.findById(lessonChangesRequest.getLessonId()));
lessonChangesRequest.setState(state);} refuseAllByLessonId(lessonChangesRequest.getLessonId());
}
} }
public LessonChangesRequest createLessonRequest(Map<String,Object> lessonInfos) { public LessonChangesRequest createLessonRequest(Map<String,Object> lessonInfos) {

View File

@ -234,6 +234,7 @@ window.addEventListener('hashchange', () => {
.text { .text {
right: 0%; right: 0%;
width: 0%; width: 0%;
visibility: collapse;
opacity: 0; opacity: 0;
color: white; color: white;
font-size: 1.2em; font-size: 1.2em;
@ -242,7 +243,8 @@ window.addEventListener('hashchange', () => {
} }
ul.vertical:hover .text { ul.vertical:hover .text {
opacity: 1; opacity:1;
visibility:visible;
width: 60%; width: 60%;
transition-duration: .3s; transition-duration: .3s;
padding-left: 15px; padding-left: 15px;

View File

@ -4,6 +4,7 @@ import i18n from "@/i18n.js"
import {ref} from 'vue' import {ref} from 'vue'
import {changeRequestState, getAllRequests} from "@/rest/LessonRequests.js"; import {changeRequestState, getAllRequests} from "@/rest/LessonRequests.js";
import {getLesson} from "@/rest/lessonSchedule.js"; import {getLesson} from "@/rest/lessonSchedule.js";
import {getCourse} from "@/rest/courses.js"
import {formatDate, getHoursMinutes} from "@/scheduleFunctions.js"; import {formatDate, getHoursMinutes} from "@/scheduleFunctions.js";
const requests = ref(await getAllRequests()); const requests = ref(await getAllRequests());
@ -22,7 +23,8 @@ async function upPage(id,review){
async function AcceptSetup(id,type){ async function AcceptSetup(id,type){
if(type !== 2 ){ if(type !== 2 ){
AcceptMod.value = !AcceptMod.value; editElementID.value = id
AcceptMod.value = true;
} }
else{ else{
await upPage(id,{local: null,state:'Accepted'}); await upPage(id,{local: null,state:'Accepted'});
@ -34,21 +36,26 @@ function editItem(item){
} }
async function setMoreInfos(item){ async function setMoreInfos(item){
moreInfos.value = Object.assign({},{})
moreInfos.value["requestType"] = requestTypes[item.requestType] moreInfos.value["requestType"] = requestTypes[item.requestType]
moreInfos.value["day"] = formatDate(new Date(item.lessonStart)) if(item.requestType == 0 || item.requestType == 1){
moreInfos.value["start"] = getHoursMinutes(new Date(item.lessonStart)); moreInfos.value["day"] = item.lessonStart == null ? null : formatDate(new Date(item.lessonStart))
moreInfos.value["end"] = getHoursMinutes(new Date(item.lessonEnd)); moreInfos.value["start"] = item.lessonStart == null ? null : getHoursMinutes(new Date(item.lessonStart))
moreInfos.value["end"] = item.lessonEnd == null ? null : getHoursMinutes(new Date(item.lessonEnd))
moreInfos.value["lessonType"] = item.lessonType; moreInfos.value["lessonType"] = item.lessonType;
[item["course"] == null ? moreInfos.value["course"] = null: moreInfos.value["course"]=item.course.title] moreInfos.value["course"] = item["course"] == null ? null:item.course.title}
if (item.requestType==1 || item.requestType == 2){ if (item.requestType==1 || item.requestType == 2){
let temp = await getLesson(item.lessonId); let temp = await getLesson(item.lessonId);
if(item.requestType == 1){ if(item.requestType == 1 || item.requestType == 2){
moreInfos.value["course"] = temp.course.title; moreInfos.value["course"] = temp.course.title;
moreInfos.value["old_day"] = formatDate(new Date(temp.lessonStart)); moreInfos.value[item.requestType == 2 ? "day" : "old_day"] = formatDate(new Date(temp.lessonStart));
moreInfos.value["old_start"] = getHoursMinutes(new Date(temp.lessonStart)); moreInfos.value[item.requestType == 2 ? "start" : "old_start"] = getHoursMinutes(new Date(temp.lessonStart));
moreInfos.value["old_end"] = getHoursMinutes(new Date(temp.lessonEnd)); moreInfos.value[item.requestType == 2 ? "end":"old_end"] = getHoursMinutes(new Date(temp.lessonEnd));
moreInfos.value["old_type"] = temp.lessonType; moreInfos.value[item.requestType == 2 ? "lessonType":"old_type"] = temp.lessonType;
}} }}
editElementID.value = item.id ;
moreInfosMod.value =true;
} }
</script> </script>
@ -59,8 +66,7 @@ async function setMoreInfos(item){
<div class="body"> <div class="body">
<div v-for="item of requests" :key="item.id" :style="{width:[moreInfosMod ? 95:70] + '%'}" class="centerer"> <div v-for="item of requests" :key="item.id" :style="{width:[moreInfosMod ? 95:70] + '%'}" class="centerer">
<button v-if="moreInfosMod && editElementID == item.id" @click="moreInfosMod = false; editElementID = ''; moreInfos='';">back</button>
<div v-if ="item.state === 'Pending'" class="listElement"> <div v-if ="item.state === 'Pending'" class="listElement">
<div class="containerElement" v-if="editElementID !== item.id"> <div class="containerElement" v-if="editElementID !== item.id">
<div class="id">{{requestTypes[item.requestType]}}</div> <div class="id">{{requestTypes[item.requestType]}}</div>
@ -68,20 +74,20 @@ async function setMoreInfos(item){
<div class="firstname">{{item.user.lastName}}</div> <div class="firstname">{{item.user.lastName}}</div>
<div class="infos"> <div class="infos">
<button @click=" editItem(item);moreInfosMod=!moreInfosMod; setMoreInfos(item); console.log(item);" style="background-color:rgb(105,05,105);" > <button @click=" setMoreInfos(item); console.log(item);" style="background-color:rgb(105,05,105);" >
{{i18n("request.moreInfos")}} {{i18n("request.moreInfos")}}
</button></div> </button></div>
<div class="accept"><button @click="editItem(item); AcceptSetup(item.id,item.requestType);" style="background-color:rgb(0,105,50);">{{i18n("request.accept")}}</button></div> <div class="accept"><button @click="AcceptSetup(item.id,item.requestType);" style="background-color:rgb(0,105,50);">{{i18n("request.accept")}}</button></div>
<div class="refuse"><button @click="upPage(item.id,{local: null,state:'Refused'})" style="background-color:rgb(105,0,0);">{{i18n("request.refuse")}}</button></div> <div class="refuse"><button @click="upPage(item.id,{local: null,state:'Refused'})" style="background-color:rgb(105,0,0);">{{i18n("request.refuse")}}</button></div>
</div> </div>
<div v-else class="containerElement" style="width:auto; height:auto;"> <div v-else class="containerElement" style="width:auto; height:auto;">
<div v-if="AcceptMod"> <div v-if="AcceptMod" style="margin-left:20%;">
Local: Local:
<select v-model="chosenLocal"> <select v-model="chosenLocal">
<option v-for="item in locals">{{item}}</option> <option v-for="item in locals">{{item}}</option>
</select> </select>
<button @click="AcceptMod = !AcceptMod;upPage(item.id,{local: chosenLocal, state:'Accepted'})"></button> <button @click="AcceptMod = false;upPage(item.id,{local: chosenLocal, state:'Accepted'})">Accept</button>
</div> </div>
<template v-if="moreInfosMod" v-for="(key,value) in moreInfos"> <template v-if="moreInfosMod" v-for="(key,value) in moreInfos">
@ -92,7 +98,6 @@ async function setMoreInfos(item){
</div> </div>
</div> </div>
</template> </template>
<button @click = "moreInfosMod = !moreInfosMod; editElementID = ''">back</button>
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,7 +1,7 @@
<script setup> <script setup>
import { ref } from 'vue' import { ref } from 'vue'
import i18n from '@/i18n.js' import i18n from '@/i18n.js'
import {formatDate,getHoursMinutes} from '../scheduleFunctions.js' import {formatDate,getHoursMinutes,sortByDate} from '../scheduleFunctions.js'
import {getOwnedLessons} from "@/rest/lessonSchedule.js"; import {getOwnedLessons} from "@/rest/lessonSchedule.js";
import {getSelf} from "@/rest/Users.js"; import {getSelf} from "@/rest/Users.js";
import {createRequest} from "@/rest/LessonRequests.js" import {createRequest} from "@/rest/LessonRequests.js"
@ -12,6 +12,7 @@ import {getAllSchedule} from "@/rest/scheduleRest.js";
const curriculum = ref(); const curriculum = ref();
const allSchedules = ref(await getAllSchedule()); const allSchedules = ref(await getAllSchedule());
const schedule = ref(await getOwnedLessons()); const schedule = ref(await getOwnedLessons());
schedule.value.sort((a,b) => sortByDate(b,a))
const createMod = ref(false); const createMod = ref(false);
const user = await getSelf(); const user = await getSelf();
const editElementID = ref(); const editElementID = ref();
@ -85,6 +86,11 @@ function setModify(lesson){
toModify.value.lessonType = lesson.lessonType toModify.value.lessonType = lesson.lessonType
} }
function setCreate(){
toModify.value = ref(Object.assign({},pattern));
createMod.value = !createMod.value;
}
async function createLessonRequest(){ async function createLessonRequest(){
if(requestType.value === 0 || requestType.value === 1){ if(requestType.value === 0 || requestType.value === 1){
//modify //modify
@ -126,7 +132,6 @@ async function askChanges(i){
<template> <template>
<div class="body"> <div class="body">
<button @click="createMod = !createMod">Ask Create Request</button>
<div v-if="createMod"> <div v-if="createMod">
<form class="listElement" style="width:40%; margin:0 auto 0 auto;"> <form class="listElement" style="width:40%; margin:0 auto 0 auto;">
<div style="margin-bottom:20px;"> <div style="margin-bottom:20px;">
@ -169,6 +174,7 @@ async function askChanges(i){
<button v-if="!createMod" @click="setCreate()" style="display:flex; margin:0 auto 0 auto;">Ask Create Request</button>
<div v-if="!createMod"v-for="element in schedule" style="width:50%;margin-left:auto; margin-right:auto;" > <div v-if="!createMod"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;"> <div v-if="editElementID !== element.lessonID" style ="padding:15px 15px 15px 15px;">
<button v-if="inFuture(element)" @click="editElementID = element.lessonID;setModify(element);"> <button v-if="inFuture(element)" @click="editElementID = element.lessonID;setModify(element);">

View File

@ -9,9 +9,13 @@
const trueSchedule = ref() const trueSchedule = ref()
const log = await isLogged(); const log = await isLogged();
const schedule = ref(); const schedule = ref();
const importedJSON = ref();
const jsonSchedule = ref();
const jsonMod = ref(false);
const curriculum = ref(); const curriculum = ref();
const shift = ref(getFirstDay(new Date()).getDay()); const shift = ref(getFirstDay(new Date()).getDay());
let value = 1; let value = 1;
let done = false;
const len = ref(lastDateOfMonth(new Date())); const len = ref(lastDateOfMonth(new Date()));
const scheduleByWeek = ref(); const scheduleByWeek = ref();
const month = ref(); const month = ref();
@ -43,10 +47,13 @@
curriculum.value = trueSchedule.value.curriculum;} curriculum.value = trueSchedule.value.curriculum;}
schedule.value = ownSchedule.value; schedule.value = ownSchedule.value;
schedule.value.sort((a,b) => sortByDate(a,b));
scheduleByWeek.value = sundayToTheEnd(matrixFromList(schedule.value,mondayOfWeek.value)); scheduleByWeek.value = sundayToTheEnd(matrixFromList(schedule.value,mondayOfWeek.value));
month.value = monthFromList(schedule.value,new Date().getMonth()); month.value = monthFromList(schedule.value,new Date().getMonth());
} }
} }
@ -101,10 +108,79 @@
month.value = monthFromList(schedule.value,currentDate.value.getMonth()); month.value = monthFromList(schedule.value,currentDate.value.getMonth());
value = 1; value = 1;
counter=0; counter=0;
done = false;
} }
function createJSON(){
const json = {"data":[]};
for(let element in schedule.value){
let item = {};
item["title"] = schedule.value[element].course.title + "\n" + schedule.value[element].course.owner.lastName+ "\n" + schedule.value[element].local
item["start"] = schedule.value[element].lessonStart;
item["end"] = schedule.value[element].lessonEnd;
item["color"] = schedule.value[element].color;
json.data.push(item)
}
return json
}
function exportJSON(){
let json = createJSON();
const data = JSON.stringify(json);
const blob = new Blob([data], {type:"application/json"});
const a = document.createElement('a');
a.href = URL.createObjectURL(blob);
a.download = "Schedule.json";
a.click();
}
function onFileChange(e) {
let files = e.target.files || e.dataTransfer.files;
if (!files.length) return;
readFile(files[0]);
}
function readFile(file) {
let reader = new FileReader();
reader.onload = e => {
let json = JSON.parse(e.target.result);
importedJSON.value = json
createScheduleFromJSON();
jsonMod.value= true;
};
reader.readAsText(file);
}
function createScheduleFromJSON(){
let jsonBrut = importedJSON.value;
let toEventList = [];
for(let element in jsonBrut["data"]){
let temp = {}
temp["title"] = jsonBrut["data"][element].title;
temp["lessonStart"] = jsonBrut["data"][element].start;
temp["lessonEnd"] = jsonBrut["data"][element].end;
temp["color"] = jsonBrut["data"][element].color;
toEventList.push(temp);
}
jsonSchedule.value = toEventList;
scheduleByWeek.value = sundayToTheEnd(matrixFromList(jsonSchedule.value,mondayOfWeek.value));
month.value = monthFromList(jsonSchedule.value,new Date().getMonth());
}
function switchToJSON(){
jsonMod.value = true;
scheduleByWeek.value = sundayToTheEnd(matrixFromList(jsonSchedule.value,mondayOfWeek.value));
month.value = monthFromList(jsonSchedule.value,new Date().getMonth());
}
function lessonFocus(element){ function lessonFocus(element){
if(!jsonMod.value){
focus.value = element; focus.value = element;
var lessonsList = []; var lessonsList = [];
for (let element in schedule.value){ for (let element in schedule.value){
@ -112,7 +188,7 @@
lessonsList.push(schedule.value[element]); lessonsList.push(schedule.value[element]);
} }
} }
focusLessons.value = lessonsList; focusLessons.value = lessonsList;}
} }
@ -161,7 +237,6 @@
} }
const matrix = []; const matrix = [];
for (let element in lessons){ for (let element in lessons){
console.log(lessons[element].lessonType)
if(lessons[element].lessonType == type){ if(lessons[element].lessonType == type){
matrix.push(lessons[element]) matrix.push(lessons[element])
} }
@ -207,18 +282,24 @@
month.value = monthFromList(schedule.value,currentDate.value.getMonth()); month.value = monthFromList(schedule.value,currentDate.value.getMonth());
value = 1; value = 1;
counter=0; counter=0;
done = false;
courses.value = (await getcurriculum(curriculum.value.curriculumId)).courses; courses.value = (await getcurriculum(curriculum.value.curriculumId)).courses;
filter.value = "null"; filter.value = "null";
subFilter.value = "null" subFilter.value = "null"
focus.value = null; focus.value = null;
focusLessons.value = null; focusLessons.value = null;
jsonMod.value = false;
} }
function changeWeek(i){ function changeWeek(i){
const temp = getAnyDays(i); const temp = getAnyDays(i);
mondayOfWeek.value = temp; mondayOfWeek.value = temp;
if(scheduleByWeek.value != null) if(scheduleByWeek.value != null)
scheduleByWeek.value = sundayToTheEnd(matrixFromList(schedule.value, mondayOfWeek.value)) if(jsonMod.value){
scheduleByWeek.value = sundayToTheEnd(matrixFromList(jsonSchedule.value, mondayOfWeek.value))}
else{
scheduleByWeek.value = sundayToTheEnd(matrixFromList(schedule.value, mondayOfWeek.value))}
} }
function changeMonth(i){ function changeMonth(i){
@ -228,8 +309,14 @@
len.value= lastDateOfMonth(currentDate.value); len.value= lastDateOfMonth(currentDate.value);
value = 1; value = 1;
counter = 0; counter = 0;
done=false;
if(month.value != null){ if(month.value != null){
if(jsonMod.value){
month.value = monthFromList(jsonSchedule.value,currentDate.value.getMonth())}
}
else{
month.value = monthFromList(schedule.value,currentDate.value.getMonth())} month.value = monthFromList(schedule.value,currentDate.value.getMonth())}
} }
@ -245,11 +332,14 @@
return true;} return true;}
if(value-shift.value==len.value){ if(value-shift.value==len.value){
done = true;
counter++; counter++;
if(counter> 35){ if(counter> 35){
counter=1; counter=1;
value = 2; value = 2;
done = false;
return true; } return true; }
return false; return false;
} }
@ -298,10 +388,11 @@
</div> </div>
<div class="infos"> <div class="infos">
<p class="childInfos">{{element[index].course.title}}</p> <p class="childInfos" >{{jsonMod ? element[index].title : element[index].course.title}}</p>
<p class="childInfos">{{element[index].local}}</p> <p class="childInfos"v-if="!jsonMod">{{element[index].local}}</p>
<p class="childInfos">{{element[index].lessonType}}</p> <p class="childInfos"v-if="!jsonMod">{{element[index].lessonType}}</p>
<p class="childInfos">{{element[index].course.owner.lastName}}</p> <p class="childInfos"v-if="!jsonMod">{{element[index].course.owner.lastName}}</p>
</div> </div>
<div class="hourEnd"> <div class="hourEnd">
{{getHoursMinutes(element[index].lessonEnd)}} {{getHoursMinutes(element[index].lessonEnd)}}
@ -333,16 +424,17 @@
<div v-if="isAValue()" style="top:0; right:2%; border-radius:20%;color:rgb(200,200,200) ; position:absolute;z-index:50;">{{value-shift}}</div> <div v-if="isAValue()" style="top:0; right:2%; border-radius:20%;color:rgb(200,200,200) ; position:absolute;z-index:50;">{{value-shift}}</div>
<div v-if="month != null" style="overflow-y:scroll; height:100%;" > <div v-if="month != null" style="overflow-y:scroll; height:100%;" >
<template v-for="element in month[value-shift]"> <template v-for="element in month[value-shift]">
<div class="course" @click.native="lessonFocus(element)" v-bind:style="{background:element.color, height:100+'%'}"> <div v-if="!done"class="course" @click.native="lessonFocus(element)" v-bind:style="{background:element.color, height:100+'%'}">
<div class="hourStart"> <div class="hourStart">
{{getHoursMinutes(element.lessonStart)}} {{getHoursMinutes(element.lessonStart)}}
</div> </div>
<div class="infos"> <div class="infos">
<p class="childInfos">{{element.course.title}}</p> <p class="childInfos" >{{jsonMod ? element.title : element.course.title}}</p>
<p class="childInfos">{{element.local}}</p> <p class="childInfos"v-if="!jsonMod">{{element.local}}</p>
<p class="childInfos">{{element.lessonType}}</p> <p class="childInfos"v-if="!jsonMod">{{element.lessonType}}</p>
<p class="childInfos">{{element.course.owner.lastName}}</p> <p class="childInfos"v-if="!jsonMod">{{element.course.owner.lastName}}</p>
</div> </div>
<div class="hourEnd"> <div class="hourEnd">
{{getHoursMinutes(element.lessonEnd)}} {{getHoursMinutes(element.lessonEnd)}}
@ -421,9 +513,10 @@
<button v-if="display=='Month'" @click="display='Week'; value=1;">Month</button> <button v-if="display=='Month'" @click="display='Week'; value=1;">Month</button>
<button v-if="format == 'Grid'" @click="format ='List'">Grid</button> <button v-if="format == 'Grid'" @click="format ='List'">Grid</button>
<button v-if="format == 'List'" @click ="format = 'Grid'">List</button> <button v-if="format == 'List'" @click ="format = 'Grid'">List</button>
<button v-if="verifUser()" @click="displayOwnSchedule()">OwnSchedule</button> <button v-if="verifUser()" @click="jsonMod=false ;displayOwnSchedule();">OwnSchedule</button>
<button v-if="importedJSON != null" @click="switchToJSON()">Switch to JSON FILE</button>
<select v-if="schedule != null" @change="subFilter = 'null'" v-model="filter"> <select v-if="schedule != null && !jsonMod" @change="subFilter = 'null'" v-model="filter">
<option :value ="null">No Filter</option> <option :value ="null">No Filter</option>
<option v-for="item in filters" :value="item">{{item}}</option> <option v-for="item in filters" :value="item">{{item}}</option>
</select> </select>
@ -439,8 +532,14 @@
<option :value ="null">No Filter</option> <option :value ="null">No Filter</option>
<option v-for="item in types" :value='item'>{{item}}</option> <option v-for="item in types" :value='item'>{{item}}</option>
</select> </select>
<button @click="exportJSON()" >Export JSON</button>
<div style="color:white;">IMPORT JSON</div>
<input type="file" @change="onFileChange" accept="application/JSON" ></input>
</div> </div>
<div v-if="focus != null" class="moreInfos"> <div v-if="focus != null && !jsonMod" class="moreInfos">
<div class="body" style="background-color:rgb(50,50,50); height:10%; font-size:2em;" >More infos</div> <div class="body" style="background-color:rgb(50,50,50); height:10%; font-size:2em;" >More infos</div>
<div class="body" :style="{background:focus.color,height:auto,fontSize:1.2+'em', alignItems:center}"> <div class="body" :style="{background:focus.color,height:auto,fontSize:1.2+'em', alignItems:center}">
{{focus.course.title}}</div> {{focus.course.title}}</div>
@ -465,16 +564,18 @@
</template> </template>
<style scoped> <style scoped>
.grid{ .grid{
min-width:1200px;
display:grid; display:grid;
margin-top:2%; margin-top:2%;
align-items:center; align-items:center;
justify-content:center; justify-content:center;
grid-template-columns:72vw 14.5vw; grid-template-columns:72% 14.5%;
column-gap:2vw; column-gap:2vw;
overflow:hidden; overflow:hidden;
grid-template-areas:"schedule options"; grid-template-areas:"schedule options";
} }
.schedule{ .schedule{
min-width:900px;
position:relative; position:relative;
overflow-y:scroll; overflow-y:scroll;
border-radius:20px; border-radius:20px;
@ -490,8 +591,9 @@
background-color:rgba(255,255,255,0.1); background-color:rgba(255,255,255,0.1);
width:100%; width:100%;
height:85vh; height:85vh;
min-width:240px;
grid-template-rows:30% 70%; grid-template-rows:40% 60%;
} }
.settings{ .settings{

View File

@ -15,8 +15,6 @@ export async function createRequest(request){
} }
export async function changeRequestState(id, infos){ export async function changeRequestState(id, infos){
console.log(infos)
console.log(await getLessonRequest(id))
return restPatch("/requests/lessonRequest/" + id, infos); return restPatch("/requests/lessonRequest/" + id, infos);
} }

View File

@ -45,7 +45,6 @@ async function _rest(endPoint, config){
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}); });
config['headers'] = config['headers'] == null ? headers : config['headers']; config['headers'] = config['headers'] == null ? headers : config['headers'];
console.log(config)
return toast.promise(fetch(restURL + endPoint, config), return toast.promise(fetch(restURL + endPoint, config),
{ {
pending: config['pending'] != null ? config['pending'] : 'pending', pending: config['pending'] != null ? config['pending'] : 'pending',

View File

@ -24,8 +24,8 @@
} }
export function sortByDate(a, b) { export function sortByDate(a, b) {
const nameA = a.lessonStart; // ignore upper and lowercase const nameA = new Date(a.lessonStart); // ignore upper and lowercase
const nameB = b.lessonStart; // ignore upper and lowercase const nameB = new Date(b.lessonStart); // ignore upper and lowercase
if (nameA < nameB) { if (nameA < nameB) {
return -1; return -1;