Calender View 15 Minuten Takt
Beim Setzen neuer Termine wird die Überschneidung mit einem bereits vorhandenem termin durch das verhindern des setzens blockiert
This commit is contained in:
@@ -9,15 +9,38 @@ export default function CalenderView(p) {
|
|||||||
function mouse_click(e) {
|
function mouse_click(e) {
|
||||||
let y_window = e.clientY;
|
let y_window = e.clientY;
|
||||||
let y_target_offset = e.target.getBoundingClientRect().top;
|
let y_target_offset = e.target.getBoundingClientRect().top;
|
||||||
let row = Math.floor((y_window - y_target_offset) / 3) + 1
|
let row = Math.floor((y_window - y_target_offset) / 10)+1
|
||||||
let current_list = entries[e.currentTarget.id];
|
if(row <= 98 && row > 3) {
|
||||||
current_list.push(new CalenderEntry(row - 10, row + 5));
|
let current_list = entries[e.currentTarget.id];
|
||||||
setT(!t);
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function internal_to_time(internal)
|
function internal_to_time(internal)
|
||||||
{
|
{
|
||||||
internal /= 15
|
internal -= 4
|
||||||
|
internal /= 4
|
||||||
let integer = Math.floor(internal)
|
let integer = Math.floor(internal)
|
||||||
let decimal = internal.toFixed(2);
|
let decimal = internal.toFixed(2);
|
||||||
let minutes = Math.floor((decimal - integer) * 60);
|
let minutes = Math.floor((decimal - integer) * 60);
|
||||||
@@ -30,14 +53,14 @@ export default function CalenderView(p) {
|
|||||||
<div className={"calender-view"}>
|
<div className={"calender-view"}>
|
||||||
<div className={"spalte"} onClick={mouse_click} id={"mo"}>
|
<div className={"spalte"} onClick={mouse_click} id={"mo"}>
|
||||||
<div className={"wochen-tag font-small"}>Montag</div>
|
<div className={"wochen-tag font-small"}>Montag</div>
|
||||||
{entries["mo"].map(d => (<div className={"entry"} style={{width: "100%", gridRowStart: d.start_point+10, gridRowEnd: d.end_point+10}}>
|
{entries["mo"].map(d => (<div className={"entry"} style={{width: "100%", gridRowStart: d.start_point, gridRowEnd: d.end_point}}>
|
||||||
<p>{internal_to_time(d.start_point)}</p>
|
<p>{internal_to_time(d.start_point)}</p>
|
||||||
<p>{internal_to_time(d.end_point)}</p>
|
<p>{internal_to_time(d.end_point)}</p>
|
||||||
</div>))}
|
</div>))}
|
||||||
</div>
|
</div>
|
||||||
<div className={"spalte"} onClick={mouse_click} id={"tu"}>
|
<div className={"spalte"} onClick={mouse_click} id={"tu"}>
|
||||||
<div className={"wochen-tag font-small"}>Dienstag</div>
|
<div className={"wochen-tag font-small"}>Dienstag</div>
|
||||||
{entries["tu"].map(d => (<div className={"entry"} style={{width: "100%", gridRowStart: d.start_point+10, gridRowEnd: d.end_point+10}}>
|
{entries["tu"].map(d => (<div className={"entry"} style={{width: "100%", gridRowStart: d.start_point, gridRowEnd: d.end_point}}>
|
||||||
|
|
||||||
<p>{internal_to_time(d.start_point)}</p>
|
<p>{internal_to_time(d.start_point)}</p>
|
||||||
<p>{internal_to_time(d.end_point)}</p>
|
<p>{internal_to_time(d.end_point)}</p>
|
||||||
@@ -45,7 +68,7 @@ export default function CalenderView(p) {
|
|||||||
</div>
|
</div>
|
||||||
<div className={"spalte"} onClick={mouse_click} id={"we"}>
|
<div className={"spalte"} onClick={mouse_click} id={"we"}>
|
||||||
<div className={"wochen-tag font-small"}>Mittwoch</div>
|
<div className={"wochen-tag font-small"}>Mittwoch</div>
|
||||||
{entries["we"].map(d => (<div className={"entry"} style={{width: "100%", gridRowStart: d.start_point+10, gridRowEnd: d.end_point+10}}>
|
{entries["we"].map(d => (<div className={"entry"} style={{width: "100%", gridRowStart: d.start_point, gridRowEnd: d.end_point}}>
|
||||||
|
|
||||||
<p>{internal_to_time(d.start_point)}</p>
|
<p>{internal_to_time(d.start_point)}</p>
|
||||||
<p>{internal_to_time(d.end_point)}</p>
|
<p>{internal_to_time(d.end_point)}</p>
|
||||||
@@ -53,7 +76,7 @@ export default function CalenderView(p) {
|
|||||||
</div>
|
</div>
|
||||||
<div className={"spalte"} onClick={mouse_click} id={"th"}>
|
<div className={"spalte"} onClick={mouse_click} id={"th"}>
|
||||||
<div className={"wochen-tag font-small"}>Donnerstag</div>
|
<div className={"wochen-tag font-small"}>Donnerstag</div>
|
||||||
{entries["th"].map(d => (<div className={"entry"} style={{width: "100%", gridRowStart: d.start_point+10, gridRowEnd: d.end_point+10}}>
|
{entries["th"].map(d => (<div className={"entry"} style={{width: "100%", gridRowStart: d.start_point, gridRowEnd: d.end_point}}>
|
||||||
|
|
||||||
<p>{internal_to_time(d.start_point)}</p>
|
<p>{internal_to_time(d.start_point)}</p>
|
||||||
<p>{internal_to_time(d.end_point)}</p>
|
<p>{internal_to_time(d.end_point)}</p>
|
||||||
@@ -61,14 +84,14 @@ export default function CalenderView(p) {
|
|||||||
</div>
|
</div>
|
||||||
<div className={"spalte"} onClick={mouse_click} id={"fr"}>
|
<div className={"spalte"} onClick={mouse_click} id={"fr"}>
|
||||||
<div className={"wochen-tag font-small"}>Freitag</div>
|
<div className={"wochen-tag font-small"}>Freitag</div>
|
||||||
{entries["fr"].map(d => (<div className={"entry"} style={{width: "100%", gridRowStart: d.start_point+10, gridRowEnd: d.end_point+10}}>
|
{entries["fr"].map(d => (<div className={"entry"} style={{width: "100%", gridRowStart: d.start_point, gridRowEnd: d.end_point}}>
|
||||||
<p>{internal_to_time(d.start_point)}</p>
|
<p>{internal_to_time(d.start_point)}</p>
|
||||||
<p>{internal_to_time(d.end_point)}</p>
|
<p>{internal_to_time(d.end_point)}</p>
|
||||||
</div>))}
|
</div>))}
|
||||||
</div>
|
</div>
|
||||||
<div className={"spalte"} onClick={mouse_click} id={"sa"}>
|
<div className={"spalte"} onClick={mouse_click} id={"sa"}>
|
||||||
<div className={"wochen-tag font-small"}>Samstag</div>
|
<div className={"wochen-tag font-small"}>Samstag</div>
|
||||||
{entries["sa"].map(d => (<div className={"entry"} style={{width: "100%", gridRowStart: d.start_point+10, gridRowEnd: d.end_point+10}}>
|
{entries["sa"].map(d => (<div className={"entry"} style={{width: "100%", gridRowStart: d.start_point, gridRowEnd: d.end_point}}>
|
||||||
<p>{internal_to_time(d.start_point)}</p>
|
<p>{internal_to_time(d.start_point)}</p>
|
||||||
<p>{internal_to_time(d.end_point)}</p>
|
<p>{internal_to_time(d.end_point)}</p>
|
||||||
</div>))}
|
</div>))}
|
||||||
|
|||||||
@@ -199,7 +199,7 @@ Calender View
|
|||||||
Test
|
Test
|
||||||
*/
|
*/
|
||||||
width: 500px;
|
width: 500px;
|
||||||
height: 1110px;
|
height: 1000px;
|
||||||
/*
|
/*
|
||||||
End Test
|
End Test
|
||||||
*/
|
*/
|
||||||
@@ -220,7 +220,7 @@ Calender View
|
|||||||
background-color: white;
|
background-color: white;
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 100%;
|
grid-template-columns: 100%;
|
||||||
grid-template-rows: repeat(370, 3px);
|
grid-template-rows: repeat(100, 10px);
|
||||||
}
|
}
|
||||||
|
|
||||||
.spalte .wochen-tag
|
.spalte .wochen-tag
|
||||||
@@ -235,7 +235,7 @@ Calender View
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
|
||||||
grid-row-start: 1;
|
grid-row-start: 1;
|
||||||
grid-row-end: 10;
|
grid-row-end: 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
.entry
|
.entry
|
||||||
@@ -252,5 +252,5 @@ Calender View
|
|||||||
.entry p
|
.entry p
|
||||||
{
|
{
|
||||||
color: white;
|
color: white;
|
||||||
font-size: 10px;
|
font-size: 5px;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user