mirror of
https://github.com/Sea-Haven-Industries/shoc-frontend-new.git
synced 2026-10-01 09:43:11 +00:00
Keep Flag, comments, and extra docs writable after completion, and hide the completed status menu.
52 lines
1.8 KiB
TypeScript
52 lines
1.8 KiB
TypeScript
export function isWorkOrderCanceled(status: string | null | undefined): boolean {
|
|
return status === "Canceled" || status === "Cancelled";
|
|
}
|
|
|
|
export function isWorkOrderCompleted(status: string | null | undefined): boolean {
|
|
return status === "Completed" || status === "Done";
|
|
}
|
|
|
|
export function isWorkOrderCoreLocked(status: string | null | undefined): boolean {
|
|
return isWorkOrderCompleted(status);
|
|
}
|
|
|
|
export function isWorkOrderFullyLocked(status: string | null | undefined): boolean {
|
|
return isWorkOrderCanceled(status);
|
|
}
|
|
|
|
export function canMutateWorkOrderFlag(status: string | null | undefined): boolean {
|
|
return !isWorkOrderFullyLocked(status);
|
|
}
|
|
|
|
export function canMutateWorkOrderComments(status: string | null | undefined): boolean {
|
|
return !isWorkOrderFullyLocked(status);
|
|
}
|
|
|
|
export function canMutateWorkOrderExtraDocs(status: string | null | undefined): boolean {
|
|
return !isWorkOrderFullyLocked(status);
|
|
}
|
|
|
|
const COMPLETED_BOARD_PATCH_KEYS = new Set(["flagColor"]);
|
|
|
|
/**
|
|
* Board PATCH policy for Completed: only `flagColor`. Comments and Extra Docs use
|
|
* dedicated endpoints (`canMutateWorkOrderComments` / `canMutateWorkOrderExtraDocs`).
|
|
*/
|
|
export function canApplyWorkOrderTablePatch(
|
|
status: string | null | undefined,
|
|
patch: Record<string, unknown>,
|
|
): boolean {
|
|
if (isWorkOrderFullyLocked(status)) {
|
|
return false;
|
|
}
|
|
if (!isWorkOrderCoreLocked(status)) {
|
|
return true;
|
|
}
|
|
const keys = Object.keys(patch);
|
|
return keys.length > 0 && keys.every((key) => COMPLETED_BOARD_PATCH_KEYS.has(key));
|
|
}
|
|
|
|
/** Completion document / completion-media surface — not Extra Docs or comments. */
|
|
export function isWorkOrderCompletionSurfaceReadOnly(status: string | null | undefined): boolean {
|
|
return isWorkOrderFullyLocked(status) || isWorkOrderCoreLocked(status);
|
|
}
|