diff --git a/index.html b/index.html index 0238b0d..cd01aa4 100644 --- a/index.html +++ b/index.html @@ -506,6 +506,10 @@ chmod 755 kbtd return el; } + function getDataInt(el, key) { + return parseInt(el.dataset[key]); + } + function insertInstallInstructions(containerId) { const template = $('#install-instructions-template'); const clone = template.content.cloneNode(true); @@ -992,7 +996,7 @@ chmod 755 kbtd className: `card-checkbox ${card.completed ? 'checked' : ''}`, onclick: async (e) => { e.stopPropagation(); - const lineNum = parseInt(cardDiv.dataset.lineNumber); + const lineNum = getDataInt(cardDiv, 'lineNumber'); const originalLine = cardDiv.dataset.originalLine; const newLine = originalLine.includes('- [x]') ? originalLine.replace('- [x]', '- [ ]') @@ -1112,11 +1116,23 @@ chmod 755 kbtd renderBoard(); } + function clearDropIndicators() { + $$('.drop-indicator').forEach(el => el.classList.remove('active')); + } + + function setActiveDropIndicator(colIndex, position) { + console.log('Setting active drop indicator: col', colIndex, 'position', position); + dragState.currentDropTarget = { colIndex, position }; + clearDropIndicators(); + const indicator = $(`.drop-indicator[data-col-index="${colIndex}"][data-position="${position}"]`); + if (indicator) indicator.classList.add('active'); + } + function handleDragStart(e, cardDiv) { dragState.source = { - lineNumber: parseInt(cardDiv.dataset.lineNumber), - colIndex: parseInt(cardDiv.dataset.colIndex), - cardIndex: parseInt(cardDiv.dataset.cardIndex) + lineNumber: getDataInt(cardDiv, 'lineNumber'), + colIndex: getDataInt(cardDiv, 'colIndex'), + cardIndex: getDataInt(cardDiv, 'cardIndex') }; e.target.classList.add('dragging'); e.dataTransfer.effectAllowed = 'move'; @@ -1131,12 +1147,6 @@ chmod 755 kbtd dragState.currentDropTarget = null; } - function clearDropIndicators() { - $$('.drop-indicator').forEach(el => { - el.classList.remove('active'); - }); - } - function handleCardDragEnter(e, cardDiv, colIndex, cardIndex) { if (!dragState.source) return; @@ -1145,24 +1155,9 @@ chmod 755 kbtd const rect = cardDiv.getBoundingClientRect(); const midpoint = rect.top + rect.height / 2; - const mouseY = e.clientY; + const position = e.clientY < midpoint ? cardIndex : cardIndex + 1; - let position; - if (mouseY < midpoint) { - position = cardIndex; - } else { - position = cardIndex + 1; - } - - console.log('Card drag enter: col', colIndex, 'position', position); - - dragState.currentDropTarget = { colIndex, position }; - - clearDropIndicators(); - const indicator = $(`.drop-indicator[data-col-index="${colIndex}"][data-position="${position}"]`); - if (indicator) { - indicator.classList.add('active'); - } + setActiveDropIndicator(colIndex, position); } function handleDragOver(e, colIndex, cardList) { @@ -1175,12 +1170,7 @@ chmod 755 kbtd if (cards.length === 0) { console.log('Drag over empty column', colIndex); - dragState.currentDropTarget = { colIndex, position: 0 }; - clearDropIndicators(); - const indicator = cardList.querySelector('.drop-indicator'); - if (indicator) { - indicator.classList.add('active'); - } + setActiveDropIndicator(colIndex, 0); return; } @@ -1201,21 +1191,13 @@ chmod 755 kbtd }); if (closestCard) { - const cardIndex = parseInt(closestCard.dataset.cardIndex); + const cardIndex = getDataInt(closestCard, 'cardIndex'); const position = insertBefore ? cardIndex : cardIndex + 1; if (!dragState.currentDropTarget || dragState.currentDropTarget.colIndex !== colIndex || dragState.currentDropTarget.position !== position) { - - console.log('Drag over: col', colIndex, 'position', position); - dragState.currentDropTarget = { colIndex, position }; - - clearDropIndicators(); - const indicator = $(`.drop-indicator[data-col-index="${colIndex}"][data-position="${position}"]`); - if (indicator) { - indicator.classList.add('active'); - } + setActiveDropIndicator(colIndex, position); } } }