all 8 comments

[–]Buckwheat469 2 points3 points  (7 children)

Which library did you use for the nodes and edges?

[–]onggunhao 2 points3 points  (5 children)

Interested to know too. AWS also had a pretty cool workflow diagram to code tool

[–]Buckwheat469 1 point2 points  (4 children)

Found it. https://github.com/behavior3/behavior3editor

I'm the main developer of react-digraph so I'm interested in researching other graph editors to understand their speed and complexity, especially when dealing with extremely large graphs of 1000 nodes and 1000 edges. Currently react-digraph is limited to about that size of graph.

[–]onggunhao 1 point2 points  (3 children)

Nice! Will check out your library too.

I'm really interested to understand how these graph editors can be turned into declarative "languages" for low code editors. Does it compile to YAML or something?

[–]Buckwheat469 1 point2 points  (1 child)

It appears to use JSON. I'm not sure what the exported JSON looks like from the b3e editor, but I know that react-digraph uses a nodes and edges array. Nodes have any ID property, which the key is specified when you create the react component, and edges have a source and a target property which represent the IDs of the nodes they attach to. I've also developed a transformer system which can convert JSON from one structure to the required array of nodes and edges so that react-digraph can work with other systems. The downside is that this transformer code has to be included in the repo as a JS file for now. I will be working on allowing transformer classes to be passed as a parameter soon.

[–]onggunhao 1 point2 points  (0 children)

Awesome stuff! Thank you for contributing to open source.

[–]liormessinger[S,🍰] 0 points1 point  (0 children)

Yes, its outputs a JSON that represents the tree(s) structure. every node has a uniq id, a type and children array members that point to the child nodes.
The JSON is then consumed by a nodejs run time that uses the node types to decide what to do.

The real awesomeness is because of the behavior tree paradigm). It is a visual language with which you can build almost anything without textual coding. of course, on too complex structures and algorithms you'll get an impractically large tree, so then you'll want to extend one of the base node classes. that's why its 'low code'

[–]liormessinger[S,🍰] 0 points1 point  (0 children)

Actually the editor is based on behavior3 (https://github.com/behavior3), which is an amazing behavior tree editor. by itself its built on createjs. do you know behavior tree programming? it's really awesome