import React, { useEffect, useState } from "react"; import { useDispatch } from "react-redux"; import { movePositionProjectTask } from "@redux/projectsTrackerSlice"; import { getCorrectDate } from "@utils/calendarHelper"; import { removeLast, urlForLocal } from "@utils/helper"; import TrackerSelectColumn from "@components/TrackerSelectColumn/TrackerSelectColumn"; import commentsBoard from "assets/icons/commentsBoard.svg"; import filesBoard from "assets/icons/filesBoard.svg"; import avatarMok from "assets/images/avatarMok.png"; import "./trackerCardTask.scss"; const TrackerCardTask = ({ task, projectBoard, titleColor, column, openTicket, startWrapperIndexTest, setWrapperHover }) => { const dispatch = useDispatch(); const [taskHover, setTaskHover] = useState({}); const priority = { 2: "Высокий", 1: "Средний", 0: "Низкий" }; const priorityClass = { 2: "high", 1: "middle", 0: "low" }; function dragDropTaskHandler(e, task, column) { e.preventDefault(); if (task.id === startWrapperIndexTest.current.task.id) { return; } const finishTask = column.tasks.indexOf(task); dispatch( movePositionProjectTask({ startTask: startWrapperIndexTest.current.task, finishTask: task, finishIndex: finishTask }) ); } function dragOverTaskHandler(e, task) { e.preventDefault(); if (startWrapperIndexTest.current.task.id === task.id) { return; } setTaskHover((prevState) => ({ [prevState]: false, [task.id]: true })); } function dragStartHandler(e, task, columnId) { startWrapperIndexTest.current = { task: task, index: columnId }; } function dragLeaveTaskHandler() { setTaskHover((prevState) => ({ [prevState]: false })); } function dragEndTaskHandler() { setTaskHover((prevState) => ({ [prevState]: false })); setWrapperHover((prevState) => ({ [prevState]: false })); } useEffect(() => { const tasksHover = {}; const columnHover = {}; if (Object.keys(projectBoard).length) { projectBoard.columns.forEach((column) => { columnHover[column.id] = false; column.tasks.forEach((task) => (tasksHover[task.id] = false)); }); } setWrapperHover(columnHover); setTaskHover(tasksHover); }, [projectBoard]); return (
dragStartHandler(e, task, column.id)} onDragOver={(e) => dragOverTaskHandler(e, task)} onDragLeave={(e) => dragLeaveTaskHandler(e)} onDragEnd={() => dragEndTaskHandler()} onDrop={(e) => dragDropTaskHandler(e, task, column)} onClick={(e) => openTicket(e, task)} >
{ if (window.innerWidth < 985) { window.location.replace(`/tracker/task/${task.id}`); } }} >

{task.title}

{Boolean(task.mark.length) && (
{task.mark.map((tag) => { return (

{tag.slug}

); })}
)}
{typeof task.execution_priority === "number" && (

{priority[task.execution_priority]}
)} {task.dead_line && (

{getCorrectDate(task.dead_line)}
)}
avatar {removeLast(task.executor?.fio) || "Исполнитель не назначен"}
commentsImg {task.comment_count}
filesImg {task.file_count}
item.id !== column.id)} currentColumn={column} task={task} />
); }; export default TrackerCardTask;