Skip to content

Duplicate: Issue #74 already fixed in PR #73#75

Closed
konard wants to merge 2 commits intoideav:mainfrom
konard:issue-74-f108e9dd9926
Closed

Duplicate: Issue #74 already fixed in PR #73#75
konard wants to merge 2 commits intoideav:mainfrom
konard:issue-74-f108e9dd9926

Conversation

@konard
Copy link
Copy Markdown
Contributor

@konard konard commented Dec 27, 2025

Статус

Дубликат - Проблема уже исправлена в PR #73

📋 Ссылка на задачу

Связано с #74

🔍 Анализ

После детального исследования кодовой базы обнаружено следующее:

Временная шкала:

Issue #74 является дубликатом Issue #72, который уже был исправлен и смержен в main через PR #73.

✅ Текущее состояние кода

Исправление уже присутствует в projects.js:385-437:

function saveOrder(element) {
    const isTask = element.classList.contains('task-item');
    
    // Get all siblings of the same type
    const siblings = Array.from(element.parentNode.children).filter(el =>
        el.classList.contains(isTask ? 'task-item' : 'operation-item')
    );
    
    // Update order for ALL siblings, not just the dragged element
    const updatePromises = siblings.map((sibling, index) => {
        const id = isTask ? sibling.dataset.taskId : sibling.dataset.operationId;
        const newOrder = index + 1;
        
        // Update the data-order attribute immediately for UI consistency
        sibling.dataset.order = newOrder;
        
        // Send update to server
        const formData = new FormData();
        formData.append('_xsrf', xsrf);
        
        return fetch(`https://${window.location.host}/${db}/_m_ord/${id}?JSON&order=${newOrder}`, {
            method: 'POST',
            body: formData
        })
        .then(response => response.json())
        .then(data => {
            console.log(`Order updated for ${isTask ? 'task' : 'operation'} ${id}: ${newOrder}`, data);
            return data;
        })
        .catch(error => {
            console.error(`Error updating order for ${isTask ? 'task' : 'operation'} ${id}:`, error);
            throw error;
        });
    });
    
    // Wait for all updates to complete, then reload
    Promise.all(updatePromises)
        .then(() => {
            console.log('All order updates completed successfully');
            if (selectedProject) {
                loadProjectDetails(selectedProject['ПроектID']);
            }
        })
        .catch(error => {
            console.error('Error updating orders:', error);
            alert('Ошибка сохранения порядка');
            if (selectedProject) {
                loadProjectDetails(selectedProject['ПроектID']);
            }
        });
}

🔧 Что было исправлено

Проблема (до исправления):

  • При перетаскивании задач/операций обновлялся порядок только у перетаскиваемого элемента
  • Это приводило к конфликтам порядка (несколько элементов с одинаковым порядком)

Решение (текущее состояние):

  • Функция saveOrder() обновляет ВСЕ элементы-siblings, а не только перетаскиваемый
  • Порядок пересчитывается для каждого элемента на основе его новой позиции в DOM
  • Используется Promise.all() для ожидания завершения всех обновлений
  • После успешного обновления происходит перезагрузка данных

📚 Документация

Детали исправления задокументированы в experiments/test-issue-72-drag-drop-order.js

💡 Рекомендация

Этот PR следует закрыть, так как проблема уже решена. Issue #74 следует закрыть как дубликат Issue #72.


Автоматически сгенерировано AI issue solver

Fixes #74

Adding CLAUDE.md with task information for AI processing.
This file will be removed when the task is complete.

Issue: ideav/orbits#74
@konard konard changed the title [WIP] Когда я тащу задачу или операцию мышью, их порядок не меняется Duplicate: Issue #74 already fixed in PR #73 Dec 27, 2025
@konard konard marked this pull request as ready for review December 27, 2025 12:41
@konard
Copy link
Copy Markdown
Contributor Author

konard commented Dec 27, 2025

🤖 Solution Draft Log

This log file contains the complete execution trace of the AI solution draft process.

💰 Cost estimation:

  • Public pricing estimate: $0.550220 USD
  • Calculated by Anthropic: $0.533902 USD
  • Difference: $-0.016318 (-2.97%)
    📎 Log file uploaded as GitHub Gist (370KB)
    🔗 View complete solution draft log

Now working session is ended, feel free to review and add any feedback on the solution draft.

@ideav ideav closed this Dec 27, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Когда я тащу задачу или операцию мышью, их порядок не меняется

2 participants