Adding dropdown in Daily task.

This commit is contained in:
Kartik Sharma 2025-12-06 10:22:24 +05:30
parent 0e75a3e1c9
commit a1680c709a
2 changed files with 71 additions and 42 deletions

View File

@ -7,11 +7,20 @@ import { setProjectId } from "../../slices/localVariablesSlice";
import { useSelectedProject } from "../../slices/apiDataManager"; import { useSelectedProject } from "../../slices/apiDataManager";
import { useProjectAssignedServices } from "../../hooks/useProjects"; import { useProjectAssignedServices } from "../../hooks/useProjects";
import { setService } from "../../slices/globalVariablesSlice"; import { setService } from "../../slices/globalVariablesSlice";
import { AppFormController } from "../../hooks/appHooks/useAppForm";
import SelectField from "../../components/common/Forms/SelectField";
import { useForm } from "react-hook-form";
const TaskPlanning = () => { const TaskPlanning = () => {
const selectedProject = useSelectedProject(); const selectedProject = useSelectedProject();
const selectedService = useCurrentService(); const selectedService = useCurrentService();
const dispatch = useDispatch(); const dispatch = useDispatch();
const { control } = useForm({
defaultValues: {
serviceFilter: selectedService ?? ""
},
});
const { projectNames = [], loading: projectLoading } = useProjectName(); const { projectNames = [], loading: projectLoading } = useProjectName();
@ -29,6 +38,7 @@ const TaskPlanning = () => {
if (projectLoading) { if (projectLoading) {
return <div className="text-center py-5">Loading...</div>; return <div className="text-center py-5">Loading...</div>;
} }
return ( return (
<div className="container-fluid"> <div className="container-fluid">
<Breadcrumb <Breadcrumb
@ -43,25 +53,30 @@ const TaskPlanning = () => {
{data?.length === 0 ? ( {data?.length === 0 ? (
<p className="badge bg-label-secondary m-0">Service not assigned</p> <p className="badge bg-label-secondary m-0">Service not assigned</p>
) : ( ) : (
<select <AppFormController
name="DataTables_Table_0_length" name="serviceFilter"
aria-controls="DataTables_Table_0" control={control}
className="form-select form-select-sm" render={({ field }) => (
aria-label="Select Service" <SelectField
value={selectedService ?? ""} label="Services"
onChange={(e) => dispatch(setService(e.target.value))} placeholder="All Services"
> options={data ?? []}
<option value="">All Services</option> labelKeyKey="name"
{!servicesLoading && valueKeyKey="id"
data?.map((service) => ( isLoading={servicesLoading}
<option key={service.id} value={service.id}> value={field.value}
{service.name} onChange={(val) => {
</option> field.onChange(val); // react-hook-form update
))} dispatch(setService(val)); // Redux update
</select> }}
className="m-0"
/>
)}
/>
)} )}
</div> </div>
{/* Planning Component */} {/* Planning Component */}
{selectedProject ? ( {selectedProject ? (
<InfraPlanning /> <InfraPlanning />

View File

@ -10,6 +10,9 @@ import { useFab } from "../../Context/FabContext";
import SubTask from "../../components/Activities/SubTask"; import SubTask from "../../components/Activities/SubTask";
import { useProjectAssignedServices } from "../../hooks/useProjects"; import { useProjectAssignedServices } from "../../hooks/useProjects";
import { useSelectedProject } from "../../slices/apiDataManager"; import { useSelectedProject } from "../../slices/apiDataManager";
import SelectField from "../../components/common/Forms/SelectField";
import { AppFormController } from "../../hooks/appHooks/useAppForm";
import { useForm } from "react-hook-form";
const DailyProgrssContext = createContext(); const DailyProgrssContext = createContext();
export const useDailyProgrssContext = () => { export const useDailyProgrssContext = () => {
@ -23,9 +26,9 @@ export const useDailyProgrssContext = () => {
}; };
const DailyProgrssReport = () => { const DailyProgrssReport = () => {
const selectedProject = useSelectedProject() const selectedProject = useSelectedProject()
const [service, setService] = useState(""); const [service, setService] = useState("");
const [filter,setFilter] = useState('') const [filter, setFilter] = useState('')
const { setOffcanvasContent, setShowTrigger } = useFab(); const { setOffcanvasContent, setShowTrigger } = useFab();
const { data, isLoading, isError, error } = useProjectAssignedServices(selectedProject); const { data, isLoading, isError, error } = useProjectAssignedServices(selectedProject);
@ -41,8 +44,14 @@ const DailyProgrssReport = () => {
filter, filter,
}; };
const handleFilter = (filterObj)=>{ const { control } = useForm({
setFilter(filterObj) defaultValues: {
serviceFilter: ""
}
});
const handleFilter = (filterObj) => {
setFilter(filterObj)
} }
useEffect(() => { useEffect(() => {
@ -89,32 +98,37 @@ const DailyProgrssReport = () => {
/> />
<div className="card card-fullscreen p-5"> <div className="card card-fullscreen p-5">
{data?.length > 0 && (<div className="col-sm-4 col-md-3 col-12"> {data?.length > 0 && (
<select <div className="col-sm-4 col-md-3 col-12 text-start">
className="form-select form-select-sm" <AppFormController
value={service ?? ""} name="serviceFilter"
onChange={(e) => setService(e.target.value)} control={control}
> defaultValue={service ?? ""}
{isLoading ? ( render={({ field }) => (
<option value="lading" disabled>Loading...</option> <SelectField
) : ( label="Services"
<> options={data ?? []}
<option value=""> placeholder="All Services"
All Services labelKeyKey="name"
</option> valueKeyKey="id"
{data?.map((service) => ( isLoading={isLoading}
<option key={service.id} value={service.id}> value={field.value}
{service.name} onChange={(val) => {
</option> field.onChange(val); // update RHF
))} setService(val); // update your local filter state
</> }}
)} className="m-0"
</select> />
</div>)} )}
/>
</div>
)}
<div> <div>
<TaskReportList /> <TaskReportList />
</div> </div>
</div> </div>
</DailyProgrssContext.Provider> </DailyProgrssContext.Provider>
</div> </div>
); );