Alle, von mir zu bearbeitenden, komplizierten und relevanten Codeteile wurden ausführlich beschrieben
This commit is contained in:
AliGitGut
2023-07-08 14:54:50 +02:00
parent 3382d732a9
commit 65a399693e
7 changed files with 104 additions and 72 deletions
+9 -2
View File
@@ -6,8 +6,11 @@
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="744e9299-0ce3-415c-8733-c935bf920887" name="Changes" comment=""> <list default="true" id="744e9299-0ce3-415c-8733-c935bf920887" name="Changes" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/anwendung/src/components/StatusBar.jsx" beforeDir="false" afterPath="$PROJECT_DIR$/anwendung/src/components/StatusBar.jsx" afterDir="false" /> <change beforePath="$PROJECT_DIR$/anwendung/src/components/CalendarSideBar.jsx" beforeDir="false" afterPath="$PROJECT_DIR$/anwendung/src/components/CalendarSideBar.jsx" afterDir="false" />
<change beforePath="$PROJECT_DIR$/anwendung/src/styles/globals.css" beforeDir="false" afterPath="$PROJECT_DIR$/anwendung/src/styles/globals.css" afterDir="false" /> <change beforePath="$PROJECT_DIR$/anwendung/src/components/DateElement.jsx" beforeDir="false" afterPath="$PROJECT_DIR$/anwendung/src/components/DateElement.jsx" afterDir="false" />
<change beforePath="$PROJECT_DIR$/anwendung/src/components/WeekSelector.jsx" beforeDir="false" afterPath="$PROJECT_DIR$/anwendung/src/components/WeekSelector.jsx" afterDir="false" />
<change beforePath="$PROJECT_DIR$/anwendung/src/pages/semesteroverview.js" beforeDir="false" afterPath="$PROJECT_DIR$/anwendung/src/pages/semesteroverview.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/anwendung/src/pages/semesteroverviewLecturer.js" beforeDir="false" afterPath="$PROJECT_DIR$/anwendung/src/pages/semesteroverviewLecturer.js" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -154,6 +157,10 @@
<workItem from="1687349584578" duration="477000" /> <workItem from="1687349584578" duration="477000" />
<workItem from="1687354510081" duration="453000" /> <workItem from="1687354510081" duration="453000" />
<workItem from="1687354999964" duration="291000" /> <workItem from="1687354999964" duration="291000" />
<workItem from="1687431213516" duration="596000" />
<workItem from="1688661149524" duration="602000" />
<workItem from="1688661766941" duration="1680000" />
<workItem from="1688812359996" duration="6843000" />
</task> </task>
<servers /> <servers />
</component> </component>
+23 -23
View File
@@ -14,9 +14,9 @@ export default function BasicDateCalendar(p) {
const ref = useRef(null) const ref = useRef(null)
function getBackMonthColor(monthIndex) function getBackMonthColor(monthIndex) //Farbliche Kennzeichnung des Monats in dem man aktuell Plant
{ {
let date = new Date(parseInt(startParts[2]), parseInt(startParts[1]) + monthIndex - 1, 1) let date = new Date(parseInt(startParts[2]), parseInt(startParts[1]) + monthIndex - 1, 1) //Datums Objekt des Monats in dem man sich aktuell befindet
if (date.getFullYear() === p.highlightYear && date.getMonth() === p.highlightMonth) if (date.getFullYear() === p.highlightYear && date.getMonth() === p.highlightMonth)
{ {
if(lastMonth !== p.highlightMonth) if(lastMonth !== p.highlightMonth)
@@ -35,8 +35,8 @@ export default function BasicDateCalendar(p) {
result = [] result = []
calculatedDay = [] calculatedDay = []
startDate = new Date(p.startyear, 0 ,p.startday) startDate = new Date(p.startyear, 0 ,p.startday) //Startdatum des Theoriesemesters
let endDate = new Date(p.endyear, 0 , p.endday) let endDate = new Date(p.endyear, 0 , p.endday) //Enddatum des Theoriesemesters
let startString = startDate.getDate() + "." + (startDate.getMonth() + 1) + "." + p.startyear let startString = startDate.getDate() + "." + (startDate.getMonth() + 1) + "." + p.startyear
let endString = endDate.getDate() + "." + (endDate.getMonth() + 1) + "." + p.endyear let endString = endDate.getDate() + "." + (endDate.getMonth() + 1) + "." + p.endyear
generateCalendar(startString, endString) generateCalendar(startString, endString)
@@ -45,10 +45,10 @@ export default function BasicDateCalendar(p) {
return ( return (
<div className={"Allround"} ref={ref}> <div className={"Allround"} ref={ref}>
<div className={"Down"}> <div className={"Down"}>
{result.map((monthResult, index) => ( {result.map((monthResult, index) => ( //map durch alle Monate aus dem Array monthResult
<div className={"A box-shadow"} onClick={() => p.onMonthClick( <div className={"A box-shadow"} onClick={() => p.onMonthClick(
(parseInt(startParts[1]) + index), (parseInt(startParts[1]) + index),
startParts startParts //gibt zurück auf welchen Monat geklickt wurde, wodurch direkt in den jeweiligen Monat gewechselt werden kann
)} > )} >
<p style={{ <p style={{
textAlign : "center", textAlign : "center",
@@ -63,7 +63,7 @@ export default function BasicDateCalendar(p) {
pointerEvents: "none" pointerEvents: "none"
}}> }}>
{weekdays.map((weekday) => ( {weekdays.map((weekday) => (
<p key={weekday} style={{ <p key={weekday} style={{ //generiere einmal alle Wochentage (Montag,...,Sonntag)
pointerEvents: "none" pointerEvents: "none"
}}>{weekday}</p> }}>{weekday}</p>
))} ))}
@@ -82,8 +82,7 @@ export default function BasicDateCalendar(p) {
} }
function getMonthName(monthIndex) { //holt die relevanten Monatsnamen aus dem 2D Array
function getMonthName(monthIndex) {
if (startParts[1] - 1 + monthIndex < 12) { if (startParts[1] - 1 + monthIndex < 12) {
return months[startParts[1] - 1 + monthIndex][0]; return months[startParts[1] - 1 + monthIndex][0];
} else { } else {
@@ -94,31 +93,31 @@ function getMonthName(monthIndex) {
function generateCalendar(start, ende) function generateCalendar(start, ende)
{ {
splitter(start, ende) splitter(start, ende)
if (startParts[2] < endParts[2]) if (startParts[2] < endParts[2]) //Abfrage für den Fall, dass ein Theoriesemester Jahresübergreifend ist
{ {
for (let i = startParts[1] - 1; i <= 11; i++) for (let i = startParts[1] - 1; i <= 11; i++) //Durchlaufe alle Monate bis zum Jahresende
{ {
let monthResult = []; let monthResult = [];
for (let j = 1; j <= days[i]; j++) for (let j = 1; j <= days[i]; j++) //durchlaufe alle Tage des Monats in dem wir uns befinden
{ {
if ( if (
new Date(startParts[2], i, j) >= new Date(startParts[2], startParts[1] - 1, startParts[0]) && new Date(startParts[2], i, j) >= new Date(startParts[2], startParts[1] - 1, startParts[0]) &&
new Date(startParts[2], i, j) <= new Date(startParts[2], 11, 31) new Date(startParts[2], i, j) <= new Date(startParts[2], 11, 31)
) ) //überprüft ob der Tag noch in der angegebenen Zeitspanne des Theoriesemsters liegt
{ {
monthResult.push(j); monthResult.push(j);
calculateDay(startParts[2], i, j) calculateDay(startParts[2], i, j)
} }
} }
result.push(monthResult); result.push(monthResult);
if (i == 11) if (i == 11) //erstes Jahr ist fertig abgebildet
{ {
for (let h = 0; h <= endParts[1] - 1; h++) for (let h = 0; h <= endParts[1] - 1; h++) //laufe vom Anfang des Jahres bis zum angegebenen Ende des Theoriesemesters
{ {
let monthResultNewYear = []; let monthResultNewYear = [];
for (let g = 1; g <= days[h]; g++) for (let g = 1; g <= days[h]; g++) //durchlaufe alle Tage des Monats in dem wir uns befinden
{ {
if (new Date(endParts[2], h, g) <= new Date(endParts[2], endParts[1] - 1, endParts[0])) if (new Date(endParts[2], h, g) <= new Date(endParts[2], endParts[1] - 1, endParts[0])) //überprüft ob der Tag noch in der angegebenen Zeitspanne des Theoriesemsters liegt
{ {
monthResultNewYear.push(g); monthResultNewYear.push(g);
calculateDay(endParts[2], h, g) calculateDay(endParts[2], h, g)
@@ -128,17 +127,17 @@ function generateCalendar(start, ende)
} }
} }
} }
} else } else //Normalfall das ein Anfang und Ende eines Theoriesemester im gleichen Jahr liegt
{ {
for (let i = startParts[1] - 1; i <= endParts[1] - 1; i++) for (let i = startParts[1] - 1; i <= endParts[1] - 1; i++) //durchlaufe alle Monate in der angegebenen Zeitspanne
{ {
let monthResult = []; let monthResult = [];
for (let j = 1; j <= days[i]; j++) for (let j = 1; j <= days[i]; j++) //durchlaufe alle Tage des Monats in dem wir uns befinden
{ {
if ( if (
new Date(startParts[2], i, j) >= new Date(startParts[2], startParts[1] - 1, startParts[0]) && new Date(startParts[2], i, j) >= new Date(startParts[2], startParts[1] - 1, startParts[0]) &&
new Date(startParts[2], i, j) <= new Date(startParts[2], endParts[1] - 1, endParts[0]) new Date(startParts[2], i, j) <= new Date(startParts[2], endParts[1] - 1, endParts[0])
) ) //überprüft ob der Tag noch in der angegebenen Zeitspanne des Theoriesemsters liegt
{ {
monthResult.push(j) monthResult.push(j)
calculateDay(startParts[2], i, j) calculateDay(startParts[2], i, j)
@@ -149,7 +148,8 @@ function generateCalendar(start, ende)
} }
} }
function calculateDay(x, i, j){ function calculateDay(x, i, j)//berechnet den Wochentag eines Datums (Montag,...,Sonntag)
{
if (j == startDate.getDate() && i == startDate.getMonth() || j == 1){ if (j == startDate.getDate() && i == startDate.getMonth() || j == 1){
let monthStart = new Date(x, i, j) let monthStart = new Date(x, i, j)
if (monthStart.getDay() == 0) if (monthStart.getDay() == 0)
@@ -158,7 +158,7 @@ function calculateDay(x, i, j){
} }
} }
function freeSpaces(index) function freeSpaces(index)//generiert Leerzeichen damit Tage genau unter ihrem jeweiligen Wochentag stehen
{ {
let arrayTest = [] let arrayTest = []
for (let i = 0; i < calculatedDay[index]; i++) { for (let i = 0; i < calculatedDay[index]; i++) {
+3 -3
View File
@@ -9,9 +9,9 @@ export default function DateElement(p){
let startDate = new Date(p.year, 0, p.startday); let startDate = new Date(p.year, 0, p.startday);
let endDate = new Date(p.year, 0, p.startday + 5); let endDate = new Date(p.year, 0, p.startday + 5);
let startDateString = `${startDate.getDate()}.${startDate.getMonth()+1}.${startDate.getFullYear()}`; let startDateString = `${startDate.getDate()}.${startDate.getMonth()+1}.${startDate.getFullYear()}`; //Anfang der Woche in der man sich befindet wird in startDateString geladen
let endDateString = `${endDate.getDate()}.${endDate.getMonth()+1}.${endDate.getFullYear()}`; let endDateString = `${endDate.getDate()}.${endDate.getMonth()+1}.${endDate.getFullYear()}`; //Ende der Woche in der man sich befindet wird in endDateString geladen
return ( return /*Anzeige des Beginns und Endes der Woche in der man sich befindet*/(
<> <>
<div className="dateElement round-border box-shadow"> <div className="dateElement round-border box-shadow">
<p>{startDateString} - {endDateString}</p> <p>{startDateString} - {endDateString}</p>
+1 -1
View File
@@ -7,7 +7,7 @@ import { arrowRight } from "./Icons"
export default function WeekSelector(p){ export default function WeekSelector(p){
return ( return /*Aufruf des DateElements mit aktuellem Starttag im Jahr und dem Jahr, sowie Buttons zum hin und her Wechsel der Wochen*/(
<> <>
<div className="weekSelector"> <div className="weekSelector">
<Button icon={arrowLeft} onClick={() => p.onFunctionLeft()} width={50} color={"#346991"}/> <Button icon={arrowLeft} onClick={() => p.onFunctionLeft()} width={50} color={"#346991"}/>
+31 -19
View File
@@ -22,6 +22,7 @@ export default function SemesterOverview(p) {
let allModules let allModules
let allEntries let allEntries
//Datenanfrage an das Backend für alle existierenden Semester
await fetch(urlTest).then(response => response.json()).then(s => { await fetch(urlTest).then(response => response.json()).then(s => {
allSemesters = s allSemesters = s
if (set) { if (set) {
@@ -30,17 +31,21 @@ export default function SemesterOverview(p) {
}).then(() => { }).then(() => {
if(!set) if(!set)
{ {
//Datenanfrage an das Backend um alle Module zu erhalten
fetch(baseURL + "/module/all?sessionid=" + localStorage.getItem("sessionid")).then(r => r.json()).then(mod => { fetch(baseURL + "/module/all?sessionid=" + localStorage.getItem("sessionid")).then(r => r.json()).then(mod => {
allModules = mod allModules = mod
}).then(() => { }).then(() => {
//Datenanfrage an das Backend um alle gesetzten Entries zu erhalten
fetch(baseURL + "/entries/all?sessionid=" + localStorage.getItem("sessionid")).then(r => r.json()).then(en => { fetch(baseURL + "/entries/all?sessionid=" + localStorage.getItem("sessionid")).then(r => r.json()).then(en => {
allEntries = en allEntries = en
}).then(() => { }).then(() => {
let modulesCountInSemester = [] let modulesCountInSemester = []
for (let i = 0; i < allSemesters.length; i++) { for (let i = 0; i < allSemesters.length; i++) //durchlaufe die Anzahl der Semester welche von dem Backend zurück gegeben wurden
{
let count = 0 let count = 0
for (let j = 0; j < allModules.length; j++) { for (let j = 0; j < allModules.length; j++) { //durchlaufe die Anzahl der Module welche von dem Backend zurück gegeben wurden
if (allSemesters[i].id === allModules[j].semesterid) { if (allSemesters[i].id === allModules[j].semesterid) //Prüfe ob das Modul zu dem jeweiligen Semester gehört und erhöhe count
{
count++; count++;
} }
} }
@@ -48,20 +53,25 @@ export default function SemesterOverview(p) {
} }
let temp = [] let temp = []
for (let s = 0; s < allSemesters.length; s++) { for (let s = 0; s < allSemesters.length; s++) //durchlaufe die Anzahl der Semester welche von dem Backend zurück gegeben wurden
{
let count = 0; let count = 0;
for (let i = 0; i < allModules.length; i++) { for (let i = 0; i < allModules.length; i++) //durchlaufe die Anzahl der Module welche von dem Backend zurück gegeben wurden
if (allModules[i].semesterid === allSemesters[s].id) { {
if (allModules[i].semesterid === allSemesters[s].id) //Prüfe ob das Modul zu dem jeweiligen Semester gehört
{
let sum = 0 let sum = 0
let ent = allEntries.filter(e => e.moduleid === allModules[i].id) let ent = allEntries.filter(e => e.moduleid === allModules[i].id) //lade alle Entries die zu dem Modul gehören in dem wir uns befinden in die Variable
for (let j = 0; j < ent.length; j++) { for (let j = 0; j < ent.length; j++) //durchlaufe die Anzahl der Entries aus ent
sum += ent[j].timeend - ent[j].timestart {
sum += ent[j].timeend - ent[j].timestart //summiere die Dauer aller Entries in dem Semester
} }
sum /= 3 sum /= 3
if (sum >= 20 && allModules[i].activated === 0) { if (sum >= 20 && allModules[i].activated === 0) //Überprüfung ob alle 20 Schulstunden eines Moduls gesetzt worden sind und der Vorlesungsplan des Moduls abgegeben worden ist
{
count++; count++;
} }
} }
@@ -75,7 +85,7 @@ export default function SemesterOverview(p) {
temp.push(100) temp.push(100)
} }
setProgresses(temp) setProgresses(temp) //setze die Fortschrittsleiste entsprechend der Einträge im Semester
} }
@@ -89,7 +99,7 @@ export default function SemesterOverview(p) {
function onClickSemester(e, m) { function onClickSemester(e, m) {
if (m.target === m.currentTarget) { if (m.target === m.currentTarget) {
localStorage.setItem("currentsid", e.id) localStorage.setItem("currentsid", e.id)
router.push("/planning") router.push("/planning") //leite weiter auf die Planungsseite
localStorage.setItem("semestername", e.name + " Sem. " + (e.number + 1)) localStorage.setItem("semestername", e.name + " Sem. " + (e.number + 1))
} }
@@ -97,7 +107,7 @@ export default function SemesterOverview(p) {
function onClickNewSemester() { function onClickNewSemester() {
localStorage.setItem("currentsid", 0); localStorage.setItem("currentsid", 0);
router.push("/createSemester"); router.push("/createSemester"); //leite weiter auf die Seite für das Inputform zur Erstellung eines neuen Semesters
} }
@@ -115,9 +125,9 @@ export default function SemesterOverview(p) {
async function funcButtonDelete() { async function funcButtonDelete() {
let id = localStorage.getItem("currentsid"); let id = localStorage.getItem("currentsid");
let url = baseURL + "/semester?sessionid=" + localStorage.getItem("sessionid") + "&id=" + id; let url = baseURL + "/semester?sessionid=" + localStorage.getItem("sessionid") + "&id=" + id; //Anfrage an das Backend auf spezifisches Semesters auf das geklickt worden ist
await fetch(url, { await fetch(url, {
method: "DELETE" method: "DELETE" //lösche das spezifisch angeklickte Semester
}); });
togglePopup(); togglePopup();
@@ -129,6 +139,7 @@ export default function SemesterOverview(p) {
localStorage.setItem("currentsid", e.id); localStorage.setItem("currentsid", e.id);
let semester = e; let semester = e;
//setze die Einträge des Semesters auf die aktuell gespeicherten Einträge
let startYear = semester.startyear; let startYear = semester.startyear;
let endYear = semester.endyear; let endYear = semester.endyear;
let startDay = semester.startday; let startDay = semester.startday;
@@ -137,6 +148,7 @@ export default function SemesterOverview(p) {
let startDate = new Date(startYear, 0, startDay + 1); let startDate = new Date(startYear, 0, startDay + 1);
let endDate = new Date(endYear, 0, endDay + 1); let endDate = new Date(endYear, 0, endDay + 1);
//speichere die abgeänderten Daten des Semesters
await router.push({ await router.push({
pathname: "/createSemester", pathname: "/createSemester",
query: { query: {
@@ -170,16 +182,16 @@ export default function SemesterOverview(p) {
{ {
entries.map((e, index) => ( entries.map((e, index) => (
<div className={"semester-tile box-shadow"} onClick={(f) => onClickSemester(e, f)}> <div className={"semester-tile box-shadow"} onClick={(f) => onClickSemester(e, f)}>
<SemesterTile text={e.name + " Sem. " + (e.number + 1)} onClick={(f) => onClickSemester(e, f)} <SemesterTile text={e.name + " Sem. " + (e.number + 1)} onClick={(f) => onClickSemester(e, f) /*Darstellung der Semester mit ihren Namen und der Semesternummer in welcher der Kurs sich befindet*/}
onButtonDeleteClick={() => { onButtonDeleteClick={() => {
localStorage.setItem("currentsid", e.id) localStorage.setItem("currentsid", e.id)
setModalHint(e.name + " Löschen?"); setModalHint(e.name + " Löschen?");
togglePopup(); togglePopup();
}} onButtonEditClick={(m) => { }} onButtonEditClick={(m) => {
localStorage.setItem("currentsid", e.id) localStorage.setItem("currentsid", e.id)
funcButtonEdit(e, m); funcButtonEdit(e, m) /*Aufruf der Editierfunktion für das Angeklickte Semester*/;
}}/> }}/>
<StatusBar progress={progresses[index]}/> <StatusBar progress={progresses[index] /*Fortschrittsleiste wird gesetzt*/}/>
<div style={ <div style={
{ {
display: "flex", display: "flex",
@@ -202,7 +214,7 @@ export default function SemesterOverview(p) {
</div>)) </div>))
} }
<Button color={"#dcdcdc"} text={"+"} width={240} height={160} fontColor={"black"} fontSize={50} <Button color={"#dcdcdc"} text={"+"} width={240} height={160} fontColor={"black"} fontSize={50}
onClick={() => onClickNewSemester()}/> onClick={() => onClickNewSemester() /*Zuweisung der Funktion für den Button zu Erstellung eines neuen Semesters*/}/>
<PopUp hint={modalHint} text1={"Abbrechen"} text2={"Löschen"} displayState={modalDisplay} <PopUp hint={modalHint} text1={"Abbrechen"} text2={"Löschen"} displayState={modalDisplay}
function1={funcButtonAbort} function2={funcButtonDelete}/> function1={funcButtonAbort} function2={funcButtonDelete}/>
</div> </div>
+17 -11
View File
@@ -14,41 +14,48 @@ export default function SemesteroverviewLecturer(p) {
function getModules() { function getModules() {
let urlTest = baseURL + "/module/id?sessionid=" + localStorage.getItem("sessionid"); let urlTest = baseURL + "/module/id?sessionid=" + localStorage.getItem("sessionid");
//Datenanfrage an das Backend für alle Module welche dem User zugewiesen worden sind
fetch(urlTest).then(response => response.json()).then(m => { fetch(urlTest).then(response => response.json()).then(m => {
setEntries(m); setEntries(m);
let args = ""; let args = "";
for (let i = 0; i < m.length; i++) { for (let i = 0; i < m.length; i++) //durchlaufe die Anzahl der Module
args += m[i].semesterid; {
args += m[i].semesterid; //füge dem String "args" die Einträge hinzu
if (i < m.length - 1) { if (i < m.length - 1) {
args += "a"; args += "a"; //trenne die Einträge durch ein "a" voneinander ab
} }
} }
let temp = [] let temp = []
let semesterURL = baseURL + "/semester/id/all?ids=" + args + "&sessionid=" + localStorage.getItem("sessionid"); let semesterURL = baseURL + "/semester/id/all?ids=" + args + "&sessionid=" + localStorage.getItem("sessionid");
//Datenanfrage an das Backend für alle Semester welche dem User für die Planung zugewiesen sind
fetch(semesterURL).then(r => r.json()).then(sem => { fetch(semesterURL).then(r => r.json()).then(sem => {
sem.map(e => { sem.map(e => {
temp.push(e.name + " Sem. " + (e.number + 1)) temp.push(e.name + " Sem. " + (e.number + 1)) //lade das Semester in welchem der Kurs sich befindet in das Array "temp"
}) })
}).then(() => setSemesterNames(temp)).then(() => { }).then(() => setSemesterNames(temp)).then(() => {
let entriesURL = baseURL + "/entries/all?sessionid=" + localStorage.getItem("sessionid") let entriesURL = baseURL + "/entries/all?sessionid=" + localStorage.getItem("sessionid")
//Datenanfrage an das Backend aller Entries eines Moduls eines Semesters (automatisch nur die Entries die durch den User erstellt worden sind)
fetch(entriesURL).then(r => r.json()).then(en => { fetch(entriesURL).then(r => r.json()).then(en => {
let tempTimeStamps = [] let tempTimeStamps = []
for(let j = 0; j < m.length; j++) for(let j = 0; j < m.length; j++) //durchlaufe die Anzahl an Modulen die von dem Backend zurückgegeben worden sind
{ {
let sum = 0 let sum = 0
let currentModule = m[j] let currentModule = m[j]
for (let i = 0; i < en.length; i++) for (let i = 0; i < en.length; i++) //durchlaufe die Anzahl der Entries die von dem Backend zurückgegeben worden sind
{ {
if(currentModule.id === en[i].moduleid) if(currentModule.id === en[i].moduleid)
{ {
sum += en[i].timeend - en[i].timestart sum += en[i].timeend - en[i].timestart //summiere die Dauer all dieser Entries
} }
} }
sum /= 3 sum /= 3
tempTimeStamps.push(sum) tempTimeStamps.push(sum) //lade die Summe aller Entries eines Moduls in das Array "tempTimeStamps"
} }
setTimeStamps(tempTimeStamps) setTimeStamps(tempTimeStamps)
@@ -82,9 +89,8 @@ export default function SemesteroverviewLecturer(p) {
const [semesterNames, setSemesterNames] = useState([]); const [semesterNames, setSemesterNames] = useState([]);
const router = useRouter(); const router = useRouter();
function getProgressForTime(time, activated) function getProgressForTime(time, activated)//überprüfe welchen Status die Fortschrittsanzeige haben muss und gib diesen zurück
{ {
console.log(activated)
if(time === 0) if(time === 0)
{ {
@@ -113,7 +119,7 @@ export default function SemesteroverviewLecturer(p) {
editable={false} text={semesterNames[index]} text2={e.name} editable={false} text={semesterNames[index]} text2={e.name}
onClick={(f) => onClickSemester(e, f, semesterNames[index])} onClick={(f) => onClickSemester(e, f, semesterNames[index])}
/> />
<StatusBar progress={getProgressForTime(timeStamps[index], e.activated)} module={e}/> <StatusBar progress={getProgressForTime(timeStamps[index], e.activated)/*beladenes Array "timeStamps" an der Stelle "index" => relevante Summe der Einträge eines Moduls in einem Semester/Kurs*/} module={e}/>
</div> </div>
))} ))}
</div> </div>
@@ -49,7 +49,7 @@ public class DataBaseHandler {
st.executeUpdate("insert into entries (daynumber, yearnumber, semesterid, usercreatedbyid, timestart, timeend, moduleid, info) values (" + st.executeUpdate("insert into entries (daynumber, yearnumber, semesterid, usercreatedbyid, timestart, timeend, moduleid, info) values (" +
entry.getDaynumber() + ", " + entry.getYearnumber() + ", " + entry.getSemesterid() + ", " + entry.getDaynumber() + ", " + entry.getYearnumber() + ", " + entry.getSemesterid() + ", " +
entry.getUsercreatedbyid() + ", " + entry.getTimestart() + ", " + entry.getTimeend() + ", " + entry.getModuleid() + " ,'" + entry.getInfo() + "')" entry.getUsercreatedbyid() + ", " + entry.getTimestart() + ", " + entry.getTimeend() + ", " + entry.getModuleid() + " ,'" + entry.getInfo() + "')"
); ); //Datenbank Eintrag eines neu erstellten Entry mit allen nötigen Informationen
} }
catch(Exception e) catch(Exception e)
{ {
@@ -68,28 +68,31 @@ public class DataBaseHandler {
Entry current = null; Entry current = null;
while ((current = resultSetToEntry(rs)) != null) { while ((current = resultSetToEntry(rs)) != null) {
entryList.add(current); entryList.add(current);
} } //Datenbankanfrage für alle Entries bei denen die Semesterid, das Jahr und der Tag mit den übergebenen Paramtern übereinstimmt
Entry[][] entries = new Entry[6][20]; Entry[][] entries = new Entry[6][20];
for (int i = 0; i < 6; i++) { for (int i = 0; i < 6; i++) //durchlaufe die Anzahl der Tage einer Vorlesungswoche (Montag,...,Samstag)
{
int f = 0; int f = 0;
for (int j = 0; j < entryList.size(); j++) { for (int j = 0; j < entryList.size(); j++)
{
if (entryList.get(j).getDaynumber() == i + daynumber) { if (entryList.get(j).getDaynumber() == i + daynumber) {
entries[i][f] = entryList.get(j); entries[i][f] = entryList.get(j); //belade das Array "entries" mit dem entries einer woche
f++; f++;
} }
} }
} }
return entries; return entries; //gib das Array "entries" zurück
} catch (Exception e) { } catch (Exception e) {
return null; return null;
} }
} }
public Entry[][] getAllEntrys(int semesterid, int daynumber, int yearnumber, int userid) { public Entry[][] getAllEntrys(int semesterid, int daynumber, int yearnumber, int userid) //Datenbankanfrage für alle Entries eines Users in einem Semester
{
try { try {
ResultSet rs = st.executeQuery("select * from entries where " + ResultSet rs = st.executeQuery("select * from entries where " +
"semesterid<>" + semesterid + "semesterid<>" + semesterid +
@@ -119,7 +122,7 @@ public class DataBaseHandler {
} }
public Entry[] getAllEntries() public Entry[] getAllEntries() //Datenbankanfrage für alle Entries
{ {
try { try {
ResultSet rs = st.executeQuery("select * from entries"); ResultSet rs = st.executeQuery("select * from entries");
@@ -137,7 +140,7 @@ public class DataBaseHandler {
} }
} }
public Entry[] getAllEntriesModule(int moduleid) public Entry[] getAllEntriesModule(int moduleid) //Datenbankanfrage für alle Entries eines spezifischen Moduls
{ {
try { try {
ResultSet rs = st.executeQuery("select * from entries where moduleid=" + moduleid); ResultSet rs = st.executeQuery("select * from entries where moduleid=" + moduleid);
@@ -156,7 +159,8 @@ public class DataBaseHandler {
} }
} }
public void deleteEntry(int id) { public void deleteEntry(int id) //Löschung eines spezifischen entries
{
try { try {
st.executeUpdate("delete from entries where id=" + id); st.executeUpdate("delete from entries where id=" + id);
} catch (Exception e) { } catch (Exception e) {
@@ -164,7 +168,8 @@ public class DataBaseHandler {
} }
} }
public void updateEntry(Entry entry) { public void updateEntry(Entry entry) //Aktualisiere Einträge eines Entry falls es verändert wurde
{
try { try {
st.executeUpdate("update entries set timeend=" + entry.getTimeend() + ", timestart=" + entry.getTimestart() + " where id=" + entry.getId()); st.executeUpdate("update entries set timeend=" + entry.getTimeend() + ", timestart=" + entry.getTimestart() + " where id=" + entry.getId());
} catch (Exception e) { } catch (Exception e) {
@@ -209,7 +214,8 @@ public class DataBaseHandler {
} }
} }
public Semester getSemester(int id) { public Semester getSemester(int id)
{
try { try {
ResultSet rs = st.executeQuery("select * from semester where id=" + id); ResultSet rs = st.executeQuery("select * from semester where id=" + id);
return resultSetToSemester(rs); return resultSetToSemester(rs);
@@ -244,7 +250,8 @@ public class DataBaseHandler {
} }
} }
public Semester updateSemester(Semester semester) { public Semester updateSemester(Semester semester) //Aktualisiere die Einträge eines Semesters bei Veränderungen durch editier Funktion
{
try { try {
st.executeUpdate("update semester set startday=" + semester.getStartday() + ", " + st.executeUpdate("update semester set startday=" + semester.getStartday() + ", " +
"endday=" + semester.getEndday() + ", " + "endday=" + semester.getEndday() + ", " +