Просмотр исходного кода

- Fixed bug, where Bambu Lab filament colors not showed correctly
- Added all Bambu Lab filament color tags

maziggy 8 месяцев назад
Родитель
Сommit
019a9822a0
3 измененных файлов с 253 добавлено и 65 удалено
  1. 252 64
      frontend/src/pages/PrintersPage.tsx
  2. 0 0
      static/assets/index-uGH4AzFZ.js
  3. 1 1
      static/index.html

+ 252 - 64
frontend/src/pages/PrintersPage.tsx

@@ -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

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
static/assets/index-uGH4AzFZ.js


+ 1 - 1
static/index.html

@@ -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>

Некоторые файлы не были показаны из-за большого количества измененных файлов