Function Status Bar and Time Validation

This commit is contained in:
brausjonas
2023-06-18 11:29:06 +02:00
parent b3fb3b1b8f
commit dd6f08880a
88 changed files with 515367 additions and 2922 deletions
+152 -65
View File
@@ -7,6 +7,8 @@ import {baseURL} from "@/components/Constants";
import {ErrorType} from "@/components/ErrorType";
import BasicDateCalendar from "@/components/CalendarSideBar";
import feiertagejs from "feiertagejs";
import PopUp from "@/components/PopUp";
import {useRouter} from "next/router";
let cellHeight = 20;
@@ -19,6 +21,8 @@ let currentYear;
let semesterStartYear;
let semesterEndYear;
let selectedElement;
let lastEndTimeDrag;
let lastStartTimeDrag;
let grabbedDown;
let isDayOkay = [true, true, true, true, true, true]
@@ -26,6 +30,8 @@ let isDayOkay = [true, true, true, true, true, true]
let errorState = [ErrorType.Okay, ErrorType.Okay, ErrorType.Okay, ErrorType.Okay, ErrorType.Okay, ErrorType.Okay]
let grayedOut = [false, false, false, false, false, false]
let timePlanned = 0
export default function CalenderView(p) {
const [entries, setEntries] = useState([[], [], [], [], [], []])
@@ -38,6 +44,8 @@ export default function CalenderView(p) {
const [endYearCalenderSideBar, setEndYearCalenderSideBar] = useState(2000)
const [highlightMonth, setHighlightMonth] = useState(0)
const [highlightYear, setHighlightYear] = useState(2000)
const [popUpToggleAbgeben, setPopUpToggleAbgeben] = useState(false)
const router = useRouter();
function readEntries() {
@@ -110,8 +118,7 @@ export default function CalenderView(p) {
if (en[i][k] != null) {
if (en[i][k].semesterid != currentsid)
{
if (en[i][k].semesterid != currentsid) {
for (let l = 0; l < 20; l++) {
if (en[i][l] != null && en[i][l].usercreatedbyid != userid) {
if (en[i][l].timestart <= en[i][k].timestart && en[i][l].timeend >= en[i][k].timeend) {
@@ -153,6 +160,26 @@ export default function CalenderView(p) {
}
setEntries(en)
if(localStorage.getItem("admin") == 0)
{
let entriesURL = baseURL + "/entries/all/module?sessionid=" + localStorage.getItem("sessionid") + "&moduleid=" + localStorage.getItem("moduleid")
fetch(entriesURL).then(r => r.json()).then(allEn => {
let moduleid = localStorage.getItem("moduleid")
let sum = 0
for (let j = 0; j < allEn.length; j++) {
if (allEn[j] != null && allEn[j].moduleid == moduleid) {
sum += allEn[j].timeend - allEn[j].timestart
}
}
sum /= 3
timePlanned = sum
})
}
})
} catch (e) {
@@ -228,6 +255,18 @@ export default function CalenderView(p) {
let id = selectedElement.id;
if ((selectedElement.timestart - 1) / 4 >= 7 && (selectedElement.timeend - 1) / 4 <= 18) {
let finalTimeEnd = selectedElement.timeend
let deltaTimeEnd = (selectedElement.timeend - lastEndTimeDrag) / 3
if (timePlanned + deltaTimeEnd > 20) {
finalTimeEnd -= ((timePlanned + deltaTimeEnd) - 20) * 3
}
let finalTimeStart = selectedElement.timestart
let deltaTimeStart = (lastStartTimeDrag - selectedElement.timestart) / 3
if (deltaTimeStart + timePlanned > 20) {
finalTimeStart += (timePlanned + deltaTimeStart - 20) * 3
}
let url = baseURL + "/entries?sessionid=" + localStorage.getItem("sessionid");
let json = {
"id": id,
@@ -235,8 +274,8 @@ export default function CalenderView(p) {
"yearnumber": 0,
"semesterid": 0,
"usercreatedbyid": 0,
"timestart": selectedElement.timestart,
"timeend": selectedElement.timeend,
"timestart": finalTimeStart,
"timeend": finalTimeEnd,
"info": "",
"moduleid": localStorage.getItem("moduleid")
}
@@ -316,7 +355,7 @@ export default function CalenderView(p) {
if (!currentId.includes("grab")) {
if (!checkForElementAtRow(row + 2, currentColumnID) && !checkForElementAtRow(row + 1, currentColumnID)) {
if ((row - 1) / 4 >= 7 && (row + 2) / 4 <= 18) {
if (!grayedOut[currentColumnID]) {
if (!grayedOut[currentColumnID] && timePlanned + 0.8 < 20) {
pushEntry(currentColumnID, row)
}
}
@@ -326,6 +365,8 @@ export default function CalenderView(p) {
if (currentUserID == getElementInColumn(parentID, currentColumnID).usercreatedbyid && getElementInColumn(parentID, currentColumnID).moduleid == localStorage.getItem("moduleid")) {
grabbedDown = currentId.includes("down")
selectedElement = getElementInColumn(parentID, currentColumnID);
lastEndTimeDrag = selectedElement.timeend
lastStartTimeDrag = selectedElement.timestart
}
}
}
@@ -366,19 +407,25 @@ export default function CalenderView(p) {
}
function getEntryColor(userCreatedByID, columnID, semesterid, moduleid) {
console.log(moduleid)
let id = localStorage.getItem("userid");
let currentsid = localStorage.getItem("currentsid")
if (id == userCreatedByID) {
if (isDayOkay[columnID] && moduleid == localStorage.getItem("moduleid")) {
return "#77932b";
} else if (moduleid != localStorage.getItem("moduleid")) {
return "#346991";
} else {
return "#e5a10e";
}
if(localStorage.getItem("admin") == 0)
{
if (id == userCreatedByID) {
if (isDayOkay[columnID] && moduleid == localStorage.getItem("moduleid")) {
return "#77932b";
} else if (moduleid != localStorage.getItem("moduleid")) {
return "#346991";
} else {
return "#e5a10e";
}
} else {
} else {
return "#a2a2a2";
}
}
else
{
return "#a2a2a2";
}
}
@@ -386,74 +433,83 @@ export default function CalenderView(p) {
function getResizeBarColor(userCreatedByID, columnID, semesterid, moduleid) {
let id = localStorage.getItem("userid");
let currentsid = localStorage.getItem("currentsid")
if (id == userCreatedByID) {
if (isDayOkay[columnID] && moduleid == localStorage.getItem("moduleid")) {
return "#5a6c20";
} else if (moduleid != localStorage.getItem("moduleid")) {
return "#346991"
if(localStorage.getItem("admin") == 0)
{
if (id == userCreatedByID) {
if (isDayOkay[columnID] && moduleid == localStorage.getItem("moduleid")) {
return "#5a6c20";
} else if (moduleid != localStorage.getItem("moduleid")) {
return "#346991"
} else {
return "#c08809";
}
} else {
return "#c08809";
return "#a2a2a2";
}
} else {
}
else
{
return "#a2a2a2";
}
}
useEffect(() => {
semesterStart = 0;
semesterEnd = 0;
semesterStartYear = 0;
semesterEndYear = 0;
currentWeekStartDay = 0;
currentYear = 2000;
selectedElement = null;
grabbedDown = false;
errorState = [ErrorType.Okay, ErrorType.Okay, ErrorType.Okay, ErrorType.Okay, ErrorType.Okay, ErrorType.Okay]
setTimeout(() => {
semesterStart = 0;
semesterEnd = 0;
semesterStartYear = 0;
semesterEndYear = 0;
currentWeekStartDay = 0;
currentYear = 2000;
selectedElement = null;
grabbedDown = false;
errorState = [ErrorType.Okay, ErrorType.Okay, ErrorType.Okay, ErrorType.Okay, ErrorType.Okay, ErrorType.Okay]
let url = baseURL + "/semester/id?sessionid=" + localStorage.getItem("sessionid") +
"&id=" + localStorage.getItem("currentsid");
let url = baseURL + "/semester/id?sessionid=" + localStorage.getItem("sessionid") +
"&id=" + localStorage.getItem("currentsid");
fetch(url).then(r => r.json()).then(s => {
currentWeekStartDay = s.startday - new Date(s.startyear, 0, s.startday).getUTCDay();
currentYear = s.startyear;
setStartYearCalenderSideBar(currentYear)
setEndYearCalenderSideBar(s.endyear)
setHighlightMonth(new Date(s.startyear, 0, s.startday).getMonth())
setHighlightYear(currentYear)
fetch(url).then(r => r.json()).then(s => {
currentWeekStartDay = s.startday - new Date(s.startyear, 0, s.startday).getUTCDay();
currentYear = s.startyear;
setStartYearCalenderSideBar(currentYear)
setEndYearCalenderSideBar(s.endyear)
setHighlightMonth(new Date(s.startyear, 0, s.startday).getMonth())
setHighlightYear(currentYear)
semesterStart = s.startday;
semesterEnd = s.endday;
semesterStartYear = s.startyear;
semesterEndYear = s.endyear;
setStartDayCalenderSideBar(semesterStart)
setEndDayCalenderSideBar(s.endday)
semesterStart = s.startday;
semesterEnd = s.endday;
semesterStartYear = s.startyear;
semesterEndYear = s.endyear;
setStartDayCalenderSideBar(semesterStart)
setEndDayCalenderSideBar(s.endday)
}).then(readEntries)
}).then(readEntries)
scrollRef.current.scrollTop = 600;
window.addEventListener("contextmenu", (e) => (e.preventDefault()))
scrollRef.current.scrollTop = 600;
window.addEventListener("contextmenu", (e) => (e.preventDefault()))
window.addEventListener("keypress", (e) => {
try {
if (e.key === "+") {
cellHeight += 2
} else if (e.key === "-") {
if (cellHeight - 2 >= 8) {
cellHeight -= 2
window.addEventListener("keypress", (e) => {
try {
if (e.key === "+") {
cellHeight += 2
} else if (e.key === "-") {
if (cellHeight - 2 >= 8) {
cellHeight -= 2
}
}
} catch (e) {
}
} catch (e) {
}
})
})
setInterval(function () {
if (selectedElement == null) {
readEntries()
}
}, 500);
setInterval(function () {
if (selectedElement == null) {
readEntries()
}
}, 500);
}, 100)
}, [])
@@ -498,6 +554,19 @@ export default function CalenderView(p) {
justifyContent: "center",
alignItems: "center"
}}>
<PopUp displayState={popUpToggleAbgeben ? "block" : "none"} hint={"Willst du wirklich abgeben?"}
text1={"Abbrechen"} text2={"Abgeben"}
function1={() => {
setPopUpToggleAbgeben(false)
}}
function2={() => {
fetch(baseURL + "/module/submit?sessionid=" + localStorage.getItem("sessionid") + "&id=" + localStorage.getItem("moduleid"), {
method: "PUT"
}).then(() => router.push("/semesteroverviewLecturer"))
}}
/>
<p style={{
fontSize: 40,
marginBottom: 60
@@ -837,6 +906,24 @@ export default function CalenderView(p) {
</div>))}
</div>
</div>
<p style={{
display: typeof window !== "undefined" && localStorage.getItem("admin") == 0 ? "block" : "none",
marginTop: 10,
fontSize: 20
}}>{Math.floor(timePlanned)}h {(Math.floor(timePlanned * 3) - Math.floor(Math.floor(timePlanned) * 3)) * 15} min
// 20h</p>
<div style={{
display: typeof window !== "undefined" && localStorage.getItem("admin") == 0 ? "block" : "none",
position: "absolute",
right: 70,
bottom: 20,
}}>
<Button color={timePlanned < 20 ? "#AAAAAA": "#77932b"} onClick={() => {
Math.floor(timePlanned) == 20 ? setPopUpToggleAbgeben(true) : {}
}} text={"Abgeben"} width={100} height={40}/>
</div>
</div>
)
}