diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 023a3e6..ce934be 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -6,8 +6,11 @@ - - + + + + + diff --git a/anwendung/src/components/CalendarSideBar.jsx b/anwendung/src/components/CalendarSideBar.jsx index 9f2a180..f2b5388 100644 --- a/anwendung/src/components/CalendarSideBar.jsx +++ b/anwendung/src/components/CalendarSideBar.jsx @@ -14,9 +14,9 @@ export default function BasicDateCalendar(p) { 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(lastMonth !== p.highlightMonth) @@ -35,8 +35,8 @@ export default function BasicDateCalendar(p) { result = [] calculatedDay = [] - startDate = new Date(p.startyear, 0 ,p.startday) - let endDate = new Date(p.endyear, 0 , p.endday) + startDate = new Date(p.startyear, 0 ,p.startday) //Startdatum des Theoriesemesters + let endDate = new Date(p.endyear, 0 , p.endday) //Enddatum des Theoriesemesters let startString = startDate.getDate() + "." + (startDate.getMonth() + 1) + "." + p.startyear let endString = endDate.getDate() + "." + (endDate.getMonth() + 1) + "." + p.endyear generateCalendar(startString, endString) @@ -45,10 +45,10 @@ export default function BasicDateCalendar(p) { return (
- {result.map((monthResult, index) => ( + {result.map((monthResult, index) => ( //map durch alle Monate aus dem Array monthResult
p.onMonthClick( (parseInt(startParts[1]) + index), - startParts + startParts //gibt zurück auf welchen Monat geklickt wurde, wodurch direkt in den jeweiligen Monat gewechselt werden kann )} >

{weekdays.map((weekday) => ( -

{weekday}

))} @@ -82,8 +82,7 @@ export default function BasicDateCalendar(p) { } - -function getMonthName(monthIndex) { +function getMonthName(monthIndex) { //holt die relevanten Monatsnamen aus dem 2D Array if (startParts[1] - 1 + monthIndex < 12) { return months[startParts[1] - 1 + monthIndex][0]; } else { @@ -94,31 +93,31 @@ function getMonthName(monthIndex) { function generateCalendar(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 = []; - 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 ( 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) - ) + ) //überprüft ob der Tag noch in der angegebenen Zeitspanne des Theoriesemsters liegt { monthResult.push(j); calculateDay(startParts[2], i, j) } } 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 = []; - 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); 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 = []; - 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 ( 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]) - ) + ) //überprüft ob der Tag noch in der angegebenen Zeitspanne des Theoriesemsters liegt { monthResult.push(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){ let monthStart = new Date(x, i, j) 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 = [] for (let i = 0; i < calculatedDay[index]; i++) { diff --git a/anwendung/src/components/DateElement.jsx b/anwendung/src/components/DateElement.jsx index 8e1a47a..9ad31ae 100644 --- a/anwendung/src/components/DateElement.jsx +++ b/anwendung/src/components/DateElement.jsx @@ -9,9 +9,9 @@ export default function DateElement(p){ let startDate = new Date(p.year, 0, p.startday); let endDate = new Date(p.year, 0, p.startday + 5); - let startDateString = `${startDate.getDate()}.${startDate.getMonth()+1}.${startDate.getFullYear()}`; - let endDateString = `${endDate.getDate()}.${endDate.getMonth()+1}.${endDate.getFullYear()}`; - return ( + 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()}`; //Ende der Woche in der man sich befindet wird in endDateString geladen + return /*Anzeige des Beginns und Endes der Woche in der man sich befindet*/( <>

{startDateString} - {endDateString}

diff --git a/anwendung/src/components/WeekSelector.jsx b/anwendung/src/components/WeekSelector.jsx index 18f6e17..0b46ad2 100644 --- a/anwendung/src/components/WeekSelector.jsx +++ b/anwendung/src/components/WeekSelector.jsx @@ -7,7 +7,7 @@ import { arrowRight } from "./Icons" 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*/( <>
diff --git a/anwendung/src/pages/semesteroverviewLecturer.js b/anwendung/src/pages/semesteroverviewLecturer.js index 07677a0..f6a0cd7 100644 --- a/anwendung/src/pages/semesteroverviewLecturer.js +++ b/anwendung/src/pages/semesteroverviewLecturer.js @@ -14,41 +14,48 @@ export default function SemesteroverviewLecturer(p) { function getModules() { 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 => { setEntries(m); let args = ""; - for (let i = 0; i < m.length; i++) { - args += m[i].semesterid; + for (let i = 0; i < m.length; i++) //durchlaufe die Anzahl der Module + { + args += m[i].semesterid; //füge dem String "args" die Einträge hinzu if (i < m.length - 1) { - args += "a"; + args += "a"; //trenne die Einträge durch ein "a" voneinander ab } } let temp = [] + 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 => { 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(() => { 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 => { 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 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) { - sum += en[i].timeend - en[i].timestart + sum += en[i].timeend - en[i].timestart //summiere die Dauer all dieser Entries } } sum /= 3 - tempTimeStamps.push(sum) + tempTimeStamps.push(sum) //lade die Summe aller Entries eines Moduls in das Array "tempTimeStamps" } setTimeStamps(tempTimeStamps) @@ -82,9 +89,8 @@ export default function SemesteroverviewLecturer(p) { const [semesterNames, setSemesterNames] = useState([]); 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) { @@ -113,7 +119,7 @@ export default function SemesteroverviewLecturer(p) { editable={false} text={semesterNames[index]} text2={e.name} onClick={(f) => onClickSemester(e, f, semesterNames[index])} /> - + relevante Summe der Einträge eines Moduls in einem Semester/Kurs*/} module={e}/>
))}
diff --git a/backend/src/main/java/com/example/backend/anwprj/Database/DataBaseHandler.java b/backend/src/main/java/com/example/backend/anwprj/Database/DataBaseHandler.java index 67a4b01..4f780a2 100644 --- a/backend/src/main/java/com/example/backend/anwprj/Database/DataBaseHandler.java +++ b/backend/src/main/java/com/example/backend/anwprj/Database/DataBaseHandler.java @@ -49,7 +49,7 @@ public class DataBaseHandler { st.executeUpdate("insert into entries (daynumber, yearnumber, semesterid, usercreatedbyid, timestart, timeend, moduleid, info) values (" + entry.getDaynumber() + ", " + entry.getYearnumber() + ", " + entry.getSemesterid() + ", " + entry.getUsercreatedbyid() + ", " + entry.getTimestart() + ", " + entry.getTimeend() + ", " + entry.getModuleid() + " ,'" + entry.getInfo() + "')" - ); + ); //Datenbank Eintrag eines neu erstellten Entry mit allen nötigen Informationen } catch(Exception e) { @@ -68,28 +68,31 @@ public class DataBaseHandler { Entry current = null; while ((current = resultSetToEntry(rs)) != null) { 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]; - 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; - for (int j = 0; j < entryList.size(); j++) { + for (int j = 0; j < entryList.size(); j++) + { 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++; } } } - return entries; + return entries; //gib das Array "entries" zurück } catch (Exception e) { 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 { ResultSet rs = st.executeQuery("select * from entries where " + "semesterid<>" + semesterid + @@ -119,7 +122,7 @@ public class DataBaseHandler { } - public Entry[] getAllEntries() + public Entry[] getAllEntries() //Datenbankanfrage für alle Entries { try { 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 { 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 { st.executeUpdate("delete from entries where id=" + id); } 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 { st.executeUpdate("update entries set timeend=" + entry.getTimeend() + ", timestart=" + entry.getTimestart() + " where id=" + entry.getId()); } catch (Exception e) { @@ -209,7 +214,8 @@ public class DataBaseHandler { } } - public Semester getSemester(int id) { + public Semester getSemester(int id) + { try { ResultSet rs = st.executeQuery("select * from semester where id=" + id); 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 { st.executeUpdate("update semester set startday=" + semester.getStartday() + ", " + "endday=" + semester.getEndday() + ", " +