Kleine fehler beseitigt

This commit is contained in:
erik committed 2026-08-14 11:47:19 +02:00
1 parent 57e201b8fc
commit 115f0f5671
15 files changed
+220 -115

No files matched your search

+14 -11
View File
@@ -85,19 +85,21 @@
}
// getGanttRowDragAfterElement: ermittelt unter allen nicht gezogenen
// Zeilen jenes Element, das der übergebenen y-Position am nächsten liegt.
// Rückgabe: Element oder undefined (dann wäre die Zeile am Chart-Ende).
// Zeilen jenes Element, das der übergebenen y-Position am nächsten liegt
// und dessen Mitte unterhalb des Cursors beginnt. Rückgabe: Element oder
// null, wenn keine Zeile mehr unter dem Cursor liegt (Curser unterhalb der
// letzten Zeile → die gezogene Zeile gehört ans Chart-Ende).
function getGanttRowDragAfterElement(chart, y){
const draggableElements = [...chart.querySelectorAll(DRAGGABLE_GANTT_ROW_SELECTOR + ':not(.dragging)')];
return draggableElements.reduce((closest, child) => {
const closest = draggableElements.reduce((acc, child) => {
const box = child.getBoundingClientRect();
const offset = y - box.top - box.height / 2;
if(offset < 0 && offset > closest.offset){
if(offset < 0 && offset > acc.offset){
return { offset: offset, element: child };
} else {
return closest;
}
}, { offset: Number.NEGATIVE_INFINITY }).element;
return acc;
}, { offset: Number.NEGATIVE_INFINITY });
return closest.element || null;
}
// reorderPlanRows: übernimmt die im DOM gefundene Zeilen-Reihenfolge in den
@@ -151,9 +153,11 @@
position = 'after:' + prevRow.dataset.todoId;
} else if(nextRow && nextRow.classList.contains('gantt-todo')){
position = 'before:' + nextRow.dataset.todoId;
} else if(prevRow && prevRow.classList.contains('gantt-milestone-row')){
// Zwei Meilensteine hintereinander: beziehe dich auf die nächste TODO danach oder letzte davor
// Suche nächste TODO nach diesem Block
} else if((!prevRow || !prevRow.classList.contains('gantt-todo')) && (!nextRow || !nextRow.classList.contains('gantt-todo'))){
// Weder vor noch hinter diesem Meilenstein steht direkt eine TODO –
// das ist der Fall für einen führenden Meilenstein-Block (vor der
// ersten TODO) oder mehrere Meilensteine hintereinander. Beziehe dich
// auf die nächste TODO danach oder die letzte TODO davor.
let nextTodoId = null;
for(let i = idx + 1; i < rows.length; i++){
if(rows[i].classList.contains('gantt-todo')){ nextTodoId = rows[i].dataset.todoId; break; }
@@ -161,7 +165,6 @@
if(nextTodoId){
position = 'before:' + nextTodoId;
} else {
// Keine TODO danach -> letzte TODO davor suchen
let prevTodoId = null;
for(let i = idx - 1; i >= 0; i--){
if(rows[i].classList.contains('gantt-todo')){ prevTodoId = rows[i].dataset.todoId; break; }