From a309d13247c0362bf97dc3fa12efbceaf231a9e6 Mon Sep 17 00:00:00 2001 From: Kartik Sharma Date: Sat, 13 Dec 2025 11:51:16 +0530 Subject: [PATCH] Correction in teams, projectinfra and daily task for dropdown. --- src/components/Project/ProjectInfra.jsx | 62 +++++++++------ src/components/Project/Team/Teams.jsx | 61 +++++++------- src/pages/Activities/TaskPlannng.jsx | 67 ++++++++-------- .../DailyProgrssReport.jsx | 79 ++++++++++--------- 4 files changed, 145 insertions(+), 124 deletions(-) diff --git a/src/components/Project/ProjectInfra.jsx b/src/components/Project/ProjectInfra.jsx index cd817a77..2c1c4749 100644 --- a/src/components/Project/ProjectInfra.jsx +++ b/src/components/Project/ProjectInfra.jsx @@ -55,7 +55,7 @@ const ProjectInfra = ({ data, onDataChange, eachSiteEngineer }) => { const { data: assignedServices, isLoading: servicesLoading } = useProjectAssignedServices(projectId); - const { control } = useForm({ + const { control, setValue } = useForm({ defaultValues: { serviceId: selectedService || "", }, @@ -74,6 +74,22 @@ const ProjectInfra = ({ data, onDataChange, eachSiteEngineer }) => { }; + useEffect(() => { + if (!servicesLoading && assignedServices?.length === 1) { + const serviceId = assignedServices[0].id; + + // set form value + setValue("serviceId", serviceId, { + shouldDirty: true, + shouldValidate: true, + }); + + // sync redux + dispatch(setService(serviceId)); + } + }, [assignedServices, servicesLoading, setValue, dispatch]); + + return ( <> {showModalBuilding && ( @@ -132,31 +148,27 @@ const ProjectInfra = ({ data, onDataChange, eachSiteEngineer }) => {
{!servicesLoading && assignedServices?.length > 0 && ( - assignedServices.length > 1 ? ( - ( - { - field.onChange(val); - handleServiceChange(val); - }} - isLoading={servicesLoading} - /> - )} - /> - ) : ( -
{assignedServices[0].name}
- ) + ( + { + field.onChange(val); + dispatch(setService(val)); + }} + isLoading={servicesLoading} + /> + )} + /> )} +
diff --git a/src/components/Project/Team/Teams.jsx b/src/components/Project/Team/Teams.jsx index ff919a69..e91a5dbf 100644 --- a/src/components/Project/Team/Teams.jsx +++ b/src/components/Project/Team/Teams.jsx @@ -34,7 +34,7 @@ const Teams = () => { const [selectedEmployee, setSelectedEmployee] = useState(null); const [deleteEmployee, setDeleteEmplyee] = useState(null); const [activeEmployee, setActiveEmployee] = useState(false); - const { control, watch } = useForm({ + const { control, watch, setValue } = useForm({ defaultValues: { selectedService: "", searchTerm: "", @@ -136,6 +136,18 @@ const Teams = () => { return () => eventBus.off("employee", employeeHandler); }, [employeeHandler]); + useEffect(() => { + if (!servicesLoading && assignedServices?.length === 1) { + const serviceId = assignedServices[0].id; + + setValue("selectedService", serviceId, { + shouldDirty: true, + shouldValidate: true, + }); + } + }, [assignedServices, servicesLoading, setValue]); + + return ( <> {AssigTeam && ( @@ -162,37 +174,30 @@ const Teams = () => {
- {!servicesLoading && assignedServices && ( - <> - {assignedServices.length === 1 && ( -
{assignedServices[0].name}
- )} - - {assignedServices.length > 1 && ( -
- ( - - )} + {!servicesLoading && assignedServices?.length > 0 && ( +
+ ( + -
- )} - + )} + /> +
)} +
{ const selectedProject = useSelectedProject(); const selectedService = useCurrentService(); const dispatch = useDispatch(); - const { control } = useForm({ + const { control,setValue } = useForm({ defaultValues: { serviceFilter: selectedService ?? "" }, @@ -39,6 +39,20 @@ const TaskPlanning = () => { return
Loading...
; } + useEffect(() => { + if (!servicesLoading && data?.length === 1) { + const serviceId = data[0].id; + + setValue("serviceFilter", serviceId, { + shouldValidate: true, + shouldDirty: true, + }); + + dispatch(setService(serviceId)); + } + }, [servicesLoading, data, setValue, dispatch]); + + return (
{ />
-
- - {/* When no services available */} +
{data?.length === 0 ? (

) : ( - <> - {/* When exactly 1 service assigned → display heading */} - {data?.length === 1 && ( -
{data[0].name}
- )} - - {/* When multiple services → show dropdown */} - {data?.length > 1 && ( - ( - { - field.onChange(val); - dispatch(setService(val)); - }} - className="m-0" - /> - )} + ( + { + field.onChange(val); + dispatch(setService(val)); + }} + className="m-0" /> )} - + /> )} -
diff --git a/src/pages/DailyProgressReport/DailyProgrssReport.jsx b/src/pages/DailyProgressReport/DailyProgrssReport.jsx index 258e0d2f..8f4f2e4a 100644 --- a/src/pages/DailyProgressReport/DailyProgrssReport.jsx +++ b/src/pages/DailyProgressReport/DailyProgrssReport.jsx @@ -46,7 +46,7 @@ const DailyProgrssReport = () => { filter, }; - const { control } = useForm({ + const { control,setValue } = useForm({ defaultValues: { serviceFilter: "" } @@ -85,6 +85,22 @@ const DailyProgrssReport = () => { return updated; }); }; + + useEffect(() => { + if (!isLoading && data?.length === 1) { + const serviceId = data[0].id; + + // set form value + setValue("serviceFilter", serviceId, { + shouldDirty: true, + shouldValidate: true, + }); + + // set local state + setService(serviceId); + } + }, [isLoading, data, setValue]); + return (
@@ -120,44 +136,31 @@ const DailyProgrssReport = () => { />
-
- {/* Service Heading or Dropdown */} - {!isLoading && data && ( - <> - {/* If only 1 service assigned → show heading */} - {data.length === 1 && ( -
{data[0].name}
+ {data?.length > 0 && ( +
+ ( + { + field.onChange(val); + setService(val); + }} + className="m-0" + /> )} - - {/* If multiple services → show dropdown */} - {data.length > 1 && ( -
- ( - { - field.onChange(val); - setService(val); - }} - className="w-100" - /> - )} - /> -
- )} - - )} -
+ /> +
+ )}