submission form cleanup
This commit is contained in:
parent
4a085680ed
commit
d44d8448e7
1 changed files with 72 additions and 44 deletions
|
|
@ -74,7 +74,7 @@ export default function CO2GalvoDetail({ id, editable }: { id: string | number;
|
|||
}
|
||||
const yesNo = (v: any) => (v ? "Yes" : "No");
|
||||
|
||||
// 🔧 NEW: always stringify possibly-object options for display
|
||||
// stringify possibly-object options for display
|
||||
const optLabel = (v: any): string => {
|
||||
if (v == null) return "—";
|
||||
if (typeof v === "string" || typeof v === "number") return String(v);
|
||||
|
|
@ -196,7 +196,7 @@ export default function CO2GalvoDetail({ id, editable }: { id: string | number;
|
|||
|
||||
const isMine = meId && ownerId ? meId === ownerId : false;
|
||||
|
||||
// Small field renderer (label on top, value below). Accepts React nodes.
|
||||
// Small field renderer (label on top, value below)
|
||||
const Field = ({ label, value, suffix }: { label: string; value: React.ReactNode | string | number | null | undefined; suffix?: string }) => {
|
||||
const primitive =
|
||||
typeof value === "string" || typeof value === "number" || typeof value === "boolean";
|
||||
|
|
@ -214,7 +214,6 @@ export default function CO2GalvoDetail({ id, editable }: { id: string | number;
|
|||
{suffix ? <span className="opacity-70"> {suffix}</span> : null}
|
||||
</>
|
||||
) : (
|
||||
// render React node directly (e.g., Notes paragraph)
|
||||
value
|
||||
)}
|
||||
</div>
|
||||
|
|
@ -353,7 +352,6 @@ export default function CO2GalvoDetail({ id, editable }: { id: string | number;
|
|||
<Field label="Software" value={softName} />
|
||||
<Field label="Laser Source" value={sourceText || "—"} />
|
||||
<Field label="Lens Configuration" value={rec.lens_conf?.name || "—"} />
|
||||
{/* 🔧 patched to stringify */}
|
||||
<Field label="Scan Head Aperture" value={optLabel(rec.lens_apt)} suffix="mm" />
|
||||
<Field label="Beam Expander" value={optLabel(rec.lens_exp)} suffix="x" />
|
||||
<Field
|
||||
|
|
@ -401,8 +399,14 @@ export default function CO2GalvoDetail({ id, editable }: { id: string | number;
|
|||
<Field label="Pass" value={r.pass ?? "—"} />
|
||||
<Field label="Frequency" value={r.frequency ?? "—"} suffix="kHz" />
|
||||
<Field label="Pulse" value={r.pulse ?? "—"} suffix="ns" />
|
||||
</div>
|
||||
|
||||
<div className="grid sm:grid-cols-2 gap-2 items-center">
|
||||
<Field label="Auto Rotate" value={yesNo(r.auto)} />
|
||||
{showIncrement && <Field label="Auto Rotate Increment" value={r.increment ?? "—"} suffix="°" />}
|
||||
</div>
|
||||
|
||||
<div className="flex flex-wrap gap-6">
|
||||
<Field label="Crosshatch" value={yesNo(r.cross)} />
|
||||
<Field label="Flood Fill" value={yesNo(r.flood)} />
|
||||
<Field label="Air Assist" value={yesNo(r.air)} />
|
||||
|
|
@ -418,25 +422,43 @@ export default function CO2GalvoDetail({ id, editable }: { id: string | number;
|
|||
<section className="space-y-3">
|
||||
<h2 className="text-lg font-semibold">Line Settings</h2>
|
||||
<div className="grid md:grid-cols-2 gap-3">
|
||||
{rec.line_settings!.map((r: any, i: number) => (
|
||||
<div key={i} className="border rounded p-3 space-y-2">
|
||||
<div className="font-medium">{r.name || `Line ${i + 1}`}</div>
|
||||
<div className="grid sm:grid-cols-2 gap-2">
|
||||
<Field label="Power" value={r.power ?? "—"} suffix="%" />
|
||||
<Field label="Speed" value={r.speed ?? "—"} suffix="mm/s" />
|
||||
<Field label="Frequency" value={r.frequency ?? "—"} suffix="kHz" />
|
||||
<Field label="Pulse" value={r.pulse ?? "—"} suffix="ns" />
|
||||
<Field label="Pass" value={r.pass ?? "—"} />
|
||||
<Field label="Step" value={r.step ?? "—"} />
|
||||
<Field label="Size" value={r.size ?? "—"} />
|
||||
<Field label="Perf" value={yesNo(r.perf)} />
|
||||
<Field label="Cut" value={yesNo(r.cut)} />
|
||||
<Field label="Skip" value={yesNo(r.skip)} />
|
||||
<Field label="Wobble" value={yesNo(r.wobble)} />
|
||||
<Field label="Air Assist" value={yesNo(r.air)} />
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
{rec.line_settings!.map((r: any, i: number) => {
|
||||
const perfEnabled = !!r.perf;
|
||||
const wobbleEnabled = !!r.wobble;
|
||||
return (
|
||||
<div key={i} className="border rounded p-3 space-y-2">
|
||||
<div className="font-medium">{r.name || `Line ${i + 1}`}</div>
|
||||
|
||||
{/* Base fields – match form order */}
|
||||
<div className="grid sm:grid-cols-2 gap-2">
|
||||
<Field label="Frequency" value={r.frequency ?? "—"} suffix="kHz" />
|
||||
<Field label="Pulse" value={r.pulse ?? "—"} suffix="ns" />
|
||||
<Field label="Power" value={r.power ?? "—"} suffix="%" />
|
||||
<Field label="Speed" value={r.speed ?? "—"} suffix="mm/s" />
|
||||
<Field label="Pass" value={r.pass ?? "—"} />
|
||||
</div>
|
||||
|
||||
{/* Perforation row */}
|
||||
<div className="grid sm:grid-cols-3 gap-2 items-center">
|
||||
<Field label="Perforation Mode" value={yesNo(perfEnabled)} />
|
||||
{perfEnabled && <Field label="Cut" value={r.cut ?? "—"} suffix="mm" />}
|
||||
{perfEnabled && <Field label="Skip" value={r.skip ?? "—"} suffix="mm" />}
|
||||
</div>
|
||||
|
||||
{/* Wobble row */}
|
||||
<div className="grid sm:grid-cols-3 gap-2 items-center">
|
||||
<Field label="Wobble" value={yesNo(wobbleEnabled)} />
|
||||
{wobbleEnabled && <Field label="Step" value={r.step ?? "—"} suffix="mm" />}
|
||||
{wobbleEnabled && <Field label="Size" value={r.size ?? "—"} suffix="mm" />}
|
||||
</div>
|
||||
|
||||
{/* Simple toggle */}
|
||||
<div className="flex flex-wrap gap-6">
|
||||
<Field label="Air Assist" value={yesNo(r.air)} />
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
</section>
|
||||
)}
|
||||
|
|
@ -445,27 +467,33 @@ export default function CO2GalvoDetail({ id, editable }: { id: string | number;
|
|||
<section className="space-y-3">
|
||||
<h2 className="text-lg font-semibold">Raster Settings</h2>
|
||||
<div className="grid md:grid-cols-2 gap-3">
|
||||
{rec.raster_settings!.map((r: any, i: number) => (
|
||||
<div key={i} className="border rounded p-3 space-y-2">
|
||||
<div className="font-medium">{r.name || `Raster ${i + 1}`}</div>
|
||||
<div className="grid sm:grid-cols-2 gap-2">
|
||||
<Field label="Type" value={TYPE_LABEL[r.type] || "—"} />
|
||||
<Field label="Dither" value={DITHER_LABEL(r.dither)} />
|
||||
<Field label="Power" value={r.power ?? "—"} suffix="%" />
|
||||
<Field label="Speed" value={r.speed ?? "—"} suffix="mm/s" />
|
||||
<Field label="Interval" value={r.interval ?? "—"} suffix="mm" />
|
||||
<Field label="Pass" value={r.pass ?? "—"} />
|
||||
<Field label="Frequency" value={r.frequency ?? "—"} suffix="kHz" />
|
||||
<Field label="Pulse" value={r.pulse ?? "—"} suffix="ns" />
|
||||
{!!r.halftone_cell && <Field label="Halftone Cell" value={r.halftone_cell} />}
|
||||
{!!r.halftone_angle && <Field label="Halftone Angle" value={r.halftone_angle} />}
|
||||
<Field label="Dot" value={r.dot ?? "—"} />
|
||||
<Field label="Crosshatch" value={yesNo(r.cross)} />
|
||||
<Field label="Inversion" value={yesNo(r.inversion)} />
|
||||
<Field label="Air Assist" value={yesNo(r.air)} />
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
{rec.raster_settings!.map((r: any, i: number) => {
|
||||
const isHalftone = r?.dither === "halftone";
|
||||
return (
|
||||
<div key={i} className="border rounded p-3 space-y-2">
|
||||
<div className="font-medium">{r.name || `Raster ${i + 1}`}</div>
|
||||
<div className="grid sm:grid-cols-2 gap-2">
|
||||
<Field label="Type" value={TYPE_LABEL[r.type] || "—"} />
|
||||
<Field label="Dither" value={DITHER_LABEL(r.dither)} />
|
||||
<Field label="Power" value={r.power ?? "—"} suffix="%" />
|
||||
<Field label="Speed" value={r.speed ?? "—"} suffix="mm/s" />
|
||||
<Field label="Interval" value={r.interval ?? "—"} suffix="mm" />
|
||||
<Field label="Pass" value={r.pass ?? "—"} />
|
||||
<Field label="Frequency" value={r.frequency ?? "—"} suffix="kHz" />
|
||||
<Field label="Pulse" value={r.pulse ?? "—"} suffix="ns" />
|
||||
{isHalftone && <Field label="Halftone Cell" value={r.halftone_cell ?? "—"} />}
|
||||
{isHalftone && <Field label="Halftone Angle" value={r.halftone_angle ?? "—"} />}
|
||||
<Field label="Dot Width Adjustment" value={r.dot ?? "—"} suffix="mm" />
|
||||
</div>
|
||||
|
||||
<div className="flex flex-wrap gap-6">
|
||||
<Field label="Crosshatch" value={yesNo(r.cross)} />
|
||||
<Field label="Inverted" value={yesNo(r.inversion)} />
|
||||
<Field label="Air Assist" value={yesNo(r.air)} />
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
</section>
|
||||
)}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue