61 lines
1.4 KiB
TypeScript
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;
|
|
};
|