co2 galvo owner test

This commit is contained in:
makearmy 2025-10-01 18:11:38 -04:00
parent 8219615591
commit 8b9987c0a0

View file

@ -25,16 +25,14 @@ export default function CO2GalvoSettingDetailPage() {
"submission_id",
"setting_title",
"uploader",
// ✅ Owner (M2O) — request username explicitly
// ✅ fetch username directly
"owner.id",
"owner.username",
// Content & assets
"setting_notes",
"photo.filename_disk",
"photo.title",
"screen.filename_disk",
"screen.title",
// Denormalized relations / fields
"mat.name",
"mat_coat.name",
"mat_color.name",
@ -42,14 +40,15 @@ export default function CO2GalvoSettingDetailPage() {
"mat_thickness",
"source.make",
"source.model",
// ✅ laser_soft is a STRING, not a relation
"laser_soft",
"lens.field_size",
"lens.focal_length",
"lens_conf.name",
"lens_apt.name",
"lens_exp.name",
"focus",
// ✅ handle both shapes
"laser_soft",
"laser_soft.name",
"repeat_all",
"fill_settings",
"line_settings",
@ -69,12 +68,14 @@ export default function CO2GalvoSettingDetailPage() {
if (loading) return <p className="p-6">Loading setting...</p>;
if (!setting) return <p className="p-6">Setting not found.</p>;
// ✅ Prefer the owner's username (string). Return null if absent so claim UI shows.
const ownerName = (row: any) => {
const o = row?.owner;
if (!o) return null;
return o.username || null;
};
// ✅ prefer username
const ownerName = (row: any) => row?.owner?.username ?? null;
// Render “name” if relation, or raw string if the field is plain text.
const softwareLabel =
typeof setting.laser_soft === "object"
? setting.laser_soft?.name ?? "—"
: setting.laser_soft ?? "—";
const formatBoolean = (val: any) =>
val ? "Enabled" : val === false ? "Disabled" : "—";
@ -109,7 +110,6 @@ export default function CO2GalvoSettingDetailPage() {
);
};
// ✅ Point searches back to the list route under /settings
const openSearchInNewTab = (value: string) => {
if (!value || typeof window === "undefined") return;
const url = new URL("/settings/co2-galvo", window.location.origin);
@ -161,8 +161,7 @@ export default function CO2GalvoSettingDetailPage() {
<div className="space-y-1 text-sm text-muted-foreground mb-3">
<p>
<strong>Owner:</strong>{" "}
{owner ? <span>{owner}</span> : <span></span>}
<strong>Owner:</strong> {owner ? <span>{owner}</span> : <span></span>}
</p>
<p>
<strong>Uploader:</strong> {setting.uploader || "—"}
@ -178,17 +177,12 @@ export default function CO2GalvoSettingDetailPage() {
>
{claimBusy ? "Submitting…" : "Claim this setting"}
</button>
{claimMsg && (
<span className="text-green-500 text-sm">{claimMsg}</span>
)}
{claimErr && (
<span className="text-red-500 text-sm">{claimErr}</span>
)}
{claimMsg && <span className="text-green-500 text-sm">{claimMsg}</span>}
{claimErr && <span className="text-red-500 text-sm">{claimErr}</span>}
</div>
)}
</div>
{/* ✅ Back link to list route */}
<a
href="/settings/co2-galvo"
className="inline-block mt-2 px-4 py-2 bg-accent text-background rounded-md text-sm self-start"
@ -237,12 +231,8 @@ export default function CO2GalvoSettingDetailPage() {
{setting.mat_coat?.name || "—"}
</span>
</p>
<p>
<strong>Color:</strong> {setting.mat_color?.name || "—"}
</p>
<p>
<strong>Opacity:</strong> {setting.mat_opacity?.opacity || "—"}
</p>
<p><strong>Color:</strong> {setting.mat_color?.name || "—"}</p>
<p><strong>Opacity:</strong> {setting.mat_opacity?.opacity || "—"}</p>
<p>
<strong>Thickness:</strong>{" "}
{setting.mat_thickness ? `${setting.mat_thickness} mm` : "Not Applicable"}
@ -253,20 +243,13 @@ export default function CO2GalvoSettingDetailPage() {
{/* Setup */}
<div className="card bg-card p-4">
<h2 className="text-xl font-semibold mb-2">Setup</h2>
{/* ✅ laser_soft is a string field */}
<p>
<strong>Software:</strong> {setting.laser_soft || "—"}
</p>
<p>
<strong>Repeat All (global):</strong> {setting.repeat_all ?? "—"}
</p>
<p className="mt-4">
<strong>Focus:</strong> {setting.focus ?? "—"} mm
</p>
<p><strong>Software:</strong> {softwareLabel}</p>
<p><strong>Repeat All (global):</strong> {setting.repeat_all ?? "—"}</p>
<p className="mt-4"><strong>Focus:</strong> {setting.focus ?? "—"} mm</p>
<small>-Values Focus Closer | +Values Focus Further</small>
</div>
{/* Laser (screenshot left, specs right; heading aligned above specs) */}
{/* Laser */}
<div className="card bg-card p-4">
<div className="grid grid-cols-1 md:grid-cols-2 gap-4 items-start">
<div className="flex justify-center">
@ -292,9 +275,7 @@ export default function CO2GalvoSettingDetailPage() {
<div>
<h2 className="text-xl font-semibold mb-2">Laser</h2>
<p>
<strong>Source Make:</strong> {setting.source?.make || "—"}
</p>
<p><strong>Source Make:</strong> {setting.source?.make || "—"}</p>
<p>
<strong>Source Model:</strong>{" "}
<span
@ -314,15 +295,9 @@ export default function CO2GalvoSettingDetailPage() {
</span>{" "}
mm | {setting.lens?.focal_length || "—"}
</p>
<p>
<strong>Lens Config:</strong> {setting.lens_conf?.name || "—"}
</p>
<p>
<strong>Aperture Type:</strong> {setting.lens_apt?.name || "—"}
</p>
<p>
<strong>Expansion Type:</strong> {setting.lens_exp?.name || "—"}
</p>
<p><strong>Lens Config:</strong> {setting.lens_conf?.name || "—"}</p>
<p><strong>Aperture Type:</strong> {setting.lens_apt?.name || "—"}</p>
<p><strong>Expansion Type:</strong> {setting.lens_exp?.name || "—"}</p>
</div>
</div>
</div>