Skip to content

Commit a070633

Browse files
committed
Allow assert to be evaluated on variables
1 parent 49ef1dc commit a070633

File tree

5 files changed

+35
-10
lines changed

5 files changed

+35
-10
lines changed

src/components/molecules/flow/graph/Graph.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,13 @@ class Graph {
7575
}
7676

7777
if (node.type === 'assertNode') {
78-
const eNode = new assertNode(node.data.operator, node.data.variables, prevNodeOutputData, this.logs);
78+
const eNode = new assertNode(
79+
node.data.operator,
80+
node.data.variables,
81+
prevNodeOutputData,
82+
this.envVariables,
83+
this.logs,
84+
);
7985
if (eNode.evaluate()) {
8086
this.logs.push('Result: true');
8187
result = {

src/components/molecules/flow/graph/compute/assertnode.js

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,34 @@
11
import Operators from '../../constants/operators';
2-
import { computeNodeVariables } from './utils';
2+
import { computeNodeVariable } from './utils';
33
import Node from './node';
44

55
class assertNode extends Node {
6-
constructor(operator, variables, prevNodeOutputData, logs) {
6+
constructor(operator, variables, prevNodeOutputData, envVariables, logs) {
77
super('assertNode');
88
this.operator = operator;
99
this.variables = variables;
1010
this.prevNodeOutputData = prevNodeOutputData;
1111
this.logs = logs;
12+
this.envVariables = envVariables;
13+
}
14+
15+
getVariableValue(variable) {
16+
if (variable.type.toLowerCase() === 'variable') {
17+
const varValue = this.envVariables[variable.value];
18+
if (varValue) {
19+
return varValue;
20+
} else {
21+
throw Error(`Cannot find value of variable ${variable.value}`);
22+
}
23+
} else {
24+
return computeNodeVariable(variable, this.prevNodeOutputData);
25+
}
1226
}
1327

1428
evaluate() {
1529
console.log('Evaluating an assert node');
16-
const evalVariables = computeNodeVariables(this.variables, this.prevNodeOutputData);
17-
const var1 = evalVariables.var1;
18-
const var2 = evalVariables.var2;
30+
const var1 = this.getVariableValue(this.variables.var1);
31+
const var2 = this.getVariableValue(this.variables.var2);
1932

2033
const operator = this.operator;
2134
if (operator == undefined) {

src/components/molecules/flow/graph/compute/utils.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const computeNodeVariable = (variable, prevNodeOutputData) => {
1+
export const computeNodeVariable = (variable, prevNodeOutputData) => {
22
if (variable.type.toLowerCase() === 'string') {
33
return variable.value;
44
}

src/components/molecules/flow/nodes/AssertNode.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@ const variableElem = (id, data, varName) => {
5151
case 'Select':
5252
setAssertNodeVariable(id, varName, selectedValue, '');
5353
break;
54+
case 'Variable':
55+
setAssertNodeVariable(id, varName, selectedValue, '');
56+
break;
5457
case 'Number':
5558
setAssertNodeVariable(id, varName, selectedValue, 0);
5659
break;
@@ -98,6 +101,11 @@ const variableElem = (id, data, varName) => {
98101
// setVariableValue(updatedValue.toString());
99102
setAssertNodeVariable(id, varName, 'Select', updatedValue.toString());
100103
break;
104+
case 'Variable':
105+
// data.variables[varName].value = updatedValue.toString();
106+
// setVariableValue(updatedValue.toString());
107+
setAssertNodeVariable(id, varName, 'Variable', updatedValue.toString());
108+
break;
101109
case 'Number':
102110
// data.variables[varName].value = parseInt(updatedValue);
103111
// setVariableValue(parseInt(updatedValue));
@@ -131,6 +139,7 @@ const variableElem = (id, data, varName) => {
131139
>
132140
<option value='Select'>Select</option>
133141
<option value='String'>String</option>
142+
<option value='Variable'>Variable</option>
134143
<option value='Number'>Number</option>
135144
<option value='Boolean'>Boolean</option>
136145
</select>

src/components/molecules/flow/nodes/OutputNode.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@ import { PropTypes } from 'prop-types';
33
import FlowNode from 'components/atoms/flow/FlowNode';
44

55
const OutputNode = ({ id, data }) => {
6-
console.log('output node id: ', id);
7-
console.log('output node data: ', data);
8-
96
return (
107
<FlowNode
118
title='Output'

0 commit comments

Comments
 (0)