From 379de7c3e82358545f1e347afa72bc6d5888a2fd Mon Sep 17 00:00:00 2001 From: Samuel Rowe Date: Sat, 23 Jul 2022 12:05:53 +0530 Subject: [PATCH] feat(frontend): updated create/edit tab forms to use new state shape --- .../components/Modal/Service/Environment.tsx | 41 +++++++++---------- .../src/components/Modal/Service/General.tsx | 41 +++++++++---------- .../src/components/Modal/Service/Labels.tsx | 23 +++++------ .../src/components/Modal/Service/Volumes.tsx | 19 ++++----- 4 files changed, 58 insertions(+), 66 deletions(-) diff --git a/services/frontend/src/components/Modal/Service/Environment.tsx b/services/frontend/src/components/Modal/Service/Environment.tsx index a613252..c506b08 100644 --- a/services/frontend/src/components/Modal/Service/Environment.tsx +++ b/services/frontend/src/components/Modal/Service/Environment.tsx @@ -3,7 +3,7 @@ import { PlusIcon } from "@heroicons/react/outline"; import { Button, styled } from "@mui/joy"; import { useFormikContext } from "formik"; import Record from "../../Record"; -import { IService } from "../../../types"; +import { IEditServiceForm } from "../../../types"; const Root = styled("div")` display: flex; @@ -30,51 +30,50 @@ const Description = styled("p")` `; const Environment = () => { - const formik = useFormikContext<{ - serviceConfig: IService; - }>(); - const environment = (formik.values.serviceConfig.environment as []) || []; + const formik = useFormikContext(); + const { environmentVariables } = formik.values; const handleNewEnvironmentVariable = useCallback(() => { - formik.setFieldValue(`serviceConfig.environment[${environment.length}]`, { - key: "", - value: "" - }); + formik.setFieldValue( + `environmentVariables[${environmentVariables.length}]`, + { + key: "", + value: "" + } + ); }, [formik]); const handleRemoveEnvironmentVariable = useCallback( (index: number) => { - const newEnvironmentVariables = environment.filter( + const newEnvironmentVariables = environmentVariables.filter( (_: unknown, currentIndex: number) => currentIndex != index ); - formik.setFieldValue( - `serviceConfig.environment`, - newEnvironmentVariables - ); + formik.setFieldValue("environmentVariables", newEnvironmentVariables); }, [formik] ); const emptyEnvironmentVariables = - environment && environment.length === 0 ? true : false; + environmentVariables && environmentVariables.length === 0 ? true : false; return ( {!emptyEnvironmentVariables && ( - {environment.map((_: unknown, index: number) => ( + {environmentVariables.map((_: unknown, index: number) => ( { - const formik = useFormikContext<{ - serviceConfig: IService; - }>(); - const labels = (formik.values.serviceConfig.labels as []) || []; + const formik = useFormikContext(); + const { ports } = formik.values; - const handleNewLabel = useCallback(() => { - formik.setFieldValue(`serviceConfig.labels[${labels.length}]`, { + const handleNewPort = useCallback(() => { + formik.setFieldValue(`ports[${ports.length}]`, { key: "", value: "" }); }, [formik]); - const handleRemoveLabel = useCallback( + const handleRemovePort = useCallback( (index: number) => { - const newLabels = labels.filter( + const newPorts = ports.filter( (_: unknown, currentIndex: number) => currentIndex != index ); - formik.setFieldValue(`serviceConfig.labels`, newLabels); + formik.setFieldValue(`ports`, newPorts); }, [formik] ); - const emptyLabels = labels && labels.length === 0 ? true : false; + const emptyPorts = ports && ports.length === 0 ? true : false; return ( <> - - + + Ports - {!emptyLabels && ( + {!emptyPorts && ( - {labels.map((_: unknown, index: number) => ( + {ports.map((_: unknown, index: number) => ( ))} )} - {emptyLabels && ( + {emptyPorts && ( This service does not have any ports.
@@ -105,7 +102,7 @@ const General = () => {
)} - + New port diff --git a/services/frontend/src/components/Modal/Service/Labels.tsx b/services/frontend/src/components/Modal/Service/Labels.tsx index a27865f..2560739 100644 --- a/services/frontend/src/components/Modal/Service/Labels.tsx +++ b/services/frontend/src/components/Modal/Service/Labels.tsx @@ -3,7 +3,7 @@ import { PlusIcon } from "@heroicons/react/outline"; import { Button, styled } from "@mui/joy"; import { useFormikContext } from "formik"; import Record from "../../Record"; -import { IService } from "../../../types"; +import { IEditServiceForm, IService } from "../../../types"; const Root = styled("div")` display: flex; @@ -30,13 +30,11 @@ const Description = styled("p")` `; const Labels = () => { - const formik = useFormikContext<{ - serviceConfig: IService; - }>(); - const labels = (formik.values.serviceConfig.labels as []) || []; + const formik = useFormikContext(); + const { labels } = formik.values; const handleNewLabel = useCallback(() => { - formik.setFieldValue(`serviceConfig.labels[${labels.length}]`, { + formik.setFieldValue(`labels[${labels.length}]`, { key: "", value: "" }); @@ -47,7 +45,7 @@ const Labels = () => { const newLabels = labels.filter( (_: unknown, currentIndex: number) => currentIndex != index ); - formik.setFieldValue(`serviceConfig.labels`, newLabels); + formik.setFieldValue(`labels`, newLabels); }, [formik] ); @@ -62,15 +60,16 @@ const Labels = () => { { - const formik = useFormikContext<{ - serviceConfig: IService; - }>(); - const volumes = (formik.values.serviceConfig.volumes as []) || []; + const formik = useFormikContext(); + const { volumes } = formik.values; const handleNewVolume = useCallback(() => { - formik.setFieldValue(`serviceConfig.volumes[${volumes.length}]`, { + formik.setFieldValue(`volumes[${volumes.length}]`, { key: "", value: "" }); @@ -47,7 +45,7 @@ const Volumes = () => { const newVolumes = volumes.filter( (_: unknown, currentIndex: number) => currentIndex != index ); - formik.setFieldValue(`serviceConfig.volumes`, newVolumes); + formik.setFieldValue(`volumes`, newVolumes); }, [formik] ); @@ -62,19 +60,18 @@ const Volumes = () => {