From f13838d91a51ddd3b69185bb50c160b52a0109bd Mon Sep 17 00:00:00 2001 From: poignatov Date: Wed, 14 Jan 2026 17:50:14 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D1=82=D0=BA=D0=BB=D1=8E=D1=87=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BF=D0=BE=D0=B4=D0=B7=D0=B0=D0=B4=D0=B0=D1=87?= =?UTF-8?q?=D0=B8=20=D0=B4=D0=BB=D1=8F=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87-?= =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- VERSION | 2 +- play-life-web/package.json | 2 +- play-life-web/src/components/TaskForm.css | 1 - play-life-web/src/components/TaskForm.jsx | 238 ++++++++++++---------- play-life-web/src/components/TaskList.css | 1 - 5 files changed, 129 insertions(+), 115 deletions(-) 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 )} -
-
- - -
- {subtasks.map((subtask, index) => ( -
-
- handleSubtaskChange(index, 'name', e.target.value)} - placeholder="Название подзадачи" - className="form-input subtask-name-input" + {!isTest && ( +
+
+ + +
+ {subtasks.map((subtask, index) => ( +
+
+ handleSubtaskChange(index, 'name', e.target.value)} + placeholder="Название подзадачи" + className="form-input subtask-name-input" + /> + +
+