diff --git a/VERSION b/VERSION index 7d4ef04..8d7f852 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -3.10.3 +3.10.4 diff --git a/play-life-web/package.json b/play-life-web/package.json index cd2a8d2..41d8059 100644 --- a/play-life-web/package.json +++ b/play-life-web/package.json @@ -1,6 +1,6 @@ { "name": "play-life-web", - "version": "3.10.3", + "version": "3.10.4", "type": "module", "scripts": { "dev": "vite", diff --git a/play-life-web/src/components/TaskList.css b/play-life-web/src/components/TaskList.css index 97612a4..8e06156 100644 --- a/play-life-web/src/components/TaskList.css +++ b/play-life-web/src/components/TaskList.css @@ -461,6 +461,10 @@ border-bottom: 2px solid #e5e7eb; } +.project-group-title-empty { + color: #9ca3af; +} + .completed-section { margin-top: 1rem; } diff --git a/play-life-web/src/components/TaskList.jsx b/play-life-web/src/components/TaskList.jsx index 29936b0..639a228 100644 --- a/play-life-web/src/components/TaskList.jsx +++ b/play-life-web/src/components/TaskList.jsx @@ -468,6 +468,24 @@ function TaskList({ onNavigate, data, loading, backgroundLoading, error, onRetry return groups }, [tasks]) + // Сортируем проекты: сначала с невыполненными задачами, потом без них + const projectNames = useMemo(() => { + const sorted = Object.keys(groupedTasks).sort((a, b) => { + const groupA = groupedTasks[a] + const groupB = groupedTasks[b] + const hasNotCompletedA = groupA.notCompleted.length > 0 + const hasNotCompletedB = groupB.notCompleted.length > 0 + + // Если у одной группы есть невыполненные, а у другой нет - сортируем по этому признаку + if (hasNotCompletedA && !hasNotCompletedB) return -1 + if (!hasNotCompletedA && hasNotCompletedB) return 1 + + // Если обе группы в одной категории - сортируем по алфавиту + return a.localeCompare(b) + }) + return sorted + }, [groupedTasks]) + const renderTaskItem = (task, isCompleted = false) => { const hasProgression = task.has_progression || task.progression_base != null const hasSubtasks = task.subtasks_count > 0 @@ -647,8 +665,6 @@ function TaskList({ onNavigate, data, loading, backgroundLoading, error, onRetry ) } - const projectNames = Object.keys(groupedTasks).sort() - return (