diff options
author | rohan09-raj <[email protected]> | 2022-08-25 11:52:33 +0530 |
---|---|---|
committer | rohan09-raj <[email protected]> | 2022-08-25 11:55:12 +0530 |
commit | 54a27fb52551069fa6d40c6f5941c5d49c0f0506 (patch) | |
tree | 8aff7da60822a847ea081c981da904880d6fb807 /admin/src | |
parent | 772fc663fd31bc247dcc7da31090234b5b89f155 (diff) |
admin UI improvement and back button added
Diffstat (limited to 'admin/src')
-rw-r--r-- | admin/src/components/Accordion/Accordion.jsx | 56 | ||||
-rw-r--r-- | admin/src/components/Accordion/Accordion.module.css | 30 | ||||
-rw-r--r-- | admin/src/components/BackButton/BackButton.jsx | 23 | ||||
-rw-r--r-- | admin/src/components/BackButton/BackButton.module.css | 20 | ||||
-rw-r--r-- | admin/src/components/Card/Card.jsx | 22 | ||||
-rw-r--r-- | admin/src/pages/EnrollmentRequests/EnrollmentRequests.jsx (renamed from admin/src/pages/UnverifiedUsers/UnverifiedUsers.jsx) | 37 | ||||
-rw-r--r-- | admin/src/pages/EnrollmentRequests/EnrollmentRequests.module.css (renamed from admin/src/pages/UnverifiedUsers/UnverifiedUsers.module.css) | 0 | ||||
-rw-r--r-- | admin/src/pages/Home/Home.jsx | 14 | ||||
-rw-r--r-- | admin/src/pages/UpdateRequests/UpdateRequests.jsx | 72 | ||||
-rw-r--r-- | admin/src/pages/UpdateRequests/UpdateRequests.module.css | 21 | ||||
-rw-r--r-- | admin/src/routes/index.js | 11 | ||||
-rw-r--r-- | admin/src/styles/GlobalVariables.css | 4 |
12 files changed, 257 insertions, 53 deletions
diff --git a/admin/src/components/Accordion/Accordion.jsx b/admin/src/components/Accordion/Accordion.jsx index 62663a6..4e7c1c1 100644 --- a/admin/src/components/Accordion/Accordion.jsx +++ b/admin/src/components/Accordion/Accordion.jsx @@ -18,28 +18,48 @@ const Accordion = ({name, user}) => { {isActive && ( <div className={styles.accordion__content}> <div className={styles.accordion__demographic}> - <div>Name : {user.name}</div> - <div>Gender : {user.gender}</div> - <div>Date of Birth : {user.dob}</div> - <div>Mobile Number : {user.mobile}</div> - <div>Email : {user.email}</div> - <div> - Address : {user.address.houseNo},{user.address.street}, - {user.address.locality},{user.address.landmark}, - {user.address.village},{user.address.district.name}, - {user.address.state.name},{user.address.pincode} + <div className={styles.demographic__heading}> + <div>Name</div> + <div>Gender</div> + <div>Date of Birth</div> + <div>Mobile Number</div> + <div>Email</div> + <div>Address</div> + <div>Indian Resident</div> + </div> + <hr /> + <div className={styles.demographic__content}> + <div>{user.name}</div> + <div>{user.gender}</div> + <div>{user.dob}</div> + <div>{user.mobile}</div> + <div>{user.email}</div> + <div> + {user.address.houseNo},{user.address.street}, + {user.address.locality},{user.address.landmark}, + {user.address.village},{user.address.district.name}, + {user.address.state.name},{user.address.pincode} + </div> + <div>Indian Resident : {user.indianResident ? 'Yes' : 'No'}</div> </div> - <div>Indian Resident : {user.indianResident ? 'Yes' : 'No'}</div> </div> <div className={styles.accordion__biometric}> - <img src={user.photo} alt='' /> - <Button variant='contained'>Documents</Button> - <Button variant='contained'>Biometric</Button> + <img + src={user.photo} + alt='' + height='300px' + className={styles.accordion__biometric_image} + /> + <Button + sx={{margin: '10px 0px', padding: '20px'}} + variant='contained' + > + Documents + </Button> + <Button sx={{padding: '20px'}} variant='contained'> + Biometric + </Button> </div> - - <img src={user.documents.POI} alt='' /> - <img src={user.documents.POA} alt='' /> - <img src={user.documents.DOB} alt='' /> </div> )} </div> diff --git a/admin/src/components/Accordion/Accordion.module.css b/admin/src/components/Accordion/Accordion.module.css index 86a1c7b..70bee92 100644 --- a/admin/src/components/Accordion/Accordion.module.css +++ b/admin/src/components/Accordion/Accordion.module.css @@ -1,5 +1,5 @@ .accordion { - width: 600px; + width: 1500px; margin: 2rem auto; } @@ -24,6 +24,34 @@ } .accordion__content { + display: flex; + justify-content: center; + background-color: #2c3e50; + border-radius: 10px; + margin: 10px 0px; +} + +.accordion__demographic { + display: flex; + width: 60%; background-color: #ecf0f1; border-radius: 10px; + margin-right: 10px; + padding: 20px; +} + +.accordion__biometric { + width: 40%; + display: flex; + flex-direction: column; +} + +.accordion__biometric_image { + border-radius: 6px; +} + +.demographic__heading div, +.demographic__content div { + margin: 20px 0px; + font-size: var(--font-medium-s); } diff --git a/admin/src/components/BackButton/BackButton.jsx b/admin/src/components/BackButton/BackButton.jsx new file mode 100644 index 0000000..ff99eb6 --- /dev/null +++ b/admin/src/components/BackButton/BackButton.jsx @@ -0,0 +1,23 @@ +import React from 'react' +import styles from './BackButton.module.css' + +const BackButton = ({ onClick, onChange }) => { + return ( + <> + <button + onClick={onClick} + className={styles.submit} + type="submit" + onChange={onChange} + > + <img + className={styles.submit__image} + src={`${process.env.PUBLIC_URL}/assets/images/back.svg`} + alt="" + /> + </button> + </> + ) +} + +export default BackButton diff --git a/admin/src/components/BackButton/BackButton.module.css b/admin/src/components/BackButton/BackButton.module.css new file mode 100644 index 0000000..cc9b51c --- /dev/null +++ b/admin/src/components/BackButton/BackButton.module.css @@ -0,0 +1,20 @@ +.submit { + position: absolute; + top: 100px; + left: 150px; + background: transparent; + border: none; + border-radius: 50%; + transition: 0.2s all; + cursor: pointer; +} + +.submit:active { + transform: scale(0.98); + box-shadow: 3px 2px 22px 1px var(--color-shadow); +} + +.submit__image { + height: 75px; + width: 75px; +} diff --git a/admin/src/components/Card/Card.jsx b/admin/src/components/Card/Card.jsx index 9460955..d57607b 100644 --- a/admin/src/components/Card/Card.jsx +++ b/admin/src/components/Card/Card.jsx @@ -1,13 +1,19 @@ -import React from 'react' -import styles from './Card.module.css' +import React from 'react'; +import styles from './Card.module.css'; -const Card = ({ title, image, onClick }) => { +const Card = ({title, image, onClick}) => { return ( - <div onClick={ onClick } className={styles.card}> - <img className={styles.card__image} src={image} alt="" /> + <div onClick={onClick} className={styles.card}> + <img + className={styles.card__image} + src={image} + alt='' + height='200px' + width='200px' + /> <h2 className={styles.card__title}>{title}</h2> </div> - ) -} + ); +}; -export default Card +export default Card; diff --git a/admin/src/pages/UnverifiedUsers/UnverifiedUsers.jsx b/admin/src/pages/EnrollmentRequests/EnrollmentRequests.jsx index 0c3a57d..8423fc0 100644 --- a/admin/src/pages/UnverifiedUsers/UnverifiedUsers.jsx +++ b/admin/src/pages/EnrollmentRequests/EnrollmentRequests.jsx @@ -1,4 +1,4 @@ -import React, {useEffect} from 'react'; +import React from 'react'; import Accordion from '../../components/Accordion/Accordion'; import Button from '../../components/Button/Button'; import Header from '../../components/Header/Header'; @@ -8,29 +8,30 @@ import { updateUser, } from '../../services/apiservice'; import {useQuery, useMutation} from 'react-query'; +import {useNavigate} from 'react-router-dom'; +import BackButton from '../../components/BackButton/BackButton'; -import styles from './UnverifiedUsers.module.css'; -import Spinner from '../../components/Spinner/Spinner'; +import styles from './EnrollmentRequests.module.css'; -const UnverifiedUsers = () => { - const {data, isLoading, isError} = useQuery('unverified', getUnverifiedUsers); - const deleteUse = useMutation((id) => deleteUser(id)); - const updateUse = useMutation((id) => updateUser(id, {verified: true})); - - useEffect(() => {}, [data]); - - if (isLoading) { - return <Spinner heading='Admin' /> - } - - if (isError) { - return <div>Error</div> - } +const EnrollmentRequests = () => { + const navigate = useNavigate(); + const {data, refetch} = useQuery('unverified', getUnverifiedUsers); + const deleteUse = useMutation((id) => deleteUser(id), { + onSuccess: () => { + refetch(); + }, + }); + const updateUse = useMutation((id) => updateUser(id, {verified: true}), { + onSuccess: () => { + refetch(); + }, + }); return ( <div className={styles.unverified_users}> <Header subheading='Admin' /> + <BackButton onClick={() => navigate('/')} /> <h1 className={styles.unverified_users__heading}>Unverified Users</h1> <div className='accordion'> {data?.data.length !== 0 ? ( @@ -57,4 +58,4 @@ const UnverifiedUsers = () => { ); }; -export default UnverifiedUsers; +export default EnrollmentRequests; diff --git a/admin/src/pages/UnverifiedUsers/UnverifiedUsers.module.css b/admin/src/pages/EnrollmentRequests/EnrollmentRequests.module.css index 652fe52..652fe52 100644 --- a/admin/src/pages/UnverifiedUsers/UnverifiedUsers.module.css +++ b/admin/src/pages/EnrollmentRequests/EnrollmentRequests.module.css diff --git a/admin/src/pages/Home/Home.jsx b/admin/src/pages/Home/Home.jsx index b8d556e..bdc01c8 100644 --- a/admin/src/pages/Home/Home.jsx +++ b/admin/src/pages/Home/Home.jsx @@ -12,14 +12,20 @@ const Home = ({page, setPage}) => { <div className={styles.card__container}> <Link to='/verified'> <Card - title='Verified' + title='Verified Users' image={`${process.env.PUBLIC_URL}/assets/images/verified.svg`} /> </Link> - <Link to='/unverified'> + <Link to='/enrollment'> <Card - title='Unverified' - image={`${process.env.PUBLIC_URL}/assets/images/unverified.svg`} + title='Enrollment Requests' + image={`${process.env.PUBLIC_URL}/assets/images/enrollment.svg`} + /> + </Link> + <Link to='/update'> + <Card + title='Update Requests' + image={`${process.env.PUBLIC_URL}/assets/images/update.svg`} /> </Link> </div> diff --git a/admin/src/pages/UpdateRequests/UpdateRequests.jsx b/admin/src/pages/UpdateRequests/UpdateRequests.jsx new file mode 100644 index 0000000..174dbdc --- /dev/null +++ b/admin/src/pages/UpdateRequests/UpdateRequests.jsx @@ -0,0 +1,72 @@ +import React from 'react'; +import Accordion from '../../components/Accordion/Accordion'; +import Button from '../../components/Button/Button'; +import Header from '../../components/Header/Header'; +import { + deleteUser, + getUnverifiedUsers, + updateUser, +} from '../../services/apiservice'; +import {useQuery, useMutation} from 'react-query'; +import {useNavigate} from 'react-router-dom'; +import styles from './UpdateRequests.module.css'; +import BackButton from '../../components/BackButton/BackButton'; +import Spinner from '../../components/Spinner/Spinner'; + +const UpdateRequests = () => { + const navigate = useNavigate(); + const {data, isLoading, isError, refetch} = useQuery( + 'unverified', + getUnverifiedUsers + ); + const deleteUse = useMutation((id) => deleteUser(id), { + onSuccess: () => { + refetch(); + }, + }); + + const updateUse = useMutation((id) => updateUser(id, {verified: true}), { + onSuccess: () => { + refetch(); + }, + }); + + if (isLoading) { + return <Spinner heading='Admin' />; + } + + if (isError) { + return <div>Error</div>; + } + + return ( + <div className={styles.unverified_users}> + <Header subheading='Admin' /> + <BackButton onClick={() => navigate('/')} /> + <h1 className={styles.unverified_users__heading}>Unverified Users</h1> + <div className='accordion'> + {data?.data.length !== 0 ? ( + data?.data.map((item) => ( + <div className={styles.unverified_users__accordion} key={item._id}> + <Accordion name={item.name} user={item} /> + <Button + title='Accept' + color='green' + onClick={() => updateUse.mutate(item._id)} + /> + <Button + title='Reject' + color='red' + onClick={() => deleteUse.mutate(item._id)} + /> + </div> + )) + ) : ( + <div className={styles.unverified_users__nodata}>No Data Found</div> + )} + </div> + </div> + ); +}; + +export default UpdateRequests; diff --git a/admin/src/pages/UpdateRequests/UpdateRequests.module.css b/admin/src/pages/UpdateRequests/UpdateRequests.module.css new file mode 100644 index 0000000..652fe52 --- /dev/null +++ b/admin/src/pages/UpdateRequests/UpdateRequests.module.css @@ -0,0 +1,21 @@ +.unverified_users { + display: flex; + flex-direction: column; + justify-content: center; +} + +.unverified_users__heading { + text-align: center; +} + +.unverified_users__accordion { + display: flex; + justify-content: center; + align-items: center; + width: 80%; +} + +.unverified_users__nodata { + margin: 20px; + text-align: center; +} diff --git a/admin/src/routes/index.js b/admin/src/routes/index.js index a42c529..f306a3b 100644 --- a/admin/src/routes/index.js +++ b/admin/src/routes/index.js @@ -1,8 +1,8 @@ import React from 'react'; import {Route, Routes} from 'react-router-dom'; - import Home from '../pages/Home/Home'; -import UnverifiedUsers from '../pages/UnverifiedUsers/UnverifiedUsers'; +import EnrollmentRequests from '../pages/EnrollmentRequests/EnrollmentRequests'; +import UpdateRequests from '../pages/UpdateRequests/UpdateRequests'; import VerifiedUsers from '../pages/VerifiedUsers/VerifiedUsers'; const Index = () => { @@ -12,8 +12,11 @@ const Index = () => { <Route path='verified'> <Route index element={<VerifiedUsers />} /> </Route> - <Route path='unverified'> - <Route index element={<UnverifiedUsers />} /> + <Route path='enrollment'> + <Route index element={<EnrollmentRequests />} /> + </Route> + <Route path='update'> + <Route index element={<UpdateRequests />} /> </Route> </Routes> ); diff --git a/admin/src/styles/GlobalVariables.css b/admin/src/styles/GlobalVariables.css index a1e3384..2786f06 100644 --- a/admin/src/styles/GlobalVariables.css +++ b/admin/src/styles/GlobalVariables.css @@ -3,6 +3,10 @@ --color-shadow: rgba(0, 0, 0, 0.24); --font-large: 4rem; + --font-medium-lm: 3rem; + --font-medium-large: 2.5rem; --font-medium: 2rem; + --font-medium-sm: 1.5rem; --font-medium-s: 1.25rem; + --font-small: 1rem; } |