Merge pull request #84 from nuxxapp/feat/version-select

Add version select
pull/87/head
Samuel Rowe 3 years ago committed by GitHub
commit 88da5cac5b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -67,6 +67,7 @@ export default function Project() {
null null
); );
const [language, setLanguage] = useState("yaml"); const [language, setLanguage] = useState("yaml");
const [version, setVersion] = useState("3");
const [copyText, setCopyText] = useState("Copy"); const [copyText, setCopyText] = useState("Copy");
const [nodes, setNodes] = useState({}); const [nodes, setNodes] = useState({});
const [connections, setConnections] = useState<[[string, string]] | []>([]); const [connections, setConnections] = useState<[[string, string]] | []>([]);
@ -187,10 +188,8 @@ export default function Project() {
const debouncedOnGraphUpdate = useMemo( const debouncedOnGraphUpdate = useMemo(
() => () =>
debounce((graphData) => { debounce((payload) => {
graphData.networks = stateNetworksRef.current; generateHttp(JSON.stringify(payload))
const flatData = generatePayload(graphData);
generateHttp(JSON.stringify(flatData))
.then(checkHttpStatus) .then(checkHttpStatus)
.then((data) => { .then((data) => {
if (data["code"].length) { if (data["code"].length) {
@ -213,7 +212,11 @@ export default function Project() {
}; };
const onGraphUpdate = (graphData: any) => { const onGraphUpdate = (graphData: any) => {
debouncedOnGraphUpdate(graphData); const data = { ...graphData };
data.version = version;
data.networks = stateNetworksRef.current;
const payload = generatePayload(data);
debouncedOnGraphUpdate(payload);
}; };
const onCanvasUpdate = (updatedCanvasPosition: any) => { const onCanvasUpdate = (updatedCanvasPosition: any) => {
@ -318,6 +321,10 @@ export default function Project() {
eventBus.dispatch("NODE_DELETED", { message: { node: node } }); eventBus.dispatch("NODE_DELETED", { message: { node: node } });
}; };
const versionChange = (e: any) => {
setVersion(e.target.value);
};
useEffect(() => { useEffect(() => {
if (!generatedCode) { if (!generatedCode) {
return; return;
@ -332,6 +339,14 @@ export default function Project() {
} }
}, [language, generatedCode]); }, [language, generatedCode]);
useEffect(() => {
eventBus.dispatch("GENERATE", {
message: {
id: ""
}
});
}, [version]);
if (!isFetching) { if (!isFetching) {
if (!error) { if (!error) {
return ( return (
@ -539,6 +554,17 @@ export default function Project() {
<div <div
className={`absolute top-0 left-0 right-0 z-10 flex justify-end p-1 space-x-2 group-hover:visible invisible`} className={`absolute top-0 left-0 right-0 z-10 flex justify-end p-1 space-x-2 group-hover:visible invisible`}
> >
<select
id="version"
onChange={versionChange}
value={version}
className="input-util w-min pr-8"
>
<option value="1">v 1</option>
<option value="2">v 2</option>
<option value="3">v 3</option>
</select>
<button <button
className={`btn-util ${ className={`btn-util ${
language === "json" ? `btn-util-selected` : `` language === "json" ? `btn-util-selected` : ``

@ -413,5 +413,24 @@ export const useJsPlumb = (
}; };
}, []); }, []);
useEffect(() => {
eventBus.on("GENERATE", () => {
if (!instance) return;
if (stateRef.current) {
onGraphUpdate({
nodes: stateRef.current,
connections: getConnections(
instance.getConnections({}, true) as Connection[]
)
});
}
});
return () => {
eventBus.remove("GENERATE", () => undefined);
};
}, []);
return [containerCallbackRef, setZoom, setStyle, removeEndpoint]; return [containerCallbackRef, setZoom, setStyle, removeEndpoint];
}; };

@ -1,11 +1,11 @@
import { IGeneratePayload } from "../types"; import { IGeneratePayload } from "../types";
export const generatePayload = (data: any): IGeneratePayload => { export const generatePayload = (payload: any): IGeneratePayload => {
const nodes = data["nodes"]; const nodes = payload["nodes"];
const networks = data["networks"] || {}; const networks = payload["networks"] || {};
const base: IGeneratePayload = { const base: IGeneratePayload = {
data: { data: {
version: 3, version: payload["version"],
networks: {}, networks: {},
services: {}, services: {},
volumes: {} volumes: {}

Loading…
Cancel
Save