mirror of
https://github.com/maziggy/bambuddy.git
synced 2026-10-18 03:54:17 +02:00
feat: dual external spool support, AMS slot model filtering & pre-population
Backend: - Add dual external spool support for H2D (vt_tray as list: Ext-L/Ext-R) - Add cloud filament ID map endpoint (/cloud/filament-id-map) - Fix RFID spool data erased by periodic AMS updates (skip tag matcher for RFID-tagged trays) - Fix AMS slot config overwrites RFID spool state - Fix K-profile selection corrupts existing profiles on X1C/P1S - Resolve K-profiles filament name via cloud filament ID map - Update print scheduler and usage tracker for dual external spools Frontend: - Add printer model filtering to ConfigureAmsSlotModal (cloud/local/builtin presets filtered by @BBL model suffix and compatible_printers) - Add pre-population for configured slots (preset, color, K-profile) - Add K-Profiles view with accurate filament name resolution - Internationalize all ConfigureAmsSlotModal strings (en/de/fr/it/ja — 21 keys) - Add 5 new ConfigureAmsSlotModal tests (model filtering, pre-selection, color pre-population, i18n) - Update PrintersPage for dual external spool rendering Docs: - Update CHANGELOG, README, website features, and wiki AMS docs
This commit is contained in:
@@ -62,15 +62,17 @@ export function AssignSpoolModal({ isOpen, onClose, printerId, amsId, trayId, tr
|
||||
|
||||
if (!isOpen) return null;
|
||||
|
||||
// Filter out Bambu Lab spools (identified by RFID tag_uid or tray_uuid)
|
||||
// and spools already assigned to other slots
|
||||
// Filter out spools already assigned to other slots
|
||||
const assignedSpoolIds = new Set(
|
||||
(assignments || [])
|
||||
.filter(a => !(a.printer_id === printerId && a.ams_id === amsId && a.tray_id === trayId))
|
||||
.map(a => a.spool_id)
|
||||
);
|
||||
// External slots (amsId 254 or 255) have no RFID reader, so show all spools.
|
||||
// AMS slots only show manual spools (no tag_uid or tray_uuid).
|
||||
const isExternalSlot = amsId === 254 || amsId === 255;
|
||||
const manualSpools = spools?.filter((spool: InventorySpool) =>
|
||||
!spool.tag_uid && !spool.tray_uuid && !assignedSpoolIds.has(spool.id)
|
||||
!assignedSpoolIds.has(spool.id) && (isExternalSlot || (!spool.tag_uid && !spool.tray_uuid))
|
||||
);
|
||||
|
||||
const filteredSpools = manualSpools?.filter((spool: InventorySpool) => {
|
||||
|
||||
Reference in New Issue
Block a user