Skip to content
Snippets Groups Projects
Commit dc57867b authored by Robin Leber's avatar Robin Leber
Browse files

FEAT: pipe binding, pipe buttons

parent 95086007
No related branches found
No related tags found
No related merge requests found
...@@ -2,6 +2,11 @@ import { basicSetup, EditorView } from "codemirror"; ...@@ -2,6 +2,11 @@ import { basicSetup, EditorView } from "codemirror";
import { javascript } from "@codemirror/lang-javascript"; import { javascript } from "@codemirror/lang-javascript";
import { createCustomCode } from "./api"; import { createCustomCode } from "./api";
import { showCheck } from "./visualValidation"; import { showCheck } from "./visualValidation";
import {
createPipesElements,
getPipesForFilter,
createPipeButtons,
} from "./pipeBinding";
export const codeEditor = (instance) => { export const codeEditor = (instance) => {
if (document.getElementById(`codeEditor${window.selectedFilter}`)) { if (document.getElementById(`codeEditor${window.selectedFilter}`)) {
...@@ -9,6 +14,7 @@ export const codeEditor = (instance) => { ...@@ -9,6 +14,7 @@ export const codeEditor = (instance) => {
`codeEditor${window.selectedFilter}` `codeEditor${window.selectedFilter}`
); );
codeEditor.style.visibility = "visible"; codeEditor.style.visibility = "visible";
createPipeButtons(getPipesForFilter());
} else { } else {
var diagram = document.getElementById("Diagram"); var diagram = document.getElementById("Diagram");
...@@ -18,30 +24,13 @@ export const codeEditor = (instance) => { ...@@ -18,30 +24,13 @@ export const codeEditor = (instance) => {
const containerHeading = document.createElement("h4"); const containerHeading = document.createElement("h4");
containerHeading.appendChild(document.createTextNode("CODE EDITOR")); containerHeading.appendChild(document.createTextNode("CODE EDITOR"));
containerHeading.style.marginTop = "6px";
containerHeading.style.marginBottom = "0px";
editorContainer.appendChild(containerHeading); editorContainer.appendChild(containerHeading);
const pipesDiv = document.createElement("div"); diagram.appendChild(editorContainer);
pipesDiv.classList.add("pipes");
const incomingPipesDiv = document.createElement("div");
const incomingPipesHeading = document.createElement("h5");
incomingPipesHeading.appendChild(document.createTextNode("Incoming Pipes"));
incomingPipesDiv.appendChild(incomingPipesHeading);
// TODO: for each pipe in incomingPipes usw...
// const pipeButton = document.createElement("button");
// pipeButton.appendChild(document.createTextNode("[Pipe Name 123]"));
// incomingPipesDiv.appendChild(pipeButton);
const outgoingPipesDiv = document.createElement("div");
const outgoingPipesHeading = document.createElement("h5");
outgoingPipesHeading.appendChild(document.createTextNode("Outgoing Pipes"));
outgoingPipesDiv.appendChild(outgoingPipesHeading);
pipesDiv.appendChild(incomingPipesDiv);
pipesDiv.appendChild(outgoingPipesDiv);
editorContainer.appendChild(pipesDiv); createPipesElements();
const filterToCode = { const filterToCode = {
type: document type: document
...@@ -103,7 +92,6 @@ export const codeEditor = (instance) => { ...@@ -103,7 +92,6 @@ export const codeEditor = (instance) => {
buttonContainer.appendChild(submitButton); buttonContainer.appendChild(submitButton);
editorContainer.appendChild(buttonContainer); editorContainer.appendChild(buttonContainer);
diagram.appendChild(editorContainer);
instance.draggable(editorContainer.id); instance.draggable(editorContainer.id);
} }
}; };
......
...@@ -6,7 +6,7 @@ export const duplicatePipe = (instance) => { ...@@ -6,7 +6,7 @@ export const duplicatePipe = (instance) => {
var selectedPipe = document.getElementById(window.selectedPipe); var selectedPipe = document.getElementById(window.selectedPipe);
var newPipe = document.createElement("div"); var newPipe = document.createElement("div");
var pipeText = document.createTextNode(selectedPipe.innerHTML); var pipeText = document.createTextNode(selectedPipe.innerHTML.split("\n")[1]);
newPipe.appendChild(pipeText); newPipe.appendChild(pipeText);
newPipe.id = uuidv4(); newPipe.id = uuidv4();
newPipe.classList.add("Pipe"); newPipe.classList.add("Pipe");
...@@ -32,7 +32,9 @@ export const duplicateFilter = (instance) => { ...@@ -32,7 +32,9 @@ export const duplicateFilter = (instance) => {
var selectedFilter = document.getElementById(window.selectedFilter); var selectedFilter = document.getElementById(window.selectedFilter);
var newFilter = document.createElement("div"); var newFilter = document.createElement("div");
var filterText = document.createTextNode(selectedFilter.innerHTML); var filterText = document.createTextNode(
selectedFilter.innerHTML.split("\n")[1]
);
newFilter.appendChild(filterText); newFilter.appendChild(filterText);
newFilter.id = uuidv4(); newFilter.id = uuidv4();
newFilter.classList.add("Filter"); newFilter.classList.add("Filter");
......
...@@ -16,6 +16,19 @@ export const errorFeedback = (errorMsg) => { ...@@ -16,6 +16,19 @@ export const errorFeedback = (errorMsg) => {
errorMsgElement.remove(); errorMsgElement.remove();
}, 5000); }, 5000);
}; };
export const errorFeedbackSimple = (errorMsg) => {
const errorMsgElement = document.createElement("p");
errorMsgElement.appendChild(document.createTextNode(errorMsg));
document.getElementById("Error").appendChild(errorMsgElement);
document.getElementById("Error").style.visibility = "visible";
setTimeout(function () {
document.getElementById("Error").style.visibility = "hidden";
errorMsgElement.remove();
}, 5000);
};
export const successFeedback = () => { export const successFeedback = () => {
document.getElementById("Success").style.visibility = "visible"; document.getElementById("Success").style.visibility = "visible";
setTimeout(function () { setTimeout(function () {
......
import { appState } from "./state";
import { errorFeedbackSimple } from "./feedback";
export const createPipesElements = () => {
const codeEditor = document.getElementById(
`codeEditor${window.selectedFilter}`
);
const pipesDiv = document.createElement("div");
pipesDiv.classList.add("pipes");
const incomingPipesDiv = document.createElement("div");
incomingPipesDiv.id = "IncomingPipes";
const incomingPipesHeading = document.createElement("h5");
incomingPipesHeading.style.margin = "6px";
incomingPipesHeading.appendChild(document.createTextNode("Incoming Pipes"));
incomingPipesDiv.appendChild(incomingPipesHeading);
const outgoingPipesDiv = document.createElement("div");
outgoingPipesDiv.id = "OutgoingPipes";
const outgoingPipesHeading = document.createElement("h5");
outgoingPipesHeading.style.margin = "6px";
outgoingPipesHeading.appendChild(document.createTextNode("Outgoing Pipes"));
outgoingPipesDiv.appendChild(outgoingPipesHeading);
pipesDiv.appendChild(incomingPipesDiv);
pipesDiv.appendChild(outgoingPipesDiv);
codeEditor.appendChild(pipesDiv);
createPipeButtons(getPipesForFilter());
};
export const getPipesForFilter = () => {
const filter = window.selectedFilter;
const connections = appState.getConnection(filter);
const pipeMapping = [];
connections &&
connections.forEach((connection) => {
const pipeName = appState.getPipe(connection.pipeId);
if (!pipeName) {
errorFeedbackSimple("Name Your Pipes!");
} else {
const pipe = { pipeName, ...connection };
pipeMapping.push(pipe);
}
});
return pipeMapping;
};
export const createPipeButtons = (pipeMapping) => {
const incomingPipesDiv = document.getElementById("IncomingPipes");
const outgoingPipesDiv = document.getElementById("OutgoingPipes");
pipeMapping.forEach((pipe) => {
if (document.getElementById(`Button${pipe.pipeId}`)) {
return;
} else {
const pipeButton = document.createElement("button");
pipeButton.id = `Button${pipe.pipeId}`;
pipeButton.appendChild(document.createTextNode(pipe.pipeName));
pipe.direction === "in"
? incomingPipesDiv.appendChild(pipeButton)
: outgoingPipesDiv.appendChild(pipeButton);
}
});
};
...@@ -9,7 +9,10 @@ export const appState = (() => { ...@@ -9,7 +9,10 @@ export const appState = (() => {
getState: () => state, getState: () => state,
setBeenPaused: (beenPaused) => (state.beenPaused = beenPaused), setBeenPaused: (beenPaused) => (state.beenPaused = beenPaused),
addConnection: (con1, con2) => { addConnection: (con1, con2) => {
state.connections.set(con1, con2); if (!state.connections.has(con1)) {
state.connections.set(con1, []);
}
state.connections.get(con1).push(con2);
}, },
removeConnection: (con1) => { removeConnection: (con1) => {
state.connections.delete(con1); state.connections.delete(con1);
......
...@@ -35,9 +35,15 @@ function App() { ...@@ -35,9 +35,15 @@ function App() {
return false; return false;
} }
if (source.getAttribute("class").includes("Filter")) { if (source.getAttribute("class").includes("Filter")) {
appState.addConnection(source.id, target.id); appState.addConnection(source.id, {
pipeId: target.id,
direction: "out",
});
} else { } else {
appState.addConnection(target.id, source.id); appState.addConnection(target.id, {
pipeId: source.id,
direction: "in",
});
} }
return true; return true;
}); });
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment