{"ast":null,"code":"var _jsxFileName = \"C:\\\\Users\\\\User\\\\Downloads\\\\medora5\\\\frontend\\\\src\\\\pages\\\\departments\\\\DepartmentList.js\",\n _s = $RefreshSig$();\nimport React, { useState, useEffect } from 'react';\nimport { Link, useNavigate } from 'react-router-dom';\nimport { departmentService } from '../../services/departmentService';\nimport Loading from '../../components/Loading';\nimport ErrorAlert from '../../components/ErrorAlert';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nfunction DepartmentList() {\n _s();\n const formatDepartmentName = name => {\n if (!name) return 'N/A';\n return name.replace(/_DEPT$/, '').replace(/_/g, ' ').split(' ').map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(' ');\n };\n const user = JSON.parse(localStorage.getItem('user') || '{}');\n const isAdmin = user.role === 'ADMIN';\n const [departments, setDepartments] = useState([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n const navigate = useNavigate();\n useEffect(() => {\n fetchDepartments();\n }, []);\n const fetchDepartments = async () => {\n try {\n setLoading(true);\n const response = await departmentService.getAllDepartments();\n setDepartments(response.data);\n } catch (err) {\n setError('Failed to fetch departments');\n console.error(err);\n } finally {\n setLoading(false);\n }\n };\n if (loading) return /*#__PURE__*/_jsxDEV(Loading, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 37,\n columnNumber: 23\n }, this);\n return /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"flex justify-between items-center mb-6\",\n children: [/*#__PURE__*/_jsxDEV(\"h1\", {\n style: {\n fontSize: '36px',\n fontWeight: 'normal',\n color: '#7c3aed'\n },\n children: \"Hospital Departments\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 42,\n columnNumber: 9\n }, this), isAdmin && /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"space-x-2\",\n children: /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: () => navigate('/departments/new'),\n style: {\n background: '#bfdbfe',\n color: '#1e1035',\n padding: '8px 16px',\n borderRadius: '6px',\n border: 'none',\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: '400'\n },\n onMouseEnter: e => e.currentTarget.style.background = '#93c5fd',\n onMouseLeave: e => e.currentTarget.style.background = '#bfdbfe',\n children: \"Add Department\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 45,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 44,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 41,\n columnNumber: 7\n }, this), error && /*#__PURE__*/_jsxDEV(ErrorAlert, {\n message: error,\n onClose: () => setError(null)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 66,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\",\n children: departments.map(dept => /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"bg-white rounded-lg shadow p-6 hover:shadow-lg transition flex flex-col items-center\",\n children: [/*#__PURE__*/_jsxDEV(\"h2\", {\n style: {\n fontSize: '28px',\n fontWeight: 'normal',\n marginBottom: '20px',\n textAlign: 'center'\n },\n children: formatDepartmentName(dept.departmentName)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 71,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"flex gap-3 w-full\",\n children: [/*#__PURE__*/_jsxDEV(Link, {\n to: `/departments/${dept.departmentId}/doctors`,\n style: {\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: '#9333ea',\n color: 'white',\n padding: '6px 10px',\n borderRadius: '50px',\n textDecoration: 'none',\n fontSize: '14px',\n fontWeight: '400'\n },\n onMouseEnter: e => e.currentTarget.style.background = '#7e22ce',\n onMouseLeave: e => e.currentTarget.style.background = '#9333ea',\n children: \"View Doctors\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 73,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(Link, {\n to: `/departments/${dept.departmentId}`,\n style: {\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: '#7c3aed',\n color: 'white',\n padding: '6px 10px',\n borderRadius: '50px',\n textDecoration: 'none',\n fontSize: '14px',\n fontWeight: '400'\n },\n onMouseEnter: e => e.currentTarget.style.background = '#6d28d9',\n onMouseLeave: e => e.currentTarget.style.background = '#7c3aed',\n children: \"View Details\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 93,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 72,\n columnNumber: 13\n }, this)]\n }, dept.departmentId, true, {\n fileName: _jsxFileName,\n lineNumber: 70,\n columnNumber: 11\n }, this))\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 68,\n columnNumber: 7\n }, this), departments.length === 0 && /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"text-center py-12\",\n children: /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"text-gray-500\",\n children: \"No departments found\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 120,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 119,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 40,\n columnNumber: 5\n }, this);\n}\n_s(DepartmentList, \"GJeGveWA86rQuC5M8UAbE5yTaiE=\", false, function () {\n return [useNavigate];\n});\n_c = DepartmentList;\nexport default DepartmentList;\nvar _c;\n$RefreshReg$(_c, \"DepartmentList\");","map":{"version":3,"names":["React","useState","useEffect","Link","useNavigate","departmentService","Loading","ErrorAlert","jsxDEV","_jsxDEV","DepartmentList","_s","formatDepartmentName","name","replace","split","map","word","charAt","toUpperCase","slice","toLowerCase","join","user","JSON","parse","localStorage","getItem","isAdmin","role","departments","setDepartments","loading","setLoading","error","setError","navigate","fetchDepartments","response","getAllDepartments","data","err","console","fileName","_jsxFileName","lineNumber","columnNumber","children","className","style","fontSize","fontWeight","color","onClick","background","padding","borderRadius","border","cursor","onMouseEnter","e","currentTarget","onMouseLeave","message","onClose","dept","marginBottom","textAlign","departmentName","to","departmentId","flex","display","alignItems","justifyContent","textDecoration","length","_c","$RefreshReg$"],"sources":["C:/Users/User/Downloads/medora5/frontend/src/pages/departments/DepartmentList.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { Link, useNavigate } from 'react-router-dom';\nimport { departmentService } from '../../services/departmentService';\nimport Loading from '../../components/Loading';\nimport ErrorAlert from '../../components/ErrorAlert';\n\nfunction DepartmentList() {\n const formatDepartmentName = (name) => {\n if (!name) return 'N/A';\n return name.replace(/_DEPT$/, '').replace(/_/g, ' ').split(' ').map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(' ');\n };\n\n const user = JSON.parse(localStorage.getItem('user') || '{}');\n const isAdmin = user.role === 'ADMIN';\n const [departments, setDepartments] = useState([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n const navigate = useNavigate();\n\n useEffect(() => {\n fetchDepartments();\n }, []);\n\n const fetchDepartments = async () => {\n try {\n setLoading(true);\n const response = await departmentService.getAllDepartments();\n setDepartments(response.data);\n } catch (err) {\n setError('Failed to fetch departments');\n console.error(err);\n } finally {\n setLoading(false);\n }\n };\n\n if (loading) return
No departments found
\n