From 94c084e3b7cf4de7049922e9e71f3744723760f5 Mon Sep 17 00:00:00 2001 From: Tom Chapman Date: Mon, 16 Oct 2023 10:32:17 -0700 Subject: [PATCH 1/6] make active toggle on project and proponent form active by default --- epictrack-web/src/components/project/ProjectForm.tsx | 6 +++++- .../src/components/proponent/ProponentForm.tsx | 10 +++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/epictrack-web/src/components/project/ProjectForm.tsx b/epictrack-web/src/components/project/ProjectForm.tsx index 76dda729a..e2a86f74a 100644 --- a/epictrack-web/src/components/project/ProjectForm.tsx +++ b/epictrack-web/src/components/project/ProjectForm.tsx @@ -66,6 +66,7 @@ export default function ProjectForm({ ...props }) { React.useEffect(() => { ctx.setFormId("project-form"); + setDefaultValues(); }, []); React.useEffect(() => { @@ -73,6 +74,10 @@ export default function ProjectForm({ ...props }) { ctx.setId(props.projectId); }, [ctx.id]); + const setDefaultValues = () => { + ctx.setItem({ is_active: true }); + }; + const methods = useForm({ resolver: yupResolver(schema), defaultValues: ctx.item as Project, @@ -94,7 +99,6 @@ export default function ProjectForm({ ...props }) { React.useEffect(() => { const name = (ctx?.item as Project)?.name; - setDisabled(ctx?.item ? true : false); ctx.setTitle(name || "Project"); }, [ctx.title, ctx.item]); diff --git a/epictrack-web/src/components/proponent/ProponentForm.tsx b/epictrack-web/src/components/proponent/ProponentForm.tsx index 383d98bdc..d331fe551 100644 --- a/epictrack-web/src/components/proponent/ProponentForm.tsx +++ b/epictrack-web/src/components/proponent/ProponentForm.tsx @@ -1,11 +1,10 @@ import React from "react"; -import { TextField, Grid, FormControlLabel, Box } from "@mui/material"; +import { TextField, Grid, Box } from "@mui/material"; import { FormProvider, useForm } from "react-hook-form"; import * as yup from "yup"; import { yupResolver } from "@hookform/resolvers/yup"; import { ETFormLabel } from "../shared/index"; import { Staff } from "../../models/staff"; -import ControlledCheckbox from "../shared/controlledInputComponents/ControlledCheckbox"; import { Proponent } from "../../models/proponent"; import staffService from "../../services/staffService/staffService"; import ControlledSelectV2 from "../shared/controlledInputComponents/ControlledSelectV2"; @@ -41,10 +40,11 @@ export default function ProponentForm({ ...props }) { React.useEffect(() => { ctx.setFormId("proponent-form"); + setDefaultValues(); }, []); React.useEffect(() => { const name = (ctx?.item as Proponent)?.name; - setDisabled(ctx?.item ? true : false); + setDisabled(props.proponentId ? true : false); ctx.setTitle(name || "Proponent"); }, [ctx.title, ctx.item]); @@ -68,6 +68,10 @@ export default function ProponentForm({ ...props }) { reset(ctx.item); }, [ctx.item]); + const setDefaultValues = () => { + ctx.setItem({ is_active: true }); + }; + const getStaffs = async () => { const staffsResult = await staffService.getAll(); if (staffsResult.status === 200) { From 18fe1d8d67b77799783288a1c2f85e93dbd95fc2 Mon Sep 17 00:00:00 2001 From: Tom Chapman Date: Mon, 16 Oct 2023 13:25:16 -0700 Subject: [PATCH 2/6] use reset() to set is_active to true --- epictrack-web/src/components/project/ProjectForm.tsx | 6 +----- epictrack-web/src/components/proponent/ProponentForm.tsx | 6 +----- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/epictrack-web/src/components/project/ProjectForm.tsx b/epictrack-web/src/components/project/ProjectForm.tsx index e2a86f74a..b128603ba 100644 --- a/epictrack-web/src/components/project/ProjectForm.tsx +++ b/epictrack-web/src/components/project/ProjectForm.tsx @@ -66,7 +66,7 @@ export default function ProjectForm({ ...props }) { React.useEffect(() => { ctx.setFormId("project-form"); - setDefaultValues(); + reset({ is_active: true }); }, []); React.useEffect(() => { @@ -74,10 +74,6 @@ export default function ProjectForm({ ...props }) { ctx.setId(props.projectId); }, [ctx.id]); - const setDefaultValues = () => { - ctx.setItem({ is_active: true }); - }; - const methods = useForm({ resolver: yupResolver(schema), defaultValues: ctx.item as Project, diff --git a/epictrack-web/src/components/proponent/ProponentForm.tsx b/epictrack-web/src/components/proponent/ProponentForm.tsx index d331fe551..61951ba97 100644 --- a/epictrack-web/src/components/proponent/ProponentForm.tsx +++ b/epictrack-web/src/components/proponent/ProponentForm.tsx @@ -40,7 +40,7 @@ export default function ProponentForm({ ...props }) { React.useEffect(() => { ctx.setFormId("proponent-form"); - setDefaultValues(); + reset({ is_active: true }); }, []); React.useEffect(() => { const name = (ctx?.item as Proponent)?.name; @@ -68,10 +68,6 @@ export default function ProponentForm({ ...props }) { reset(ctx.item); }, [ctx.item]); - const setDefaultValues = () => { - ctx.setItem({ is_active: true }); - }; - const getStaffs = async () => { const staffsResult = await staffService.getAll(); if (staffsResult.status === 200) { From a1d4df7816dcd6ba387ae5ee0d754874cc5db2c2 Mon Sep 17 00:00:00 2001 From: Tom Chapman Date: Tue, 17 Oct 2023 13:59:45 -0700 Subject: [PATCH 3/6] Added safety around setting value to check if it is undefined --- epictrack-web/src/components/project/ProjectForm.tsx | 4 +++- epictrack-web/src/components/proponent/ProponentForm.tsx | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/epictrack-web/src/components/project/ProjectForm.tsx b/epictrack-web/src/components/project/ProjectForm.tsx index b128603ba..d73b70ad6 100644 --- a/epictrack-web/src/components/project/ProjectForm.tsx +++ b/epictrack-web/src/components/project/ProjectForm.tsx @@ -66,7 +66,9 @@ export default function ProjectForm({ ...props }) { React.useEffect(() => { ctx.setFormId("project-form"); - reset({ is_active: true }); + if ((ctx?.item as Project)?.is_active == undefined) { + reset({ is_active: true }); + } }, []); React.useEffect(() => { diff --git a/epictrack-web/src/components/proponent/ProponentForm.tsx b/epictrack-web/src/components/proponent/ProponentForm.tsx index 61951ba97..38f9dbf93 100644 --- a/epictrack-web/src/components/proponent/ProponentForm.tsx +++ b/epictrack-web/src/components/proponent/ProponentForm.tsx @@ -40,7 +40,9 @@ export default function ProponentForm({ ...props }) { React.useEffect(() => { ctx.setFormId("proponent-form"); - reset({ is_active: true }); + if ((ctx?.item as Proponent)?.is_active == undefined) { + reset({ is_active: true }); + } }, []); React.useEffect(() => { const name = (ctx?.item as Proponent)?.name; From b26eccf6539d743662144c11c1f40021523c0cae Mon Sep 17 00:00:00 2001 From: Tom Chapman Date: Tue, 17 Oct 2023 16:04:58 -0700 Subject: [PATCH 4/6] refactor to defaulting toggles --- epictrack-web/src/components/project/ProjectForm.tsx | 10 ++++++---- .../src/components/proponent/ProponentForm.tsx | 10 ++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/epictrack-web/src/components/project/ProjectForm.tsx b/epictrack-web/src/components/project/ProjectForm.tsx index d73b70ad6..b740d5f21 100644 --- a/epictrack-web/src/components/project/ProjectForm.tsx +++ b/epictrack-web/src/components/project/ProjectForm.tsx @@ -66,9 +66,6 @@ export default function ProjectForm({ ...props }) { React.useEffect(() => { ctx.setFormId("project-form"); - if ((ctx?.item as Project)?.is_active == undefined) { - reset({ is_active: true }); - } }, []); React.useEffect(() => { @@ -88,11 +85,16 @@ export default function ProjectForm({ ...props }) { control, formState: { errors }, reset, + setValue, } = methods; const formValues = useWatch({ control }); React.useEffect(() => { - reset(ctx.item); + if (ctx.item) { + reset(ctx.item); + } else { + setValue("is_active", true); + } }, [ctx.item]); React.useEffect(() => { diff --git a/epictrack-web/src/components/proponent/ProponentForm.tsx b/epictrack-web/src/components/proponent/ProponentForm.tsx index 38f9dbf93..fa6ac6226 100644 --- a/epictrack-web/src/components/proponent/ProponentForm.tsx +++ b/epictrack-web/src/components/proponent/ProponentForm.tsx @@ -40,9 +40,6 @@ export default function ProponentForm({ ...props }) { React.useEffect(() => { ctx.setFormId("proponent-form"); - if ((ctx?.item as Proponent)?.is_active == undefined) { - reset({ is_active: true }); - } }, []); React.useEffect(() => { const name = (ctx?.item as Proponent)?.name; @@ -64,10 +61,15 @@ export default function ProponentForm({ ...props }) { handleSubmit, formState: { errors }, reset, + setValue, } = methods; React.useEffect(() => { - reset(ctx.item); + if (ctx.item) { + reset(ctx.item); + } else { + setValue("is_active", true); + } }, [ctx.item]); const getStaffs = async () => { From b428408df319cce0fb2c95ec950065ef6df7d0e7 Mon Sep 17 00:00:00 2001 From: Tom Chapman Date: Wed, 18 Oct 2023 15:06:03 -0700 Subject: [PATCH 5/6] default values --- epictrack-web/src/components/project/ProjectForm.tsx | 5 ++--- epictrack-web/src/components/proponent/ProponentForm.tsx | 5 ++--- epictrack-web/src/components/shared/MasterContext.tsx | 1 + epictrack-web/src/models/project.ts | 4 ++++ epictrack-web/src/models/proponent.ts | 4 ++++ 5 files changed, 13 insertions(+), 6 deletions(-) diff --git a/epictrack-web/src/components/project/ProjectForm.tsx b/epictrack-web/src/components/project/ProjectForm.tsx index b740d5f21..511879255 100644 --- a/epictrack-web/src/components/project/ProjectForm.tsx +++ b/epictrack-web/src/components/project/ProjectForm.tsx @@ -5,7 +5,7 @@ import * as yup from "yup"; import { yupResolver } from "@hookform/resolvers/yup"; import { ETFormLabel } from "../shared/index"; import codeService, { Code } from "../../services/codeService"; -import { Project } from "../../models/project"; +import { Project, defaultProject } from "../../models/project"; import { Proponent } from "../../models/proponent"; import { Region } from "../../models/region"; import { Type } from "../../models/type"; @@ -85,7 +85,6 @@ export default function ProjectForm({ ...props }) { control, formState: { errors }, reset, - setValue, } = methods; const formValues = useWatch({ control }); @@ -93,7 +92,7 @@ export default function ProjectForm({ ...props }) { if (ctx.item) { reset(ctx.item); } else { - setValue("is_active", true); + ctx.setItem(defaultProject); } }, [ctx.item]); diff --git a/epictrack-web/src/components/proponent/ProponentForm.tsx b/epictrack-web/src/components/proponent/ProponentForm.tsx index fa6ac6226..bbd315de2 100644 --- a/epictrack-web/src/components/proponent/ProponentForm.tsx +++ b/epictrack-web/src/components/proponent/ProponentForm.tsx @@ -5,7 +5,7 @@ import * as yup from "yup"; import { yupResolver } from "@hookform/resolvers/yup"; import { ETFormLabel } from "../shared/index"; import { Staff } from "../../models/staff"; -import { Proponent } from "../../models/proponent"; +import { Proponent, defaultProponent } from "../../models/proponent"; import staffService from "../../services/staffService/staffService"; import ControlledSelectV2 from "../shared/controlledInputComponents/ControlledSelectV2"; import { MasterContext } from "../shared/MasterContext"; @@ -61,14 +61,13 @@ export default function ProponentForm({ ...props }) { handleSubmit, formState: { errors }, reset, - setValue, } = methods; React.useEffect(() => { if (ctx.item) { reset(ctx.item); } else { - setValue("is_active", true); + ctx.setItem(defaultProponent); } }, [ctx.item]); diff --git a/epictrack-web/src/components/shared/MasterContext.tsx b/epictrack-web/src/components/shared/MasterContext.tsx index 1d565c833..6a555ccf6 100644 --- a/epictrack-web/src/components/shared/MasterContext.tsx +++ b/epictrack-web/src/components/shared/MasterContext.tsx @@ -135,6 +135,7 @@ export const MasterProvider = ({ type: "success", }); setItem(undefined); + setId(undefined); setBackdrop(false); callback(); } diff --git a/epictrack-web/src/models/project.ts b/epictrack-web/src/models/project.ts index 81bbbf806..b0ae8f21e 100644 --- a/epictrack-web/src/models/project.ts +++ b/epictrack-web/src/models/project.ts @@ -29,3 +29,7 @@ export interface Project { fte_positions_construction: number; fte_positions_operation: number; } + +export const defaultProject = { + is_active: true, +}; diff --git a/epictrack-web/src/models/proponent.ts b/epictrack-web/src/models/proponent.ts index a1dcafd28..47aac2b02 100644 --- a/epictrack-web/src/models/proponent.ts +++ b/epictrack-web/src/models/proponent.ts @@ -7,3 +7,7 @@ export interface Proponent extends ListType, MasterBase { relationship_holder_id?: number; relationship_holder?: Staff; } + +export const defaultProponent = { + is_active: true, +}; From 3d261106594746beb78980e04f4262964f190200 Mon Sep 17 00:00:00 2001 From: Tom Chapman Date: Thu, 19 Oct 2023 08:41:48 -0700 Subject: [PATCH 6/6] default active to true --- epictrack-web/src/components/project/ProjectForm.tsx | 6 +----- epictrack-web/src/components/proponent/ProponentForm.tsx | 6 +----- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/epictrack-web/src/components/project/ProjectForm.tsx b/epictrack-web/src/components/project/ProjectForm.tsx index 511879255..1bc5118a3 100644 --- a/epictrack-web/src/components/project/ProjectForm.tsx +++ b/epictrack-web/src/components/project/ProjectForm.tsx @@ -89,11 +89,7 @@ export default function ProjectForm({ ...props }) { const formValues = useWatch({ control }); React.useEffect(() => { - if (ctx.item) { - reset(ctx.item); - } else { - ctx.setItem(defaultProject); - } + reset(ctx.item ?? defaultProject); }, [ctx.item]); React.useEffect(() => { diff --git a/epictrack-web/src/components/proponent/ProponentForm.tsx b/epictrack-web/src/components/proponent/ProponentForm.tsx index bbd315de2..735fe9dd9 100644 --- a/epictrack-web/src/components/proponent/ProponentForm.tsx +++ b/epictrack-web/src/components/proponent/ProponentForm.tsx @@ -64,11 +64,7 @@ export default function ProponentForm({ ...props }) { } = methods; React.useEffect(() => { - if (ctx.item) { - reset(ctx.item); - } else { - ctx.setItem(defaultProponent); - } + reset(ctx.item ?? defaultProponent); }, [ctx.item]); const getStaffs = async () => {