diff --git a/VERSION b/VERSION index 4eba2a6..f982feb 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -3.13.0 +3.14.0 diff --git a/play-life-web/package.json b/play-life-web/package.json index e53e05c..aa31cb1 100644 --- a/play-life-web/package.json +++ b/play-life-web/package.json @@ -1,6 +1,6 @@ { "name": "play-life-web", - "version": "3.13.0", + "version": "3.14.0", "type": "module", "scripts": { "dev": "vite", diff --git a/play-life-web/src/components/TaskForm.css b/play-life-web/src/components/TaskForm.css index b3fadbd..3afce43 100644 --- a/play-life-web/src/components/TaskForm.css +++ b/play-life-web/src/components/TaskForm.css @@ -508,4 +508,3 @@ color: #6b7280; font-style: italic; } - diff --git a/play-life-web/src/components/TaskForm.jsx b/play-life-web/src/components/TaskForm.jsx index 5afbfe4..890052f 100644 --- a/play-life-web/src/components/TaskForm.jsx +++ b/play-life-web/src/components/TaskForm.jsx @@ -311,18 +311,23 @@ function TaskForm({ onNavigate, taskId, wishlistId, isTest: isTestFromProps = fa use_progression: r.use_progression }))) - // Загружаем подзадачи - setSubtasks(data.subtasks.map(st => ({ - id: st.task.id, - name: st.task.name || '', - reward_message: st.task.reward_message || '', - rewards: st.rewards.map(r => ({ - position: r.position, - project_name: r.project_name, - value: String(r.value), - use_progression: r.use_progression - })) - }))) + // Загружаем подзадачи (только если задача не является тестом) + if (data.task.config_id) { + // Для задач-тестов не загружаем подзадачи + setSubtasks([]) + } else { + setSubtasks(data.subtasks.map(st => ({ + id: st.task.id, + name: st.task.name || '', + reward_message: st.task.reward_message || '', + rewards: st.rewards.map(r => ({ + position: r.position, + project_name: r.project_name, + value: String(r.value), + use_progression: r.use_progression + })) + }))) + } // Загружаем информацию о связанном желании, если есть if (data.task.wishlist_id) { @@ -368,6 +373,8 @@ function TaskForm({ onNavigate, taskId, wishlistId, isTest: isTestFromProps = fa } // Тесты не могут иметь прогрессию setProgressionBase('') + // Тесты не могут иметь подзадачи - очищаем их + setSubtasks([]) } else { setIsTest(false) setWordsCount('10') @@ -381,6 +388,13 @@ function TaskForm({ onNavigate, taskId, wishlistId, isTest: isTestFromProps = fa } } + // Очистка подзадач при переключении задачи в режим теста + useEffect(() => { + if (isTest && subtasks.length > 0) { + setSubtasks([]) + } + }, [isTest]) + // Пересчет rewards при изменении reward_message (debounce) useEffect(() => { if (debounceTimer.current) { @@ -644,7 +658,7 @@ function TaskForm({ onNavigate, taskId, wishlistId, isTest: isTestFromProps = fa value: parseFloat(r.value) || 0, use_progression: !!(progressionBase && r.use_progression) })), - subtasks: subtasks.map(st => ({ + subtasks: isTest ? [] : subtasks.map(st => ({ id: st.id || undefined, name: st.name.trim() || null, reward_message: st.reward_message.trim() || null, @@ -1058,108 +1072,110 @@ function TaskForm({ onNavigate, taskId, wishlistId, isTest: isTestFromProps = fa )} -