From 964934690b7439adfebde488df1d6c3fd807a0fe Mon Sep 17 00:00:00 2001 From: brausjonas Date: Thu, 8 Jun 2023 02:29:00 +0200 Subject: [PATCH] Calender Validation Not Shown Explicit Error message Die Fehlermeldung wird bereits in einem Feld gespeichert, jedoch noch nicht abgespeichert PUUUUSH --- anwendung/src/components/CalenderView.jsx | 183 ++++++++++++++++------ anwendung/src/components/ErrorType.js | 7 + 2 files changed, 144 insertions(+), 46 deletions(-) create mode 100644 anwendung/src/components/ErrorType.js diff --git a/anwendung/src/components/CalenderView.jsx b/anwendung/src/components/CalenderView.jsx index 115ba4c..7656c71 100644 --- a/anwendung/src/components/CalenderView.jsx +++ b/anwendung/src/components/CalenderView.jsx @@ -4,6 +4,7 @@ import {list} from "postcss"; import Background from "@/components/Background"; import WeekSelector from "@/components/WeekSelector"; import {baseURL} from "@/components/Constants"; +import {ErrorType} from "@/components/ErrorType"; let cellHeight = 20; @@ -15,6 +16,10 @@ let currentYear; let selectedElement; let grabbedDown; +let isDayOkay = [true, true, true, true, true, true] + +let errorState = ErrorType.Okay + export default function CalenderView(p) { const [entries, setEntries] = useState([[], [], [], [], [], []]) @@ -26,6 +31,71 @@ export default function CalenderView(p) { "&daynumber=" + currentWeekStartDay + "&yearnumber=" + currentYear + "&sessionid=" + localStorage.getItem("sessionid"); try { fetch(url).then(r => r.json()).then(en => { + + + for(let i = 0; i < en.length; i++) + { + isDayOkay[i] = true + let maxLunchBreak = 0 + let daySum = 0 + for(let j = 0; j < en[i].length; j++) + { + if(en[i][j] != null) + { + let elem = en[i][j] + + if((elem.timestart - 1) / 4 < 8) + { + errorState = ErrorType.TooEarly + isDayOkay[i] = false + break + } + else if((elem.timeend - 1) / 4 > 17) + { + errorState = ErrorType.TooLate + isDayOkay[i] = false + break + } + else + { + if((elem.timestart - 1) / 4 <= 11 && (elem.timeend - 1) / 4 >= 14) + { + errorState = ErrorType.NotEnoughLunchTime + isDayOkay[i] = false + break + } + else if((elem.timeend - 1) / 4 >= 11 && (elem.timeend - 1) / 4 <= 14) + { + let min = 24 * 3 + + for(let j2 = 0; j2 < en[i].length; j2++) + { + if(en[i][j2] != null && (en[i][j2].timestart - 1) / 4 >= 11 && (en[i][j2].timestart - 1) / 4 <= 14) { + if (en[i][j2].timestart < min && en[i][j2].timestart >= elem.timeend) { + min = en[i][j2].timestart + } + } + } + + if (min - elem.timeend < 3) + { + errorState = ErrorType.NotEnoughLunchTime + isDayOkay[i] = false + break + } + } + } + + daySum += elem.timeend - elem.timestart + } + } + + if(daySum / 4 > 8) { + errorState = ErrorType.TooLong + isDayOkay[i] = false + } + } + setEntries(en) }) }catch (e) { @@ -94,24 +164,27 @@ export default function CalenderView(p) { if (selectedElement != null) { let id = selectedElement.id; - let url = baseURL + "/entries?sessionid=" + localStorage.getItem("sessionid"); - let json = { - "id": id, - "daynumber": 0, - "yearnumber": 0, - "semesterid": 0, - "usercreatedbyid": 0, - "timestart": selectedElement.timestart, - "timeend": selectedElement.timeend, - "info": "" + if((selectedElement.timestart - 1) / 4 >= 7 && (selectedElement.timeend - 1) / 4 <= 18) + { + let url = baseURL + "/entries?sessionid=" + localStorage.getItem("sessionid"); + let json = { + "id": id, + "daynumber": 0, + "yearnumber": 0, + "semesterid": 0, + "usercreatedbyid": 0, + "timestart": selectedElement.timestart, + "timeend": selectedElement.timeend, + "info": "" + } + fetch(url, { + method: "PUT", + headers: {"Content-Type": "application/json"}, + body: JSON.stringify(json) + }).then(r => { + readEntries() + }) } - fetch(url, { - method: "PUT", - headers: {"Content-Type": "application/json"}, - body: JSON.stringify(json) - }).then(r => { - readEntries() - }) selectedElement = null; } @@ -186,7 +259,10 @@ export default function CalenderView(p) { if (!currentId.includes("e")) { if (!currentId.includes("grab")) { if (!checkForElementAtRow(row + 2, currentColumnID)) { - pushEntry(currentColumnID, row) + if((row - 1) / 4 >= 7 && (row + 2) / 4 <= 18) + { + pushEntry(currentColumnID, row) + } } } else { let parentID = parseInt(e.target.parentElement.id.replace("e", "")); @@ -215,12 +291,20 @@ export default function CalenderView(p) { readEntries() } - function getEntryColor(userCreatedByID) + function getEntryColor(userCreatedByID, columnID) { let id = localStorage.getItem("userid"); if(id == userCreatedByID) { - return "#77932b"; + if(isDayOkay[columnID]) + { + return "#77932b"; + } + else + { + return "#e5a10e"; + } + } else { @@ -228,12 +312,19 @@ export default function CalenderView(p) { } } - function getResizeBarColor(userCreatedByID) + function getResizeBarColor(userCreatedByID, columnID) { let id = localStorage.getItem("userid"); if(id == userCreatedByID) { - return "#5a6c20"; + if(isDayOkay[columnID]) + { + return "#5a6c20"; + } + else + { + return "#c08809"; + } } else{ return "#a2a2a2"; @@ -358,17 +449,17 @@ export default function CalenderView(p) { width: "100%", gridRowStart: d.timestart, gridRowEnd: d.timeend, - backgroundColor: getEntryColor(d.usercreatedbyid) + backgroundColor: getEntryColor(d.usercreatedbyid, 0) }} id={d.id + "e"}>

{internal_to_time(d.timestart) + " - " + internal_to_time(d.timeend)}

{d.info}

))} @@ -384,18 +475,18 @@ export default function CalenderView(p) { width: "100%", gridRowStart: d.timestart, gridRowEnd: d.timeend, - backgroundColor: getEntryColor(d.usercreatedbyid) + backgroundColor: getEntryColor(d.usercreatedbyid, 1) }} id={d.id + "e"}>

{internal_to_time(d.timestart) + " - " + internal_to_time(d.timeend)}

{d.info}

))} @@ -412,18 +503,18 @@ export default function CalenderView(p) { width: "100%", gridRowStart: d.timestart, gridRowEnd: d.timeend, - backgroundColor: getEntryColor(d.usercreatedbyid) + backgroundColor: getEntryColor(d.usercreatedbyid, 2) }} id={d.id + "e"}>

{internal_to_time(d.timestart) + " - " + internal_to_time(d.timeend)}

{d.info}

))} @@ -439,18 +530,18 @@ export default function CalenderView(p) { width: "100%", gridRowStart: d.timestart, gridRowEnd: d.timeend, - backgroundColor: getEntryColor(d.usercreatedbyid) + backgroundColor: getEntryColor(d.usercreatedbyid, 3) }} id={d.id + "e"}>

{internal_to_time(d.timestart) + " - " + internal_to_time(d.timeend)}

{d.info}

))} @@ -467,17 +558,17 @@ export default function CalenderView(p) { width: "100%", gridRowStart: d.timestart, gridRowEnd: d.timeend, - backgroundColor: getEntryColor(d.usercreatedbyid) + backgroundColor: getEntryColor(d.usercreatedbyid, 4) }} id={d.id + "e"}>

{internal_to_time(d.timestart) + " - " + internal_to_time(d.timeend)}

{d.info}

))} @@ -494,17 +585,17 @@ export default function CalenderView(p) { width: "100%", gridRowStart: d.timestart, gridRowEnd: d.timeend, - backgroundColor: getEntryColor(d.usercreatedbyid) + backgroundColor: getEntryColor(d.usercreatedbyid, 5) }} id={d.id + "e"}>

{internal_to_time(d.timestart) + " - " + internal_to_time(d.timeend)}

{d.info}

))} @@ -522,7 +613,7 @@ export default function CalenderView(p) { alignItems: "center", }} className={"no-pointer-events"}>

{internal_to_time(i + 1)}

{internal_to_time(i + 1)}

{internal_to_time(i + 1)}

{internal_to_time(i + 1)}

{internal_to_time(i + 1)}