maintenanceWikiUrls.ts 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. /**
  2. * Resolve a Bambu Lab wiki URL for a maintenance task based on the printer model.
  3. *
  4. * Model families:
  5. * - X1, P1 → carbon rods
  6. * - P2S, X2D → hardened steel rods (X2D shares P2S's gantry — #988)
  7. * - A1, A1 Mini → linear rails (Y axis)
  8. * - H2D, H2C, H2S → linear rails (X-axis lubrication)
  9. *
  10. * Returns null when no wiki page applies (e.g. "Clean Carbon Rods" on an H2D),
  11. * which the caller renders as a task with no clickable help link.
  12. */
  13. export function getMaintenanceWikiUrl(typeName: string, printerModel: string | null): string | null {
  14. const model = (printerModel || '').toUpperCase().replace(/[- ]/g, '');
  15. const isX1 = model.includes('X1');
  16. const isP1 = model.includes('P1');
  17. const isA1Mini = model.includes('A1MINI');
  18. const isA1 = model.includes('A1') && !isA1Mini;
  19. const isH2D = model.includes('H2D');
  20. const isH2C = model.includes('H2C');
  21. const isH2S = model.includes('H2S');
  22. const isH2 = isH2D || isH2C || isH2S;
  23. const isP2S = model.includes('P2S');
  24. const isX2D = model.includes('X2D');
  25. // X2D shares the hardened steel rod hardware and belt layout with P2S,
  26. // so its maintenance routes use the P2S wiki pages until dedicated
  27. // X2D pages are published by Bambu Lab.
  28. const isSteelRod = isP2S || isX2D;
  29. switch (typeName) {
  30. case 'Lubricate Steel Rods':
  31. if (isSteelRod) return 'https://wiki.bambulab.com/en/p2s/maintenance/lubricate-x-y-z-axis';
  32. return null;
  33. case 'Clean Steel Rods':
  34. if (isSteelRod) return 'https://wiki.bambulab.com/en/p2s/maintenance/lubricate-x-y-z-axis';
  35. return null;
  36. case 'Lubricate Linear Rails':
  37. if (isA1Mini) return 'https://wiki.bambulab.com/en/a1-mini/maintenance/lubricate-y-axis';
  38. if (isA1) return 'https://wiki.bambulab.com/en/a1/maintenance/lubricate-y-axis';
  39. if (isH2) return 'https://wiki.bambulab.com/en/h2/maintenance/x-axis-lubrication';
  40. return null;
  41. case 'Clean Nozzle/Hotend':
  42. if (isX1 || isP1) return 'https://wiki.bambulab.com/en/x1/troubleshooting/nozzle-clog';
  43. if (isA1Mini || isA1) return 'https://wiki.bambulab.com/en/a1-mini/troubleshooting/nozzle-clog';
  44. if (isH2) return 'https://wiki.bambulab.com/en/h2/maintenance/nozzl-cold-pull-maintenance-and-cleaning';
  45. if (isSteelRod) return 'https://wiki.bambulab.com/en/p2s/maintenance/cold-pull-maintenance-hotend';
  46. return 'https://wiki.bambulab.com/en/x1/troubleshooting/nozzle-clog';
  47. case 'Check Belt Tension':
  48. if (isX1) return 'https://wiki.bambulab.com/en/x1/maintenance/belt-tension';
  49. if (isP1) return 'https://wiki.bambulab.com/en/p1/maintenance/p1p-maintenance';
  50. if (isA1Mini) return 'https://wiki.bambulab.com/en/a1-mini/maintenance/belt_tension';
  51. if (isA1) return 'https://wiki.bambulab.com/en/a1/maintenance/belt_tension';
  52. if (isH2D) return 'https://wiki.bambulab.com/en/h2/maintenance/belt-tension';
  53. if (isH2C) return 'https://wiki.bambulab.com/en/h2c/maintenance/belt-tension';
  54. if (isH2S) return 'https://wiki.bambulab.com/en/h2s/maintenance/belt-tension';
  55. if (isSteelRod) return 'https://wiki.bambulab.com/en/p2s/maintenance/belt-tension';
  56. return 'https://wiki.bambulab.com/en/x1/maintenance/belt-tension';
  57. case 'Clean Carbon Rods':
  58. if (isX1 || isP1) return 'https://wiki.bambulab.com/en/general/carbon-rods-clearance';
  59. return null;
  60. case 'Clean Linear Rails':
  61. if (isA1Mini) return 'https://wiki.bambulab.com/en/a1-mini/maintenance/lubricate-y-axis';
  62. if (isA1) return 'https://wiki.bambulab.com/en/a1/maintenance/lubricate-y-axis';
  63. if (isH2) return 'https://wiki.bambulab.com/en/h2/maintenance/x-axis-lubrication';
  64. return null;
  65. case 'Clean Build Plate':
  66. return 'https://wiki.bambulab.com/en/filament-acc/acc/pei-plate-clean-guide';
  67. case 'Check PTFE Tube':
  68. if (isX1 || isP1) return 'https://wiki.bambulab.com/en/x1/maintenance/replace-ptfe-tube';
  69. if (isA1Mini || isA1) return 'https://wiki.bambulab.com/en/a1-mini/maintenance/ptfe-tube';
  70. if (isH2D) return 'https://wiki.bambulab.com/en/h2/maintenance/replace-ptfe-tube-on-h2d-printer';
  71. if (isH2S) return 'https://wiki.bambulab.com/en/h2s/maintenance/replace-ptfe-tube-on-h2s-printer';
  72. if (isH2C) return 'https://wiki.bambulab.com/en/h2/maintenance/replace-ptfe-tube-on-h2d-printer'; // H2C uses H2D guide
  73. if (isSteelRod) return 'https://wiki.bambulab.com/en/x1/maintenance/replace-ptfe-tube'; // P2S/X2D use similar PTFE
  74. return 'https://wiki.bambulab.com/en/x1/maintenance/replace-ptfe-tube';
  75. case 'Replace HEPA Filter':
  76. case 'HEPA Filter':
  77. case 'Replace Carbon Filter':
  78. case 'Carbon Filter':
  79. if (isH2) return 'https://wiki.bambulab.com/en/h2/maintenance/replace-smoke-purifier-air-filte';
  80. return 'https://wiki.bambulab.com/en/x1/maintenance/replace-carbon-filter';
  81. case 'Lubricate Left Nozzle Rail':
  82. case 'Left Nozzle Rail':
  83. if (isH2) return 'https://wiki.bambulab.com/en/h2/maintenance/x-axis-lubrication';
  84. return null;
  85. default:
  86. return null;
  87. }
  88. }