This commit is contained in:
@@ -54,7 +54,7 @@ const Column: FC<Props> = ({
|
|||||||
const items = tasksData?.pages.flatMap((page) => page.data?.items ?? []) ?? [];
|
const items = tasksData?.pages.flatMap((page) => page.data?.items ?? []) ?? [];
|
||||||
|
|
||||||
return [...items]
|
return [...items]
|
||||||
.sort((a, b) => (a.order ?? a.priority ?? 0) - (b.order ?? b.priority ?? 0))
|
.sort((a, b) => (a.priority ?? a.order ?? 0) - (b.priority ?? b.order ?? 0))
|
||||||
.map((task, index) => mapTaskItemToTask(task as TaskItemType, column.id, index));
|
.map((task, index) => mapTaskItemToTask(task as TaskItemType, column.id, index));
|
||||||
}, [tasksData?.pages, column.id]);
|
}, [tasksData?.pages, column.id]);
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import type { TaskItemType } from "../types/TaskTypes";
|
|||||||
export const mapTaskItemToTask = (task: TaskItemType, taskPhaseId: string, fallbackOrder: number): Task => ({
|
export const mapTaskItemToTask = (task: TaskItemType, taskPhaseId: string, fallbackOrder: number): Task => ({
|
||||||
id: task.id,
|
id: task.id,
|
||||||
columnId: task.taskPhaseId ?? taskPhaseId,
|
columnId: task.taskPhaseId ?? taskPhaseId,
|
||||||
order: task.order ?? task.priority ?? fallbackOrder,
|
order: task.priority ?? task.order ?? fallbackOrder,
|
||||||
title: task.title,
|
title: task.title,
|
||||||
tag: task.tag ?? "",
|
tag: task.tag ?? "",
|
||||||
dateRange: task.dateRange ?? "",
|
dateRange: task.dateRange ?? "",
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import type { TaskItemType } from "../task/types/TaskTypes";
|
import type { TaskItemType } from "../task/types/TaskTypes";
|
||||||
|
import { getTaskSortOrder } from "./getTaskSortOrder";
|
||||||
const getTaskSortOrder = (task: TaskItemType) => task.order ?? task.priority ?? 0;
|
|
||||||
|
|
||||||
export const getPriorityDestinationTaskId = (
|
export const getPriorityDestinationTaskId = (
|
||||||
items: TaskItemType[],
|
items: TaskItemType[],
|
||||||
@@ -9,16 +8,19 @@ export const getPriorityDestinationTaskId = (
|
|||||||
removeSource = true,
|
removeSource = true,
|
||||||
): string | null => {
|
): string | null => {
|
||||||
const sorted = [...items].sort((a, b) => getTaskSortOrder(a) - getTaskSortOrder(b));
|
const sorted = [...items].sort((a, b) => getTaskSortOrder(a) - getTaskSortOrder(b));
|
||||||
const sourceIndex = sorted.findIndex((item) => item.id === sourceId);
|
|
||||||
|
|
||||||
if (removeSource && sourceIndex === destIndex) return null;
|
if (!removeSource) {
|
||||||
|
if (sorted.length === 0) return null;
|
||||||
const list = removeSource ? sorted.filter((item) => item.id !== sourceId) : sorted;
|
if (destIndex >= sorted.length) return sorted[sorted.length - 1].id;
|
||||||
if (list.length === 0) return null;
|
return sorted[destIndex].id;
|
||||||
|
|
||||||
if (destIndex >= list.length) {
|
|
||||||
return list[list.length - 1].id;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return list[destIndex].id;
|
const sourceIndex = sorted.findIndex((item) => item.id === sourceId);
|
||||||
|
if (sourceIndex === -1 || sourceIndex === destIndex) return null;
|
||||||
|
|
||||||
|
// Dest is the task currently at the drop index (مقصد), not after removing source.
|
||||||
|
const destTask = sorted[destIndex];
|
||||||
|
if (!destTask || destTask.id === sourceId) return null;
|
||||||
|
|
||||||
|
return destTask.id;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
import type { TaskItemType } from "../task/types/TaskTypes";
|
||||||
|
|
||||||
|
export const getTaskSortOrder = (task: Pick<TaskItemType, "priority" | "order">) =>
|
||||||
|
task.priority ?? task.order ?? 0;
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
import type { TaskItemType } from "../task/types/TaskTypes";
|
import type { TaskItemType } from "../task/types/TaskTypes";
|
||||||
|
import { getTaskSortOrder } from "./getTaskSortOrder";
|
||||||
const getTaskSortOrder = (task: TaskItemType) => task.order ?? task.priority ?? 0;
|
|
||||||
|
|
||||||
export const reorderTaskItems = (
|
export const reorderTaskItems = (
|
||||||
tasks: TaskItemType[],
|
tasks: TaskItemType[],
|
||||||
|
|||||||
Reference in New Issue
Block a user