Доски желаний и политика награждения
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m0s
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m0s
This commit is contained in:
@@ -24,6 +24,7 @@ function TaskForm({ onNavigate, taskId, wishlistId, isTest: isTestFromProps = fa
|
||||
const [isDeleting, setIsDeleting] = useState(false)
|
||||
const [wishlistInfo, setWishlistInfo] = useState(null) // Информация о связанном желании
|
||||
const [currentWishlistId, setCurrentWishlistId] = useState(null) // Текущий wishlist_id задачи
|
||||
const [rewardPolicy, setRewardPolicy] = useState('personal') // Политика награждения: 'personal' или 'general'
|
||||
// Test-specific state
|
||||
const [isTest, setIsTest] = useState(isTestFromProps)
|
||||
const [wordsCount, setWordsCount] = useState('10')
|
||||
@@ -122,6 +123,7 @@ function TaskForm({ onNavigate, taskId, wishlistId, isTest: isTestFromProps = fa
|
||||
} else {
|
||||
setCurrentWishlistId(null)
|
||||
setWishlistInfo(null)
|
||||
setRewardPolicy('personal') // Сбрасываем при отвязке
|
||||
}
|
||||
}
|
||||
}, [taskId, wishlistId, authFetch])
|
||||
@@ -339,9 +341,16 @@ function TaskForm({ onNavigate, taskId, wishlistId, isTest: isTestFromProps = fa
|
||||
} catch (err) {
|
||||
console.error('Error loading wishlist info:', err)
|
||||
}
|
||||
// Загружаем политику награждения
|
||||
if (data.task.reward_policy) {
|
||||
setRewardPolicy(data.task.reward_policy)
|
||||
} else {
|
||||
setRewardPolicy('personal') // Значение по умолчанию
|
||||
}
|
||||
} else {
|
||||
setCurrentWishlistId(null)
|
||||
setWishlistInfo(null)
|
||||
setRewardPolicy('personal') // Сбрасываем при отвязке
|
||||
}
|
||||
|
||||
// Загружаем информацию о тесте, если есть config_id
|
||||
@@ -628,6 +637,7 @@ function TaskForm({ onNavigate, taskId, wishlistId, isTest: isTestFromProps = fa
|
||||
wishlist_id: taskId
|
||||
? (currentWishlistId && !wishlistInfo ? null : undefined)
|
||||
: (currentWishlistId || undefined),
|
||||
reward_policy: (wishlistInfo || currentWishlistId) ? rewardPolicy : undefined,
|
||||
rewards: rewards.map(r => ({
|
||||
position: r.position,
|
||||
project_name: r.project_name.trim(),
|
||||
@@ -798,6 +808,23 @@ function TaskForm({ onNavigate, taskId, wishlistId, isTest: isTestFromProps = fa
|
||||
</button>
|
||||
)}
|
||||
</div>
|
||||
<div className="form-group" style={{ marginTop: '12px' }}>
|
||||
<label htmlFor="reward_policy">Политика награждения:</label>
|
||||
<select
|
||||
id="reward_policy"
|
||||
value={rewardPolicy}
|
||||
onChange={(e) => setRewardPolicy(e.target.value)}
|
||||
className="form-input"
|
||||
>
|
||||
<option value="personal">Личная</option>
|
||||
<option value="general">Общая</option>
|
||||
</select>
|
||||
<small style={{ color: '#666', fontSize: '0.9em', display: 'block', marginTop: '4px' }}>
|
||||
{rewardPolicy === 'personal'
|
||||
? 'Задача выполняется только если вы сами завершили желание. Если другой пользователь завершит желание, задача будет удалена.'
|
||||
: 'Задача выполняется если кто-либо (неважно кто) отметил желание завершённым.'}
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user