diff --git a/services/frontend/src/components/Modal/volume/EditVolumeModal.tsx b/services/frontend/src/components/Modal/volume/EditVolumeModal.tsx index ce98c54..a17f6a4 100644 --- a/services/frontend/src/components/Modal/volume/EditVolumeModal.tsx +++ b/services/frontend/src/components/Modal/volume/EditVolumeModal.tsx @@ -1,15 +1,15 @@ -import { useEffect, useState } from "react"; +import { useEffect, useMemo, useState } from "react"; import { Formik } from "formik"; -import * as yup from "yup"; import { XIcon } from "@heroicons/react/outline"; import General from "./General"; import Labels from "./Labels"; +import type { CallbackFunction, IVolumeNodeItem } from "../../../types"; import { - CallbackFunction, - ICanvasConfig, - IVolumeNodeItem, - IVolumeTopLevel -} from "../../../types"; + getFinalValues, + getInitialValues, + tabs, + validationSchema +} from "./form-utils"; interface IEditVolumeModal { node: IVolumeNodeItem; @@ -17,47 +17,14 @@ interface IEditVolumeModal { onUpdateEndpoint: CallbackFunction; } +const classNames = (...classes: string[]) => { + return classes.filter(Boolean).join(" "); +}; + const EditVolumeModal = (props: IEditVolumeModal) => { const { node, onHide, onUpdateEndpoint } = props; const [openTab, setOpenTab] = useState("General"); const [selectedNode, setSelectedNode] = useState(); - const handleUpdate = (values: any) => { - const updated = { ...selectedNode }; - updated.canvasConfig = values.canvasConfig; - updated.volumeConfig = values.volumeConfig; - onUpdateEndpoint(updated); - }; - const validationSchema = yup.object({ - canvasConfig: yup.object({ - node_name: yup - .string() - .max(256, "volume name should be 256 characters or less") - .required("volume name is required") - }), - volumeConfig: yup.object({ - name: yup - .string() - .max(256, "name should be 256 characters or less") - .required("name is required") - }) - }); - const tabs = [ - { - name: "General", - href: "#", - current: true, - hidden: false - }, - { - name: "Labels", - href: "#", - current: false, - hidden: false - } - ]; - const classNames = (...classes: string[]) => { - return classes.filter(Boolean).join(" "); - }; useEffect(() => { if (node) { @@ -65,6 +32,12 @@ const EditVolumeModal = (props: IEditVolumeModal) => { } }, [node]); + const handleUpdate = (values: any) => { + onUpdateEndpoint(getFinalValues(values, selectedNode)); + }; + + const initialValues = useMemo(() => getInitialValues(), []); + return (
@@ -75,9 +48,7 @@ const EditVolumeModal = (props: IEditVolumeModal) => {
-

- Update top level volumes -

+

Edit top level volumes