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
+23 -23
View File
@@ -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++) {