track time
This commit is contained in:
@@ -10,18 +10,13 @@ import HeaderWorkspace from "./components/HeaderWorkspace";
|
||||
import TaskDetailModal from "./components/task-detail/TaskDetailModal";
|
||||
import { useGetProject } from "./project/hooks/useProjectData";
|
||||
import { useUpdateTaskPhase } from "./task-phase/hooks/useTaskPhaseData";
|
||||
import { useChangeTaskPhase, useChangeTaskPriority } from "./task/hooks/useTaskData";
|
||||
import type { TaskPhaseItemType } from "./task-phase/types/TaskPhaseTypes";
|
||||
import { useChangeTaskPhase, useChangeTaskPriority } from "./task/hooks/useTaskData";
|
||||
import type { Column as ColumnType, Task } from "./types";
|
||||
import { getPriorityDestinationTaskId } from "./utils/getPriorityDestinationTaskId";
|
||||
import { reorderColumns } from "./utils/reorderColumns";
|
||||
import { reorderTaskItems } from "./utils/reorderTaskItems";
|
||||
import {
|
||||
getTaskPhaseItems,
|
||||
insertTaskPhaseItem,
|
||||
type TasksByTaskPhaseInfiniteData,
|
||||
updateTaskPhaseItems,
|
||||
} from "./utils/taskPhaseQueryCache";
|
||||
import { getTaskPhaseItems, insertTaskPhaseItem, updateTaskPhaseItems, type TasksByTaskPhaseInfiniteData } from "./utils/taskPhaseQueryCache";
|
||||
|
||||
const Workspace: FC = () => {
|
||||
const queryClient = useQueryClient();
|
||||
@@ -68,18 +63,13 @@ const Workspace: FC = () => {
|
||||
setDraggedTask(null);
|
||||
|
||||
if (!columnChanged) {
|
||||
const previousData = queryClient.getQueryData<TasksByTaskPhaseInfiniteData>([
|
||||
"tasks-by-task-phase",
|
||||
columnId,
|
||||
]);
|
||||
const previousData = queryClient.getQueryData<TasksByTaskPhaseInfiniteData>(["tasks-by-task-phase", columnId]);
|
||||
const currentItems = getTaskPhaseItems(previousData);
|
||||
const destTaskId = getPriorityDestinationTaskId(currentItems, activeTask.id, index);
|
||||
|
||||
if (!destTaskId) return;
|
||||
|
||||
queryClient.setQueryData<TasksByTaskPhaseInfiniteData>(["tasks-by-task-phase", columnId], (current) =>
|
||||
updateTaskPhaseItems(current, (items) => reorderTaskItems(items, activeTask.id, index)),
|
||||
);
|
||||
queryClient.setQueryData<TasksByTaskPhaseInfiniteData>(["tasks-by-task-phase", columnId], (current) => updateTaskPhaseItems(current, (items) => reorderTaskItems(items, activeTask.id, index)));
|
||||
|
||||
changeTaskPriority.mutate(
|
||||
{ srcId: activeTask.id, destId: destTaskId, taskPhaseId: columnId, projectId },
|
||||
@@ -95,41 +85,34 @@ const Workspace: FC = () => {
|
||||
return;
|
||||
}
|
||||
|
||||
const previousSource = queryClient.getQueryData<TasksByTaskPhaseInfiniteData>([
|
||||
"tasks-by-task-phase",
|
||||
sourceColumnId,
|
||||
]);
|
||||
const previousDest = queryClient.getQueryData<TasksByTaskPhaseInfiniteData>([
|
||||
"tasks-by-task-phase",
|
||||
columnId,
|
||||
]);
|
||||
const previousSource = queryClient.getQueryData<TasksByTaskPhaseInfiniteData>(["tasks-by-task-phase", sourceColumnId]);
|
||||
const previousDest = queryClient.getQueryData<TasksByTaskPhaseInfiniteData>(["tasks-by-task-phase", columnId]);
|
||||
|
||||
queryClient.setQueryData<TasksByTaskPhaseInfiniteData>(["tasks-by-task-phase", sourceColumnId], (current) =>
|
||||
updateTaskPhaseItems(current, (items) => items.filter((task) => task.id !== activeTask.id)),
|
||||
);
|
||||
|
||||
queryClient.setQueryData<TasksByTaskPhaseInfiniteData>(["tasks-by-task-phase", columnId], (current) =>
|
||||
insertTaskPhaseItem(current, {
|
||||
id: activeTask.id,
|
||||
title: activeTask.title,
|
||||
taskPhaseId: columnId,
|
||||
order: index,
|
||||
priority: index,
|
||||
tag: activeTask.tag,
|
||||
dateRange: activeTask.dateRange,
|
||||
color: activeTask.color,
|
||||
attachments: activeTask.attachments,
|
||||
checklistDone: activeTask.checklistDone,
|
||||
checklistTotal: activeTask.checklistTotal,
|
||||
}, index),
|
||||
insertTaskPhaseItem(
|
||||
current,
|
||||
{
|
||||
id: activeTask.id,
|
||||
title: activeTask.title,
|
||||
taskPhaseId: columnId,
|
||||
order: index,
|
||||
priority: index,
|
||||
tag: activeTask.tag,
|
||||
dateRange: activeTask.dateRange,
|
||||
color: activeTask.color,
|
||||
attachments: activeTask.attachments,
|
||||
checklistDone: activeTask.checklistDone,
|
||||
checklistTotal: activeTask.checklistTotal,
|
||||
},
|
||||
index,
|
||||
),
|
||||
);
|
||||
|
||||
const destTaskId = getPriorityDestinationTaskId(
|
||||
getTaskPhaseItems(previousDest),
|
||||
activeTask.id,
|
||||
index,
|
||||
false,
|
||||
);
|
||||
const destTaskId = getPriorityDestinationTaskId(getTaskPhaseItems(previousDest), activeTask.id, index, false);
|
||||
|
||||
if (selectedTask?.id === activeTask.id) {
|
||||
setSelectedTask({ ...activeTask, columnId });
|
||||
@@ -214,16 +197,10 @@ const Workspace: FC = () => {
|
||||
);
|
||||
};
|
||||
|
||||
const nextColumnOrder = columns.length
|
||||
? Math.max(...columns.map((column) => column.order ?? 0)) + 1
|
||||
: 1;
|
||||
const nextColumnOrder = columns.length ? Math.max(...columns.map((column) => column.order ?? 0)) + 1 : 1;
|
||||
|
||||
const handleColumnCreated = (phase: TaskPhaseItemType) => {
|
||||
setColumns((prev) =>
|
||||
[...prev, { id: phase.id, title: phase.name, color: phase.color, order: phase.order }].sort(
|
||||
(a, b) => (a.order ?? 0) - (b.order ?? 0),
|
||||
),
|
||||
);
|
||||
setColumns((prev) => [...prev, { id: phase.id, title: phase.name, color: phase.color, order: phase.order }].sort((a, b) => (a.order ?? 0) - (b.order ?? 0)));
|
||||
};
|
||||
|
||||
const handleColumnDeleted = (columnId: string) => {
|
||||
|
||||
Reference in New Issue
Block a user