Skip to content

Commit

Permalink
add basics of data comparaison nodes
Browse files Browse the repository at this point in the history
  • Loading branch information
shuart committed Oct 28, 2023
1 parent 144437f commit 4a3191a
Show file tree
Hide file tree
Showing 5 changed files with 239 additions and 8 deletions.
4 changes: 4 additions & 0 deletions src/js/modules/common_evaluators/evaluator_nodes_templates.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import createAttributeManagement from "../common_project_management/attributes_m
import state_manager from "../common_state/state_manager.js";

import { filter } from "./templates/node_filter.js";
import { readAttribute } from "./templates/data_read_attribute.js";
import { mathDataCompare } from "./templates/math_data_compare.js";
import { settingsNodeColors as nodeColors} from "./templates/settings_node_colors.js";


Expand All @@ -25,6 +27,8 @@ var evaluatorTemplates = {}


evaluatorTemplates.filter = filter
evaluatorTemplates.readAttribute = readAttribute
evaluatorTemplates.mathDataCompare = mathDataCompare

// baseTemplates.input_number = {
// templateName : "input_number",
Expand Down
74 changes: 74 additions & 0 deletions src/js/modules/common_evaluators/templates/data_read_attribute.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
import { settingsNodeColors as nodeColors } from "./settings_node_colors.js"
import createAttributeManagement from "../../common_project_management/attributes_management.js";

export var readAttribute = {
templateName : "read_attribute",
name : "Read Attribute",
category:"data",
props :[
{id:"output", label:"output", type:"hidden", editable:false, socket:"output", value:"output"},
// {id:"id", label:"prop id", type:"hidden", editable:false, socket:"output", value:false},
// {id:"method", label:"A", type:"text", editable:true, socket:"input", value:"0"},
{id:"method", label:"Attribute", type:"select", options:[
{id:"None", value:"..."},
],editable:true, socket:"none", value:"....."},
// {id:"a", label:"Field", type:"text", editable:true, socket:"input", value:"0"},
],
methods:{
},
event:{
onEvaluate:(props) =>{
// var entityRepo = createEntityManagement()
// console.log(entityRepo.getAll());

// props.method.setOptions(props.a.get().map(function (e) {
// var currentKey = e.parameters.keys
// return {id:e.uuid, value:e.name}
// }))

// if (props.a.get()[0] && props.a.get()[0].properties) {
// props.method.setOptions(Object.keys(props.a.get()[0].properties).map(function (e) {
// return {id:e, value:e}
// }))
// // props.output.set("undefined")
// if (props.method.get()) {
// props.output.set(props.a.get().map(function (e) {
// console.log(e.properties);
// return {[props.method.get()]:e.properties[props.method.get()]}
// }))
// props.id.set(props.method.getOptionId())
// }
// }else{
// props.output.set("undefined")
// }


var func = (data)=>{
var value = props.method.get()
if (value != ".....") {
if (value == "name") {
return data.name
}else{
return data.properties[value]
}
}else{
return "undefined"
}
}

props.output.set(func)


},
onInit:(props) =>{
var attributeRepo = createAttributeManagement()
console.log(attributeRepo.getAll());
var options=attributeRepo.getAll().map(function (e) {
return {id:e.uuid, value:e.name}
})
options.push({id:"name2", value:"name"})
props.method.setOptions(options)

},
},
}
118 changes: 118 additions & 0 deletions src/js/modules/common_evaluators/templates/math_data_compare.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
import { settingsNodeColors as nodeColors } from "./settings_node_colors.js"


function containsOnlyNumbers(str) {
return /^[+-]?[0-9]+$/.test(str);
}
function containsOnlyFloat(str) {
return /^[+-]?[0-9]+\.[0-9]+$/.test(str);
}

function checkForNumbers(str){
if (containsOnlyNumbers(str)) {
return parseInt(str)
}else if(containsOnlyFloat(str)){
return parseFloat(str)
}else{
return str
}
}


export var mathDataCompare = {
templateName : "math_data_compare",
name : "Data Compare",
category:"Mathematics",
props :[
{id:"output", label:"output", type:"hidden", editable:false, socket:"output", value:"output"},
// {id:"method", label:"A", type:"text", editable:true, socket:"input", value:"0"},
{id:"method", label:"", type:"select", options:[
{id:"Greater_Than", value:"Greater Than"},
{id:"Greater_Than_Or_Equal", value:"Greater Than or Equal"},
{id:"Less_Than", value:"Less Than"},
{id:"Less_Than_Or_Equal", value:"Less Than or Equal"},
{id:"Equal", value:"Equal"},
{id:"Not Equal", value:"Not Equal"},
],editable:true, socket:"none", value:"Greater Than"},
{id:"a", label:"A", type:"text", editable:true, socket:"input", value:"0"},
{id:"b", label:"B", type:"text", editable:true, socket:"input", value:"0"},
],
methods:{
},
event:{
onEvaluate:(props) =>{
var condition = undefined

if (props.method.get() == "Greater Than") {
condition=(A,B)=> A > B
}else if (props.method.get() == "Greater Than or Equal") {
condition=(A,B)=> A >= B
}else if (props.method.get() == "Less Than") {
condition=(A,B)=> A < B
}else if (props.method.get() == "Less Than or Equal") {
condition=(A,B)=> A <= B
}else if (props.method.get() == "Equal") {
condition=(A,B)=> A == B
}else if (props.method.get() == "Not Equal") {
condition=(A,B)=> A != B
}

// if (props.method.get() == "Greater Than") {
var func = function(data){
var A = props.a.get(data)
var B = props.b.get(data)
console.log(A, B);
console.log(condition(A,B));
if (condition(A,B)) {
return 1
} else {
return 0
}
}
props.output.set(func)
// }

// if (props.method.get() == "Equal") {
// var func = function(data){
// var A = props.a.get(data)
// var B = props.b.get(data)
// console.log(A, B);
// console.log(A == B);
// if (A == B) {
// return 1
// } else {
// return 0
// }
// }
// props.output.set(func)
// }

// else if (props.method.get() == "Less Than"){
// if (parseInt(props.a.get()) < parseInt(props.b.get())) {
// props.output.set(1)
// } else {
// props.output.set(0)
// }
// }else if (props.method.get() == "Equal"){
// if (parseInt(props.a.get()) == parseInt(props.b.get())) {
// props.output.set(1)
// } else {
// props.output.set(0)
// }
// }else if (props.method.get() == "Greater Than or Equal"){
// if (parseInt(props.a.get()) >= parseInt(props.b.get())) {
// props.output.set(1)
// } else {
// props.output.set(0)
// }
// }else if (props.method.get() == "Less Than or Equal"){
// if (parseInt(props.a.get()) <= parseInt(props.b.get())) {
// props.output.set(1)
// } else {
// props.output.set(0)
// }
// }

},
},
}
12 changes: 8 additions & 4 deletions src/js/modules/common_evaluators/templates/node_filter.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,11 @@ export var filter = {
category:"data",

props :[
{id:"output", expect:"text", label:"output", type:"hidden", editable:false, socket:"output", value:"output"},
{id:"paramName", expect:"text", label:"Param Name", type:"text", editable:true, socket:"input", value:"...."},
{id:"paramIndex", expect:"text", label:"Param Name", type:"text", editable:true, socket:"input", value:"...."},
{id:"output", expect:"data", label:"output", type:"hidden", editable:false, socket:"output", value:"output"},
// {id:"paramName", expect:"text", label:"Param Name", type:"text", editable:true, socket:"input", value:"...."},
// {id:"paramIndex", expect:"text", label:"Param Name", type:"text", editable:true, socket:"input", value:"...."},
{id:"a", expect:"data", label:"Data", type:"text", editable:true, socket:"input", value:"0"},
{id:"selection", expect:"array", label:"Selection", type:"hidden", editable:false, socket:"input", value:"...."},
],
methods:{
},
Expand Down Expand Up @@ -41,7 +42,10 @@ export var filter = {
var newDataSet = []
for (let i = 0; i < oldDataSet.length; i++) {
const element = oldDataSet[i];
if (i<2) {
var condition = props.selection.get(element)
console.log(condition);
// alert("eee")
if (condition == 1) {
newDataSet.push(element)
}
}
Expand Down
39 changes: 35 additions & 4 deletions src/js/vendor/stellae/stellae_nodes.js
Original file line number Diff line number Diff line change
Expand Up @@ -122,14 +122,45 @@ var createNode= function({
element.valueFromInput = element.value //save Default and set input for when no nodes
}
interactivePropsObject[element.id] = {
get:function () {
// get:function () {

// if (element.valueFromLink != undefined) {
// return element.valueFromLink
// }else{
// return element.value
// }

// },
get:function(data){

function containsOnlyNumbers(str) {
return /^[+-]?[0-9]+$/.test(str);
}
function containsOnlyFloat(str) {
return /^[+-]?[0-9]+\.[0-9]+$/.test(str);
}

function checkForNumbers(str){ //check if the string is an int or a float, and switch if needed
if (containsOnlyNumbers(str)) {
return parseInt(str)
}else if(containsOnlyFloat(str)){
return parseFloat(str)
}else{
return str
}
}
var valuePassed = undefined
if (element.valueFromLink != undefined) {
return element.valueFromLink
valuePassed = element.valueFromLink
}else{
return element.value
valuePassed = element.value
}

if (data && valuePassed instanceof Function) {
return valuePassed(data)
}else{
return checkForNumbers(valuePassed)
}

},
_getFromInput:function () {
// return element.valueFromInput || element.value
Expand Down

0 comments on commit 4a3191a

Please sign in to comment.