|
@@ -38,6 +38,7 @@ import {
|
|
|
} from 'lucide-react';
|
|
} from 'lucide-react';
|
|
|
import { api } from '../api/client';
|
|
import { api } from '../api/client';
|
|
|
import type { MaintenanceStatus, PrinterMaintenanceOverview, MaintenanceType, Permission } from '../api/client';
|
|
import type { MaintenanceStatus, PrinterMaintenanceOverview, MaintenanceType, Permission } from '../api/client';
|
|
|
|
|
+import { getMaintenanceWikiUrl } from '../utils/maintenanceWikiUrls';
|
|
|
import { Card, CardContent } from '../components/Card';
|
|
import { Card, CardContent } from '../components/Card';
|
|
|
import { Button } from '../components/Button';
|
|
import { Button } from '../components/Button';
|
|
|
import { Toggle } from '../components/Toggle';
|
|
import { Toggle } from '../components/Toggle';
|
|
@@ -125,101 +126,6 @@ function formatIntervalLabel(value: number, type: 'hours' | 'days', t?: TFunctio
|
|
|
return `${value}h`;
|
|
return `${value}h`;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-// Get Bambu Lab wiki URL for a maintenance task based on printer model
|
|
|
|
|
-function getMaintenanceWikiUrl(typeName: string, printerModel: string | null): string | null {
|
|
|
|
|
- const model = (printerModel || '').toUpperCase().replace(/[- ]/g, '');
|
|
|
|
|
-
|
|
|
|
|
- // Helper to match model families
|
|
|
|
|
- const isX1 = model.includes('X1');
|
|
|
|
|
- const isP1 = model.includes('P1');
|
|
|
|
|
- const isA1Mini = model.includes('A1MINI');
|
|
|
|
|
- const isA1 = model.includes('A1') && !isA1Mini;
|
|
|
|
|
- const isH2D = model.includes('H2D');
|
|
|
|
|
- const isH2C = model.includes('H2C');
|
|
|
|
|
- const isH2S = model.includes('H2S');
|
|
|
|
|
- const isH2 = isH2D || isH2C || isH2S;
|
|
|
|
|
- const isP2S = model.includes('P2S');
|
|
|
|
|
-
|
|
|
|
|
- switch (typeName) {
|
|
|
|
|
- case 'Lubricate Steel Rods':
|
|
|
|
|
- // P2S has hardened steel rods
|
|
|
|
|
- if (isP2S) return 'https://wiki.bambulab.com/en/p2s/maintenance/lubricate-x-y-z-axis';
|
|
|
|
|
- return null;
|
|
|
|
|
-
|
|
|
|
|
- case 'Clean Steel Rods':
|
|
|
|
|
- // P2S has hardened steel rods
|
|
|
|
|
- if (isP2S) return 'https://wiki.bambulab.com/en/p2s/maintenance/lubricate-x-y-z-axis';
|
|
|
|
|
- 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';
|
|
|
|
|
- return null;
|
|
|
|
|
-
|
|
|
|
|
- case 'Clean Nozzle/Hotend':
|
|
|
|
|
- if (isX1 || isP1) return 'https://wiki.bambulab.com/en/x1/troubleshooting/nozzle-clog';
|
|
|
|
|
- if (isA1Mini || isA1) return 'https://wiki.bambulab.com/en/a1-mini/troubleshooting/nozzle-clog';
|
|
|
|
|
- if (isH2) return 'https://wiki.bambulab.com/en/h2/maintenance/nozzl-cold-pull-maintenance-and-cleaning';
|
|
|
|
|
- if (isP2S) return 'https://wiki.bambulab.com/en/p2s/maintenance/cold-pull-maintenance-hotend';
|
|
|
|
|
- return 'https://wiki.bambulab.com/en/x1/troubleshooting/nozzle-clog';
|
|
|
|
|
-
|
|
|
|
|
- case 'Check Belt Tension':
|
|
|
|
|
- if (isX1) return 'https://wiki.bambulab.com/en/x1/maintenance/belt-tension';
|
|
|
|
|
- if (isP1) return 'https://wiki.bambulab.com/en/p1/maintenance/p1p-maintenance';
|
|
|
|
|
- if (isA1Mini) return 'https://wiki.bambulab.com/en/a1-mini/maintenance/belt_tension';
|
|
|
|
|
- if (isA1) return 'https://wiki.bambulab.com/en/a1/maintenance/belt_tension';
|
|
|
|
|
- if (isH2D) return 'https://wiki.bambulab.com/en/h2/maintenance/belt-tension';
|
|
|
|
|
- if (isH2C) return 'https://wiki.bambulab.com/en/h2c/maintenance/belt-tension';
|
|
|
|
|
- if (isH2S) return 'https://wiki.bambulab.com/en/h2s/maintenance/belt-tension';
|
|
|
|
|
- if (isP2S) return 'https://wiki.bambulab.com/en/p2s/maintenance/belt-tension';
|
|
|
|
|
- return 'https://wiki.bambulab.com/en/x1/maintenance/belt-tension';
|
|
|
|
|
-
|
|
|
|
|
- case 'Clean Carbon Rods':
|
|
|
|
|
- // X1, P1 series have carbon rods
|
|
|
|
|
- if (isX1 || isP1) 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
|
|
|
|
|
- return 'https://wiki.bambulab.com/en/filament-acc/acc/pei-plate-clean-guide';
|
|
|
|
|
-
|
|
|
|
|
- case 'Check PTFE Tube':
|
|
|
|
|
- if (isX1 || isP1) return 'https://wiki.bambulab.com/en/x1/maintenance/replace-ptfe-tube';
|
|
|
|
|
- if (isA1Mini || isA1) return 'https://wiki.bambulab.com/en/a1-mini/maintenance/ptfe-tube';
|
|
|
|
|
- if (isH2D) return 'https://wiki.bambulab.com/en/h2/maintenance/replace-ptfe-tube-on-h2d-printer';
|
|
|
|
|
- if (isH2S) return 'https://wiki.bambulab.com/en/h2s/maintenance/replace-ptfe-tube-on-h2s-printer';
|
|
|
|
|
- if (isH2C) return 'https://wiki.bambulab.com/en/h2/maintenance/replace-ptfe-tube-on-h2d-printer'; // H2C uses H2D guide
|
|
|
|
|
- if (isP2S) return 'https://wiki.bambulab.com/en/x1/maintenance/replace-ptfe-tube'; // P2S uses similar PTFE
|
|
|
|
|
- return 'https://wiki.bambulab.com/en/x1/maintenance/replace-ptfe-tube';
|
|
|
|
|
-
|
|
|
|
|
- case 'Replace HEPA Filter':
|
|
|
|
|
- case 'HEPA Filter':
|
|
|
|
|
- case 'Replace Carbon Filter':
|
|
|
|
|
- case 'Carbon Filter':
|
|
|
|
|
- if (isH2) return 'https://wiki.bambulab.com/en/h2/maintenance/replace-smoke-purifier-air-filte';
|
|
|
|
|
- // X1/P1 use the activated carbon filter
|
|
|
|
|
- return 'https://wiki.bambulab.com/en/x1/maintenance/replace-carbon-filter';
|
|
|
|
|
-
|
|
|
|
|
- case 'Lubricate Left Nozzle Rail':
|
|
|
|
|
- case 'Left Nozzle Rail':
|
|
|
|
|
- // H2 series specific - dual nozzle system
|
|
|
|
|
- if (isH2) return 'https://wiki.bambulab.com/en/h2/maintenance/x-axis-lubrication';
|
|
|
|
|
- return null;
|
|
|
|
|
-
|
|
|
|
|
- default:
|
|
|
|
|
- // Custom maintenance types don't have wiki URLs
|
|
|
|
|
- return null;
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
|
|
|
|
|
// Maintenance item card - cleaner, more visual design
|
|
// Maintenance item card - cleaner, more visual design
|
|
|
function MaintenanceCard({
|
|
function MaintenanceCard({
|