63 lines
1.9 KiB
TypeScript
63 lines
1.9 KiB
TypeScript
import {
|
|
buildAllocationMovedSnapshot,
|
|
requiresAllocationFragmentExtraction,
|
|
type AllocationMovedSnapshotLike,
|
|
} from "./timelineAllocationFinalize.js";
|
|
|
|
type AllocationActionLike = {
|
|
allocationId: string | null;
|
|
mutationAllocationId: string | null;
|
|
projectId: string | null;
|
|
projectName: string | null;
|
|
scope: "allocation" | "segment";
|
|
allocationStartDate: Date | null;
|
|
allocationEndDate: Date | null;
|
|
originalStartDate: Date | null;
|
|
originalEndDate: Date | null;
|
|
currentStartDate: Date | null;
|
|
currentEndDate: Date | null;
|
|
};
|
|
|
|
export function buildAllocationBlockClickInfo(
|
|
alloc: Pick<
|
|
AllocationActionLike,
|
|
"allocationId" | "projectId" | "projectName" | "originalStartDate" | "originalEndDate"
|
|
>,
|
|
): { allocationId: string; projectId: string; projectName: string; startDate: Date; endDate: Date } | null {
|
|
if (!alloc.allocationId || !alloc.originalStartDate || !alloc.originalEndDate) {
|
|
return null;
|
|
}
|
|
|
|
return {
|
|
allocationId: alloc.allocationId,
|
|
projectId: alloc.projectId ?? "",
|
|
projectName: alloc.projectName ?? "",
|
|
startDate: alloc.originalStartDate,
|
|
endDate: alloc.originalEndDate,
|
|
};
|
|
}
|
|
|
|
export function buildAllocationMutationPlan(
|
|
alloc: AllocationActionLike,
|
|
): {
|
|
activeAllocationId: string;
|
|
currentStartDate: Date;
|
|
currentEndDate: Date;
|
|
baseMutationAllocationId: string;
|
|
requiresExtraction: boolean;
|
|
pendingSnapshot: AllocationMovedSnapshotLike | null;
|
|
} | null {
|
|
if (!alloc.allocationId || !alloc.currentStartDate || !alloc.currentEndDate) {
|
|
return null;
|
|
}
|
|
|
|
return {
|
|
activeAllocationId: alloc.allocationId,
|
|
currentStartDate: alloc.currentStartDate,
|
|
currentEndDate: alloc.currentEndDate,
|
|
baseMutationAllocationId: alloc.mutationAllocationId ?? alloc.allocationId,
|
|
requiresExtraction: requiresAllocationFragmentExtraction(alloc),
|
|
pendingSnapshot: buildAllocationMovedSnapshot(alloc),
|
|
};
|
|
}
|