Kleine fehler beseitigt
This commit is contained in:
1 parent
57e201b8fc
commit
115f0f5671
15 files changed
+220
-115
No files matched your search
+14
-11
@@ -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; }
|
||||
|
||||
Reference in new issue
Block a user