From 25cf9c80f2ffdfbe89b4003bc376ccd3483ddd07 Mon Sep 17 00:00:00 2001 From: Akshata Katwal Date: Tue, 13 Aug 2024 13:01:12 +0530 Subject: [PATCH 1/2] Issue feat: add admin states in state selection and remove user not found tag from table --- src/components/AreaSelection.tsx | 4 +- src/components/FormControl.tsx | 28 ++++++---- src/components/HeaderComponent.tsx | 22 ++++++-- src/components/UserTable.tsx | 63 +++++++++++----------- src/components/layouts/header/Profile.tsx | 65 +++++++---------------- src/pages/centers.tsx | 49 +++++++++-------- src/pages/login.tsx | 27 +++++++++- src/pages/logout.tsx | 2 + src/utils/useLocationState.tsx | 25 ++++++++- 9 files changed, 166 insertions(+), 119 deletions(-) diff --git a/src/components/AreaSelection.tsx b/src/components/AreaSelection.tsx index 9b569069..23495ecf 100644 --- a/src/components/AreaSelection.tsx +++ b/src/components/AreaSelection.tsx @@ -110,7 +110,7 @@ const AreaSelection: React.FC = ({ tagName={t("FACILITATORS.DISTRICT")} selectedCategories={selectedDistrict} onCategoryChange={handleDistrictChangeWrapper} - disabled={selectedState?.length === 0 || (selectedState && selectedState[0] === "")} + disabled={selectedState?.length === 0 || (selectedState && selectedState[0] === "" ||selectedState[0] === t("COMMON.ALL_STATES"))} overall={!inModal} defaultValue={t("COMMON.ALL_DISTRICTS")} @@ -124,7 +124,7 @@ const AreaSelection: React.FC = ({ selectedCategories={selectedBlock} onCategoryChange={handleBlockChangeWrapper} disabled={ - selectedDistrict?.length === 0 || (selectedDistrict && selectedDistrict[0] === "") + selectedDistrict?.length === 0 || (selectedDistrict && selectedDistrict[0] === "" || selectedDistrict[0] === t("COMMON.ALL_DISTRICTS")) } overall={!inModal} defaultValue={t("COMMON.ALL_BLOCKS")} diff --git a/src/components/FormControl.tsx b/src/components/FormControl.tsx index ba8b49e8..f00f8c7e 100644 --- a/src/components/FormControl.tsx +++ b/src/components/FormControl.tsx @@ -26,7 +26,7 @@ interface MultipleSelectCheckmarksProps { onCategoryChange: (selectedNames: string[], selectedCodes: string[]) => void; disabled?: boolean; overall?: boolean; - defaultValue?:string + defaultValue?: string; } const MultipleSelectCheckmarks: React.FC = ({ @@ -36,22 +36,29 @@ const MultipleSelectCheckmarks: React.FC = ({ selectedCategories, onCategoryChange, disabled = false, - overall = true, - defaultValue + overall = false, + defaultValue, }) => { - console.log(selectedCategories.length, selectedCategories[0]) const { t } = useTranslation(); + const handleChange = ( event: SelectChangeEvent, ) => { - // console.log(value) const { target: { value }, } = event; - const selectedNames = typeof value === "string" ? value.split(",") : value; + + let selectedNames = + typeof value === "string" ? value.split(",") : value; + + if (selectedNames.includes("all")) { + selectedNames = defaultValue ? [defaultValue] : []; + } + const selectedCodes = selectedNames?.map( (name) => codes[names.indexOf(name)], ); + onCategoryChange(selectedNames, selectedCodes); }; @@ -68,19 +75,20 @@ const MultipleSelectCheckmarks: React.FC = ({ ? [defaultValue] : "" : selectedCategories - } onChange={handleChange} + } + onChange={handleChange} input={} renderValue={(selected) => selected.join(", ")} MenuProps={MenuProps} > {overall && ( - - {t("COMMON.ALL")} + + {t("COMMON.ALL")} )} + {names?.map((name) => ( - {/* -1} /> */} ))} diff --git a/src/components/HeaderComponent.tsx b/src/components/HeaderComponent.tsx index 5133bc97..7873d1e5 100644 --- a/src/components/HeaderComponent.tsx +++ b/src/components/HeaderComponent.tsx @@ -70,6 +70,7 @@ const HeaderComponent = ({ selectedNames: string[], selectedCodes: string[], ) => { + if (selectedNames[0] === "") { // if(districts.length!==0) // { @@ -130,9 +131,23 @@ const HeaderComponent = ({ // "offset": 0, fieldName: "states", }; - const response = await getStateBlockDistrictList(object); - const result = response?.result?.values; - setStates(result); + // const response = await getStateBlockDistrictList(object); + // const result = response?.result?.values; + if (typeof window !== "undefined" && window.localStorage) { + const admin = localStorage.getItem("adminInfo"); + if(admin) + { + const stateField = JSON.parse(admin).customFields.find((field: any) => field.label === "STATES"); + console.log(stateField.value, stateField.code) + const object=[{ + value:stateField.code, + label:stateField.value + }] + setStates(object); + + } + } + // setStates(result); console.log(typeof states); } catch (error) { console.log(error); @@ -166,6 +181,7 @@ const HeaderComponent = ({ handleBlockChangeWrapper={handleBlockChangeWrapper} isMobile={isMobile} isMediumScreen={isMediumScreen} + inModal={false} /> )} diff --git a/src/components/UserTable.tsx b/src/components/UserTable.tsx index 4ff86173..cd833a1b 100644 --- a/src/components/UserTable.tsx +++ b/src/components/UserTable.tsx @@ -186,8 +186,8 @@ const UserTable: React.FC = ({ setSelectedBlock([]); setSelectedState(selected); - - if (selected[0] === "") { + console.log(selected[0]) + if (selected[0] === "" || selected[0] === t("COMMON.ALL_STATES")) { if (filters.status) setFilters({ status: [filters.status], role: role }); else setFilters({ role: role }); } else { @@ -233,7 +233,8 @@ const UserTable: React.FC = ({ setSelectedBlock([]); setSelectedDistrict(selected); - if (selected[0] === "") { + + if (selected[0] === "" || selected[0] === t("COMMON.ALL_DISTRICTS")) { if (filters.status) { setFilters({ status: [filters.status], @@ -268,7 +269,7 @@ const UserTable: React.FC = ({ }; const handleBlockChange = (selected: string[], code: string[]) => { setSelectedBlock(selected); - if (selected[0] === "") { + if (selected[0] === "" || selected[0] === t("COMMON.ALL_BLOCKS")) { if (filters.status) { setFilters({ status: [filters.status], @@ -690,33 +691,33 @@ const UserTable: React.FC = ({ ) : ( loading === false && data.length === 0 && ( - // - // {/* */} - // - // - // {t("COMMON.NO_USER_FOUND")} - // - // - - + + {/* */} + + + {t("COMMON.NO_USER_FOUND")} + + + + // ) )} diff --git a/src/components/layouts/header/Profile.tsx b/src/components/layouts/header/Profile.tsx index a8d972d5..065837b2 100644 --- a/src/components/layouts/header/Profile.tsx +++ b/src/components/layouts/header/Profile.tsx @@ -21,6 +21,8 @@ const Profile = () => { const [openEditModal, setOpenEditModal] = React.useState(false); const [userName, setUserName] = React.useState(""); const [userId, setUserId] = React.useState(""); + const [adminInfo, setAdminInfo] = React.useState(); + const [formdata, setFormData] = React.useState(); const adminInformation = useSubmittedButtonStore( (state: any) => state?.adminInformation @@ -185,45 +187,14 @@ const Profile = () => { useEffect(() => { getUserName(); }, [formdata]); - // useEffect(() => { - // // getUserName(); - - // console.log(profileClick); - // const fetchUserDetail = async () => { - // let userId; - // try { - // if (typeof window !== "undefined" && window.localStorage) { - // userId = localStorage.getItem(Storage.USER_ID); - // } - // console.log(profileClick, userId); - - // if (userId && profileClick) { - // setUserId(userId); - - // console.log("true"); - // const fieldValue=true - // const response = await getUserDetailsInfo(userId, fieldValue); - // console.log(response.userData); - // // setUserName(response?.userData?.name); - // console.log(userName); - // setMobile(response?.userData?.mobile); - // setEmail(response?.userData?.email); - // setRole(response?.userData?.role); - // console.log(userName, mobile, email); + useEffect(() => { + if (typeof window !== "undefined" && window.localStorage) { + const admin = localStorage.getItem("adminInfo"); + if(admin) + setAdminInfo(JSON.parse(admin)) - // const initialLetters = userName - // ?.split(" ") - // .map((word) => word[0]) - // .join(""); - // console.log(initialLetters); - // if (initialLetters) setInitials(initialLetters); - // } - // } catch (error) { - // console.log(error); - // } - // }; - // fetchUserDetail(); - // }, [profileClick, submitValue]); + } + }, []); const handleModalSubmit = (value: boolean) => { submitValue ? setSubmitValue(false) : setSubmitValue(true); @@ -319,7 +290,7 @@ const Profile = () => { }} > - {adminInformation?.name + {adminInfo?.name ?.split(" ") .map((word: any) => word[0]) .join("")} @@ -327,22 +298,22 @@ const Profile = () => { - {adminInformation?.name} + {adminInfo?.name} - {adminInformation?.role} + {adminInfo?.role} - {adminInformation?.mobile} + {adminInfo?.mobile} - {adminInformation?.email} + {adminInfo?.email} -{console.log(adminInformation?.role)} +{console.log(adminInfo?.role)} { openEditModal && ( { onSubmit={handleModalSubmit} userType={ // FormContextType.TEACHER - adminInformation?.role === Role.STUDENT + adminInfo?.role === Role.STUDENT ? FormContextType.STUDENT - : adminInformation?.role === Role.TEACHER + : adminInfo?.role === Role.TEACHER ? FormContextType.TEACHER - : adminInformation?.role === Role.ADMIN? FormContextType.ADMIN :FormContextType.TEAM_LEADER + : adminInfo?.role === Role.ADMIN? FormContextType.ADMIN :FormContextType.TEAM_LEADER } /> ) diff --git a/src/pages/centers.tsx b/src/pages/centers.tsx index 3295d60e..5242ce7b 100644 --- a/src/pages/centers.tsx +++ b/src/pages/centers.tsx @@ -598,29 +598,32 @@ const Center: React.FC = () => { const handleAddUserClick = () => { setOpenAddNewCohort(true); }; - const fetchUserDetail = async () => { - let userId; - try { - if (typeof window !== "undefined" && window.localStorage) { - userId = localStorage.getItem(Storage.USER_ID); - } - const fieldValue = true; - if (userId) { - console.log("true"); - const response = await getUserDetailsInfo(userId, fieldValue); - - const userInfo = response?.userData; - //set user info in zustand store - setAdminInformation(userInfo); - } - } catch (error) { - console.log(error); - } - }; - - useEffect(() => { - fetchUserDetail(); - }, []); + // const fetchUserDetail = async () => { + // let userId; + // try { + // if (typeof window !== "undefined" && window.localStorage) { + // userId = localStorage.getItem(Storage.USER_ID); + // } + // const fieldValue = true; + // if (userId) { + // console.log("true"); + // const response = await getUserDetailsInfo(userId, fieldValue); + + // const userInfo = response?.userData; + // //set user info in zustand store + // if (typeof window !== 'undefined' && window.localStorage) { + // localStorage.setItem('adminInfo', JSON.stringify(userInfo)) + // } + // setAdminInformation(userInfo); + // } + // } catch (error) { + // console.log(error); + // } + // }; + + // useEffect(() => { + // fetchUserDetail(); + // }, []); // props to send in header const userProps = { diff --git a/src/pages/login.tsx b/src/pages/login.tsx index f649de1c..15ce878c 100644 --- a/src/pages/login.tsx +++ b/src/pages/login.tsx @@ -124,7 +124,32 @@ const LoginPage = () => { // useEffect(() => { // fetchUserDetail(); // }, []); + const fetchUserDetail = async () => { + let userId; + try { + if (typeof window !== "undefined" && window.localStorage) { + userId = localStorage.getItem(Storage.USER_ID); + } + const fieldValue = true; + if (userId) { + console.log("true"); + const response = await getUserDetailsInfo(userId, fieldValue); + + const userInfo = response?.userData; + //set user info in zustand store + if (typeof window !== 'undefined' && window.localStorage) { + localStorage.setItem('adminInfo', JSON.stringify(userInfo)) + } + setAdminInformation(userInfo); + } + } catch (error) { + console.log(error); + } + }; + useEffect(() => { + fetchUserDetail(); + }, []); const handleFormSubmit = async (event: React.FormEvent) => { event.preventDefault(); logEvent({ @@ -167,7 +192,7 @@ const LoginPage = () => { }; telemetryFactory.interact(telemetryInteract); router.push("/centers"); - // fetchUserDetail(); + fetchUserDetail(); } catch (error: any) { setLoading(false); const errorMessage = t("LOGIN_PAGE.USERNAME_PASSWORD_NOT_CORRECT"); diff --git a/src/pages/logout.tsx b/src/pages/logout.tsx index f18a9db6..97b94dbc 100644 --- a/src/pages/logout.tsx +++ b/src/pages/logout.tsx @@ -24,6 +24,8 @@ function Logout() { localStorage.removeItem("userId"); localStorage.removeItem("name"); localStorage.removeItem("tenantId"); + localStorage.removeItem("adminInfo"); + router.replace("/login"); diff --git a/src/utils/useLocationState.tsx b/src/utils/useLocationState.tsx index d4905740..2b51f608 100644 --- a/src/utils/useLocationState.tsx +++ b/src/utils/useLocationState.tsx @@ -236,6 +236,7 @@ export const useLocationState = ( }, [onClose, open]); useEffect(() => { + const fetchData = async () => { try { const object = { @@ -243,8 +244,28 @@ export const useLocationState = ( }; const response = await getStateBlockDistrictList(object); setStateFieldId(response?.result?.fieldId); - const result = response?.result?.values; - setStates(result); + + + + if (typeof window !== "undefined" && window.localStorage) { + const admin = localStorage.getItem("adminInfo"); + if(admin) + { + const stateField = JSON.parse(admin).customFields.find((field: any) => field.label === "STATES"); + console.log(stateField.value, stateField.code) + const object=[{ + value:stateField.code, + label:stateField.value + }] + setStates(object); + + } + //console.log(JSON.parse(admin)?.customFields) + // setAdminInfo(JSON.parse(admin)) + } + // const result = response?.result?.values; + //console.log(result) + // setStates(result); console.log(typeof states); } catch (error) { console.log(error); From 56e99e4c176dba00054319343a68f0c53eb53cc9 Mon Sep 17 00:00:00 2001 From: Akshata Katwal Date: Tue, 13 Aug 2024 15:16:20 +0530 Subject: [PATCH 2/2] update pr --- src/components/layouts/header/Profile.tsx | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/components/layouts/header/Profile.tsx b/src/components/layouts/header/Profile.tsx index 065837b2..0d4e6011 100644 --- a/src/components/layouts/header/Profile.tsx +++ b/src/components/layouts/header/Profile.tsx @@ -199,6 +199,19 @@ const Profile = () => { const handleModalSubmit = (value: boolean) => { submitValue ? setSubmitValue(false) : setSubmitValue(true); }; + const userType = (() => { + switch (adminInfo?.role) { + case Role.STUDENT: + return FormContextType.STUDENT; + case Role.TEACHER: + return FormContextType.TEACHER; + case Role.ADMIN: + return FormContextType.ADMIN; + default: + return FormContextType.TEAM_LEADER; + } + })(); + return ( <>