Files
jrshikoku/lib/operationLogIcon.ts

61 lines
1.4 KiB
TypeScript

import type { OperationLogs } from "@/lib/CommonTypes";
import {
normalizeIconDisplayMode,
type IconDisplayMode,
} from "@/lib/iconDisplayMode";
type OperationIconPair = {
forward: string;
rear: string;
};
export const resolveOperationIconPair = (
operation: Pick<
OperationLogs,
| "vehicle_img"
| "vehicle_img_right"
| "vehicle_img_hub"
| "vehicle_img_right_hub"
>,
iconDisplayMode: IconDisplayMode,
fallback = "",
): OperationIconPair => {
if (iconDisplayMode === "hub") {
return {
forward: operation.vehicle_img_hub || operation.vehicle_img || fallback,
rear:
operation.vehicle_img_right_hub ||
operation.vehicle_img_hub ||
operation.vehicle_img_right ||
operation.vehicle_img ||
fallback,
};
}
return {
forward: operation.vehicle_img || fallback,
rear: operation.vehicle_img_right || operation.vehicle_img || fallback,
};
};
export const resolveDirectionalOperationIcon = (
operation: Pick<
OperationLogs,
| "vehicle_img"
| "vehicle_img_right"
| "vehicle_img_hub"
| "vehicle_img_right_hub"
>,
iconDisplayModeValue: unknown,
direction: boolean,
fallback = "",
): string => {
const iconDisplayMode = normalizeIconDisplayMode(iconDisplayModeValue);
const { forward, rear } = resolveOperationIconPair(
operation,
iconDisplayMode,
fallback,
);
return direction ? forward || rear : rear || forward;
};