| 1 | {"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 <Loading />;\n\n return (\n <div>\n <div className=\"flex justify-between items-center mb-6\">\n <h1 style={{ fontSize: '36px', fontWeight: 'normal', color: '#7c3aed' }}>Hospital Departments</h1>\n {isAdmin && (\n <div className=\"space-x-2\">\n <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 >\n Add Department\n </button>\n </div>\n )}\n </div>\n\n {error && <ErrorAlert message={error} onClose={() => setError(null)} />}\n\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\">\n {departments.map((dept) => (\n <div key={dept.departmentId} className=\"bg-white rounded-lg shadow p-6 hover:shadow-lg transition flex flex-col items-center\">\n <h2 style={{ fontSize: '28px', fontWeight: 'normal', marginBottom: '20px', textAlign: 'center' }}>{formatDepartmentName(dept.departmentName)}</h2>\n <div className=\"flex gap-3 w-full\">\n <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 >\n View Doctors\n </Link>\n <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 >\n View Details\n </Link>\n </div>\n </div>\n ))}\n </div>\n\n {departments.length === 0 && (\n <div className=\"text-center py-12\">\n <p className=\"text-gray-500\">No departments found</p>\n </div>\n )}\n </div>\n );\n}\n\nexport default DepartmentList;"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]} |
|---|