FPSMS-frontend
25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 

125 satır
4.9 KiB

  1. "use client";
  2. import Breadcrumbs from "@mui/material/Breadcrumbs";
  3. import Typography from "@mui/material/Typography";
  4. import Link from "next/link";
  5. import MUILink from "@mui/material/Link";
  6. import { usePathname } from "next/navigation";
  7. import { useTranslation } from "react-i18next";
  8. const pathToLabelKey: { [path: string]: string } = {
  9. "": "nav.breadcrumb.home",
  10. "/chart": "nav.breadcrumb.chart",
  11. "/chart/warehouse": "nav.breadcrumb.chartWarehouse",
  12. "/chart/purchase": "nav.breadcrumb.chartPurchase",
  13. "/chart/delivery": "nav.breadcrumb.chartDelivery",
  14. "/chart/joborder": "nav.breadcrumb.chartJobOrder",
  15. "/chart/joborder/board": "nav.breadcrumb.chartJobOrderBoard",
  16. "/chart/forecast": "nav.breadcrumb.chartForecast",
  17. "/projects": "nav.breadcrumb.projects",
  18. "/projects/create": "nav.breadcrumb.projectsCreate",
  19. "/tasks": "nav.breadcrumb.tasks",
  20. "/tasks/create": "nav.breadcrumb.tasksCreate",
  21. "/settings": "nav.settings",
  22. "/settings/user": "nav.settings.user",
  23. "/settings/clientMonitor": "nav.settings.clientMonitor",
  24. "/settings/items": "nav.settings.items",
  25. "/settings/itemDefaultShelfLife": "nav.settings.itemDefaultShelfLife",
  26. "/settings/warehouse": "nav.settings.warehouse",
  27. "/settings/qcCategory": "nav.settings.qcCategory",
  28. "/settings/bomWeighting": "nav.settings.bomWeighting",
  29. "/settings/importExcel": "nav.settings.importExcel",
  30. "/settings/importBom": "nav.settings.importBom",
  31. "/settings/qcItem": "nav.breadcrumb.qcItem",
  32. "/settings/qcItemAll": "nav.breadcrumb.qcItemAll",
  33. "/settings/qrCodeHandle": "nav.breadcrumb.qrCodeHandle",
  34. "/settings/deliveryOrderFloor": "nav.breadcrumb.deliveryOrderFloor",
  35. "/settings/masterDataIssues": "nav.breadcrumb.masterDataIssues",
  36. "/settings/stockLedgerFix": "nav.breadcrumb.stockLedgerFix",
  37. "/settings/rss": "nav.breadcrumb.demandForecast",
  38. "/settings/equipment": "nav.breadcrumb.equipment",
  39. "/settings/equipment/MaintenanceEdit": "nav.breadcrumb.equipmentMaintenanceEdit",
  40. "/settings/shop": "nav.breadcrumb.shop",
  41. "/settings/shop/board": "nav.breadcrumb.routeBoard",
  42. "/settings/shop/detail": "nav.breadcrumb.shopDetail",
  43. "/settings/shop/truckdetail": "nav.breadcrumb.truckLaneDetail",
  44. "/settings/printer": "nav.breadcrumb.printer",
  45. "/scheduling/rough": "nav.breadcrumb.schedulingRough",
  46. "/scheduling/rough/edit": "nav.breadcrumb.schedulingRoughEdit",
  47. "/scheduling/detailed": "nav.breadcrumb.schedulingDetailed",
  48. "/scheduling/detailed/edit": "nav.breadcrumb.schedulingDetailedEdit",
  49. "/inventory": "nav.breadcrumb.inventory",
  50. "/itemTracing": "nav.breadcrumb.itemTracing",
  51. "/settings/importTesting": "nav.breadcrumb.importTesting",
  52. "/settings/m18ImportTesting": "nav.breadcrumb.importTesting",
  53. "/do": "nav.deliveryOrder",
  54. "/doworkbench": "nav.store.doWorkbench",
  55. "/doworkbenchsearch": "nav.breadcrumb.doWorkbenchSearch",
  56. "/doworkbench/pick": "nav.breadcrumb.doWorkbenchPick",
  57. "/doworkbench/edit": "nav.breadcrumb.doWorkbenchEdit",
  58. "/pickOrder": "nav.store.pickOrder",
  59. "/po": "nav.store.purchaseOrder",
  60. "/po/edit": "nav.breadcrumb.poEdit",
  61. "/po/workbench": "nav.breadcrumb.poWorkbench",
  62. "/dashboard": "nav.dashboard",
  63. "/jo": "nav.jobOrder.searchCreate",
  64. "/jo/edit": "nav.breadcrumb.joEdit",
  65. "/jo/testing": "nav.breadcrumb.joTesting",
  66. "/jo/workbench": "nav.breadcrumb.joWorkbench",
  67. "/putAway": "nav.store.putAwayScan",
  68. "/stockIssue": "nav.store.stockIssue",
  69. "/stocktakemanagement": "nav.store.stockTake",
  70. "/stockRecord": "nav.store.stockRecord",
  71. "/report": "nav.breadcrumb.report",
  72. "/m18Syn": "nav.breadcrumb.m18Sync",
  73. "/bagPrint": "nav.breadcrumb.bagPrint",
  74. "/laserPrint": "nav.breadcrumb.laserPrint",
  75. "/settings/itemPrice": "nav.breadcrumb.priceInquiry",
  76. "/finishedGood": "nav.breadcrumb.finishedGood",
  77. "/finishedGood/management": "nav.breadcrumb.finishedGoodManagement",
  78. "/ps": "nav.scheduling",
  79. "/productionProcess": "nav.jobOrder.productionProcess",
  80. "/jodetail": "nav.jobOrder.pickExecution",
  81. "/bag": "nav.jobOrder.bagUsage",
  82. };
  83. const Breadcrumb = () => {
  84. const pathname = usePathname();
  85. const segments = pathname.split("/");
  86. const { t } = useTranslation(["navigation", "common"]);
  87. return (
  88. <Breadcrumbs>
  89. {segments.map((segment, index) => {
  90. const href = segments.slice(0, index + 1).join("/");
  91. const labelKey = pathToLabelKey[href];
  92. const label = labelKey
  93. ? t(labelKey)
  94. : t(segment, { ns: "common", defaultValue: segment });
  95. if (index === segments.length - 1) {
  96. return (
  97. <Typography key={index} color="text.primary">
  98. {label}
  99. </Typography>
  100. );
  101. } else {
  102. return (
  103. <MUILink
  104. underline="hover"
  105. color="inherit"
  106. key={index}
  107. component={Link}
  108. href={href || "/"}
  109. >
  110. {label}
  111. </MUILink>
  112. );
  113. }
  114. })}
  115. </Breadcrumbs>
  116. );
  117. };
  118. export default Breadcrumb;