You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
906 B
34 lines
906 B
import { inToCm, toAxelWholeInches } from "@/modules/quote/unit-converter";
|
|
|
|
export type MotherShipDimUnit = "in" | "cm";
|
|
|
|
/** 从 placeholder/label 推断尺寸字段单位 */
|
|
export function inferDimUnitFromFieldHint(hint: string): MotherShipDimUnit {
|
|
const text = hint.trim();
|
|
if (!text) {
|
|
return "in";
|
|
}
|
|
const hasCm = /(?:\bcm\b|厘米|公分)/i.test(text);
|
|
const hasIn = /(?:\bin\b|英寸|inch|inches)/i.test(text);
|
|
if (hasCm && !hasIn) {
|
|
return "cm";
|
|
}
|
|
return "in";
|
|
}
|
|
|
|
/** 内部英寸 → MotherShip 页面实际单位填入值 */
|
|
export function buildDimDisplayForUnit(
|
|
inches: number,
|
|
unit: MotherShipDimUnit,
|
|
): string {
|
|
if (unit === "cm") {
|
|
return formatDimDisplay(inToCm(inches));
|
|
}
|
|
return String(toAxelWholeInches(inches));
|
|
}
|
|
|
|
function formatDimDisplay(value: number): string {
|
|
const rounded = Math.round(value * 100) / 100;
|
|
return String(rounded);
|
|
}
|