diff --git a/client/src/components/EdgeOptions.tsx b/client/src/components/EdgeOptions.tsx index 458891f..8766dd3 100644 --- a/client/src/components/EdgeOptions.tsx +++ b/client/src/components/EdgeOptions.tsx @@ -1,4 +1,4 @@ -import { Pipe } from "@server/types/core-types"; +import { Pipe, PipeMode } from "@server/types/core-types"; import { useState } from "react"; import { SendMessage } from "react-use-websocket"; import { Edge, useOnSelectionChange, useStoreApi } from "reactflow"; @@ -14,15 +14,20 @@ export function EdgeOptions({ sendMessage }: EdgeOptionsProps) { const [ selectedEdges, setSelectedEdges ] = useState([] as Edge[]); const pipes = useFactoryStore(state => state.factory.pipes); + const groups = useFactoryStore(state => state.factory.groups); const [ nickname, setNickname ] = useState(""); const [ filter, setFilter ] = useState(""); + const [ isFluid, setIsFluid ] = useState(false); + const [ mode, setMode ] = useState(undefined as string | undefined); useOnSelectionChange({ onChange: ({ edges }) => { setSelectedEdges(edges); setFilter(edges.length === 1 ? (pipes[edges[0].id].filter || "") : "..."); setNickname(edges.length === 1 ? (pipes[edges[0].id].nickname || "") : "..."); + setMode(edges.length === 1 ? pipes[edges[0].id].mode : "..."); + setIsFluid(edges.length > 0 && groups[pipes[edges[0].id].from].fluid === true); } }); @@ -40,6 +45,11 @@ export function EdgeOptions({ sendMessage }: EdgeOptionsProps) { changes = true; } + if (mode && mode !== "...") { + edits.mode = mode as PipeMode; + changes = true; + } + if (changes) { for (let edge of selectedEdges) { GraphUpdateCallbacks.onPipeUpdate(edge.id, edits, sendMessage) @@ -78,7 +88,7 @@ export function EdgeOptions({ sendMessage }: EdgeOptionsProps) { /> -