diff --git a/anwendung/src/components/CalenderView.jsx b/anwendung/src/components/CalenderView.jsx index 3cee429..213d8b4 100644 --- a/anwendung/src/components/CalenderView.jsx +++ b/anwendung/src/components/CalenderView.jsx @@ -1,44 +1,100 @@ import {useEffect, useState} from "react"; import {CalenderEntry} from "@/components/CalenderEntry"; -let entries = {mo:[], tu:[], we:[], th:[], fr:[], sa:[]} +let entries = {mo: [], tu: [], we: [], th: [], fr: [], sa: []} +let grabbedStartRow = -1; +let grabbedUp = false; +let mouseDown = false; export default function CalenderView(p) { const [t, setT] = useState(false) - function mouse_click(e) { + function mouse_up(e) + { + mouseDown = false; let y_window = e.clientY; - let y_target_offset = e.target.getBoundingClientRect().top; - let row = Math.floor((y_window - y_target_offset) / 10)+1 - if(row <= 98 && row > 3) { - let current_list = entries[e.currentTarget.id]; - let free = true; + let y_target_offset = e.currentTarget.getBoundingClientRect().top; + let row = Math.floor((y_window - y_target_offset) / 10) + 1 + let current_list = entries[e.currentTarget.id]; + + if (grabbedStartRow > -1) + { for(let i = 0; i < current_list.length; i++) { let current = current_list[i]; - - for(let r = row; r < row + 2; r++) + if(current.start_point === grabbedStartRow) { - for(let s = current.start_point; s < current.end_point; s++) + if(grabbedUp) { - if (s === r) - { - free = false; - break; + current.start_point = row; + } + else + { + current.end_point = row; + } + break; + } + } + grabbedStartRow = -1; + } + + setT(!t); + } + + function mouse_down(e) { + + mouseDown = true; + let y_window = e.clientY; + let y_target_offset = e.currentTarget.getBoundingClientRect().top; + let row = Math.floor((y_window - y_target_offset) / 10) + 1 + + if(e.target.id === "grab") + { + let entry = e.target.parentElement; + let rowStart= parseInt(window.getComputedStyle(entry).gridRowStart); + + if(row === rowStart) + { + grabbedStartRow = rowStart; + grabbedUp = true; + } + else + { + grabbedStartRow = rowStart; + grabbedUp = false; + } + } + else if(e.target.id === "entry") + { + + } + else + { + if (row <= 98 && row > 3) { + let current_list = entries[e.currentTarget.id]; + let free = true; + for (let i = 0; i < current_list.length; i++) { + let current = current_list[i]; + + for (let r = row; r < row + 2; r++) { + for (let s = current.start_point; s < current.end_point; s++) { + if (s === r) { + free = false; + break; + } } } } - } - if(free) { - current_list.push(new CalenderEntry(row, row + 2)); - setT(!t); + if (free) { + current_list.push(new CalenderEntry(row, row + 2)); + setT(!t); + } } } } - function internal_to_time(internal) - { + function internal_to_time(internal) { internal -= 4 internal /= 4 let integer = Math.floor(internal) @@ -51,49 +107,85 @@ export default function CalenderView(p) { return (
{internal_to_time(d.start_point)}
{internal_to_time(d.end_point)}
+{internal_to_time(d.start_point)}
{internal_to_time(d.end_point)}
+{internal_to_time(d.start_point)}
{internal_to_time(d.end_point)}
+{internal_to_time(d.start_point)}
{internal_to_time(d.end_point)}
+{internal_to_time(d.start_point)}
{internal_to_time(d.end_point)}
+{internal_to_time(d.start_point)}
{internal_to_time(d.end_point)}
+