co2 galvo owner test
This commit is contained in:
parent
8219615591
commit
8b9987c0a0
1 changed files with 25 additions and 50 deletions
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue