From 1a98aeb9348c4298ea0f98f2190443e3b44a91a4 Mon Sep 17 00:00:00 2001 From: Pramod Mahajan Date: Sat, 3 May 2025 01:28:30 +0530 Subject: [PATCH] added Toast and modal open until not close using button --- .../Project/Infrastructure/TaskModel.jsx | 237 ++++++++++-------- 1 file changed, 129 insertions(+), 108 deletions(-) diff --git a/src/components/Project/Infrastructure/TaskModel.jsx b/src/components/Project/Infrastructure/TaskModel.jsx index 791b99ee..6e446c3b 100644 --- a/src/components/Project/Infrastructure/TaskModel.jsx +++ b/src/components/Project/Infrastructure/TaskModel.jsx @@ -1,12 +1,11 @@ import React, { useState, useEffect } from "react"; import { useForm } from "react-hook-form"; -import { zodResolver } from '@hookform/resolvers/zod'; +import { zodResolver } from "@hookform/resolvers/zod"; import { z } from "zod"; -import {useDispatch} from "react-redux"; -import {changeMaster} from "../../../slices/localVariablesSlice"; +import { useDispatch } from "react-redux"; +import { changeMaster } from "../../../slices/localVariablesSlice"; import useMaster from "../../../hooks/masterHook/useMaster"; -// Define Zod validation schema const taskSchema = z.object({ buildingID: z.string().min(1, "Building is required"), floorId: z.string().min(1, "Floor is required"), @@ -18,6 +17,8 @@ const taskSchema = z.object({ const defaultModel = { id: "0", + buildingID: "0", + floorId: "0", workAreaId: 0, activityID: 0, plannedWork: 0, @@ -28,59 +29,39 @@ const TaskModel = ({ project, onSubmit, clearTrigger, - onClearComplete,onClose -} )=>{ - const dispatch = useDispatch() - const {data:activities,loading} = useMaster() + onClearComplete, + onClose, +}) => { + const dispatch = useDispatch(); + const { data: activities } = useMaster(); const [formData, setFormData] = useState(defaultModel); const [selectedBuilding, setSelectedBuilding] = useState(null); const [selectedFloor, setSelectedFloor] = useState(null); const [selectedWorkArea, setSelectedWorkArea] = useState(null); const [selectedActivity, setSelectedActivity] = useState(null); + const [isSubmitting, setIsSubmitting] = useState(false); - - const { register, handleSubmit, formState: { errors },reset } = useForm({ + const { + register, + handleSubmit, + formState: { errors }, + reset, + } = useForm({ resolver: zodResolver(taskSchema), - defaultValues: formData, + defaultValues: defaultModel, }); useEffect(() => { if (clearTrigger) { - setFormData(defaultModel); + resetForm(); onClearComplete(); } }, [clearTrigger, onClearComplete]); - // Handle input changes - const handleChange = (e) => { - const { name, value } = e.target; - const activity = activities.find((b) => b.id === Number(value)); - setFormData({ ...formData, [name]: value }); - }; - - const handleActivityChange = (e) => { - const { value } = e.target; - const activity = activities.find((b) => b.id === Number(value)); - - setFormData({ ...formData, ["activityID"]: value }); - setSelectedActivity(activity); - }; - - const handleWorkAreaChange = (e) => { - const { value } = e.target; - const workArea = selectedFloor.workAreas.find((b) => b.id === Number(value)); - setSelectedWorkArea(workArea); - setFormData({ ...formData, ["workAreaId"]: value }); - }; - - const handleFloorChange = (e) => { - const { value } = e.target; - const floor = selectedBuilding.floors.find((b) => b.id === Number(value)); - setSelectedFloor(floor); - setSelectedWorkArea(null); - setSelectedActivity(null); - setFormData(defaultModel); - }; + useEffect(() => { + dispatch(changeMaster("Activity")); + resetForm(); + }, []); const handleBuildingChange = (e) => { const { value } = e.target; @@ -89,62 +70,97 @@ const TaskModel = ({ setSelectedFloor(null); setSelectedWorkArea(null); setSelectedActivity(null); + reset({ + ...defaultModel, + buildingID: value, + }); + }; + + const handleFloorChange = (e) => { + const { value } = e.target; + const floor = selectedBuilding.floors.find((b) => b.id === Number(value)); + setSelectedFloor(floor); + setSelectedWorkArea(null); + setSelectedActivity(null); + reset((prev) => ({ + ...prev, + floorId: value, + workAreaId: 0, + activityID: 0, + })); + }; + + const handleWorkAreaChange = (e) => { + const { value } = e.target; + const workArea = selectedFloor.workAreas.find( + (b) => b.id === Number(value) + ); + setSelectedWorkArea(workArea); + reset((prev) => ({ + ...prev, + workAreaId: Number(value), + })); + }; + + const handleActivityChange = (e) => { + const { value } = e.target; + const activity = activities.find((b) => b.id === Number(value)); + setSelectedActivity(activity); + reset((prev) => ({ + ...prev, + activityID: Number(value), + })); + }; + + const onSubmitForm = async (data) => { + setIsSubmitting(true); + await onSubmit(data); + reset({ + buildingID: data.buildingID, + floorId: data.floorId, + workAreaId: data.workAreaId, + activityID: data.activityID, + plannedWork: 0, + completedWork: 0, + }); + setIsSubmitting(false); + }; + + + const resetForm = () => { setFormData(defaultModel); + setSelectedBuilding(null); + setSelectedFloor(null); + setSelectedWorkArea(null); + setSelectedActivity(null); + reset(defaultModel); }; - const onSubmitForm = ( data ) => - { - onSubmit( data ); - setSelectedActivity(null), - setSelectedWorkArea(null) - reset( { - plannedWork: 0, - completedWork:0 - - }) - }; - - useEffect( () => - { - - dispatch(changeMaster("Activity")), - () =>{ - resetVlaue () - } - },[]) - const resetVlaue = () => - { - setSelectedBuilding( null ) - setSelectedFloor( null ) - setSelectedWorkArea( null ) - setSelectedActivity(null) - reset( { - plannedWork: 0, - completedWork:0 - }) - } return (
-
)} @@ -214,11 +232,9 @@ const TaskModel = ({ - {errors.activityID &&

{errors.activityID.message}

} + {errors.activityID && ( +

{errors.activityID.message}

+ )}
)} @@ -240,12 +258,12 @@ const TaskModel = ({ - {errors.plannedWork &&

{errors.plannedWork.message}

} + {errors.plannedWork && ( +

{errors.plannedWork.message}

+ )}
)} @@ -258,12 +276,14 @@ const TaskModel = ({ - {errors.completedWork &&

{errors.completedWork.message}

} + {errors.completedWork && ( +

+ {errors.completedWork.message} +

+ )}
)} @@ -276,8 +296,6 @@ const TaskModel = ({ @@ -286,7 +304,11 @@ const TaskModel = ({
-