Отключены подзадачи для задач-тестов
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m27s

This commit is contained in:
poignatov
2026-01-14 17:50:14 +03:00
parent f9928c6470
commit f13838d91a
5 changed files with 129 additions and 115 deletions

View File

@@ -1 +1 @@
3.13.0 3.14.0

View File

@@ -1,6 +1,6 @@
{ {
"name": "play-life-web", "name": "play-life-web",
"version": "3.13.0", "version": "3.14.0",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",

View File

@@ -508,4 +508,3 @@
color: #6b7280; color: #6b7280;
font-style: italic; font-style: italic;
} }

View File

@@ -311,7 +311,11 @@ function TaskForm({ onNavigate, taskId, wishlistId, isTest: isTestFromProps = fa
use_progression: r.use_progression use_progression: r.use_progression
}))) })))
// Загружаем подзадачи // Загружаем подзадачи (только если задача не является тестом)
if (data.task.config_id) {
// Для задач-тестов не загружаем подзадачи
setSubtasks([])
} else {
setSubtasks(data.subtasks.map(st => ({ setSubtasks(data.subtasks.map(st => ({
id: st.task.id, id: st.task.id,
name: st.task.name || '', name: st.task.name || '',
@@ -323,6 +327,7 @@ function TaskForm({ onNavigate, taskId, wishlistId, isTest: isTestFromProps = fa
use_progression: r.use_progression use_progression: r.use_progression
})) }))
}))) })))
}
// Загружаем информацию о связанном желании, если есть // Загружаем информацию о связанном желании, если есть
if (data.task.wishlist_id) { if (data.task.wishlist_id) {
@@ -368,6 +373,8 @@ function TaskForm({ onNavigate, taskId, wishlistId, isTest: isTestFromProps = fa
} }
// Тесты не могут иметь прогрессию // Тесты не могут иметь прогрессию
setProgressionBase('') setProgressionBase('')
// Тесты не могут иметь подзадачи - очищаем их
setSubtasks([])
} else { } else {
setIsTest(false) setIsTest(false)
setWordsCount('10') 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) // Пересчет rewards при изменении reward_message (debounce)
useEffect(() => { useEffect(() => {
if (debounceTimer.current) { if (debounceTimer.current) {
@@ -644,7 +658,7 @@ function TaskForm({ onNavigate, taskId, wishlistId, isTest: isTestFromProps = fa
value: parseFloat(r.value) || 0, value: parseFloat(r.value) || 0,
use_progression: !!(progressionBase && r.use_progression) use_progression: !!(progressionBase && r.use_progression)
})), })),
subtasks: subtasks.map(st => ({ subtasks: isTest ? [] : subtasks.map(st => ({
id: st.id || undefined, id: st.id || undefined,
name: st.name.trim() || null, name: st.name.trim() || null,
reward_message: st.reward_message.trim() || null, reward_message: st.reward_message.trim() || null,
@@ -1058,6 +1072,7 @@ function TaskForm({ onNavigate, taskId, wishlistId, isTest: isTestFromProps = fa
)} )}
</div> </div>
{!isTest && (
<div className="form-group"> <div className="form-group">
<div className="subtasks-header"> <div className="subtasks-header">
<label>Подзадачи</label> <label>Подзадачи</label>
@@ -1160,6 +1175,7 @@ function TaskForm({ onNavigate, taskId, wishlistId, isTest: isTestFromProps = fa
</div> </div>
))} ))}
</div> </div>
)}
{/* Показываем ошибку валидации только если это ошибка валидации, не ошибка действия */} {/* Показываем ошибку валидации только если это ошибка валидации, не ошибка действия */}
{error && (error.includes('обязательно') || error.includes('должны быть заполнены') || error.includes('нельзя одновременно')) && ( {error && (error.includes('обязательно') || error.includes('должны быть заполнены') || error.includes('нельзя одновременно')) && (

View File

@@ -609,4 +609,3 @@
transform: translateY(-1px); transform: translateY(-1px);
box-shadow: 0 4px 12px rgba(52, 152, 219, 0.3); box-shadow: 0 4px 12px rgba(52, 152, 219, 0.3);
} }