diff --git a/src/blocks/custom.js b/src/blocks/custom.js new file mode 100644 index 0000000..f38cd0e --- /dev/null +++ b/src/blocks/custom.js @@ -0,0 +1,29 @@ +var events = require("../events.js"); + +module.exports = { + name: "Custom Code", + inputs: { + inp1: "1", + inp2: "2", + inp3: "3", + inp4: "4", + inp5: "5" + }, + output: true, + execute: function(inputs, block){ + eval("customFunc = function(inp1, inp2, inp3, inp4, inp5){" + block.properties.code + "}"); + return customFunc(inputs.inp1, inputs.inp2, inputs.inp3, inputs.inp4, inputs.inp5); + }, + pageBlock: { + html: "To access inputs, use vars inp1, inp2, etc
", + js: function(block){ + if(block.properties.code){ + block.elem.find("textarea").val(block.properties.code); + } + $(block.elem).find("textarea").keyup(function(){ + block.properties.code = block.elem.find("textarea").val(); + events.emit("inputChanged"); + }); + } + } +} diff --git a/src/blocks/index.js b/src/blocks/index.js index 7bb7577..5b1b788 100644 --- a/src/blocks/index.js +++ b/src/blocks/index.js @@ -18,6 +18,7 @@ var blocks = [ "transpositionReverse", "substitution", "frequency", + "custom", ]; module.exports = blocks.reduce((blocks, block)=>{ diff --git a/src/outputCalculation.js b/src/outputCalculation.js index 35d710b..2cb7d04 100644 --- a/src/outputCalculation.js +++ b/src/outputCalculation.js @@ -14,10 +14,7 @@ function resolveOutput(block, cache){ } } - var output = ""; - if(Object.keys(blocks[block.type].inputs).length == Object.keys(inputValues).length){ //only execute if all inputs are present - output = blocks[block.type].execute(inputValues, block); - } + var output = blocks[block.type].execute(inputValues, block); cache[block.id] = output; return output;