diff --git a/src/blocks/affineDecrypt.js b/src/blocks/affineDecrypt.js index eec8bc3..1d6fb89 100644 --- a/src/blocks/affineDecrypt.js +++ b/src/blocks/affineDecrypt.js @@ -9,15 +9,15 @@ module.exports = { }, a: { name: "a", - type: "text", + type: "number", required: true, - inline: false + inline: true }, b: { name: "b", - type: "text", + type: "number", required: true, - inline: false + inline: true } }, output: true, @@ -33,7 +33,7 @@ module.exports = { } if(!require("./util/coPrime.js")(a, 26)){ - console.log(a, 26, "not coprime"); + throw "a and 26 must be coprime"; return ""; } diff --git a/src/outputCalculation.js b/src/outputCalculation.js index 011ea89..9fc1976 100644 --- a/src/outputCalculation.js +++ b/src/outputCalculation.js @@ -3,26 +3,35 @@ var events = require("./events.js"); var blocks = require("./blocks"); function resolveOutput(block, cache){ - var inputValues = {}; - for(var input in block.inputs){ - if(block.inputs[input].joined){ //if it's joined to something else - if(block.inputs[input].joined in cache){ //if output of other block is already in cache - inputValues[input] = cache[block.inputs[input].joined]; + try{ + var inputValues = {}; + var error = ""; + for(var input in block.inputs){ + if(block.inputs[input].joined){ //if it's joined to something else + if(block.inputs[input].joined in cache){ //if output of other block is already in cache + inputValues[input] = cache[block.inputs[input].joined]; + } + else{ + var inputBlock = diagram.state.filter((diagramBlock)=>(diagramBlock.id == block.inputs[input].joined))[0]; //find block instance + inputValues[input] = resolveOutput(inputBlock, cache); //calculate and store output + } } - else{ - var inputBlock = diagram.state.filter((diagramBlock)=>(diagramBlock.id == block.inputs[input].joined))[0]; //find block instance - inputValues[input] = resolveOutput(inputBlock, cache); //calculate and store output + else if(block.inputs[input].value){ //if value is already set, just save that + inputValues[input] = block.inputs[input].value; + } + if(blocks[block.type].inputs[input].required && !(inputValues[input])){ //if input is required and is missing + throw "A required input is missing"; } } - else if(block.inputs[input].value){ //if value is already set, just save that - inputValues[input] = block.inputs[input].value; - } + + var output = blocks[block.type].execute(inputValues, block); + cache[block.id] = output; + return output; + } + catch(err){ + console.log("ERROR", err); + return ""; } - - var output = blocks[block.type].execute(inputValues, block); - cache[block.id] = output; - - return output; } function calculateOutputBlocks(){