co2 galvo owner test
This commit is contained in:
parent
39d9723e23
commit
eea0c52ea4
1 changed files with 15 additions and 15 deletions
|
|
@ -10,6 +10,7 @@ export default function CO2GalvoSettingDetailPage() {
|
|||
const [setting, setSetting] = useState<any>(null);
|
||||
const [loading, setLoading] = useState(true);
|
||||
|
||||
// claim UI state
|
||||
const [claimBusy, setClaimBusy] = useState(false);
|
||||
const [claimMsg, setClaimMsg] = useState<string | null>(null);
|
||||
const [claimErr, setClaimErr] = useState<string | null>(null);
|
||||
|
|
@ -24,7 +25,7 @@ export default function CO2GalvoSettingDetailPage() {
|
|||
"submission_id",
|
||||
"setting_title",
|
||||
"uploader",
|
||||
// ✅ request username explicitly
|
||||
// request owner explicitly (username is what we display)
|
||||
"owner.id",
|
||||
"owner.username",
|
||||
"setting_notes",
|
||||
|
|
@ -45,7 +46,7 @@ export default function CO2GalvoSettingDetailPage() {
|
|||
"lens_apt.name",
|
||||
"lens_exp.name",
|
||||
"focus",
|
||||
// ✅ handle string-or-relation
|
||||
// laser software can be string or relation
|
||||
"laser_soft",
|
||||
"laser_soft.name",
|
||||
"repeat_all",
|
||||
|
|
@ -67,15 +68,15 @@ 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 username; fall back to id or uploader (just in case)
|
||||
const ownerName = (row: any) =>
|
||||
row?.owner?.username ?? (row?.owner?.id ? String(row.owner.id) : null) ?? null;
|
||||
// owner username (what Directus returns when requesting owner.username)
|
||||
const ownerUsername: string | null =
|
||||
(setting?.owner && setting.owner.username) ? String(setting.owner.username) : null;
|
||||
|
||||
// ✅ show string or relation.name
|
||||
const softwareLabel =
|
||||
typeof setting.laser_soft === "object"
|
||||
? setting.laser_soft?.name ?? "—"
|
||||
: setting.laser_soft ?? "—";
|
||||
// show string or relation.name
|
||||
const softwareLabel: string =
|
||||
typeof setting?.laser_soft === "object"
|
||||
? (setting.laser_soft?.name ?? "—")
|
||||
: (setting?.laser_soft ?? "—");
|
||||
|
||||
const formatBoolean = (val: any) =>
|
||||
val ? "Enabled" : val === false ? "Disabled" : "—";
|
||||
|
|
@ -97,7 +98,7 @@ export default function CO2GalvoSettingDetailPage() {
|
|||
return (
|
||||
<p key={key} className="text-sm">
|
||||
<strong>{label}:</strong>{" "}
|
||||
{typeof value === "boolean" ? formatBoolean(value) : value || "—"}
|
||||
{typeof value === "boolean" ? formatBoolean(value) : value ?? "—"}
|
||||
</p>
|
||||
);
|
||||
})}
|
||||
|
|
@ -147,8 +148,6 @@ export default function CO2GalvoSettingDetailPage() {
|
|||
}
|
||||
};
|
||||
|
||||
const owner = ownerName(setting);
|
||||
|
||||
return (
|
||||
<div className="p-6 max-w-7xl mx-auto">
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-4 mb-6">
|
||||
|
|
@ -159,14 +158,15 @@ 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>{" "}
|
||||
<span>{ownerUsername ?? "—"}</span>
|
||||
</p>
|
||||
<p>
|
||||
<strong>Uploader:</strong> {setting.uploader || "—"}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{!owner && (
|
||||
{!ownerUsername && (
|
||||
<div className="flex items-center gap-2">
|
||||
<button
|
||||
onClick={onClaim}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue