Comments
Alle, von mir zu bearbeitenden, komplizierten und relevanten Codeteile wurden ausführlich beschrieben
This commit is contained in:
@@ -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 (
|
||||
<div className={"Allround"} ref={ref}>
|
||||
<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(
|
||||
(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={{
|
||||
textAlign : "center",
|
||||
@@ -63,7 +63,7 @@ export default function BasicDateCalendar(p) {
|
||||
pointerEvents: "none"
|
||||
}}>
|
||||
{weekdays.map((weekday) => (
|
||||
<p key={weekday} style={{
|
||||
<p key={weekday} style={{ //generiere einmal alle Wochentage (Montag,...,Sonntag)
|
||||
pointerEvents: "none"
|
||||
}}>{weekday}</p>
|
||||
))}
|
||||
@@ -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++) {
|
||||
|
||||
@@ -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*/(
|
||||
<>
|
||||
<div className="dateElement round-border box-shadow">
|
||||
<p>{startDateString} - {endDateString}</p>
|
||||
|
||||
@@ -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*/(
|
||||
<>
|
||||
<div className="weekSelector">
|
||||
<Button icon={arrowLeft} onClick={() => p.onFunctionLeft()} width={50} color={"#346991"}/>
|
||||
|
||||
@@ -22,6 +22,7 @@ export default function SemesterOverview(p) {
|
||||
let allModules
|
||||
let allEntries
|
||||
|
||||
//Datenanfrage an das Backend für alle existierenden Semester
|
||||
await fetch(urlTest).then(response => response.json()).then(s => {
|
||||
allSemesters = s
|
||||
if (set) {
|
||||
@@ -30,17 +31,21 @@ export default function SemesterOverview(p) {
|
||||
}).then(() => {
|
||||
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 => {
|
||||
allModules = mod
|
||||
}).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 => {
|
||||
allEntries = en
|
||||
}).then(() => {
|
||||
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
|
||||
for (let j = 0; j < allModules.length; j++) {
|
||||
if (allSemesters[i].id === allModules[j].semesterid) {
|
||||
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) //Prüfe ob das Modul zu dem jeweiligen Semester gehört und erhöhe count
|
||||
{
|
||||
count++;
|
||||
}
|
||||
}
|
||||
@@ -48,20 +53,25 @@ export default function SemesterOverview(p) {
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
for (let i = 0; i < allModules.length; i++) {
|
||||
if (allModules[i].semesterid === allSemesters[s].id) {
|
||||
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) //Prüfe ob das Modul zu dem jeweiligen Semester gehört
|
||||
{
|
||||
let sum = 0
|
||||
let ent = allEntries.filter(e => e.moduleid === allModules[i].id)
|
||||
for (let j = 0; j < ent.length; j++) {
|
||||
sum += ent[j].timeend - ent[j].timestart
|
||||
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++) //durchlaufe die Anzahl der Entries aus ent
|
||||
{
|
||||
sum += ent[j].timeend - ent[j].timestart //summiere die Dauer aller Entries in dem Semester
|
||||
}
|
||||
|
||||
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++;
|
||||
}
|
||||
}
|
||||
@@ -75,7 +85,7 @@ export default function SemesterOverview(p) {
|
||||
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) {
|
||||
if (m.target === m.currentTarget) {
|
||||
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))
|
||||
}
|
||||
|
||||
@@ -97,7 +107,7 @@ export default function SemesterOverview(p) {
|
||||
|
||||
function onClickNewSemester() {
|
||||
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() {
|
||||
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, {
|
||||
method: "DELETE"
|
||||
method: "DELETE" //lösche das spezifisch angeklickte Semester
|
||||
});
|
||||
|
||||
togglePopup();
|
||||
@@ -129,6 +139,7 @@ export default function SemesterOverview(p) {
|
||||
localStorage.setItem("currentsid", e.id);
|
||||
let semester = e;
|
||||
|
||||
//setze die Einträge des Semesters auf die aktuell gespeicherten Einträge
|
||||
let startYear = semester.startyear;
|
||||
let endYear = semester.endyear;
|
||||
let startDay = semester.startday;
|
||||
@@ -137,6 +148,7 @@ export default function SemesterOverview(p) {
|
||||
let startDate = new Date(startYear, 0, startDay + 1);
|
||||
let endDate = new Date(endYear, 0, endDay + 1);
|
||||
|
||||
//speichere die abgeänderten Daten des Semesters
|
||||
await router.push({
|
||||
pathname: "/createSemester",
|
||||
query: {
|
||||
@@ -170,16 +182,16 @@ export default function SemesterOverview(p) {
|
||||
{
|
||||
entries.map((e, index) => (
|
||||
<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={() => {
|
||||
localStorage.setItem("currentsid", e.id)
|
||||
setModalHint(e.name + " Löschen?");
|
||||
togglePopup();
|
||||
}} onButtonEditClick={(m) => {
|
||||
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={
|
||||
{
|
||||
display: "flex",
|
||||
@@ -202,7 +214,7 @@ export default function SemesterOverview(p) {
|
||||
</div>))
|
||||
}
|
||||
<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}
|
||||
function1={funcButtonAbort} function2={funcButtonDelete}/>
|
||||
</div>
|
||||
|
||||
@@ -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])}
|
||||
/>
|
||||
<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>
|
||||
|
||||
Reference in New Issue
Block a user