import { ZONE_META } from "../../entities/zone/model/meta"; import { SPEED_MAX, VESSEL_TYPES } from "../../entities/vessel/model/meta"; import type { VesselTypeCode } from "../../entities/vessel/model/types"; type Props = { selectedType: VesselTypeCode | null; }; export function SpeedProfilePanel({ selectedType }: Props) { const code = selectedType ?? "PT"; const t = VESSEL_TYPES[code]; const segs = t.speedProfile.map((s) => { const left = (s.range[0] / SPEED_MAX) * 100; const width = ((s.range[1] - s.range[0]) / SPEED_MAX) * 100; const showText = width > 8; const text = showText ? `${s.label}${s.primary ? ` ${s.typicalSpeed}kt` : ""}` : ""; return (
{text}
); }); const primary = t.speedProfile.filter((s) => s.primary); return (
{t.icon} {code} {t.name}
{segs}
{[0, 3, 5, 7, 10, 15].map((k) => ( {k} ))}
{primary.map((s) => ( ★{s.label} {s.range[0]}~{s.range[1]}kt ))}
궤적: {t.trajectory} | 수역:{" "} {t.allowedZones.map((z) => ( {ZONE_META[z].label} ))}
); }