From f84e5ba1731290a53507680f8913b89e08560fb0 Mon Sep 17 00:00:00 2001 From: Dakota G <13515931+shrunbr@users.noreply.github.com> Date: Mon, 13 Apr 2026 01:26:46 -0500 Subject: [PATCH] feat: Shows vendor name in Spoolman Link Modal (#958) * Add filament_vendor field to UnlinkedSpool model and populate from API response * Add filament_vendor field to UnlinkedSpool interface * Enhance LinkSpoolModal to include filament_vendor in search and display --- backend/app/api/routes/spoolman.py | 2 ++ frontend/src/api/client.ts | 1 + frontend/src/components/LinkSpoolModal.tsx | 2 ++ 3 files changed, 5 insertions(+) diff --git a/backend/app/api/routes/spoolman.py b/backend/app/api/routes/spoolman.py index d7005aed7..f7fb53ff3 100644 --- a/backend/app/api/routes/spoolman.py +++ b/backend/app/api/routes/spoolman.py @@ -571,6 +571,7 @@ class UnlinkedSpool(BaseModel): id: int filament_name: str | None + filament_vendor: str | None filament_material: str | None filament_color_hex: str | None remaining_weight: float | None @@ -613,6 +614,7 @@ async def get_unlinked_spools( UnlinkedSpool( id=spool["id"], filament_name=filament.get("name"), + filament_vendor=(filament.get("vendor") or {}).get("name"), filament_material=filament.get("material"), filament_color_hex=filament.get("color_hex"), remaining_weight=spool.get("remaining_weight"), diff --git a/frontend/src/api/client.ts b/frontend/src/api/client.ts index da8e2d3e9..cffff3e16 100644 --- a/frontend/src/api/client.ts +++ b/frontend/src/api/client.ts @@ -1981,6 +1981,7 @@ export interface SpoolmanSyncResult { export interface UnlinkedSpool { id: number; filament_name: string | null; + filament_vendor: string | null; filament_material: string | null; filament_color_hex: string | null; remaining_weight: number | null; diff --git a/frontend/src/components/LinkSpoolModal.tsx b/frontend/src/components/LinkSpoolModal.tsx index d1c471761..d3f43ffdb 100644 --- a/frontend/src/components/LinkSpoolModal.tsx +++ b/frontend/src/components/LinkSpoolModal.tsx @@ -38,6 +38,7 @@ export function LinkSpoolModal({ isOpen, onClose, tagUid, trayUuid, printerId, a const q = search.toLowerCase(); return ( (s.filament_name && s.filament_name.toLowerCase().includes(q)) || + (s.filament_vendor && s.filament_vendor.toLowerCase().includes(q)) || (s.filament_material && s.filament_material.toLowerCase().includes(q)) || String(s.id).includes(q) ); @@ -131,6 +132,7 @@ export function LinkSpoolModal({ isOpen, onClose, tagUid, trayUuid, printerId, a {spool.filament_name || t('spoolman.spoolId')}
+ {spool.filament_vendor ? `${spool.filament_vendor} ยท ` : ''} {spool.filament_material || 'Unknown'} · #{spool.id}