Compare commits

...

2 Commits

Author SHA1 Message Date
victorAnumudu a0da97e14d populate fields from backend 2025-08-08 10:51:42 +01:00
ameye 4d1de18713 Merge branch 'settings-endpoint-start' of MERMS/MermsPanelReactJS into master 2025-08-07 21:02:08 +00:00
2 changed files with 40 additions and 15 deletions
@@ -3,8 +3,7 @@ import { useMutation } from "@tanstack/react-query";
import { pageSettings } from "../../../services/services"; import { pageSettings } from "../../../services/services";
import SiteTemplateSelector from './SiteTemplateSelector'; import SiteTemplateSelector from './SiteTemplateSelector';
const GeneralTab = memo(({name='Full Name', data, isCustom, productData}) =>{ const GeneralTab = memo(({name='Full Name', data, isCustom, productData, backendValues, setFieldsChanged}) =>{
// console.log("Page data == ", data)
const [reqStatus, setReqStatus] = useState({error: null, message: ''}) const [reqStatus, setReqStatus] = useState({error: null, message: ''})
@@ -12,9 +11,17 @@ const GeneralTab = memo(({name='Full Name', data, isCustom, productData}) =>{
Object.entries(data)?.forEach(([key, value]) => { // LOOP TO POPULATE FIELDDATA PROPERTIES WITH DATA OF EACH TAB Object.entries(data)?.forEach(([key, value]) => { // LOOP TO POPULATE FIELDDATA PROPERTIES WITH DATA OF EACH TAB
fieldData[value?.name?.toLowerCase().replace(" ", "_")] = '' fieldData[value?.name?.toLowerCase().replace(" ", "_")] = ''
}) })
backendValues.forEach(item => { //LOOPING THROUGH USER ALREADY ADDED DATA FROM BACKEND IF ANY AND UPDATING THE FIELDDATA OBJECT
fieldData[item?.setting_key?.toLowerCase().replace(" ", "_")] = item?.setting_value
})
// console.log('fieldData', fieldData)
const [fields, setFields] = useState(fieldData) const [fields, setFields] = useState(fieldData)
const handleChange = ({target:{name, value}}) => { const handleChange = ({target:{name, value}}) => {
setFields(prev => ({...prev, [name]:value})) setFields(prev => ({...prev, [name]:value}))
setFieldsChanged(true)
} }
const submitSettings = useMutation({ const submitSettings = useMutation({
@@ -25,6 +32,7 @@ const GeneralTab = memo(({name='Full Name', data, isCustom, productData}) =>{
if(res?.data?.resultCode != '0'){ if(res?.data?.resultCode != '0'){
return setReqStatus({error: true, message: 'Unable to complete, try again later'}) return setReqStatus({error: true, message: 'Unable to complete, try again later'})
} }
setFieldsChanged(false)
setReqStatus({error: false, message: 'Completed successfully'}) setReqStatus({error: false, message: 'Completed successfully'})
}, },
onError: (err) => { onError: (err) => {
+22 -5
View File
@@ -63,8 +63,23 @@ const Settings = memo(({productData}) => {
},[]) },[])
const [fieldsChanged, setFieldsChanged] = useState(false)
const [activeTab, setActiveTab] = useState(Object.entries(settingsObject)[0][1]?.controls) const [activeTab, setActiveTab] = useState(Object.entries(settingsObject)[0][1]?.controls)
const handleChangeTab = (value) => {
// if(fieldsChanged){
// const proceed = confirm('Continue without saving changes')
// if(proceed){
// setActiveTab(value)
// setFieldsChanged(false)
// }
// }else{
// setActiveTab(value)
// }
setActiveTab(value)
}
const {data, isFetching, isError, error} = useQuery({ const {data, isFetching, isError, error} = useQuery({
queryKey: queryKeys.settingsData, queryKey: queryKeys.settingsData,
@@ -78,7 +93,7 @@ const Settings = memo(({productData}) => {
} }
}) })
const settingsData = data?.data const settingsData = data?.data?.settings
// console.log('data', settingsData) // console.log('data', settingsData)
return ( return (
@@ -104,12 +119,14 @@ const Settings = memo(({productData}) => {
{Object.entries(settingsObject).map(([key, value]) => ( {Object.entries(settingsObject).map(([key, value]) => (
<li key={key} className="nav-item"> <li key={key} className="nav-item">
<a className={`nav-link ${activeTab == value.controls && 'active show'}`} <a className={`nav-link ${activeTab == value.controls && 'active show'}`}
id={key} data-bs-toggle="pill" id={key}
// data-bs-toggle="pill"
// data-bs-target={`#${value.controls}`} // data-bs-target={`#${value.controls}`}
type="button" role="tab" type="button"
// role="tab"
// aria-controls={value.controls} // aria-controls={value.controls}
// aria-selected="true" // aria-selected="true"
onClick={()=>setActiveTab(value.controls)} onClick={()=>handleChangeTab(value.controls)}
> >
{value.title} {value.title}
</a> </a>
@@ -124,7 +141,7 @@ const Settings = memo(({productData}) => {
// id={value.controls} role="tabpanel" // id={value.controls} role="tabpanel"
// aria-labelledby={key} // aria-labelledby={key}
> >
<GeneralTab name={value.title} data={value.data} isCustom={value.custom} productData={productData} /> <GeneralTab name={value.title} data={value.data} isCustom={value.custom} productData={productData} backendValues={settingsData} setFieldsChanged={setFieldsChanged} />
</div> </div>
))} ))}
</> </>