Correction in teams, projectinfra and daily task for dropdown.
This commit is contained in:
parent
fa694d8361
commit
a309d13247
@ -55,7 +55,7 @@ const ProjectInfra = ({ data, onDataChange, eachSiteEngineer }) => {
|
|||||||
const { data: assignedServices, isLoading: servicesLoading } =
|
const { data: assignedServices, isLoading: servicesLoading } =
|
||||||
useProjectAssignedServices(projectId);
|
useProjectAssignedServices(projectId);
|
||||||
|
|
||||||
const { control } = useForm({
|
const { control, setValue } = useForm({
|
||||||
defaultValues: {
|
defaultValues: {
|
||||||
serviceId: selectedService || "",
|
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 (
|
return (
|
||||||
<>
|
<>
|
||||||
{showModalBuilding && (
|
{showModalBuilding && (
|
||||||
@ -132,31 +148,27 @@ const ProjectInfra = ({ data, onDataChange, eachSiteEngineer }) => {
|
|||||||
<div className="col-md-4 col-12 dataTables_length text-start py-2 px-2">
|
<div className="col-md-4 col-12 dataTables_length text-start py-2 px-2">
|
||||||
<div className="ms-4 mt-n1">
|
<div className="ms-4 mt-n1">
|
||||||
{!servicesLoading && assignedServices?.length > 0 && (
|
{!servicesLoading && assignedServices?.length > 0 && (
|
||||||
assignedServices.length > 1 ? (
|
<AppFormController
|
||||||
<AppFormController
|
name="serviceId"
|
||||||
name="serviceId"
|
control={control}
|
||||||
control={control}
|
render={({ field }) => (
|
||||||
render={({ field }) => (
|
<SelectField
|
||||||
<SelectField
|
label="Select Service"
|
||||||
label="Select Service"
|
options={[...(assignedServices ?? [])]}
|
||||||
options={[{ id: "", name: "All Services" }, ...(assignedServices ?? [])]}
|
placeholder="Choose a Service"
|
||||||
placeholder="Choose a Service"
|
labelKey="name"
|
||||||
|
valueKey="id"
|
||||||
labelKey="name"
|
value={field.value}
|
||||||
valueKey="id"
|
onChange={(val) => {
|
||||||
value={field.value}
|
field.onChange(val);
|
||||||
onChange={(val) => {
|
dispatch(setService(val));
|
||||||
field.onChange(val);
|
}}
|
||||||
handleServiceChange(val);
|
isLoading={servicesLoading}
|
||||||
}}
|
/>
|
||||||
isLoading={servicesLoading}
|
)}
|
||||||
/>
|
/>
|
||||||
)}
|
|
||||||
/>
|
|
||||||
) : (
|
|
||||||
<h5>{assignedServices[0].name}</h5>
|
|
||||||
)
|
|
||||||
)}
|
)}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@ -34,7 +34,7 @@ const Teams = () => {
|
|||||||
const [selectedEmployee, setSelectedEmployee] = useState(null);
|
const [selectedEmployee, setSelectedEmployee] = useState(null);
|
||||||
const [deleteEmployee, setDeleteEmplyee] = useState(null);
|
const [deleteEmployee, setDeleteEmplyee] = useState(null);
|
||||||
const [activeEmployee, setActiveEmployee] = useState(false);
|
const [activeEmployee, setActiveEmployee] = useState(false);
|
||||||
const { control, watch } = useForm({
|
const { control, watch, setValue } = useForm({
|
||||||
defaultValues: {
|
defaultValues: {
|
||||||
selectedService: "",
|
selectedService: "",
|
||||||
searchTerm: "",
|
searchTerm: "",
|
||||||
@ -136,6 +136,18 @@ const Teams = () => {
|
|||||||
return () => eventBus.off("employee", employeeHandler);
|
return () => eventBus.off("employee", employeeHandler);
|
||||||
}, [employeeHandler]);
|
}, [employeeHandler]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!servicesLoading && assignedServices?.length === 1) {
|
||||||
|
const serviceId = assignedServices[0].id;
|
||||||
|
|
||||||
|
setValue("selectedService", serviceId, {
|
||||||
|
shouldDirty: true,
|
||||||
|
shouldValidate: true,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, [assignedServices, servicesLoading, setValue]);
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{AssigTeam && (
|
{AssigTeam && (
|
||||||
@ -162,37 +174,30 @@ const Teams = () => {
|
|||||||
<div className="card-body">
|
<div className="card-body">
|
||||||
<div className="row align-items-center justify-content-between mb-4 g-3">
|
<div className="row align-items-center justify-content-between mb-4 g-3">
|
||||||
<div className="col-md-6 col-12 d-flex flex-wrap align-items-center gap-3">
|
<div className="col-md-6 col-12 d-flex flex-wrap align-items-center gap-3">
|
||||||
{!servicesLoading && assignedServices && (
|
{!servicesLoading && assignedServices?.length > 0 && (
|
||||||
<>
|
<div className="col-12 col-md-6 mb-2 text-start">
|
||||||
{assignedServices.length === 1 && (
|
<AppFormController
|
||||||
<h5 className="mb-2">{assignedServices[0].name}</h5>
|
name="selectedService"
|
||||||
)}
|
control={control}
|
||||||
|
render={({ field }) => (
|
||||||
{assignedServices.length > 1 && (
|
<SelectField
|
||||||
<div className="col-12 col-md-6 mb-2 text-start">
|
label="Select Service"
|
||||||
<AppFormController
|
options={[ ...assignedServices]}
|
||||||
name="selectedService"
|
placeholder="Choose a Service"
|
||||||
control={control}
|
labelKey="name"
|
||||||
render={({ field }) => (
|
valueKey="id"
|
||||||
<SelectField
|
value={field.value}
|
||||||
label="Select Service"
|
onChange={field.onChange}
|
||||||
options={[{ id: "", name: "All Services" }, ...assignedServices]}
|
isLoading={servicesLoading}
|
||||||
placeholder="Choose a Service"
|
className="w-100"
|
||||||
labelKey="name"
|
|
||||||
valueKey="id"
|
|
||||||
value={field.value}
|
|
||||||
onChange={field.onChange}
|
|
||||||
isLoading={servicesLoading}
|
|
||||||
className="w-100"
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
/>
|
/>
|
||||||
</div>
|
)}
|
||||||
)}
|
/>
|
||||||
</>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div className="form-check form-switch d-flex align-items-center text-nowrap">
|
<div className="form-check form-switch d-flex align-items-center text-nowrap">
|
||||||
<input
|
<input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
|
|||||||
@ -15,7 +15,7 @@ const TaskPlanning = () => {
|
|||||||
const selectedProject = useSelectedProject();
|
const selectedProject = useSelectedProject();
|
||||||
const selectedService = useCurrentService();
|
const selectedService = useCurrentService();
|
||||||
const dispatch = useDispatch();
|
const dispatch = useDispatch();
|
||||||
const { control } = useForm({
|
const { control,setValue } = useForm({
|
||||||
defaultValues: {
|
defaultValues: {
|
||||||
serviceFilter: selectedService ?? ""
|
serviceFilter: selectedService ?? ""
|
||||||
},
|
},
|
||||||
@ -39,6 +39,20 @@ const TaskPlanning = () => {
|
|||||||
return <div className="text-center py-5">Loading...</div>;
|
return <div className="text-center py-5">Loading...</div>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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 (
|
return (
|
||||||
<div className="container-fluid">
|
<div className="container-fluid">
|
||||||
<Breadcrumb
|
<Breadcrumb
|
||||||
@ -49,44 +63,31 @@ const TaskPlanning = () => {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<div className="card py-2 page-min-h">
|
<div className="card py-2 page-min-h">
|
||||||
<div className="col-sm-4 col-md-3 col-12 px-4 py-2 ms-1 text-start">
|
<div className="col-sm-4 col-md-3 col-12 px-4 py-2 text-start">
|
||||||
|
|
||||||
{/* When no services available */}
|
|
||||||
{data?.length === 0 ? (
|
{data?.length === 0 ? (
|
||||||
<p className="badge bg-label-secondary m-0"></p>
|
<p className="badge bg-label-secondary m-0"></p>
|
||||||
) : (
|
) : (
|
||||||
<>
|
<AppFormController
|
||||||
{/* When exactly 1 service assigned → display heading */}
|
name="serviceFilter"
|
||||||
{data?.length === 1 && (
|
control={control}
|
||||||
<h5 className="mb-3">{data[0].name}</h5>
|
render={({ field }) => (
|
||||||
)}
|
<SelectField
|
||||||
|
label="Services"
|
||||||
{/* When multiple services → show dropdown */}
|
placeholder="All Services"
|
||||||
{data?.length > 1 && (
|
options={[{ id: "", name: "All Services" }, ...(data ?? [])]}
|
||||||
<AppFormController
|
labelKey="name"
|
||||||
name="serviceFilter"
|
valueKey="id"
|
||||||
control={control}
|
isLoading={servicesLoading}
|
||||||
render={({ field }) => (
|
value={field.value}
|
||||||
<SelectField
|
onChange={(val) => {
|
||||||
label="Select Services"
|
field.onChange(val);
|
||||||
placeholder="All Services"
|
dispatch(setService(val));
|
||||||
options={[{ id: "", name: "All Services" }, ...(data ?? [])]}
|
}}
|
||||||
labelKey="name"
|
className="m-0"
|
||||||
valueKey="id"
|
|
||||||
isLoading={servicesLoading}
|
|
||||||
value={field.value}
|
|
||||||
onChange={(val) => {
|
|
||||||
field.onChange(val);
|
|
||||||
dispatch(setService(val));
|
|
||||||
}}
|
|
||||||
className="m-0"
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</>
|
/>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -46,7 +46,7 @@ const DailyProgrssReport = () => {
|
|||||||
filter,
|
filter,
|
||||||
};
|
};
|
||||||
|
|
||||||
const { control } = useForm({
|
const { control,setValue } = useForm({
|
||||||
defaultValues: {
|
defaultValues: {
|
||||||
serviceFilter: ""
|
serviceFilter: ""
|
||||||
}
|
}
|
||||||
@ -85,6 +85,22 @@ const DailyProgrssReport = () => {
|
|||||||
return updated;
|
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 (
|
return (
|
||||||
<div className="container-fluid">
|
<div className="container-fluid">
|
||||||
<DailyProgrssContext.Provider value={contextDispatcher}>
|
<DailyProgrssContext.Provider value={contextDispatcher}>
|
||||||
@ -120,44 +136,31 @@ const DailyProgrssReport = () => {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<div className="card page-min-h p-5">
|
<div className="card page-min-h p-5">
|
||||||
<div className="text-start">
|
{data?.length > 0 && (
|
||||||
{/* Service Heading or Dropdown */}
|
<div className="col-sm-4 col-md-3 col-12 text-start">
|
||||||
{!isLoading && data && (
|
<AppFormController
|
||||||
<>
|
name="serviceFilter"
|
||||||
{/* If only 1 service assigned → show heading */}
|
control={control}
|
||||||
{data.length === 1 && (
|
defaultValue={service ?? ""}
|
||||||
<h5 className="mb-3">{data[0].name}</h5>
|
render={({ field }) => (
|
||||||
|
<SelectField
|
||||||
|
label="Services"
|
||||||
|
options={[{ id: "", name: "All Services" }, ...(data ?? [])]}
|
||||||
|
placeholder="Select Service"
|
||||||
|
labelKey="name"
|
||||||
|
valueKey="id"
|
||||||
|
isLoading={isLoading}
|
||||||
|
value={field.value}
|
||||||
|
onChange={(val) => {
|
||||||
|
field.onChange(val);
|
||||||
|
setService(val);
|
||||||
|
}}
|
||||||
|
className="m-0"
|
||||||
|
/>
|
||||||
)}
|
)}
|
||||||
|
/>
|
||||||
{/* If multiple services → show dropdown */}
|
</div>
|
||||||
{data.length > 1 && (
|
)}
|
||||||
<div className="col-12 col-md-3 mb-3 text-start">
|
|
||||||
<AppFormController
|
|
||||||
name="serviceFilter"
|
|
||||||
control={control}
|
|
||||||
defaultValue={service ?? ""}
|
|
||||||
render={({ field }) => (
|
|
||||||
<SelectField
|
|
||||||
label="Select Service"
|
|
||||||
options={[{ id: "", name: "All Services" }, ...data]}
|
|
||||||
placeholder="Choose a Service"
|
|
||||||
labelKey="name"
|
|
||||||
valueKey="id"
|
|
||||||
value={field.value}
|
|
||||||
isLoading={isLoading}
|
|
||||||
onChange={(val) => {
|
|
||||||
field.onChange(val);
|
|
||||||
setService(val);
|
|
||||||
}}
|
|
||||||
className="w-100"
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
</>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<TaskReportList filter={filter}
|
<TaskReportList filter={filter}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user