import { useState, useEffect } from 'react'; import { useParams } from 'react-router-dom'; import { useBoardLogic } from './BoardLogic'; import Header from './../Header'; import './../css/Board.css'; const KBBoard = () => { const { id } = useParams(); const [error, setError] = useState(''); const [loading, setLoading] = useState(false); const [info, setInfo] = useState({}); const [categories, setCategories] = useState([]); const [isOwner, setIsOwner] = useState(null); const [crTask, setCrTask] = useState(false); const [crCateg, setCrCateg] = useState(false); const [edTask, setEdTask] = useState(false); const [edCateg, setEdCateg] = useState(false); const [edBoard, setEdBoard] = useState(false); const [delTask, setDelTask] = useState(false); const [delCateg, setDelCateg] = useState(false); const [asgnMember, setAsgnMember] = useState(false); const [assignAction, setAssignAction] = useState(false); const [addMemb, setAddMemb] = useState(false); const [delBoards, setDelBoards] = useState(false); const [qtMember, setQtMember] = useState(false); const [boardTitle, setBoardTitle] = useState(''); const [boardDescription, setBoardDescription] = useState(''); const [categoryTitle, setCategoryTitle] = useState(''); const [taskTitle, setTaskTitle] = useState(''); const [taskDescription, setTaskDescription] = useState(''); const [taskCategory, setTaskCategory] = useState(null); const [taskCategori, setTaskCategori] = useState(null); const [editedTask, setEditedTask] = useState({}); const [editedCateg, setEditedCateg] = useState({}); const [taskPosition, setTaskPosition] = useState(null); const [categoryPosition, setCategoryPosition] = useState(null); const [assignedMember, setAssignedMember] = useState(0); const [addedUsername, setAddedUsername] = useState(''); const { loadBoardData, createTask, checkOwner, createCategory, editBoard, editTask, editCategory, deleteCategory, deleteTask, assignMember, addMember, deleteBoards, quitMember } = useBoardLogic(id, setError, setInfo, setCategories, setLoading); useEffect(() => { if (id) loadBoardData(); }, [id, loadBoardData]); useEffect(() => { if (info?.owner?.id !== undefined) checkOwner(info?.owner?.id, setIsOwner); }, [info?.owner?.id, checkOwner, setIsOwner]); const modalCrTask = (categori) => () => { setCrTask(!crTask); setTaskCategori(categori); setTaskTitle(''); setTaskDescription(''); } const modalCrCateg = () => { setCrCateg(!crCateg); setCategoryTitle(''); } const modalEditBoard = () => { setEdBoard(!edBoard); setBoardTitle(info.title); setBoardDescription(info.description); } const modalEditTask = (task, id_categ) => () => { setEdTask(!edTask); setTaskCategori(id_categ); setEditedTask(task); setTaskTitle(task.title); setTaskDescription(task.description); setTaskPosition(task.position); setTaskCategory(task.category_id); //setAssignedMember(task.assigned_users.id) } const modalEditCateg = (categ) => () => { setEdCateg(!edCateg); setEditedCateg(categ); setCategoryTitle(categ.title); setCategoryPosition(categ.position); } const modalDelTask = () => { setDelTask(!delTask); } const modalDelCateg = () => { setDelCateg(!delCateg); } const modalAssignMember = (action) => () => { setAsgnMember(!asgnMember); setAssignAction(action) } const modalAddMember = () => { setAddMemb(!addMemb); } const modalDeleteBoards = () => { setDelBoards(!delBoards); } const modalQuitMember = () => { setQtMember(!qtMember); } const handleCreateCategory = async (e) => { e.preventDefault(); await createCategory(categoryTitle, modalCrCateg); }; const handleCreateTask = async (e) => { e.preventDefault(); await createTask(taskCategori, taskTitle, taskDescription, modalCrTask); }; const handleEditBoard = async (e) => { e.preventDefault(); await editBoard(id, boardTitle, boardDescription, modalEditBoard); }; const handleEditCategory = async (e) => { e.preventDefault(); await editCategory(editedCateg.id, categoryTitle, modalEditCateg); }; const handleEditTask = async (e) => { e.preventDefault(); await editTask(editedTask.id, taskTitle, taskDescription, taskCategory, modalEditTask); }; const handleDeleteTask = async (e) => { e.preventDefault(); await deleteTask(editedTask.id, modalDelTask, modalEditTask); }; const handleDeleteCategory = async (e) => { e.preventDefault(); await deleteCategory(editedCateg.id, modalDelCateg, modalEditCateg); }; const handleAssignMember = async (e) => { e.preventDefault(); await assignMember(editedTask.id, assignedMember, assignAction, modalAssignMember); }; const handleAddMember = async (e) => { e.preventDefault(); await addMember(addedUsername, id, modalAddMember); }; const handleDeleteBoards = async (e) => { e.preventDefault(); await deleteBoards(id, modalDeleteBoards); }; const handleQuitMember = async (e) => { e.preventDefault(); await quitMember(id, modalQuitMember); }; return (
{ error &&
{error}
}

{info.title}

Участники: В разработке

Владелец: {" "+info.owner?.display_name}

Описание: {info.description ? info.description : 'Отсутствует'}

{loading ? ( <> ) : isOwner ? ( <> ) : ( <> )}
{categories.map((category) => (

Позиция: {category.position}

Задач: {category.tasks.length}

{category.tasks.length > 0 ? ( category.tasks.map((task) => ( )) ) : (

Нет задач

)}
))} {categories.length < 10 ? (
) : ( <> )}
{crCateg && (

Новая категория

setCategoryTitle(e.target.value)} required />
)} {crTask && (

Новая задача

setTaskTitle(e.target.value)} required /> setTaskDescription(e.target.value)} />
)} {edBoard && (

Изменение доски

setBoardTitle(e.target.value)} required /> setBoardDescription(e.target.value)} />
)} {edCateg && (

Изменение категории

setCategoryTitle(e.target.value)} required />
)} {edTask && (

Изменение задачи

setTaskTitle(e.target.value)} required /> setTaskDescription(e.target.value)} required />
)} {delTask && (

Удаление задачи

)} {delCateg && (

Удаление категории

)} {delBoards && (

Удаление доски

)} {addMemb && (

Добавление участников

setAddedUsername(e.target.value)} />
)} {asgnMember && (
{assignAction ? (

Назначение пользователя

) : (

Снятие пользователя

)}
)} {qtMember && (

Покинуть доску

)}
); } export default KBBoard;