- Fixed bug, where Bambu Lab filament colors not showed correctly

- Added all Bambu Lab filament color tags
This commit is contained in:
maziggy
2026-01-02 09:41:26 +01:00
parent 5b8d24f2ce
commit 019a9822a0
3 changed files with 646 additions and 458 deletions
+252 -64
View File
@@ -63,78 +63,266 @@ import { FilamentHoverCard, EmptySlotHoverCard } from '../components/FilamentHov
import { LinkSpoolModal } from '../components/LinkSpoolModal';
import { useToast } from '../contexts/ToastContext';
// Bambu Lab color code mapping (color suffix from tray_id_name -> color name)
// tray_id_name format: "A00-Y2" where Y2 is the color code
const BAMBU_COLOR_CODES: Record<string, string> = {
// Yellows
'Y0': 'Yellow',
'Y1': 'Savana Yellow',
'Y2': 'Sunflower Yellow',
'Y3': 'Lemon Yellow',
// Oranges
'O0': 'Orange',
'O1': 'Mandarin Orange',
'O2': 'Coral Orange',
// Reds
'R0': 'Red',
'R1': 'Scarlet Red',
'R2': 'Magenta',
'R3': 'Sakura Pink',
'R4': 'Raspberry Red',
// Pinks
'P0': 'Pink',
'P1': 'Sakura Pink',
// Purples
'V0': 'Purple',
'V1': 'Violet',
'V2': 'Lilac Purple',
// Blues
'B0': 'Blue',
'B1': 'Sky Blue',
'B2': 'Navy Blue',
'B3': 'Ice Blue',
'B4': 'Cyan',
// Greens
'G0': 'Green',
'G1': 'Grass Green',
'G2': 'Lime Green',
'G3': 'Mint Green',
'G4': 'Olive Green',
'G5': 'Jungle Green',
'G6': 'Bambu Green',
// Browns
'N0': 'Brown',
'N1': 'Peanut Brown',
'N2': 'Coffee Brown',
'N3': 'Caramel Brown',
// Grays
'A0': 'Gray',
'A1': 'Charcoal Gray',
'A2': 'Silver Gray',
'A3': 'Titan Gray',
// Blacks
'K0': 'Black',
'K1': 'Black',
// Whites
'W0': 'White',
'W1': 'Jade White',
'W2': 'Ivory White',
// Special
'T0': 'Transparent',
'C0': 'Marble',
'X0': 'Bronze',
'X1': 'Gold',
'X2': 'Silver',
// Complete Bambu Lab filament color mapping by tray_id_name
// Source: https://github.com/queengooborg/Bambu-Lab-RFID-Library
const BAMBU_FILAMENT_COLORS: Record<string, string> = {
// PLA Basic (A00)
'A00-W1': 'Jade White',
'A00-P0': 'Beige',
'A00-D2': 'Light Gray',
'A00-Y0': 'Yellow',
'A00-Y2': 'Sunflower Yellow',
'A00-A1': 'Pumpkin Orange',
'A00-A0': 'Orange',
'A00-Y4': 'Gold',
'A00-G3': 'Bright Green',
'A00-G1': 'Bambu Green',
'A00-G2': 'Mistletoe Green',
'A00-R3': 'Hot Pink',
'A00-P6': 'Magenta',
'A00-R0': 'Red',
'A00-R2': 'Maroon Red',
'A00-P5': 'Purple',
'A00-P2': 'Indigo Purple',
'A00-B5': 'Turquoise',
'A00-B8': 'Cyan',
'A00-B3': 'Cobalt Blue',
'A00-N0': 'Brown',
'A00-N1': 'Cocoa Brown',
'A00-Y3': 'Bronze',
'A00-D0': 'Gray',
'A00-D1': 'Silver',
'A00-B1': 'Blue Grey',
'A00-D3': 'Dark Gray',
'A00-K0': 'Black',
// PLA Basic Gradient (A00-M*)
'A00-M3': 'Pink Citrus',
'A00-M6': 'Dusk Glare',
'A00-M0': 'Arctic Whisper',
'A00-M1': 'Solar Breeze',
'A00-M5': 'Blueberry Bubblegum',
'A00-M4': 'Mint Lime',
'A00-M2': 'Ocean to Meadow',
'A00-M7': 'Cotton Candy Cloud',
// PLA Lite (A18)
'A18-K0': 'Black',
'A18-D0': 'Gray',
'A18-W0': 'White',
'A18-R0': 'Red',
'A18-Y0': 'Yellow',
'A18-B0': 'Cyan',
'A18-B1': 'Blue',
'A18-P0': 'Matte Beige',
// PLA Matte (A01)
'A01-W2': 'Ivory White',
'A01-W3': 'Bone White',
'A01-Y2': 'Lemon Yellow',
'A01-A2': 'Mandarin Orange',
'A01-P3': 'Sakura Pink',
'A01-P4': 'Lilac Purple',
'A01-R3': 'Plum',
'A01-R1': 'Scarlet Red',
'A01-R4': 'Dark Red',
'A01-G0': 'Apple Green',
'A01-G1': 'Grass Green',
'A01-G7': 'Dark Green',
'A01-B4': 'Ice Blue',
'A01-B0': 'Sky Blue',
'A01-B3': 'Marine Blue',
'A01-B6': 'Dark Blue',
'A01-Y3': 'Desert Tan',
'A01-N1': 'Latte Brown',
'A01-N3': 'Caramel',
'A01-R2': 'Terracotta',
'A01-N2': 'Dark Brown',
'A01-N0': 'Dark Chocolate',
'A01-D3': 'Ash Gray',
'A01-D0': 'Nardo Gray',
'A01-K1': 'Charcoal',
// PLA Glow (A12)
'A12-G0': 'Green',
'A12-R0': 'Pink',
'A12-A0': 'Orange',
'A12-Y0': 'Yellow',
'A12-B0': 'Blue',
// PLA Marble (A07)
'A07-R5': 'Red Granite',
'A07-D4': 'White Marble',
// PLA Aero (A11)
'A11-W0': 'White',
'A11-K0': 'Black',
// PLA Sparkle (A08)
'A08-G3': 'Alpine Green Sparkle',
'A08-D5': 'Slate Gray Sparkle',
'A08-B7': 'Royal Purple Sparkle',
'A08-R2': 'Crimson Red Sparkle',
'A08-K2': 'Onyx Black Sparkle',
'A08-Y1': 'Classic Gold Sparkle',
// PLA Metal (A02)
'A02-B2': 'Cobalt Blue Metallic',
'A02-G2': 'Oxide Green Metallic',
'A02-Y1': 'Iridium Gold Metallic',
'A02-D2': 'Iron Gray Metallic',
// PLA Translucent (A17)
'A17-B1': 'Blue',
'A17-A0': 'Orange',
'A17-P0': 'Purple',
// PLA Silk+ (A06)
'A06-Y1': 'Gold',
'A06-D0': 'Titan Gray',
'A06-D1': 'Silver',
'A06-W0': 'White',
'A06-R0': 'Candy Red',
'A06-G0': 'Candy Green',
'A06-G1': 'Mint',
'A06-B1': 'Blue',
'A06-B0': 'Baby Blue',
'A06-P0': 'Purple',
'A06-R1': 'Rose Gold',
'A06-R2': 'Pink',
'A06-Y0': 'Champagne',
// PLA Silk Multi-Color (A05)
'A05-M8': 'Dawn Radiance',
'A05-M4': 'Aurora Purple',
'A05-M1': 'South Beach',
'A05-T3': 'Neon City',
'A05-T2': 'Midnight Blaze',
'A05-T1': 'Gilded Rose',
'A05-T4': 'Blue Hawaii',
'A05-T5': 'Velvet Eclipse',
// PLA Galaxy (A15)
'A15-B0': 'Purple',
'A15-G0': 'Green',
'A15-G1': 'Nebulae',
'A15-R0': 'Brown',
// PLA Wood (A16)
'A16-K0': 'Black Walnut',
'A16-R0': 'Rosewood',
'A16-N0': 'Clay Brown',
'A16-G0': 'Classic Birch',
'A16-W0': 'White Oak',
'A16-Y0': 'Ochre Yellow',
// PLA-CF (A50)
'A50-D6': 'Lava Gray',
'A50-K0': 'Black',
'A50-B6': 'Royal Blue',
// PLA Tough+ (A10)
'A10-W0': 'White',
'A10-D0': 'Gray',
// PLA Tough (A09)
'A09-B5': 'Lavender Blue',
'A09-B4': 'Light Blue',
'A09-A0': 'Orange',
'A09-D1': 'Silver',
'A09-R3': 'Vermilion Red',
'A09-Y0': 'Yellow',
// PETG HF (G02)
'G02-K0': 'Black',
'G02-W0': 'White',
'G02-R0': 'Red',
'G02-D0': 'Gray',
'G02-D1': 'Dark Gray',
'G02-Y1': 'Cream',
'G02-Y0': 'Yellow',
'G02-A0': 'Orange',
'G02-N1': 'Peanut Brown',
'G02-G1': 'Lime Green',
'G02-G0': 'Green',
'G02-G2': 'Forest Green',
'G02-B1': 'Lake Blue',
'G02-B0': 'Blue',
// PETG Translucent (G01)
'G01-G1': 'Translucent Teal',
'G01-B0': 'Translucent Light Blue',
'G01-C0': 'Clear',
'G01-D0': 'Translucent Gray',
'G01-G0': 'Translucent Olive',
'G01-N0': 'Translucent Brown',
'G01-A0': 'Translucent Orange',
'G01-P1': 'Translucent Pink',
'G01-P0': 'Translucent Purple',
// PETG-CF (G50)
'G50-P7': 'Violet Purple',
'G50-K0': 'Black',
// ABS (B00)
'B00-D1': 'Silver',
'B00-K0': 'Black',
'B00-W0': 'White',
'B00-G6': 'Bambu Green',
'B00-G7': 'Olive',
'B00-Y1': 'Tangerine Yellow',
'B00-A0': 'Orange',
'B00-R0': 'Red',
'B00-B4': 'Azure',
'B00-B0': 'Blue',
'B00-B6': 'Navy Blue',
// ABS-GF (B50)
'B50-A0': 'Orange',
'B50-K0': 'Black',
// ASA (B01)
'B01-W0': 'White',
'B01-K0': 'Black',
'B01-D0': 'Gray',
// ASA Aero (B02)
'B02-W0': 'White',
// PC (C00)
'C00-C1': 'Transparent',
'C00-C0': 'Clear Black',
'C00-K0': 'Black',
'C00-W0': 'White',
// PC FR (C01)
'C01-K0': 'Black',
// TPU for AMS (U02)
'U02-B0': 'Blue',
'U02-D0': 'Gray',
'U02-K0': 'Black',
// PAHT-CF (N04)
'N04-K0': 'Black',
// PA6-GF (N08)
'N08-K0': 'Black',
// Support for PLA/PETG (S02, S05)
'S02-W0': 'Nature',
'S02-W1': 'White',
'S05-C0': 'Black',
// Support for ABS (S06)
'S06-W0': 'White',
// Support for PA/PET (S03)
'S03-G1': 'Green',
// PVA (S04)
'S04-Y0': 'Clear',
};
// Fallback color codes for unknown material prefixes
const BAMBU_COLOR_CODE_FALLBACK: Record<string, string> = {
'W0': 'White', 'W1': 'Jade White', 'W2': 'Ivory White', 'W3': 'Bone White',
'Y0': 'Yellow', 'Y1': 'Gold', 'Y2': 'Sunflower Yellow', 'Y3': 'Bronze', 'Y4': 'Gold',
'A0': 'Orange', 'A1': 'Pumpkin Orange', 'A2': 'Mandarin Orange',
'R0': 'Red', 'R1': 'Scarlet Red', 'R2': 'Maroon Red', 'R3': 'Hot Pink', 'R4': 'Dark Red', 'R5': 'Red Granite',
'P0': 'Beige', 'P1': 'Pink', 'P2': 'Indigo Purple', 'P3': 'Sakura Pink', 'P4': 'Lilac Purple', 'P5': 'Purple', 'P6': 'Magenta', 'P7': 'Violet Purple',
'B0': 'Blue', 'B1': 'Blue Grey', 'B2': 'Cobalt Blue', 'B3': 'Cobalt Blue', 'B4': 'Ice Blue', 'B5': 'Turquoise', 'B6': 'Navy Blue', 'B7': 'Royal Purple', 'B8': 'Cyan',
'G0': 'Green', 'G1': 'Grass Green', 'G2': 'Mistletoe Green', 'G3': 'Bright Green', 'G6': 'Bambu Green', 'G7': 'Dark Green',
'N0': 'Brown', 'N1': 'Peanut Brown', 'N2': 'Dark Brown', 'N3': 'Caramel',
'D0': 'Gray', 'D1': 'Silver', 'D2': 'Light Gray', 'D3': 'Dark Gray', 'D4': 'White Marble', 'D5': 'Slate Gray', 'D6': 'Lava Gray',
'K0': 'Black', 'K1': 'Charcoal', 'K2': 'Onyx Black',
'C0': 'Clear Black', 'C1': 'Transparent',
'M0': 'Arctic Whisper', 'M1': 'Solar Breeze', 'M2': 'Ocean to Meadow', 'M3': 'Pink Citrus', 'M4': 'Aurora Purple', 'M5': 'Blueberry Bubblegum', 'M6': 'Dusk Glare', 'M7': 'Cotton Candy Cloud', 'M8': 'Dawn Radiance',
'T1': 'Gilded Rose', 'T2': 'Midnight Blaze', 'T3': 'Neon City', 'T4': 'Blue Hawaii', 'T5': 'Velvet Eclipse',
};
// Get color name from Bambu Lab tray_id_name (e.g., "A00-Y2" -> "Sunflower Yellow")
function getBambuColorName(trayIdName: string | null | undefined): string | null {
if (!trayIdName) return null;
// Extract color code after the dash (e.g., "A00-Y2" -> "Y2")
// First try exact match with full tray_id_name
if (BAMBU_FILAMENT_COLORS[trayIdName]) {
return BAMBU_FILAMENT_COLORS[trayIdName];
}
// Fall back to color code suffix lookup for unknown material prefixes
const parts = trayIdName.split('-');
if (parts.length < 2) return null;
const colorCode = parts[1];
return BAMBU_COLOR_CODES[colorCode] || null;
return BAMBU_COLOR_CODE_FALLBACK[colorCode] || null;
}
// Convert hex color to basic color name
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -23,7 +23,7 @@
<!-- Splash screens for iOS -->
<link rel="apple-touch-startup-image" href="/img/android-chrome-512x512.png" />
<script type="module" crossorigin src="/assets/index-oq5Qet6N.js"></script>
<script type="module" crossorigin src="/assets/index-uGH4AzFZ.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-Da3qKIoX.css">
</head>
<body>