- {selectedWorker
- ? selectedWorker.employee.fio
- : "Выберите пользователя"}
-
-
-
Введите название и описание задачи
-
-
setValueTiket(e.target.value)}
- placeholder="Название задачи"
- />
+ )}
+ {modalType === "createTiketProject" && (
+
+
-
- setDescriptionTicket(e.target.value)}
- placeholder="Описание задачи"
- />
-
-
-
- Создать
-
-
- )}
- {modalType === "editProject" && (
-
-
-
Введите новое название
-
- setProjectName(e.target.value)}
- />
-
-
-
-
- Сохранить
-
-
- )}
- {modalType === "createProject" && (
-
-
-
{titleProject}
-
- setNameProject(e.target.value)}
- />
-
-
+
Создать
-
- )}
- {modalType === "addSubtask" && (
-
-
-
- Вы добавляете подзадачу{" "}
-
в колонку(id) задачи "{defautlInput}"
-
-
Введите текст
-
-
+ )}
+ {modalType === "editProject" && (
+
+
+
Введите новое название
+
+ setProjectName(e.target.value)}
+ />
+
-
-
e.preventDefault()}>
- Добавить
-
-
- )}
- {modalType === "createColumn" && (
-
-
-
Введите название колонки
-
- setValueColumn(e.target.value)}
- />
-
-
-
- Создать
-
-
- )}
- {modalType === "editColumn" && (
-
-
-
Введите новое название
-
- dispatch(setColumnName(e.target.value))}
- />
-
-
Приоритет колонки
-
- dispatch(setColumnPriority(e.target.value))}
- />
-
-
-
- Сохранить
-
-
- )}
-
setActive(false)}>
-
+
+ Сохранить
+
+
+ )}
+ {modalType === "createProject" && (
+
+
+
{titleProject}
+
+ setNameProject(e.target.value)}
+ />
+
+
+ Создать
+
+
+
+ )}
+ {modalType === "addSubtask" && (
+
+
+
+ Вы добавляете подзадачу{" "}
+
в колонку(id) задачи "{defautlInput}"
+
+
Введите текст
+
+
+
+
+
e.preventDefault()}
+ >
+ Добавить
+
+
+ )}
+ {modalType === "createColumn" && (
+
+
+
Введите название колонки
+
+ setValueColumn(e.target.value)}
+ />
+
+
+
+ Создать
+
+
+ )}
+ {modalType === "editColumn" && (
+
+
+
Введите новое название
+
+ dispatch(setColumnName(e.target.value))}
+ />
+
+
Приоритет колонки
+
+ dispatch(setColumnPriority(e.target.value))}
+ />
+
+
+
+ Сохранить
+
+
+ )}
+
+
setActive(false)}>
+
+
);
};
diff --git a/src/components/Modal/TrackerModal/TrackerModal.jsx b/src/components/Modal/TrackerModal/TrackerModal.jsx
deleted file mode 100644
index da44c264..00000000
--- a/src/components/Modal/TrackerModal/TrackerModal.jsx
+++ /dev/null
@@ -1,403 +0,0 @@
-import React, { useEffect, useState } from "react";
-import { useDispatch, useSelector } from "react-redux";
-
-import { apiRequest } from "../../../api/request";
-import arrowDown from "../../../assets/icons/arrows/selectArrow.png";
-import {
- addPersonToProject,
- editColumnName,
- editProjectName,
- getColumnId,
- getColumnName,
- getColumnPriority,
- getProjectBoard,
- getValueModalType,
- setColumnName,
- setColumnPriority,
- setProject,
- setProjectBoardFetch,
-} from "../../../redux/projectsTrackerSlice";
-import { urlForLocal } from "../../../utils/helper";
-import "./trackerModal.scss";
-
-export const TrackerModal = ({
- active,
- setActive,
- selectedTab,
- defautlInput,
- titleProject,
- projectId,
- priorityTask,
-}) => {
- const dispatch = useDispatch();
- const projectBoard = useSelector(getProjectBoard);
- const columnName = useSelector(getColumnName);
- const columnId = useSelector(getColumnId);
- const columnPriority = useSelector(getColumnPriority);
-
- const modalType = useSelector(getValueModalType);
- const [projectName, setProjectName] = useState(defautlInput);
- const [valueColumn, setValueColumn] = useState("");
- const [nameProject, setNameProject] = useState("");
- const [valueTiket, setValueTiket] = useState("");
- const [descriptionTicket, setDescriptionTicket] = useState("");
- const [workers, setWorkers] = useState([]);
- const [selectWorkersOpen, setSelectWorkersOpen] = useState(false);
- const [selectedWorker, setSelectedWorker] = useState(null);
-
- function createTab() {
- if (!valueColumn) {
- return;
- }
-
- apiRequest("/project-column/create-column", {
- method: "POST",
- data: {
- project_id: projectBoard.id,
- priority: projectBoard.columns.length
- ? projectBoard.columns.at(-1).priority + 1
- : 1,
- title: valueColumn,
- },
- }).then(() => {
- dispatch(setProjectBoardFetch(projectBoard.id));
- });
- setValueColumn("");
- setActive(false);
- }
-
- function createTiket() {
- if (!valueTiket || !descriptionTicket) {
- return;
- }
-
- apiRequest("/task/create-task", {
- method: "POST",
- data: {
- project_id: projectBoard.id,
- title: valueTiket,
- description: descriptionTicket,
- status: 1,
- user_id: localStorage.getItem("id"),
- column_id: selectedTab,
- priority: priorityTask,
- },
- }).then(() => {
- dispatch(setProjectBoardFetch(projectBoard.id));
- });
-
- setActive(false);
- setValueTiket("");
- setDescriptionTicket("");
- }
-
- function editProject() {
- apiRequest("/project/update", {
- method: "PUT",
- data: {
- project_id: projectId,
- name: projectName,
- },
- }).then(() => {
- setActive(false);
- dispatch(editProjectName({ id: projectId, name: projectName }));
- });
- }
-
- function changeColumnParams() {
- projectBoard.columns.forEach((column) => {
- if (column.id === columnId && column.priority !== columnPriority) {
- const priorityColumns = [
- {
- column_id: column.id,
- priority: Number(columnPriority),
- },
- ];
- for (let i = column.priority; i < columnPriority; i++) {
- const currentColumn = {
- column_id: projectBoard.columns[i].id,
- priority: i,
- };
- priorityColumns.push(currentColumn);
- }
- for (let i = column.priority; i > columnPriority; i--) {
- const currentColumn = {
- column_id: projectBoard.columns[i - 2].id,
- priority: i,
- };
- priorityColumns.push(currentColumn);
- }
- apiRequest("/project-column/set-priority", {
- method: "POST",
- data: {
- project_id: projectBoard.id,
- data: JSON.stringify(priorityColumns),
- },
- }).then(() => {
- dispatch(setProjectBoardFetch(projectBoard.id));
- });
- }
- });
- changeColumnTitle();
- }
-
- function changeColumnTitle() {
- apiRequest("/project-column/update-column", {
- method: "PUT",
- data: {
- column_id: columnId,
- title: columnName,
- },
- }).then(() => {
- setActive(false);
- dispatch(editColumnName({ id: columnId, title: columnName }));
- });
- }
-
- function createProject() {
- if (nameProject === "") {
- return;
- } else {
- apiRequest("/project/create", {
- method: "POST",
- data: {
- user_id: localStorage.getItem("id"),
- name: nameProject,
- status: 19,
- },
- }).then((res) => {
- const result = { ...res, columns: [] };
- dispatch(setProject(result));
- setActive(false);
- setNameProject("");
- });
- }
- }
-
- function addUserToProject() {
- apiRequest("/project/add-user", {
- method: "POST",
- data: {
- user_id: selectedWorker.user_id,
- project_id: projectBoard.id,
- },
- }).then((el) => {
- dispatch(addPersonToProject(el));
- setActive(false);
- setSelectedWorker("");
- setSelectWorkersOpen(false);
- });
- }
-
- useEffect(() => {
- modalType === "addWorker"
- ? apiRequest("/project/my-employee").then((el) => {
- let persons = el.managerEmployees;
- let ids = projectBoard.projectUsers.map((user) => user.user_id);
- setWorkers(
- persons.reduce((acc, cur) => {
- if (!ids.includes(cur.user_id)) acc.push(cur);
- return acc;
- }, [])
- );
- })
- : "";
- }, [active]);
-
- return (
-
{
- setActive(false);
- setSelectWorkersOpen(false);
- }}
- >
-
e.stopPropagation()}>
- {modalType === "addWorker" && (
-
-
-
Добавьте участника
- {/*
*/}
- {/* setEmailWorker(e.target.value)}*/}
- {/* />*/}
- {/*
*/}
-
setSelectWorkersOpen(!selectWorkersOpen)}
- >
-
- {selectedWorker
- ? selectedWorker.employee.fio
- : "Выберите пользователя"}
-
-
- {Boolean(selectWorkersOpen) && (
-
- {Boolean(workers.length) ? (
- workers.map((worker) => {
- if (worker === selectedWorker) {
- return;
- }
- return (
-
{
- setSelectedWorker(worker);
- }}
- >
-
{worker.employee.fio}
-
-
- );
- })
- ) : (
-
Нет пользователей
- )}
-
- )}
-
-
-
-
- )}
- {modalType === "createTiketProject" && (
-
-
-
Введите название и описание задачи
-
- setValueTiket(e.target.value)}
- placeholder="Название задачи"
- />
-
-
- setDescriptionTicket(e.target.value)}
- placeholder="Описание задачи"
- />
-
-
-
-
- )}
- {modalType === "editProject" && (
-
-
-
Введите новое название
-
- setProjectName(e.target.value)}
- />
-
-
-
-
- )}
- {modalType === "createProject" && (
-
-
-
{titleProject}
-
- setNameProject(e.target.value)}
- />
-
-
-
-
- )}
- {modalType === "addSubtask" && (
-
-
-
- Вы добавляете подзадачу{" "}
-
в колонку(id) задачи "{defautlInput}"
-
-
Введите текст
-
-
-
-
-
-
- )}
- {modalType === "createColumn" && (
-
-
-
Введите название колонки
-
- setValueColumn(e.target.value)}
- />
-
-
-
-
- )}
- {modalType === "editColumn" && (
-
-
-
Введите новое название
-
- dispatch(setColumnName(e.target.value))}
- />
-
-
Приоритет колонки
-
- dispatch(setColumnPriority(e.target.value))}
- />
-
-
-
-
- )}
-
-
setActive(false)}>
-
-
- );
-};
-
-export default TrackerModal;
diff --git a/src/components/UI/ModalTicket/ModalTicket.jsx b/src/components/UI/ModalTicket/ModalTicket.jsx
deleted file mode 100644
index 973a46fa..00000000
--- a/src/components/UI/ModalTicket/ModalTicket.jsx
+++ /dev/null
@@ -1,571 +0,0 @@
-import React, { useEffect, useState } from "react";
-import { useDispatch } from "react-redux";
-import { Link } from "react-router-dom";
-
-import { apiRequest } from "../../../api/request";
-import archive from "../../../assets/icons/archive.svg";
-import arrow from "../../../assets/icons/arrows/arrowStart.png";
-import fullScreen from "../../../assets/icons/arrows/inFullScreen.svg";
-import category from "../../../assets/icons/category.svg";
-import close from "../../../assets/icons/closeProjectPersons.svg";
-import del from "../../../assets/icons/delete.svg";
-import edit from "../../../assets/icons/edit.svg";
-import file from "../../../assets/icons/fileModal.svg";
-import link from "../../../assets/icons/link.svg";
-import plus from "../../../assets/icons/plus.svg";
-import send from "../../../assets/icons/send.svg";
-import watch from "../../../assets/icons/watch.svg";
-import TrackerModal from "../../../components/Modal/TrackerModal/TrackerModal";
-import TrackerTaskComment from "../../../components/TrackerTaskComment/TrackerTaskComment";
-import {
- modalToggle,
- setProjectBoardFetch,
-} from "../../../redux/projectsTrackerSlice";
-import { getCorrectRequestDate, urlForLocal } from "../../../utils/helper";
-import "./modalTicket.scss";
-
-export const ModalTiсket = ({
- active,
- setActive,
- task,
- projectId,
- projectName,
- projectUsers,
-}) => {
- const dispatch = useDispatch();
- const [addSubtask, setAddSubtask] = useState(false);
- const [editOpen, setEditOpen] = useState(false);
- const [inputsValue, setInputsValue] = useState({
- title: task.title,
- description: task.description,
- comment: "",
- });
- const [comments, setComments] = useState([]);
- const [dropListOpen, setDropListOpen] = useState(false);
- const [dropListMembersOpen, setDropListMembersOpen] = useState(false);
- const [executor, setExecutor] = useState(task.executor);
- const [members, setMembers] = useState(task.taskUsers);
- const [users, setUsers] = useState([]);
- const [timerStart, setTimerStart] = useState(false);
- const [timerInfo, setTimerInfo] = useState({});
- const [currentTimerCount, setCurrentTimerCount] = useState({
- hours: 0,
- minute: 0,
- seconds: 0,
- });
- const [timerId, setTimerId] = useState(null);
-
- function deleteTask() {
- apiRequest("/task/update-task", {
- method: "PUT",
- data: {
- task_id: task.id,
- status: 0,
- },
- }).then(() => {
- setActive(false);
- dispatch(setProjectBoardFetch(projectId));
- });
- }
-
- function editTask() {
- apiRequest("/task/update-task", {
- method: "PUT",
- data: {
- task_id: task.id,
- title: inputsValue.title,
- description: inputsValue.description,
- },
- }).then(() => {
- dispatch(setProjectBoardFetch(projectId));
- });
- }
-
- function createComment() {
- apiRequest("/comment/create", {
- method: "POST",
- data: {
- text: inputsValue.comment,
- entity_type: 2,
- entity_id: task.id,
- },
- }).then((res) => {
- let newComment = res;
- newComment.created_at = new Date();
- newComment.subComments = [];
- setInputsValue((prevValue) => ({ ...prevValue, comment: "" }));
- setComments((prevValue) => [...prevValue, newComment]);
- });
- }
-
- function commentDelete(comment) {
- setComments((prevValue) =>
- prevValue.filter((item) => item.id !== comment.id)
- );
- if (comment.subComments.length) {
- // promiseAll
- comment.subComments.forEach((subComment) => {
- apiRequest("/comment/update", {
- method: "PUT",
- data: {
- comment_id: subComment.id,
- status: 0,
- },
- }).then(() => {});
- });
- }
- }
-
- function addSubComment(commentId, subComment) {
- const addSubComment = comments;
- addSubComment.forEach((comment) => {
- if (comment.id === commentId) {
- comment.subComments.push(subComment);
- }
- });
- setComments(addSubComment);
- }
-
- function subCommentDelete(subComment) {
- const deleteSubComment = comments;
- deleteSubComment.forEach((comment, index) => {
- if (comment.id === subComment.parent_id) {
- deleteSubComment[index].subComments = comment.subComments.filter(
- (item) => item.id !== subComment.id
- );
- }
- });
- setComments([...deleteSubComment]);
- }
-
- function startTaskTimer() {
- apiRequest("/timer/create", {
- method: "POST",
- data: {
- entity_type: 2,
- entity_id: task.id,
- created_at: getCorrectRequestDate(new Date()),
- },
- }).then((res) => {
- setTimerStart(true);
- setTimerInfo(res);
- startTimer();
- });
- }
-
- function stopTaskTimer() {
- apiRequest("/timer/update", {
- method: "PUT",
- data: {
- timer_id: timerInfo.id,
- stopped_at: getCorrectRequestDate(new Date()),
- },
- }).then(() => {
- setTimerStart(false);
- clearInterval(timerId);
- });
- }
-
- function taskExecutor(person) {
- apiRequest("/task/update-task", {
- method: "PUT",
- data: {
- task_id: task.id,
- executor_id: person.user_id,
- },
- }).then((res) => {
- setDropListOpen(false);
- setExecutor(res.executor);
- });
- }
-
- function deleteTaskExecutor() {
- apiRequest("/task/update-task", {
- method: "PUT",
- data: {
- task_id: task.id,
- executor_id: 0,
- },
- }).then(() => {
- setExecutor(null);
- });
- }
-
- function addMember(person) {
- apiRequest("/task/add-user-to-task", {
- method: "POST",
- data: {
- task_id: task.id,
- user_id: person.user_id,
- },
- }).then((res) => {
- setDropListMembersOpen(false);
- setMembers((prevValue) => [...prevValue, res]);
- });
- }
-
- function deleteMember(person) {
- apiRequest("/task/del-user", {
- method: "DELETE",
- data: {
- task_id: task.id,
- user_id: person.user_id,
- },
- }).then(() => {
- setMembers(members.filter((item) => item.user_id !== person.user_id));
- });
- }
-
- useEffect(() => {
- apiRequest(
- `/comment/get-by-entity?entity_type=2&entity_id=${task.id}`
- ).then((res) => {
- const comments = res.reduce((acc, cur) => {
- if (!cur.parent_id) {
- acc.push({ ...cur, subComments: [] });
- } else {
- acc.forEach((item) => {
- if (item.id === cur.parent_id) item.subComments.push(cur);
- });
- }
- return acc;
- }, []);
- setComments(comments);
- });
- apiRequest(`/timer/get-by-entity?entity_type=2&entity_id=${task.id}`).then(
- (res) => {
- let timerSeconds = 0;
- res.length &&
- res.forEach((time) => {
- timerSeconds += time.deltaSeconds;
- setCurrentTimerCount({
- hours: Math.floor(timerSeconds / 60 / 60),
- minute: Math.floor((timerSeconds / 60) % 60),
- seconds: timerSeconds % 60,
- });
- updateTimerHours = Math.floor(timerSeconds / 60 / 60);
- updateTimerMinute = Math.floor((timerSeconds / 60) % 60);
- updateTimerSec = timerSeconds % 60;
- if (!time.stopped_at) {
- setTimerStart(true);
- startTimer();
- setTimerInfo(time);
- }
- });
- }
- );
- }, []);
-
- function startTimer() {
- setTimerId(
- setInterval(() => {
- run();
- }, 1000)
- );
- }
-
- let updateTimerSec = currentTimerCount.seconds,
- updateTimerMinute = currentTimerCount.minute,
- updateTimerHours = currentTimerCount.hours;
-
- function run() {
- updateTimerSec++;
- if (updateTimerSec > 60) {
- updateTimerMinute++;
- updateTimerSec = 0;
- }
- if (updateTimerMinute === 60) {
- updateTimerMinute = 0;
- updateTimerHours++;
- }
-
- return setCurrentTimerCount({
- hours: updateTimerHours,
- minute: updateTimerMinute,
- seconds: updateTimerSec,
- });
- }
-
- function correctTimerTime(time) {
- if (time < 10) return `0${time}`;
- if (time > 10) return time;
- }
-
- useEffect(() => {
- let ids = members.map((user) => user.user_id);
- setUsers(
- projectUsers.reduce((acc, cur) => {
- if (!ids.includes(cur.user_id)) acc.push(cur);
- return acc;
- }, [])
- );
- }, [members]);
-
- return (
-
setActive(false)}
- >
-
e.stopPropagation()}
- >
-
-
-
- Проект: {projectName}
-
-
-
-
-
-
-
Задача
- {editOpen ? (
-
{
- setInputsValue((prevValue) => ({
- ...prevValue,
- title: e.target.value,
- }));
- }}
- />
- ) : (
-
{inputsValue.title}
- )}
-
- {editOpen ? (
-
{
- setInputsValue((prevValue) => ({
- ...prevValue,
- description: e.target.value,
- }));
- }}
- />
- ) : (
-
{inputsValue.description}
- )}
- {/*
*/}
-
-
-
-
-
-
-
- {0}
- Файлов
-
-
-
-
{
- setInputsValue((prevValue) => ({
- ...prevValue,
- comment: e.target.value,
- }));
- }}
- />
-
-
-
- {comments.map((comment) => {
- return (
-
- );
- })}
-
-
-
-
-
-
setActive(false)}>
-
{task.title}
-
Создатель : {task.user?.fio}
-
- {executor ? (
-
-
Исполнитель: {executor.fio}
-
-
deleteTaskExecutor()}
- />
-
- ) : (
-
-
-
Добавить исполнителя
- {dropListOpen && (
-
-
setDropListOpen(false)}
- />
- {projectUsers.map((person) => {
- return (
-
taskExecutor(person)}
- >
-
{person.user.fio}
-
-
- );
- })}
-
- )}
-
- )}
-
- {Boolean(members.length) && (
-
-
Участники:
-
- {members.map((member) => {
- return (
-
-
{member.fio}
-
-
deleteMember(member)}
- />
-
- );
- })}
-
-
- )}
-
-
-
-
Добавить участников
- {dropListMembersOpen && (
-
-
setDropListMembersOpen(false)}
- />
- {users.length ? (
- users.map((person) => {
- return (
-
addMember(person)}
- >
-
{person.user.fio}
-
-
- );
- })
- ) : (
-
Нет пользователей
- )}
-
- )}
-
-
-
-
-
-
-
Длительность :
-
- {correctTimerTime(currentTimerCount.hours)}:
- {correctTimerTime(currentTimerCount.minute)}:
- {correctTimerTime(currentTimerCount.seconds)}
-
-
-
- {timerStart ? (
-
- ) : (
-
- )}
-
-
-
-
{
- if (editOpen) {
- setEditOpen(!editOpen);
- editTask();
- } else {
- setEditOpen(!editOpen);
- }
- }}
- >
-
-
{editOpen ? "сохранить" : "редактировать"}
-
-
-
-
ссылка на проект
-
-
-
-
в архив
-
-
-
-
удалить
-
-
-
-
-
-
-
- );
-};
-
-export default ModalTiсket;
diff --git a/src/components/UI/TicketFullScreen/TicketFullScreen.jsx b/src/components/UI/TicketFullScreen/TicketFullScreen.jsx
deleted file mode 100644
index 6e5f2c59..00000000
--- a/src/components/UI/TicketFullScreen/TicketFullScreen.jsx
+++ /dev/null
@@ -1,528 +0,0 @@
-import React, { useEffect, useState } from "react";
-import { useDispatch, useSelector } from "react-redux";
-import { Link, useNavigate, useParams } from "react-router-dom";
-
-import { Footer } from "@components/Common/Footer/Footer";
-import { Loader } from "@components/Common/Loader/Loader";
-
-import { apiRequest } from "../../../api/request";
-import TrackerTaskComment from "../../../components/TrackerTaskComment/TrackerTaskComment";
-import { getCorrectRequestDate, urlForLocal } from "../../../helper";
-import archive2 from "../../../images/archive.svg";
-import archive from "../../../images/archiveTracker.svg";
-import arrow from "../../../images/arrowCalendar.png";
-import arrow2 from "../../../images/arrowStart.png";
-import close from "../../../images/closeProjectPersons.svg";
-import del from "../../../images/delete.svg";
-import edit from "../../../images/edit.svg";
-import file from "../../../images/fileModal.svg";
-import link from "../../../images/link.svg";
-import plus from "../../../images/plus.svg";
-import send from "../../../images/send.svg";
-import project from "../../../images/trackerProject.svg";
-import tasks from "../../../images/trackerTasks.svg";
-import watch from "../../../images/watch.png";
-import {
- deletePersonOnProject,
- getBoarderLoader,
- getProjectBoard,
- modalToggle,
- setProjectBoardFetch,
- setToggleTab,
-} from "../../../redux/projectsTrackerSlice";
-import TrackerModal from "../../Modal/TrackerModal/TrackerModal";
-import { Navigation } from "../../Navigation/Navigation";
-import { ProfileBreadcrumbs } from "../../ProfileBreadcrumbs/ProfileBreadcrumbs";
-import { ProfileHeader } from "../../ProfileHeader/ProfileHeader";
-import "./ticketFullScreen.scss";
-
-export const TicketFullScreen = () => {
- const [modalAddWorker, setModalAddWorker] = useState(false);
- const ticketId = useParams();
- const dispatch = useDispatch();
- const navigate = useNavigate();
- const projectBoard = useSelector(getProjectBoard);
- const boardLoader = useSelector(getBoarderLoader);
- const [taskInfo, setTaskInfo] = useState({});
- const [editOpen, setEditOpen] = useState(false);
- const [inputsValue, setInputsValue] = useState({});
- const [loader, setLoader] = useState(true);
- const [comments, setComments] = useState([]);
- const [personListOpen, setPersonListOpen] = useState(false);
- const [timerStart, setTimerStart] = useState(false);
- const [timerInfo, setTimerInfo] = useState({});
-
- useEffect(() => {
- apiRequest(`/task/get-task?task_id=${ticketId.id}`).then((taskInfo) => {
- setTaskInfo(taskInfo);
- setInputsValue({
- title: taskInfo.title,
- description: taskInfo.description,
- comment: "",
- });
- apiRequest(
- `/comment/get-by-entity?entity_type=2&entity_id=${taskInfo.id}`
- ).then((res) => {
- const comments = res.reduce((acc, cur) => {
- if (!cur.parent_id) {
- acc.push({ ...cur, subComments: [] });
- } else {
- acc.forEach((item) => {
- if (item.id === cur.parent_id) item.subComments.push(cur);
- });
- }
- return acc;
- }, []);
- setComments(comments);
- });
- taskInfo.timers.forEach((time) => {
- if (!time.stopped_at) {
- setTimerStart(true);
- setTimerInfo(time);
- }
- });
- dispatch(setProjectBoardFetch(taskInfo.project_id));
- setLoader(boardLoader);
- });
- }, []);
-
- function deleteTask() {
- apiRequest("/task/update-task", {
- method: "PUT",
- data: {
- task_id: ticketId.id,
- status: 0,
- },
- }).then(() => {
- navigate(`/tracker/project/${taskInfo.project_id}`);
- });
- }
-
- function editTask() {
- apiRequest("/task/update-task", {
- method: "PUT",
- data: {
- task_id: taskInfo.id,
- title: inputsValue.title,
- description: inputsValue.description,
- },
- }).then(() => {});
- }
-
- function createComment() {
- apiRequest("/comment/create", {
- method: "POST",
- data: {
- text: inputsValue.comment,
- entity_type: 2,
- entity_id: taskInfo.id,
- },
- }).then((res) => {
- let newComment = res;
- newComment.created_at = new Date();
- newComment.subComments = [];
- setInputsValue((prevValue) => ({ ...prevValue, comment: "" }));
- setComments((prevValue) => [...prevValue, newComment]);
- });
- }
-
- function startTaskTimer() {
- apiRequest("/timer/create", {
- method: "POST",
- data: {
- entity_type: 2,
- entity_id: taskInfo.id,
- created_at: getCorrectRequestDate(new Date()),
- },
- }).then((res) => {
- setTimerStart(true);
- setTimerInfo(res);
- });
- }
-
- function stopTaskTimer() {
- apiRequest("/timer/update", {
- method: "PUT",
- data: {
- timer_id: timerInfo.id,
- stopped_at: getCorrectRequestDate(new Date()),
- },
- }).then(() => setTimerStart(false));
- }
-
- function deletePerson(userId) {
- apiRequest("/project/del-user", {
- method: "DELETE",
- data: {
- project_id: projectBoard.id,
- user_id: userId,
- },
- }).then(() => {
- dispatch(deletePersonOnProject(userId));
- });
- }
-
- function commentDelete(comment) {
- setComments((prevValue) =>
- prevValue.filter((item) => item.id !== comment.id)
- );
- if (comment.subComments.length) {
- comment.subComments.forEach((subComment) => {
- apiRequest("/comment/update", {
- method: "PUT",
- data: {
- comment_id: subComment.id,
- status: 0,
- },
- }).then(() => {});
- });
- }
- }
-
- function addSubComment(commentId, subComment) {
- const addSubComment = comments;
- addSubComment.forEach((comment) => {
- if (comment.id === commentId) {
- comment.subComments.push(subComment);
- }
- });
- setComments(addSubComment);
- }
-
- function subCommentDelete(subComment) {
- const deleteSubComment = comments;
- deleteSubComment.forEach((comment, index) => {
- if (comment.id === subComment.parent_id) {
- deleteSubComment[index].subComments = comment.subComments.filter(
- (item) => item.id !== subComment.id
- );
- }
- });
- setComments([...deleteSubComment]);
- }
-
- const toggleTabs = (index) => {
- dispatch(setToggleTab(index));
- };
-
- return (
-
-
-
-
-
-
-
Управление проектами с трекером
-
-
-
-
-
toggleTabs(1)}
- >
-
-
Проекты
-
-
toggleTabs(2)}
- >
-
-
Все мои задачи
-
-
toggleTabs(3)}
- >
-
-
Архив
-
-
- {loader ? (
-
- ) : (
- <>
-
-
-
-
Проект : {projectBoard.name}
-
-
-
-
- {/*
*/}
- {/*
*/}
-
- {projectBoard.projectUsers?.length}
-
-
{
- setPersonListOpen(true);
- }}
- >
- +
-
-
добавить участника
- {personListOpen && (
-
-
setPersonListOpen(false)}
- />
-
- {projectBoard.projectUsers?.length}
- участник
-
-
- В проекте - “{projectBoard.name}”
-
-
- {projectBoard.projectUsers?.map((person) => {
- return (
-
-
-
{person.user.fio}
-
deletePerson(person.user_id)}
- />
-
- );
- })}
-
-
{
- dispatch(modalToggle("addWorker"));
- setModalAddWorker(true);
- setPersonListOpen(false);
- }}
- >
-
+
-
Добавить участников
-
-
- )}
-
-
-
-
Вернуться на проекты
-
-
-
-
-
-
-
-
-
-
Задача
- {editOpen ? (
-
{
- setInputsValue((prevValue) => ({
- ...prevValue,
- title: e.target.value,
- }));
- }}
- />
- ) : (
-
{inputsValue.title}
- )}
-
- {editOpen ? (
-
{
- setInputsValue((prevValue) => ({
- ...prevValue,
- description: e.target.value,
- }));
- }}
- />
- ) : (
-
{inputsValue.description}
- )}
- {/*
*/}
-
-
-
-
-
-
-
- {0}
- Файлов
-
-
-
-
{
- setInputsValue((prevValue) => ({
- ...prevValue,
- comment: e.target.value,
- }));
- }}
- />
-
-
-
- {comments.map((comment) => {
- return (
-
- );
- })}
-
-
-
-
-
-
- Создатель : {taskInfo.user?.fio}
-
-
- {Boolean(taskInfo.taskUsers?.length) &&
- taskInfo.taskUsers.map((worker, index) => {
- return (
-
-
-
{worker.name}
-
- );
- })}
-
-
-
-
- Добавить исполнителя
-
-
-
- Добавить участников
-
-
-
-
-
-
-
Длительность :
-
{"0:00:00"}
-
-
- {timerStart ? (
-
- ) : (
-
- )}
-
-
-
-
{
- if (editOpen) {
- setEditOpen(!editOpen);
- editTask();
- } else {
- setEditOpen(!editOpen);
- }
- }}
- >
-
-
{editOpen ? "сохранить" : "редактировать"}
-
-
-
-
ссылка на проект
-
-
-
-
в архив
-
-
-
-
удалить
-
-
-
-
- >
- )}
-
-
-
- );
-};
-
-export default TicketFullScreen;
diff --git a/src/pages/ProjectTracker/ProjectTracker.js b/src/pages/ProjectTracker/ProjectTracker.js
index 3219ed46..8cc6ed4f 100644
--- a/src/pages/ProjectTracker/ProjectTracker.js
+++ b/src/pages/ProjectTracker/ProjectTracker.js
@@ -28,6 +28,7 @@ import { Footer } from "@components/Common/Footer/Footer";
import { Loader } from "@components/Common/Loader/Loader";
import ModalTicket from "@components/Modal/Tracker/ModalTicket/ModalTicket";
import TrackerModal from "@components/Modal/Tracker/TrackerModal/TrackerModal";
+// import TrackerModal from "@components/Modal/TrackerModal/TrackerModal";
import { Navigation } from "@components/Navigation/Navigation";
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
@@ -296,7 +297,7 @@ export const ProjectTracker = () => {
-
Проект : {projectBoard.name}
+
Проект : {projectBoard.name}