| @@ -123,24 +123,24 @@ const setting = { | |||||
| breadcrumbs: false, | breadcrumbs: false, | ||||
| ability:['VIEW','LOGIN_LOG'] | ability:['VIEW','LOGIN_LOG'] | ||||
| }, | }, | ||||
| { | |||||
| id: 'passwordPolicy', | |||||
| title: 'Password Policy', | |||||
| type: 'item', | |||||
| url: '/passwordpolicy', | |||||
| icon: icons.SafetyCertificateOutlined, | |||||
| breadcrumbs: false, | |||||
| ability:['MANAGE','SYSTEM_CONFIGURATION'] | |||||
| }, | |||||
| { | |||||
| id: 'setting', | |||||
| title: 'System Configuration', | |||||
| type: 'item', | |||||
| url: '/setting', | |||||
| icon: icons.SettingOutlined, | |||||
| breadcrumbs: false, | |||||
| ability:['MANAGE','SYSTEM_CONFIGURATION'] | |||||
| }, | |||||
| // { | |||||
| // id: 'passwordPolicy', | |||||
| // title: 'Password Policy', | |||||
| // type: 'item', | |||||
| // url: '/passwordpolicy', | |||||
| // icon: icons.SafetyCertificateOutlined, | |||||
| // breadcrumbs: false, | |||||
| // ability:['MANAGE','SYSTEM_CONFIGURATION'] | |||||
| // }, | |||||
| // { | |||||
| // id: 'setting', | |||||
| // title: 'System Configuration', | |||||
| // type: 'item', | |||||
| // url: '/setting', | |||||
| // icon: icons.SettingOutlined, | |||||
| // breadcrumbs: false, | |||||
| // ability:['MANAGE','SYSTEM_CONFIGURATION'] | |||||
| // }, | |||||
| // { | // { | ||||
| // id: 'generateReminder', | // id: 'generateReminder', | ||||
| // title: 'Generate Reminder', | // title: 'Generate Reminder', | ||||
| @@ -562,6 +562,39 @@ const ClientForm = ({ refClientDetail, | |||||
| <form> | <form> | ||||
| <Grid container> | <Grid container> | ||||
| <Grid item xs={12} s={12} md={12} lg={5.5} sx={{mt:1, ml: 3, mr: 3, mb: 3}}> | |||||
| <Grid container alignItems={"flex-start"}> | |||||
| <Grid item xs={4} s={4} md={4} lg={4} | |||||
| sx={{ml: 3, mr: 3,mt:1, display: 'flex', alignItems: 'flex-start'}}> | |||||
| <Typography variant="lionerSize" component="span"> | |||||
| Client Code: <Typography sx={{ color: GENERAL_RED_COLOR }} component="span">*</Typography> | |||||
| </Typography> | |||||
| </Grid> | |||||
| <Grid item xs={7} s={7} md={7} lg={6.5}> | |||||
| <TextField | |||||
| fullWidth | |||||
| {...register("clientCode", | |||||
| { | |||||
| value: refClient.clientCode, | |||||
| })} | |||||
| id='clientCode' | |||||
| required | |||||
| inputProps={{maxLength: 255, style: {fontSize: '1.1rem'}}} | |||||
| InputProps={{ | |||||
| style: { minHeight:'42.5px', maxHeight: '50vh' }, | |||||
| }} | |||||
| multiline | |||||
| maxRows={3} | |||||
| error={!!errors.lastname} | |||||
| helperText={errors.lastname} | |||||
| disabled | |||||
| autoComplete="off" | |||||
| /> | |||||
| </Grid> | |||||
| </Grid> | |||||
| </Grid> | |||||
| <Grid item xs={12} s={12} md={12} lg={5.5} sx={{mt:1, ml: 3, mr: 3, mb: 3}}> | <Grid item xs={12} s={12} md={12} lg={5.5} sx={{mt:1, ml: 3, mr: 3, mb: 3}}> | ||||
| <Grid container alignItems={"flex-start"}> | <Grid container alignItems={"flex-start"}> | ||||
| <Grid item xs={4} s={4} md={4} lg={4} | <Grid item xs={4} s={4} md={4} lg={4} | ||||
| @@ -745,7 +778,7 @@ const ClientForm = ({ refClientDetail, | |||||
| </Grid> | </Grid> | ||||
| </Grid> | </Grid> | ||||
| <Grid item xs={12} sm={12} md={12} lg={5.5} sx={{ml: 3, mr: 3, mb: 3}}> | |||||
| {/* <Grid item xs={12} sm={12} md={12} lg={5.5} sx={{ml: 3, mr: 3, mb: 3}}> | |||||
| <Grid container alignItems={"center"}> | <Grid container alignItems={"center"}> | ||||
| <Grid item xs={4} s={4} md={4} lg={4} | <Grid item xs={4} s={4} md={4} lg={4} | ||||
| sx={{ml: 3, mr: 3, display: 'flex', alignItems: 'center'}}> | sx={{ml: 3, mr: 3, display: 'flex', alignItems: 'center'}}> | ||||
| @@ -769,7 +802,7 @@ const ClientForm = ({ refClientDetail, | |||||
| /> | /> | ||||
| </Grid> | </Grid> | ||||
| </Grid> | </Grid> | ||||
| </Grid> | |||||
| </Grid> */} | |||||
| <Grid item xs={12} s={12} md={12} lg={5.5} sx={{ml: 3, mr: 3, mb: 3}}> | <Grid item xs={12} s={12} md={12} lg={5.5} sx={{ml: 3, mr: 3, mb: 3}}> | ||||
| <Grid container alignItems={"flex-start"}> | <Grid container alignItems={"flex-start"}> | ||||
| @@ -780,6 +813,21 @@ const ClientForm = ({ refClientDetail, | |||||
| </Typography> | </Typography> | ||||
| </Grid> | </Grid> | ||||
| <Grid item xs={7} s={7} md={7} lg={6.5}> | |||||
| <TextField | |||||
| fullWidth | |||||
| inputProps={{maxLength: 50}} | |||||
| size="small" | |||||
| {...register("cm", | |||||
| { | |||||
| value: "N/A",//refClient.phone1, | |||||
| })} | |||||
| id='cm' | |||||
| disabled | |||||
| autoComplete="off" | |||||
| /> | |||||
| </Grid> | |||||
| {/* <Grid item xs={7} s={7} md={7} lg={7}> | {/* <Grid item xs={7} s={7} md={7} lg={7}> | ||||
| <Autocomplete | <Autocomplete | ||||
| multiple | multiple | ||||
| @@ -828,6 +876,21 @@ const ClientForm = ({ refClientDetail, | |||||
| </Typography> | </Typography> | ||||
| </Grid> | </Grid> | ||||
| <Grid item xs={7} s={7} md={7} lg={6.5}> | |||||
| <TextField | |||||
| fullWidth | |||||
| inputProps={{maxLength: 50}} | |||||
| size="small" | |||||
| {...register("cs", | |||||
| { | |||||
| value: "N/A",//refClient.phone1, | |||||
| })} | |||||
| id='cs' | |||||
| disabled | |||||
| autoComplete="off" | |||||
| /> | |||||
| </Grid> | |||||
| {/* <Grid item xs={7} s={7} md={7} lg={7}> | {/* <Grid item xs={7} s={7} md={7} lg={7}> | ||||
| <Autocomplete | <Autocomplete | ||||
| multiple | multiple | ||||
| @@ -182,7 +182,7 @@ const ClientPanel = () => { | |||||
| <Grid container justifyContent="flex-start" alignItems="center"> | <Grid container justifyContent="flex-start" alignItems="center"> | ||||
| <Grid item xs={3} sx={{mt:-1, mb: -2.25}} > | <Grid item xs={3} sx={{mt:-1, mb: -2.25}} > | ||||
| <Box sx={{ display: 'flex', alignItems: 'center'}}> | <Box sx={{ display: 'flex', alignItems: 'center'}}> | ||||
| <Typography align="center" variant="h5" >{isNewRecord? "New Client" : "Maintain Client"}</Typography> | |||||
| <Typography align="center" variant="h4" >{isNewRecord? "New Client" : "Maintain Client"}</Typography> | |||||
| </Box> | </Box> | ||||
| </Grid> | </Grid> | ||||
| </Grid> | </Grid> | ||||
| @@ -240,6 +240,17 @@ const ClientSearchForm = ({applySearch, setExpanded,expanded}) => { | |||||
| <ThemeProvider theme={LIONER_FORM_THEME}> | <ThemeProvider theme={LIONER_FORM_THEME}> | ||||
| {/*row 2*/} | {/*row 2*/} | ||||
| <Grid container alignItems={"flex-start"} > | <Grid container alignItems={"flex-start"} > | ||||
| <Grid item xs={9} s={6} md={5} lg={3} sx={{ml:3, mr:3, mb:0.5}}> | |||||
| <InputLabel htmlFor="clientCode">Client Code</InputLabel> | |||||
| <TextField | |||||
| fullWidth | |||||
| {...register("clientCode")} | |||||
| inputProps={{maxLength: 500}} | |||||
| id="clientCode" | |||||
| autoComplete="off" | |||||
| /> | |||||
| </Grid> | |||||
| <Grid item xs={9} s={6} md={5} lg={3} sx={{ml:3, mr:3, mb:0.5}}> | <Grid item xs={9} s={6} md={5} lg={3} sx={{ml:3, mr:3, mb:0.5}}> | ||||
| <InputLabel htmlFor="clientLastName">Client Last Name</InputLabel> | <InputLabel htmlFor="clientLastName">Client Last Name</InputLabel> | ||||
| <TextField | <TextField | ||||
| @@ -87,6 +87,12 @@ export default function ClientTable({recordList, pageSize}) { | |||||
| // // </div> | // // </div> | ||||
| // ), | // ), | ||||
| // }, | // }, | ||||
| { | |||||
| id: 'clientCode', | |||||
| field: 'clientCode', | |||||
| headerName: 'Client Code', | |||||
| flex: 1.5, | |||||
| }, | |||||
| { | { | ||||
| id: 'fullname', | id: 'fullname', | ||||
| field: 'fullname', | field: 'fullname', | ||||
| @@ -168,19 +174,19 @@ export default function ClientTable({recordList, pageSize}) { | |||||
| ); | ); | ||||
| } | } | ||||
| }, | }, | ||||
| { | |||||
| id: 'phone2', | |||||
| field: 'phone2', | |||||
| headerName: '2nd Phone No.', | |||||
| flex: 1, | |||||
| renderCell: (params) => { | |||||
| return ( | |||||
| <div style={{display: 'flex', alignItems: 'center', justifyContent: 'center', whiteSpace: 'normal', wordBreak: 'break-word'}}> | |||||
| {params.value} | |||||
| </div> | |||||
| ); | |||||
| } | |||||
| }, | |||||
| // { | |||||
| // id: 'phone2', | |||||
| // field: 'phone2', | |||||
| // headerName: '2nd Phone No.', | |||||
| // flex: 1, | |||||
| // renderCell: (params) => { | |||||
| // return ( | |||||
| // <div style={{display: 'flex', alignItems: 'center', justifyContent: 'center', whiteSpace: 'normal', wordBreak: 'break-word'}}> | |||||
| // {params.value} | |||||
| // </div> | |||||
| // ); | |||||
| // } | |||||
| // }, | |||||
| { | { | ||||
| id: 'remarks', | id: 'remarks', | ||||
| field: 'remarks', | field: 'remarks', | ||||
| @@ -65,7 +65,7 @@ const LoginLogSearchPanel = () => { | |||||
| <Grid container justifyContent="flex-start" alignItems="center"> | <Grid container justifyContent="flex-start" alignItems="center"> | ||||
| <Grid item xs={3} sx={{mb: -2.25}} > | <Grid item xs={3} sx={{mb: -2.25}} > | ||||
| <Box sx={{ display: 'flex', alignItems: 'center'}}> | <Box sx={{ display: 'flex', alignItems: 'center'}}> | ||||
| <Typography align="center" variant="h5" >Login Log</Typography> | |||||
| <Typography align="center" variant="h4" >Login Log</Typography> | |||||
| </Box> | </Box> | ||||
| </Grid> | </Grid> | ||||
| </Grid> | </Grid> | ||||
| @@ -156,7 +156,7 @@ const PasswordPolicyPage = () => { | |||||
| <Grid container rowSpacing={4.5} columnSpacing={2.75} justifyContent="center"> | <Grid container rowSpacing={4.5} columnSpacing={2.75} justifyContent="center"> | ||||
| <ThemeProvider theme={LIONER_FORM_THEME}> | <ThemeProvider theme={LIONER_FORM_THEME}> | ||||
| <Grid item xs={12} sx={{mb: -2.25}}> | <Grid item xs={12} sx={{mb: -2.25}}> | ||||
| <Typography variant="h5">Password Policy</Typography> | |||||
| <Typography variant="h4">Password Policy</Typography> | |||||
| </Grid> | </Grid> | ||||
| <Grid item xs={12} md={11} lg={10} > | <Grid item xs={12} md={11} lg={10} > | ||||
| <MainCard xs={12} md={12} lg={12} | <MainCard xs={12} md={12} lg={12} | ||||
| @@ -169,7 +169,7 @@ const SettingPage = () => { | |||||
| : | : | ||||
| <Grid container rowSpacing={4.5} columnSpacing={2.75} justifyContent="center"> | <Grid container rowSpacing={4.5} columnSpacing={2.75} justifyContent="center"> | ||||
| <Grid item xs={12} sx={{mb: -2.25}}> | <Grid item xs={12} sx={{mb: -2.25}}> | ||||
| <Typography variant="h5">System Configuration</Typography> | |||||
| <Typography variant="h4">System Configuration</Typography> | |||||
| </Grid> | </Grid> | ||||
| <Grid item xs={12} md={11} lg={10} > | <Grid item xs={12} md={11} lg={10} > | ||||
| <MainCard xs={12} md={12} lg={12} | <MainCard xs={12} md={12} lg={12} | ||||
| @@ -177,16 +177,16 @@ const UserInformationCard = ({isCollectData, updateUserObject,userData, | |||||
| content={false} | content={false} | ||||
| // sx={{height:'77.5vh'}} | // sx={{height:'77.5vh'}} | ||||
| > | > | ||||
| <Typography variant="h5" sx={{mt: 1.5, ml: 3, mb: 1}}> | |||||
| Information | |||||
| </Typography> | |||||
| {/*<Typography variant="h5" sx={{mt: 1.5, ml: 3, mb: 1}}> | |||||
| </Typography>*/} | |||||
| <form> | <form> | ||||
| {/* <Grid item xs={12} s={12} md={12} lg={12} sx={{ml: 3, mr: 3, mb:1}}> | {/* <Grid item xs={12} s={12} md={12} lg={12} sx={{ml: 3, mr: 3, mb:1}}> | ||||
| </Grid> */} | </Grid> */} | ||||
| <Grid container> | <Grid container> | ||||
| <Grid item xs={12} s={12} md={12} lg={12} sx={{ml: 3, mr: 3, mb: 1}}> | |||||
| <Grid item xs={12} s={12} md={12} lg={12} sx={{mt: 3, ml: 3, mr: 3, mb: 1}}> | |||||
| <Grid container alignItems={"center"}> | <Grid container alignItems={"center"}> | ||||
| <Grid item xs={4} s={4} md={4} lg={4} | <Grid item xs={4} s={4} md={4} lg={4} | ||||
| sx={{ml: 3, mr: 3, display: 'flex', alignItems: 'center'}}> | sx={{ml: 3, mr: 3, display: 'flex', alignItems: 'center'}}> | ||||
| @@ -196,7 +196,7 @@ const UserMaintainPage = () => { | |||||
| <Grid container rowSpacing={3} columnSpacing={1.5}> | <Grid container rowSpacing={3} columnSpacing={1.5}> | ||||
| <ThemeProvider theme={LIONER_FORM_THEME}> | <ThemeProvider theme={LIONER_FORM_THEME}> | ||||
| <Grid item xs={12} sx={{mt:-1, mb: -2.25}}> | <Grid item xs={12} sx={{mt:-1, mb: -2.25}}> | ||||
| <Typography variant="h5">{isNewRecord? "Create User" : "Maintain User"}</Typography> | |||||
| <Typography variant="h4">{isNewRecord? "Create User" : "Maintain User"}</Typography> | |||||
| </Grid> | </Grid> | ||||
| {/*col 1*/} | {/*col 1*/} | ||||
| <Grid item xs={12} md={12}/* lg={5}*/> | <Grid item xs={12} md={12}/* lg={5}*/> | ||||
| @@ -62,7 +62,7 @@ const UserSettingPage = () => { | |||||
| <Grid container justifyContent="flex-start" alignItems="center"> | <Grid container justifyContent="flex-start" alignItems="center"> | ||||
| <Grid item xs={12} sx={{mb: -2.25}} > | <Grid item xs={12} sx={{mb: -2.25}} > | ||||
| <Box sx={{ display: 'flex', alignItems: 'center'}}> | <Box sx={{ display: 'flex', alignItems: 'center'}}> | ||||
| <Typography align="center" variant="h5">View User</Typography> | |||||
| <Typography align="center" variant="h4">View User</Typography> | |||||
| </Box> | </Box> | ||||
| </Grid> | </Grid> | ||||
| </Grid> | </Grid> | ||||
| @@ -23,6 +23,7 @@ function PDF() { | |||||
| const viewerRef = useRef(null); // Ref for the DOM element where PDF will render | const viewerRef = useRef(null); // Ref for the DOM element where PDF will render | ||||
| const [pdfLoaded, setPdfLoaded] = useState(false); | const [pdfLoaded, setPdfLoaded] = useState(false); | ||||
| const [viewerLoaded, setViewerLoaded] = useState(false); | const [viewerLoaded, setViewerLoaded] = useState(false); | ||||
| const [isSaving, setIsSaving] = useState(false); | |||||
| const [viewInstance,setViewInstance] = useState(); | const [viewInstance,setViewInstance] = useState(); | ||||
| const [adobeDCView,setAdobeDCView] = useState(); | const [adobeDCView,setAdobeDCView] = useState(); | ||||
| const [pdfUrl, setPdfUrl] = useState(); | const [pdfUrl, setPdfUrl] = useState(); | ||||
| @@ -194,6 +195,7 @@ function PDF() { | |||||
| const formData = new FormData(); | const formData = new FormData(); | ||||
| formData.append('file', filledPdfBlob, 'filled_form.pdf'); | formData.append('file', filledPdfBlob, 'filled_form.pdf'); | ||||
| formData.append('record', JSON.stringify(record)); | formData.append('record', JSON.stringify(record)); | ||||
| setIsSaving(true); | |||||
| // Send the filled PDF to your Spring Boot backend's save endpoint | // Send the filled PDF to your Spring Boot backend's save endpoint | ||||
| await axios.post(`${apiPath}${POST_PDF_PATH}`, formData, { | await axios.post(`${apiPath}${POST_PDF_PATH}`, formData, { | ||||
| headers: { | headers: { | ||||
| @@ -201,6 +203,7 @@ function PDF() { | |||||
| }, | }, | ||||
| }) | }) | ||||
| .then(response => { | .then(response => { | ||||
| setIsSaving(false); | |||||
| console.log('PDF saved on server:', response.data); | console.log('PDF saved on server:', response.data); | ||||
| setRecord({ | setRecord({ | ||||
| id: response.data.data.id, | id: response.data.data.id, | ||||
| @@ -264,6 +267,7 @@ function PDF() { | |||||
| variant="contained" | variant="contained" | ||||
| color="cancel" | color="cancel" | ||||
| onClick={viewerLoaded ? handleBackClick : handleBack} | onClick={viewerLoaded ? handleBackClick : handleBack} | ||||
| disabled={isSaving} | |||||
| > | > | ||||
| Back | Back | ||||
| </Button> | </Button> | ||||
| @@ -246,7 +246,7 @@ const PdfSearchForm = ({applySearch, setExpanded,expanded, clientId}) => { | |||||
| </Grid> | </Grid> | ||||
| </Grid> | </Grid> | ||||
| <Grid item xs={9} s={6} md={5} lg={3} sx={{ml:3, mr:3, mb:0.5}}> | |||||
| {/* <Grid item xs={9} s={6} md={5} lg={3} sx={{ml:3, mr:3, mb:0.5}}> | |||||
| <InputLabel htmlFor="remarks">Remarks</InputLabel> | <InputLabel htmlFor="remarks">Remarks</InputLabel> | ||||
| <TextField | <TextField | ||||
| fullWidth | fullWidth | ||||
| @@ -255,7 +255,7 @@ const PdfSearchForm = ({applySearch, setExpanded,expanded, clientId}) => { | |||||
| id="remarks" | id="remarks" | ||||
| autoComplete="off" | autoComplete="off" | ||||
| /> | /> | ||||
| </Grid> | |||||
| </Grid> */} | |||||
| </Grid> | </Grid> | ||||
| @@ -117,6 +117,19 @@ export default function PdfTable({recordList}) { | |||||
| </div> | </div> | ||||
| ), | ), | ||||
| }, | }, | ||||
| { | |||||
| id: 'version', | |||||
| field: 'version', | |||||
| headerName: 'Version', | |||||
| flex: 0.5, | |||||
| renderCell: (params) => { | |||||
| return ( | |||||
| <div style={{display: 'flex', alignItems: 'center', justifyContent: 'center', whiteSpace: 'normal', wordBreak: 'break-word'}}> | |||||
| {params.value} | |||||
| </div> | |||||
| ); | |||||
| } | |||||
| }, | |||||
| { | { | ||||
| id: 'modified', | id: 'modified', | ||||
| field: 'modified', | field: 'modified', | ||||
| @@ -198,19 +211,19 @@ export default function PdfTable({recordList}) { | |||||
| // ); | // ); | ||||
| // } | // } | ||||
| // }, | // }, | ||||
| { | |||||
| id: 'remarks', | |||||
| field: 'remarks', | |||||
| headerName: 'Remarks', | |||||
| flex: 2, | |||||
| renderCell: (params) => { | |||||
| return ( | |||||
| <div style={{display: 'flex', alignItems: 'center', justifyContent: 'center', whiteSpace: 'normal', wordBreak: 'break-word'}}> | |||||
| {params.value} | |||||
| </div> | |||||
| ); | |||||
| } | |||||
| }, | |||||
| // { | |||||
| // id: 'remarks', | |||||
| // field: 'remarks', | |||||
| // headerName: 'Remarks', | |||||
| // flex: 2, | |||||
| // renderCell: (params) => { | |||||
| // return ( | |||||
| // <div style={{display: 'flex', alignItems: 'center', justifyContent: 'center', whiteSpace: 'normal', wordBreak: 'break-word'}}> | |||||
| // {params.value} | |||||
| // </div> | |||||
| // ); | |||||
| // } | |||||
| // }, | |||||
| ]; | ]; | ||||
| @@ -46,6 +46,19 @@ export function SelectTemplateWindow({ isWindowOpen, onNormalClose, onConfirmClo | |||||
| const createNewForm = (templateId) => { | const createNewForm = (templateId) => { | ||||
| navigate(`/pdf/maintain/-${clientId}T${templateId}`); | navigate(`/pdf/maintain/-${clientId}T${templateId}`); | ||||
| }; | }; | ||||
| const generateColorFromKey = (key) => { | |||||
| let hash = 0; | |||||
| for (let i = 0; i < key.length; i++) { | |||||
| hash += key.charCodeAt(i); | |||||
| } | |||||
| const baseHue = (hash * 37) % 360; // Multiply by a prime number for better distribution | |||||
| const saturation = 120; // Higher saturation for more vibrant colors | |||||
| const lightness = 30; // Lower lightness for darker colors | |||||
| return `hsl(${baseHue}, ${saturation}%, ${lightness}%)`; | |||||
| }; | |||||
| return ( | return ( | ||||
| <Dialog | <Dialog | ||||
| @@ -75,8 +88,8 @@ export function SelectTemplateWindow({ isWindowOpen, onNormalClose, onConfirmClo | |||||
| <div key={record.id} style={{ margin: '10px' }}> | <div key={record.id} style={{ margin: '10px' }}> | ||||
| <Button | <Button | ||||
| variant="contained" | variant="contained" | ||||
| color="create" | |||||
| sx={{mr: 1}} | |||||
| //color="create" | |||||
| sx={{backgroundColor: generateColorFromKey(record.name.split(' ')[0]), color: 'white', mr: 1}} | |||||
| onClick={() => createNewForm(record.id)} | onClick={() => createNewForm(record.id)} | ||||
| > | > | ||||
| {record.name} | {record.name} | ||||
| @@ -52,7 +52,7 @@ export const MODULE_COMBO = [ | |||||
| export const USER_GROUP_COMBO = [ | export const USER_GROUP_COMBO = [ | ||||
| // {id:0, key: 0, label: 'System Admin'}, | // {id:0, key: 0, label: 'System Admin'}, | ||||
| {id:1, key: 1, label: 'Case Officer'}, | |||||
| {id:1, key: 1, label: 'Case Manager'}, | |||||
| {id:2, key: 2, label: 'Administrator'}, | {id:2, key: 2, label: 'Administrator'}, | ||||
| ]; | ]; | ||||