Added Status Bar for Admins

There are still some minor Bugs to fix, but it works
This commit is contained in:
AlexE030
2023-06-16 22:38:19 +02:00
parent dc20f35fb8
commit b3fb3b1b8f
7 changed files with 174 additions and 28 deletions
+4 -3
View File
@@ -3,17 +3,18 @@ import {baseURL} from "@/components/Constants";
export default function HourCounter(){
function countTimePlanned(){
const entryurl = baseURL + "/entries/planned?sessionid=" + localStorage.getItem("sessionid");
const moduleid = localStorage.getItem("moduleid")
const entryurl = baseURL + "/entries/module?moduleid=" + localStorage.getItem("moduleid") + "&sessionid=" + localStorage.getItem("sessionid");
let hoursPlanned = 0
fetch(entryurl).then(response => response.json()).then(entries => {
entries.forEach(e => {
hoursPlanned += e.timeend - e.timestart
hoursPlanned += (e.timeend - e.timestart)/4;
})
})
}
console.log(20-countTimePlanned());
return(<p></p>);
}
+114 -21
View File
@@ -1,38 +1,131 @@
import React, { useState, useEffect } from "react";
import React, {useState, useEffect} from "react";
import { baseURL } from "@/components/Constants";
export default function StatusBar(p) {
const module = p.module;
const [index, setIndex] = useState(-1);
if (p.module != null){
const module = p.module;
useEffect(() => {
const url = baseURL + "/entries/planned?sessionid=" + localStorage.getItem("sessionid");
fetch(url)
.then((response) => response.json())
.then((entries) => {
let newIndex = -1;
if (entries !== null) {
entries.forEach((e) => {
if (e.moduleid == module.id) {
if (module.activated == 0) {
useEffect(() => {
const url = baseURL + "/entries/planned?sessionid=" + localStorage.getItem("sessionid");
fetch(url)
.then((response) => response.json())
.then((entries) => {
let newIndex = -1;
if (entries !== null) {
entries.forEach((e) => {
if (e.moduleid == module.id) {
if (module.activated == 0) {
newIndex = 2;
} else {
if(newIndex < 1) {
newIndex = 1;
}
}
}
});
if (newIndex === -1) {
newIndex = 0;
}
}
setIndex(newIndex);
});
}, [module.id, module.activated]);
}
else if(p.semester != null){
const semester = p.semester;
// const [newIndex, setNewIndex] = useState(-1)
const url = baseURL + "/entries/semester?semesterid=" + semester.id + "&sessionid=" + localStorage.getItem("sessionid");
const moduleurl = baseURL + "/module/bysemesterid?sessionid=" + localStorage.getItem("sessionid") + "&semesterid=" + localStorage.getItem("currentsid");
useEffect(() => {
fetch(url)
.then((response) => response.json())
.then((entries) => {
// let newIndex = -1
if (entries !== null) {
const moduleurl = baseURL + "/module/bysemesterid?sessionid=" + localStorage.getItem("sessionid") + "&semesterid=" + localStorage.getItem("currentsid");
fetch(moduleurl).then(response => response.json()).then(modules => {
// let newIndex = -1
let modulesWithEntries = [];
let isSubmitted = true;
modules.forEach(m => {
entries.forEach(e => {
if (e.moduleid === m.id) {
if (!modulesWithEntries.includes(m)) {
modulesWithEntries.push(m)
}
}
if (m.activated === 1) {
isSubmitted = false;
}
})
})
// entries.forEach(e => {
//
// const moduleurl = baseURL + "/module/bysemesterid?sessionid=" + localStorage.getItem("sessionid") + "&semesterid=" + localStorage.getItem("currentsid");
// fetch(moduleurl).then(response => response.json()).then(modules => {
// // let newIndex = -1
// let modulesWithEntries = [];
// let isSubmitted = true;
// modules.forEach(m => {
// if (e.moduleid === m.id){
// if (!modulesWithEntries.includes(m)) {
// modulesWithEntries.push(m)
// }
// }
// if (m.activated === 1){
// isSubmitted = false;
// }
// })
// // const modulesWithoutEntries = modules.filter(element => !modulesWithEntries.includes(element));
// // console.log(modulesWithoutEntries);
// // if (modulesWithoutEntries.length === 0 && isSubmitted){
// // newIndex = 2;
// // console.log("newIndex: "+2)
// // }
// // else if(modulesWithEntries.length !== 0 && newIndex < 1 && newIndex <= -1){
// // newIndex = 1;
// // }
// //
// // if (newIndex == -1) {
// // newIndex = 0;
// // }
// //
// // setIndex(newIndex);
// })
// });
let newIndex = -1
const modulesWithoutEntries = modules.filter(element => !modulesWithEntries.includes(element));
console.log(modulesWithoutEntries);
if (modulesWithoutEntries.length === 0 && isSubmitted) {
newIndex = 2;
} else {
console.log("newIndex: " + 2)
} else if (modulesWithEntries.length !== 0 && newIndex < 1 && newIndex <= -1) {
newIndex = 1;
}
}
});
if (newIndex === -1) {
newIndex = 0;
if (newIndex == -1) {
newIndex = 0;
}
setIndex(newIndex);
});
}
}
setIndex(newIndex);
});
}, [module.id, module.activated]);
});
}, [semester.id, semester.activated]);
}
let classNames = ["not-started", "started", "finished"];
let actives = ["", "", ""];
actives[index] = "active";
return (
<div className={"step-container"}>
<div className={"steps"}>
+1 -1
View File
@@ -110,7 +110,7 @@ export default function SemesterOverview(p) {
localStorage.setItem("currentsid", e.id)
funcButtonEdit(e, m);
}}/>
{/*<StatusBar progress={0}/>*/}
<StatusBar semester={e} module={null}/>
<div style={
{
display:"flex",
@@ -68,7 +68,7 @@ export default function SemesteroverviewLecturer(p) {
editable={false} text={semesterNames[index]} text2={e.name}
onClick={(f) => onClickSemester(e, f, semesterNames[index])}
/>
<StatusBar progress={0} module={e}/>
<StatusBar module={e} semester={null}/>
</div>
))}
</div>