diff --git a/services/frontend/src/components/Canvas/NodeIcon.tsx b/services/frontend/src/components/Canvas/NodeIcon.tsx new file mode 100644 index 0000000..a1997d4 --- /dev/null +++ b/services/frontend/src/components/Canvas/NodeIcon.tsx @@ -0,0 +1,28 @@ +import { DatabaseIcon, ServerIcon, ChipIcon } from "@heroicons/react/solid"; + +type NodeIconProps = { + nodeType: string; +}; + +const NodeIcon = ({ nodeType }: NodeIconProps) => { + switch (nodeType) { + case "SERVICE": + return ( + + ); + case "VOLUME": + return ( + + ); + case "NETWORK": + return ( + + ); + default: + return ( + + ); + } +}; + +export default NodeIcon; diff --git a/services/frontend/src/components/Canvas/ServiceNode.tsx b/services/frontend/src/components/Canvas/ServiceNode.tsx index cbd3d71..4865a36 100644 --- a/services/frontend/src/components/Canvas/ServiceNode.tsx +++ b/services/frontend/src/components/Canvas/ServiceNode.tsx @@ -1,9 +1,9 @@ import { useEffect, useState } from "react"; -import { ServerIcon } from "@heroicons/react/outline"; import { truncateStr } from "../../utils"; import { IServiceNodeItem, CallbackFunction } from "../../types"; import eventBus from "../../events/eventBus"; import { Popover } from "./Popover"; +import NodeIcon from "./NodeIcon"; interface INodeProps { node: IServiceNodeItem; @@ -56,9 +56,9 @@ export default function ServiceNode(props: INodeProps) { )}
<> - {node.canvasConfig.service_name && ( + {node.canvasConfig.node_name && (
- {truncateStr(node.canvasConfig.service_name, 12)} + {truncateStr(node.canvasConfig.node_name, 12)}
)} @@ -68,7 +68,7 @@ export default function ServiceNode(props: INodeProps) {
)} - + diff --git a/services/frontend/src/components/Canvas/VolumeNode.tsx b/services/frontend/src/components/Canvas/VolumeNode.tsx index 759f2dd..781e962 100644 --- a/services/frontend/src/components/Canvas/VolumeNode.tsx +++ b/services/frontend/src/components/Canvas/VolumeNode.tsx @@ -1,9 +1,9 @@ import { useEffect, useState } from "react"; -import { DatabaseIcon } from "@heroicons/react/outline"; import { truncateStr } from "../../utils"; import { IVolumeNodeItem, CallbackFunction } from "../../types"; import eventBus from "../../events/eventBus"; import { Popover } from "./Popover"; +import NodeIcon from "./NodeIcon"; interface INodeProps { node: IVolumeNodeItem; @@ -62,7 +62,7 @@ export default function VolumeNode(props: INodeProps) { )} - + diff --git a/services/frontend/src/components/Modal/Service/Create.tsx b/services/frontend/src/components/Modal/Service/Create.tsx index aba5516..87a86cd 100644 --- a/services/frontend/src/components/Modal/Service/Create.tsx +++ b/services/frontend/src/components/Modal/Service/Create.tsx @@ -7,7 +7,7 @@ import Environment from "./Environment"; import Volumes from "./Volumes"; import Labels from "./Labels"; import { serviceConfigCanvasInitialValues } from "../../../utils"; -import { CallbackFunction } from "../../../types"; +import { CallbackFunction, ICanvasConfig, IService } from "../../../types"; interface IModalServiceProps { onHide: CallbackFunction; @@ -18,12 +18,13 @@ const ModalServiceCreate = (props: IModalServiceProps) => { const { onHide, onAddEndpoint } = props; const [openTab, setOpenTab] = useState("General"); const handleCreate = (values: any, formik: any) => { + console.log(values); onAddEndpoint(values); formik.resetForm(); }; const validationSchema = yup.object({ canvasConfig: yup.object({ - service_name: yup + node_name: yup .string() .max(256, "service name should be 256 characters or less") .required("service name is required") @@ -102,6 +103,7 @@ const ModalServiceCreate = (props: IModalServiceProps) => { }} enableReinitialize={true} onSubmit={(values, formik) => { + console.log(values); handleCreate(values, formik); }} validationSchema={validationSchema} @@ -147,8 +149,7 @@ const ModalServiceCreate = (props: IModalServiceProps) => { className="btn-util" type="button" onClick={() => { - onAddEndpoint(formik.values); - formik.resetForm(); + formik.submitForm(); }} > Add diff --git a/services/frontend/src/components/Modal/Service/Edit.tsx b/services/frontend/src/components/Modal/Service/Edit.tsx index baa8699..8077b4f 100644 --- a/services/frontend/src/components/Modal/Service/Edit.tsx +++ b/services/frontend/src/components/Modal/Service/Edit.tsx @@ -32,7 +32,7 @@ const ModalServiceEdit = (props: IModalServiceProps) => { }; const validationSchema = yup.object({ canvasConfig: yup.object({ - service_name: yup + node_name: yup .string() .max(256, "service name should be 256 characters or less") .required("service name is required") diff --git a/services/frontend/src/components/Modal/Service/General.tsx b/services/frontend/src/components/Modal/Service/General.tsx index 40b26e4..961fd71 100644 --- a/services/frontend/src/components/Modal/Service/General.tsx +++ b/services/frontend/src/components/Modal/Service/General.tsx @@ -3,7 +3,7 @@ import TextField from "../../global/FormElements/InputField"; const General = () => { return ( <> - + ); diff --git a/services/frontend/src/components/Modal/Volume/Create.tsx b/services/frontend/src/components/Modal/Volume/Create.tsx index 6d8ef0c..ec40630 100644 --- a/services/frontend/src/components/Modal/Volume/Create.tsx +++ b/services/frontend/src/components/Modal/Volume/Create.tsx @@ -4,7 +4,10 @@ import * as yup from "yup"; import { XIcon } from "@heroicons/react/outline"; import General from "./General"; import Labels from "./Labels"; -import { topLevelVolumeConfigInitialValues } from "../../../utils"; +import { + topLevelVolumeConfigInitialValues, + volumeConfigCanvasInitialValues +} from "../../../utils"; import { CallbackFunction } from "../../../types"; interface IModalVolumeCreate { @@ -68,6 +71,9 @@ const ModalVolumeCreate = (props: IModalVolumeCreate) => { { return key + "-" + uuidv4(); }; +export const setNodeIcon = (nodeType: string) => { + switch (nodeType) { + case "service": + return "ServerIcon"; + case "volume": + return "DatabaseIcon"; + case "network": + return "ChipIcon"; + default: + return "ServerIcon"; + } +}; + export const getClientNodeItem = ( nodeItem: IServiceNodeItem, library: INodeLibraryItem ): IServiceNodeItem => { const uniqueKey = attachUUID(nodeItem.key); + if ( + nodeItem.canvasConfig.node_icon && + nodeItem.canvasConfig.node_icon.length === 0 + ) { + nodeItem.canvasConfig.node_icon = setNodeIcon(nodeItem.type); + } + return { ...nodeItem, key: uniqueKey, @@ -188,9 +208,16 @@ export const topLevelNetworkConfigInitialValues = }; }; +export const volumeConfigCanvasInitialValues = (): ICanvasConfig => { + return { + node_icon: "" + }; +}; + export const serviceConfigCanvasInitialValues = (): ICanvasConfig => { return { - service_name: "unnamed" + node_name: "unnamed", + node_icon: "" }; };