Fix maintenance tasks showing wrong rod type for printer models (#351)

H2/A1 series have linear rails, not carbon rods. X1/P1/P2S have carbon
rods, not linear rails. Split rod-specific maintenance into model-aware
pairs: "Lubricate/Clean Carbon Rods" for X1/P1/P2S and "Lubricate/Clean
Linear Rails" for A1/H2. Added rod type classification to printer_models
and startup cleanup for stale/duplicate system maintenance types.
This commit is contained in:
maziggy
2026-02-13 12:23:34 +01:00
parent f9b47282a1
commit cffe7e62bc
11 changed files with 267 additions and 118 deletions
+4
View File
@@ -980,6 +980,7 @@ export default {
removeFromPrinter: 'Von diesem Drucker entfernen',
// Types
types: {
lubricateCarbonRods: 'Karbonstäbe schmieren',
lubricateRails: 'Linearschienen schmieren',
cleanNozzle: 'Düse/Hotend reinigen',
checkBelts: 'Riemenspannung prüfen',
@@ -988,6 +989,7 @@ export default {
checkCooling: 'Kühlungslüfter prüfen',
generalInspection: 'Allgemeine Inspektion',
cleanCarbonRods: 'Kohlenstoffstangen reinigen',
cleanLinearRails: 'Linearschienen reinigen',
checkPtfeTube: 'PTFE-Schlauch prüfen',
replaceHepaFilter: 'HEPA-Filter ersetzen',
replaceCarbonFilter: 'Aktivkohlefilter ersetzen',
@@ -2977,6 +2979,7 @@ export default {
// Maintenance type descriptions (built-in)
maintenanceDescriptions: {
lubricateCarbonRods: 'Schmiermittel auf Karbonstäbe für sanfte Bewegung auftragen',
lubricateRails: 'Schmiermittel auf Linearschienen für sanfte Bewegung auftragen',
cleanNozzle: 'Hotend und Düse reinigen, um Verstopfungen zu verhindern',
checkBelts: 'Riemenspannung für präzise Drucke überprüfen',
@@ -2985,6 +2988,7 @@ export default {
checkCooling: 'Sicherstellen, dass Lüfter ordnungsgemäß funktionieren',
generalInspection: 'Allgemeine Druckerinspektion',
cleanCarbonRods: 'Karbonstäbe reinigen, um Reibung zu reduzieren',
cleanLinearRails: 'Linearschienen abwischen, um Staub und Schmutz zu entfernen',
checkPtfeTube: 'PTFE-Schlauch auf Verschleiß oder Beschädigung prüfen',
replaceHepaFilter: 'HEPA-Filter für Luftqualität ersetzen',
replaceCarbonFilter: 'Aktivkohlefilter ersetzen',
+4
View File
@@ -980,6 +980,7 @@ export default {
removeFromPrinter: 'Remove from this printer',
// Types
types: {
lubricateCarbonRods: 'Lubricate Carbon Rods',
lubricateRails: 'Lubricate Linear Rails',
cleanNozzle: 'Clean Nozzle/Hotend',
checkBelts: 'Check Belt Tension',
@@ -988,6 +989,7 @@ export default {
checkCooling: 'Check Cooling Fans',
generalInspection: 'General Inspection',
cleanCarbonRods: 'Clean Carbon Rods',
cleanLinearRails: 'Clean Linear Rails',
checkPtfeTube: 'Check PTFE Tube',
replaceHepaFilter: 'Replace HEPA Filter',
replaceCarbonFilter: 'Replace Carbon Filter',
@@ -2982,6 +2984,7 @@ export default {
// Maintenance type descriptions (built-in)
maintenanceDescriptions: {
lubricateCarbonRods: 'Apply lubricant to carbon rods for smooth motion',
lubricateRails: 'Apply lubricant to linear rails for smooth motion',
cleanNozzle: 'Clean hotend and nozzle to prevent clogs',
checkBelts: 'Verify belt tension for accurate prints',
@@ -2990,6 +2993,7 @@ export default {
checkCooling: 'Ensure cooling fans are working properly',
generalInspection: 'General printer inspection',
cleanCarbonRods: 'Clean carbon rods to reduce friction',
cleanLinearRails: 'Wipe linear rails to remove dust and debris',
checkPtfeTube: 'Inspect PTFE tube for wear or damage',
replaceHepaFilter: 'Replace HEPA filter for air quality',
replaceCarbonFilter: 'Replace activated carbon filter',
+4
View File
@@ -967,6 +967,7 @@ export default {
removeFromPrinter: 'Rimuovi da questa stampante',
// Types
types: {
lubricateCarbonRods: 'Lubrifica aste in carbonio',
lubricateRails: 'Lubrifica guide lineari',
cleanNozzle: 'Pulisci ugello/Hotend',
checkBelts: 'Controlla tensione cinghie',
@@ -975,6 +976,7 @@ export default {
checkCooling: 'Controlla ventole raffreddamento',
generalInspection: 'Ispezione generale',
cleanCarbonRods: 'Pulisci aste in carbonio',
cleanLinearRails: 'Pulisci guide lineari',
checkPtfeTube: 'Controlla tubo PTFE',
replaceHepaFilter: 'Sostituisci filtro HEPA',
replaceCarbonFilter: 'Sostituisci filtro carbone',
@@ -2651,6 +2653,7 @@ export default {
// Maintenance type descriptions (built-in)
maintenanceDescriptions: {
lubricateCarbonRods: 'Applica lubrificante alle aste in carbonio per un movimento fluido',
lubricateRails: 'Applica lubrificante alle guide lineari per un movimento fluido',
cleanNozzle: 'Pulisci hotend e ugello per prevenire intasamenti',
checkBelts: 'Verifica tensione cinghie per stampe accurate',
@@ -2659,6 +2662,7 @@ export default {
checkCooling: 'Assicurati che le ventole di raffreddamento funzionino',
generalInspection: 'Ispezione generale stampante',
cleanCarbonRods: 'Pulisci le aste in carbonio per ridurre attrito',
cleanLinearRails: 'Pulisci le guide lineari per rimuovere polvere e detriti',
checkPtfeTube: 'Ispeziona il tubo PTFE per usura o danni',
replaceHepaFilter: 'Sostituisci filtro HEPA per qualità aria',
replaceCarbonFilter: 'Sostituisci filtro a carbone attivo',
+4
View File
@@ -1015,6 +1015,7 @@ export default {
noPrintersAssigned: 'プリンター未割り当て',
removeFromPrinter: 'このプリンターから削除',
types: {
lubricateCarbonRods: 'カーボンロッドの潤滑',
lubricateRails: 'リニアレールの潤滑',
cleanNozzle: 'ノズル/ホットエンドの清掃',
checkBelts: 'ベルト張力の確認',
@@ -1023,6 +1024,7 @@ export default {
checkCooling: '冷却ファンの確認',
generalInspection: '総合点検',
cleanCarbonRods: 'カーボンロッドの清掃',
cleanLinearRails: 'リニアレールの清掃',
checkPtfeTube: 'PTFEチューブの確認',
replaceHepaFilter: 'HEPAフィルター交換',
replaceCarbonFilter: 'カーボンフィルター交換',
@@ -2860,6 +2862,7 @@ export default {
},
},
maintenanceDescriptions: {
lubricateCarbonRods: 'カーボンロッドに潤滑剤を塗布してスムーズな動きを確保',
lubricateRails: 'リニアレールの潤滑',
cleanNozzle: 'ノズル/ホットエンドの清掃',
checkBelts: 'ベルト張力の確認',
@@ -2868,6 +2871,7 @@ export default {
checkCooling: '冷却ファンの確認',
generalInspection: '総合点検',
cleanCarbonRods: 'カーボンロッドの清掃',
cleanLinearRails: 'リニアレールを拭いてほこりや汚れを除去',
checkPtfeTube: 'PTFEチューブの確認',
replaceHepaFilter: 'HEPAフィルター交換',
replaceCarbonFilter: 'カーボンフィルター交換',
+19 -9
View File
@@ -140,14 +140,19 @@ function getMaintenanceWikiUrl(typeName: string, printerModel: string | null): s
const isP2S = model.includes('P2S');
switch (typeName) {
case 'Lubricate Linear Rails':
case 'Lubricate Carbon Rods':
// X1, P1, P2S series have carbon rods
if (isX1) return 'https://wiki.bambulab.com/en/x1/maintenance/basic-maintenance';
if (isP1) return 'https://wiki.bambulab.com/en/p1/maintenance/p1p-maintenance';
if (isP2S) return 'https://wiki.bambulab.com/en/p2s/maintenance/belt-tension';
return null;
case 'Lubricate Linear Rails':
// A1 and H2 series have linear rails
if (isA1Mini) return 'https://wiki.bambulab.com/en/a1-mini/maintenance/lubricate-y-axis';
if (isA1) return 'https://wiki.bambulab.com/en/a1/maintenance/lubricate-y-axis';
if (isH2) return 'https://wiki.bambulab.com/en/h2/maintenance/x-axis-lubrication';
if (isP2S) return 'https://wiki.bambulab.com/en/p2s/maintenance/belt-tension'; // P2S maintenance page
return 'https://wiki.bambulab.com/en/general/lead-screws-lubrication';
return null;
case 'Clean Nozzle/Hotend':
if (isX1 || isP1) return 'https://wiki.bambulab.com/en/x1/troubleshooting/nozzle-clog';
@@ -168,11 +173,16 @@ function getMaintenanceWikiUrl(typeName: string, printerModel: string | null): s
return 'https://wiki.bambulab.com/en/x1/maintenance/belt-tension';
case 'Clean Carbon Rods':
// Only X1 and P1 series have carbon rods
if (isX1 || isP1) return 'https://wiki.bambulab.com/en/general/carbon-rods-clearance';
// A1, H2, P2S don't have carbon rods - return null
if (isA1Mini || isA1 || isH2 || isP2S) return null;
return 'https://wiki.bambulab.com/en/general/carbon-rods-clearance';
// X1, P1, P2S series have carbon rods
if (isX1 || isP1 || isP2S) return 'https://wiki.bambulab.com/en/general/carbon-rods-clearance';
return null;
case 'Clean Linear Rails':
// A1 and H2 series have linear rails
if (isA1Mini) return 'https://wiki.bambulab.com/en/a1-mini/maintenance/lubricate-y-axis';
if (isA1) return 'https://wiki.bambulab.com/en/a1/maintenance/lubricate-y-axis';
if (isH2) return 'https://wiki.bambulab.com/en/h2/maintenance/x-axis-lubrication';
return null;
case 'Clean Build Plate':
// Same for all printers
@@ -381,7 +391,7 @@ function PrinterSection({
hasPermission: (permission: Permission) => boolean;
t: TFunction;
}) {
const [expanded, setExpanded] = useState(true);
const [expanded, setExpanded] = useState(false);
const [editingHours, setEditingHours] = useState(false);
const [hoursInput, setHoursInput] = useState(overview.total_print_hours.toFixed(1));