4.19.0: Добавлены позиции подзадач
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m34s
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m34s
This commit is contained in:
@@ -313,10 +313,11 @@ function TaskForm({ onNavigate, taskId, wishlistId, isTest: isTestFromProps = fa
|
||||
// Для задач-тестов не загружаем подзадачи
|
||||
setSubtasks([])
|
||||
} else {
|
||||
setSubtasks(data.subtasks.map(st => ({
|
||||
setSubtasks(data.subtasks.map((st, index) => ({
|
||||
id: st.task.id,
|
||||
name: st.task.name || '',
|
||||
reward_message: st.task.reward_message || '',
|
||||
position: st.task.position !== undefined && st.task.position !== null ? st.task.position : index,
|
||||
rewards: st.rewards.map(r => ({
|
||||
position: r.position,
|
||||
project_name: r.project_name,
|
||||
@@ -483,6 +484,7 @@ function TaskForm({ onNavigate, taskId, wishlistId, isTest: isTestFromProps = fa
|
||||
id: null,
|
||||
name: '',
|
||||
reward_message: '',
|
||||
position: subtasks.length,
|
||||
rewards: []
|
||||
}])
|
||||
}
|
||||
@@ -520,7 +522,38 @@ function TaskForm({ onNavigate, taskId, wishlistId, isTest: isTestFromProps = fa
|
||||
}
|
||||
|
||||
const handleRemoveSubtask = (index) => {
|
||||
setSubtasks(subtasks.filter((_, i) => i !== index))
|
||||
const newSubtasks = subtasks.filter((_, i) => i !== index)
|
||||
// Пересчитываем позиции после удаления
|
||||
newSubtasks.forEach((st, i) => {
|
||||
st.position = i
|
||||
})
|
||||
setSubtasks(newSubtasks)
|
||||
}
|
||||
|
||||
const handleMoveSubtaskUp = (index) => {
|
||||
if (index === 0) return // Нельзя переместить первый элемент вверх
|
||||
const newSubtasks = [...subtasks]
|
||||
const temp = newSubtasks[index]
|
||||
newSubtasks[index] = newSubtasks[index - 1]
|
||||
newSubtasks[index - 1] = temp
|
||||
// Обновляем позиции
|
||||
newSubtasks.forEach((st, i) => {
|
||||
st.position = i
|
||||
})
|
||||
setSubtasks(newSubtasks)
|
||||
}
|
||||
|
||||
const handleMoveSubtaskDown = (index) => {
|
||||
if (index === subtasks.length - 1) return // Нельзя переместить последний элемент вниз
|
||||
const newSubtasks = [...subtasks]
|
||||
const temp = newSubtasks[index]
|
||||
newSubtasks[index] = newSubtasks[index + 1]
|
||||
newSubtasks[index + 1] = temp
|
||||
// Обновляем позиции
|
||||
newSubtasks.forEach((st, i) => {
|
||||
st.position = i
|
||||
})
|
||||
setSubtasks(newSubtasks)
|
||||
}
|
||||
|
||||
const handleSubmit = async (e) => {
|
||||
@@ -657,10 +690,11 @@ function TaskForm({ onNavigate, taskId, wishlistId, isTest: isTestFromProps = fa
|
||||
value: parseFloat(r.value) || 0,
|
||||
use_progression: !!(progressionBase && r.use_progression)
|
||||
})),
|
||||
subtasks: isTest ? [] : subtasks.map(st => ({
|
||||
subtasks: isTest ? [] : subtasks.map((st, index) => ({
|
||||
id: st.id || undefined,
|
||||
name: st.name.trim() || null,
|
||||
reward_message: st.reward_message.trim() || null,
|
||||
position: st.position !== undefined && st.position !== null ? st.position : index,
|
||||
rewards: st.rewards.map(r => ({
|
||||
position: r.position,
|
||||
project_name: r.project_name.trim(),
|
||||
@@ -1073,6 +1107,30 @@ function TaskForm({ onNavigate, taskId, wishlistId, isTest: isTestFromProps = fa
|
||||
{subtasks.map((subtask, index) => (
|
||||
<div key={index} className="subtask-form-item">
|
||||
<div className="subtask-header-row">
|
||||
<div className="subtask-position-controls">
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => handleMoveSubtaskUp(index)}
|
||||
className="move-subtask-button"
|
||||
disabled={index === 0}
|
||||
title="Переместить вверх"
|
||||
>
|
||||
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
|
||||
<polyline points="18 15 12 9 6 15"></polyline>
|
||||
</svg>
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => handleMoveSubtaskDown(index)}
|
||||
className="move-subtask-button"
|
||||
disabled={index === subtasks.length - 1}
|
||||
title="Переместить вниз"
|
||||
>
|
||||
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
|
||||
<polyline points="6 9 12 15 18 9"></polyline>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
<input
|
||||
type="text"
|
||||
value={subtask.name}
|
||||
|
||||
Reference in New Issue
Block a user