From 7190a3c190fafb6e8326946a7c72226b830b1e81 Mon Sep 17 00:00:00 2001 From: "pramod.mahajan" Date: Fri, 14 Nov 2025 16:39:46 +0530 Subject: [PATCH] added offcanavs for create and update --- src/components/ServiceProject/JobComments.jsx | 1 - src/components/ServiceProject/JobList.jsx | 17 +- src/components/ServiceProject/Jobs.jsx | 26 ++- src/components/ServiceProject/ManageJob.jsx | 212 ++++++++++-------- .../ServiceProject/ServiceProjectNav.jsx | 26 +-- .../ServiceProject/ServiceProjectSchema.jsx | 38 ++-- src/hooks/useServiceProject.jsx | 23 +- src/repositories/ServiceProjectRepository.jsx | 3 +- 8 files changed, 202 insertions(+), 144 deletions(-) diff --git a/src/components/ServiceProject/JobComments.jsx b/src/components/ServiceProject/JobComments.jsx index 42c64d63..894c1b38 100644 --- a/src/components/ServiceProject/JobComments.jsx +++ b/src/components/ServiceProject/JobComments.jsx @@ -94,7 +94,6 @@ const JobComments = ({ data }) => { const newFiles = files.filter((_, i) => i !== index); setValue("attachments", newFiles, { shouldValidate: true }); }; - console.log(watch("attachments")) return (
diff --git a/src/components/ServiceProject/JobList.jsx b/src/components/ServiceProject/JobList.jsx index 425ffca4..a58fdd85 100644 --- a/src/components/ServiceProject/JobList.jsx +++ b/src/components/ServiceProject/JobList.jsx @@ -9,9 +9,8 @@ import { useParams } from "react-router-dom"; import ProjectPage from "../../pages/project/ProjectPage"; import { useServiceProjectJobContext } from "./Jobs"; - const JobList = ({ filterByProject }) => { - const {setSelectedJob} = useServiceProjectJobContext() + const { setSelectedJob, setManageJob } = useServiceProjectJobContext(); const { id } = useParams(); const { data, isLoading, isError, error } = useServiceProjectJobs( ITEMS_PER_PAGE, @@ -112,12 +111,22 @@ const JobList = ({ filterByProject }) => {
{/* View always visible */} - <> - diff --git a/src/components/ServiceProject/Jobs.jsx b/src/components/ServiceProject/Jobs.jsx index f7ad0dda..6870c7d0 100644 --- a/src/components/ServiceProject/Jobs.jsx +++ b/src/components/ServiceProject/Jobs.jsx @@ -20,15 +20,21 @@ export const useServiceProjectJobContext = () => { return context; }; const Jobs = () => { + const [manageJob, setManageJob] = useState({ isOpen: false, jobId: null }); const [showCanvas, setShowCanvas] = useState(false); const [selectedProject, setSelectedProject] = useState(null); - const [selectJob,setSelectedJob] = useState({showCanvas:false,job:null}) + const [selectJob, setSelectedJob] = useState({ + showCanvas: false, + job: null, + }); const navigate = useNavigate(); const { data } = useServiceProjects(ITEMS_PER_PAGE, 1); const contextProvider = { - setSelectedJob - } + setSelectedJob, + setSelectedProject, + setManageJob, + }; return ( <> @@ -37,10 +43,19 @@ const Jobs = () => { title="Job" placement="end" show={selectJob.showCanvas} - onClose={() => setSelectedJob({showCanvas:false,job:null})} + onClose={() => setSelectedJob({ showCanvas: false, job: null })} > + setManageJob({ isOpen: false, jobId: null })} + > + +
@@ -64,7 +79,7 @@ const Jobs = () => {
@@ -74,7 +89,6 @@ const Jobs = () => {
- ); diff --git a/src/components/ServiceProject/ManageJob.jsx b/src/components/ServiceProject/ManageJob.jsx index 5232e3ca..95cab9ef 100644 --- a/src/components/ServiceProject/ManageJob.jsx +++ b/src/components/ServiceProject/ManageJob.jsx @@ -1,10 +1,12 @@ -import React from "react"; +import React, { useEffect } from "react"; import Breadcrumb from "../common/Breadcrumb"; import Label from "../common/Label"; import { zodResolver } from "@hookform/resolvers/zod"; import { defaultJobValue, jobSchema } from "./ServiceProjectSchema"; import { useCreateServiceProjectJob, + useJobTags, + useServiceProjectJobDetails, useServiceProjects, } from "../../hooks/useServiceProject"; import { ITEMS_PER_PAGE } from "../../utils/constants"; @@ -19,7 +21,7 @@ import { useAppForm, } from "../../hooks/appHooks/useAppForm"; -const ManageJob = () => { +const ManageJob = ({ Job }) => { const methods = useAppForm({ resolver: zodResolver(jobSchema), defaultValues: defaultJobValue, @@ -40,10 +42,23 @@ const ManageJob = () => { isError: isProjectError, error, } = useServiceProjects(ITEMS_PER_PAGE, 1); + const { + data: JobTags, + isLoading: isTagLoading, + isError: isTagError, + error: tagError, + } = useJobTags(); + const { + data: JobData, + isLoading: isJobLoading, + isError: isJobError, + error: jobError, + } = useServiceProjectJobDetails(Job); const { mutate: CreateJob, isPending } = useCreateServiceProjectJob(() => { reset(); }); + const onSubmit = (formData) => { formData.assignees = formData.assignees.map((emp) => ({ employeeId: emp, @@ -52,104 +67,107 @@ const ManageJob = () => { formData.startDate = localToUtc(formData.startDate); formData.dueDate = localToUtc(formData.dueDate); - // CreateJob(formData); - console.log(formData); + CreateJob(formData) }; - console.log(errors); + + useEffect(() => { + if (!JobData || !Job) return; + const assignedEmployees = (JobData.assignees || []).map((e) => e.id); + reset({ + title: JobData.title ?? "", + description: JobData.description ?? "", + projectId: JobData.project.id ?? "", + assignees: assignedEmployees, + startDate: JobData.startDate ?? null, + dueDate: JobData.dueDate ?? null, + tags: [], + }); + }, [JobData]); + return ( -
- -
-
-
- -
-
-

Create Job

-
-
- - + + +
+ + +
+
+ ( + -
-
- ( - - )} - /> -
-
- - -
-
- - -
-
- - -
-
- -
-
- -