diff --git a/bzGraflow.js b/bzGraflow.js
index 3a48ff1..67c16f6 100644
--- a/bzGraflow.js
+++ b/bzGraflow.js
@@ -88,16 +88,15 @@ class BZgraflow extends Buildoz{
if(this.getBZAttribute('edit')){
const edit = this.getBZAttribute('edit').split(',')
if(edit.includes('nodesmove')){
- this.nodesMover = new MovingNodes(this)
- this.nodesMover.enableMovingNodes('.bzgf-node')
+ this.nodesMover = new MovingNodes(this, '.bzgf-node')
}
if(edit.includes('wires')){
- this.WiresEditor = new EditWires(this)
+ this.WiresEditor = new EditWires(this, '.bzgf-wire')
this.WiresEditor.enableEditWires()
//this.WiresEditor.enableMovingNodes('.bzgf-wire')
}
if(edit.includes('dropnodes')){
- this.NodesReceiver = new DroppingNodes(this)
+ this.NodesReceiver = new DroppingNodes(this, '.bzgf-node')
//this.NodesReceiver.enableDroppingNodes('.bzgf-node')
}
}
@@ -436,7 +435,7 @@ class BZgraflow extends Buildoz{
for(const node of this.flow.nodes){
if((!node.coords) || (!node.coords.x) ||(!node.coords.y)) forceAutoplace=true
this.addNode(node)
- }
+ }
for(const link of this.flow.links){
this.addWire(link)
}
@@ -446,6 +445,11 @@ class BZgraflow extends Buildoz{
else this.currentOrientation = 'vertical'
}
if(forceAutoplace) this.autoPlace(this.currentOrientation)
+ this.dispatchEvent(new CustomEvent('refreshed', {
+ detail: { },
+ bubbles: true,
+ composed: true,
+ }))
}
// Convert viewport (client) coordinates to this instance's SVG local coordinates.
@@ -1172,8 +1176,10 @@ class BZgraflow extends Buildoz{
Buildoz.define('graflow', BZgraflow)
class MovingNodes{
- constructor(graflow){
+ constructor(graflow, itemSelector, handleSelector = itemSelector){
this.graflow = graflow
+ this.itemSelector = itemSelector
+ this.handleSelector = handleSelector
this.nodesContainer = this.graflow.mainContainer.querySelector('.bzgf-nodes-container')
this.state = null
@@ -1184,14 +1190,13 @@ class MovingNodes{
button,
a[href]
`
+ this.graflow.addEventListener('refreshed', this.enableMovingNodes.bind(this))
}
- enableMovingNodes(itemSelector, handleSelector = itemSelector) {
- this.itemSelector = itemSelector
- this.handleSelector = handleSelector
+ enableMovingNodes() {
if(!this._handleCursorStyle){
const style = document.createElement('style')
- style.textContent = `${handleSelector}{ cursor: move }`
+ style.textContent = `${this.handleSelector}{ cursor: move }`
this.nodesContainer.appendChild(style)
this._handleCursorStyle = style
}
diff --git a/git-cheat-sheet.txt b/git-cheat-sheet.txt
new file mode 100644
index 0000000..0139006
--- /dev/null
+++ b/git-cheat-sheet.txt
@@ -0,0 +1,14 @@
+workflow quotidien
+
+Modifier buildoz:
+
+cd app/thirdparty/buildoz
+git commit
+git push
+
+Puis dans P42:
+
+git add app/thirdparty/buildoz
+git commit -m "update buildoz"
+
+Car P42 stocke la référence du commit buildoz.
\ No newline at end of file
diff --git a/graflow_examples/flows/testFlow1.1.json b/graflow_examples/flows/testFlow1.1.json
new file mode 100644
index 0000000..f3e06f7
--- /dev/null
+++ b/graflow_examples/flows/testFlow1.1.json
@@ -0,0 +1,65 @@
+{
+ "nodesFile": "/app/thirdparty/buildoz/graflow_examples/nodesLib/nodesTest1.html",
+ "flow": {
+ "nodes":[
+ { "nodeType": "inc",
+ "id": "aze",
+ "coords": { "x": 220, "y": 120}
+ },
+ { "nodeType": "inc",
+ "subflow": {
+ "url": "/app/thirdparty/buildoz/graflow_examples/flows/testFlowEic.json",
+ "portLinks": [
+ { "refNodeType": "refnodein", "refnodePort": "out1",
+ "parentPort": "in1",
+ "subflowNode":"aze2", "subflowPort": "in1",
+ "direction": "in"
+ },
+ { "refNodeType": "refnodeout", "refnodePort": "in1",
+ "parentPort": "out1",
+ "subflowNode":"aze5", "subflowPort": "out1",
+ "direction": "out"
+ }
+ ]
+ },
+ "id": "aze2",
+ "coords": { "x": 220, "y": 10}
+ },
+ { "nodeType": "factor",
+ "id": "qsd",
+ "coords": { "x": 470, "y": 170}
+ },
+ { "nodeType": "factor",
+ "id": "qsd2",
+ "coords": { "x": 470, "y": 50}
+ },
+ { "nodeType": "wadder",
+ "id": "wcx",
+ "coords": { "x": 720, "y": 50}
+ },
+ { "nodeType": "multiplier",
+ "id": "ert",
+ "coords": { "x": 550, "y": 350}
+ },
+ { "nodeType": "input",
+ "id": "0000",
+ "coords": { "x": 20, "y": 350}
+ },
+ { "nodeType": "console",
+ "id": "9999",
+ "coords": { "x": 800, "y": 350}
+ }
+ ],
+ "links": [
+ { "from": ["0000", "out1"], "to": ["aze", "inp1"] },
+ { "from": ["aze2", "out1"], "to": ["qsd2", "inp1"] },
+ { "from": ["aze", "out1"], "to": ["qsd", "inp1"] },
+ { "from": ["qsd2", "out1"], "to": ["ert", "inp2"] },
+ { "from": ["0000", "out1"], "to": ["aze2", "inp1"] },
+ { "from": ["qsd2", "out1"], "to": ["wcx", "inp2"] },
+ { "from": ["wcx", "out1"], "to": ["ert", "inp1"] },
+ { "from": ["qsd", "out1"], "to": ["wcx", "inp1"] },
+ { "from": ["ert", "out1"], "to": ["9999", "inp1"] }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/graflow_examples/flows/testFlow1.json b/graflow_examples/flows/testFlow1.json
new file mode 100644
index 0000000..cdfd83a
--- /dev/null
+++ b/graflow_examples/flows/testFlow1.json
@@ -0,0 +1,50 @@
+{
+ "nodesFile": "/app/thirdparty/buildoz/graflow_examples/nodesLib/nodesTest1.html",
+ "flow": {
+ "nodes":[
+ { "nodeType": "inc",
+ "id": "aze",
+ "coords": { "x": 220, "y": 120}
+ },
+ { "nodeType": "inc",
+ "id": "aze2",
+ "coords": { "x": 220, "y": 10}
+ },
+ { "nodeType": "factor",
+ "id": "qsd",
+ "coords": { "x": 470, "y": 170}
+ },
+ { "nodeType": "factor",
+ "id": "qsd2",
+ "coords": { "x": 470, "y": 50}
+ },
+ { "nodeType": "wadder",
+ "id": "wcx",
+ "coords": { "x": 720, "y": 50}
+ },
+ { "nodeType": "multiplier",
+ "id": "ert",
+ "coords": { "x": 550, "y": 350}
+ },
+ { "nodeType": "input",
+ "id": "0000",
+ "coords": { "x": 20, "y": 350}
+ },
+ { "nodeType": "console",
+ "id": "9999",
+ "coords": { "x": 800, "y": 350}
+ }
+ ],
+ "links": [
+ { "from": ["0000", "out1"], "to": ["aze", "inp1"] },
+ { "from": ["aze2", "out1"], "to": ["qsd2", "inp1"] },
+ { "from": ["aze", "out1"], "to": ["qsd", "inp1"] },
+ { "from": ["qsd2", "out1"], "to": ["ert", "inp2"] },
+ { "from": ["0000", "out1"], "to": ["aze2", "inp1"] },
+ { "from": ["qsd2", "out1"], "to": ["wcx", "inp2"] },
+ { "from": ["wcx", "out1"], "to": ["ert", "inp1"] },
+ { "from": ["qsd", "out1"], "to": ["wcx", "inp1"] },
+ { "from": ["ert", "out1"], "to": ["9999", "inp1"] }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/graflow_examples/flows/testFlow16ports.json b/graflow_examples/flows/testFlow16ports.json
new file mode 100644
index 0000000..e1a435a
--- /dev/null
+++ b/graflow_examples/flows/testFlow16ports.json
@@ -0,0 +1,271 @@
+{
+ "nodesFile": "/app/thirdparty/buildoz/graflow_examples/nodesLib/nodes16ports.html",
+ "flow": {
+ "nodes": [
+ {
+ "nodeType": "square",
+ "id": "p1center",
+ "coords": {
+ "x": 300,
+ "y": 200
+ },
+ "markup": {
+ "title": "Center",
+ "subtitle": "."
+ }
+ },
+ {
+ "nodeType": "square",
+ "id": "p1west",
+ "coords": {
+ "x": 200,
+ "y": 200
+ },
+ "markup": {
+ "title": "West",
+ "subtitle": "."
+ }
+ },
+ {
+ "nodeType": "square",
+ "id": "p1north",
+ "coords": {
+ "x": 300,
+ "y": 100
+ },
+ "markup": {
+ "title": "North",
+ "subtitle": "."
+ }
+ },
+ {
+ "nodeType": "square",
+ "id": "p1east",
+ "coords": {
+ "x": 400,
+ "y": 200
+ },
+ "markup": {
+ "title": "East",
+ "subtitle": "."
+ }
+ },
+ {
+ "nodeType": "square",
+ "id": "p1south",
+ "coords": {
+ "x": 300,
+ "y": 300
+ },
+ "markup": {
+ "title": "South",
+ "subtitle": "."
+ }
+ },
+
+ {
+ "nodeType": "square",
+ "id": "p2center",
+ "coords": {
+ "x": 800,
+ "y": 200
+ },
+ "markup": {
+ "title": "Center",
+ "subtitle": "."
+ }
+ },
+ {
+ "nodeType": "square",
+ "id": "p2west",
+ "coords": {
+ "x": 700,
+ "y": 200
+ },
+ "markup": {
+ "title": "West",
+ "subtitle": "."
+ }
+ },
+ {
+ "nodeType": "square",
+ "id": "p2north",
+ "coords": {
+ "x": 800,
+ "y": 100
+ },
+ "markup": {
+ "title": "North",
+ "subtitle": "."
+ }
+ },
+ {
+ "nodeType": "square",
+ "id": "p2east",
+ "coords": {
+ "x": 900,
+ "y": 200
+ },
+ "markup": {
+ "title": "East",
+ "subtitle": "."
+ }
+ },
+ {
+ "nodeType": "square",
+ "id": "p2south",
+ "coords": {
+ "x": 800,
+ "y": 300
+ },
+ "markup": {
+ "title": "South",
+ "subtitle": "."
+ }
+ },
+
+ {
+ "nodeType": "square",
+ "id": "p3center",
+ "coords": {
+ "x": 300,
+ "y": 600
+ },
+ "markup": {
+ "title": "Center",
+ "subtitle": "."
+ }
+ },
+ {
+ "nodeType": "square",
+ "id": "p3west",
+ "coords": {
+ "x": 200,
+ "y": 600
+ },
+ "markup": {
+ "title": "West",
+ "subtitle": "."
+ }
+ },
+ {
+ "nodeType": "square",
+ "id": "p3north",
+ "coords": {
+ "x": 300,
+ "y": 500
+ },
+ "markup": {
+ "title": "North",
+ "subtitle": "."
+ }
+ },
+ {
+ "nodeType": "square",
+ "id": "p3east",
+ "coords": {
+ "x": 400,
+ "y": 600
+ },
+ "markup": {
+ "title": "East",
+ "subtitle": "."
+ }
+ },
+ {
+ "nodeType": "square",
+ "id": "p3south",
+ "coords": {
+ "x": 300,
+ "y": 700
+ },
+ "markup": {
+ "title": "South",
+ "subtitle": "."
+ }
+ },
+
+ {
+ "nodeType": "square",
+ "id": "p4center",
+ "coords": {
+ "x": 800,
+ "y": 600
+ },
+ "markup": {
+ "title": "Center",
+ "subtitle": "."
+ }
+ },
+ {
+ "nodeType": "square",
+ "id": "p4west",
+ "coords": {
+ "x": 700,
+ "y": 600
+ },
+ "markup": {
+ "title": "West",
+ "subtitle": "."
+ }
+ },
+ {
+ "nodeType": "square",
+ "id": "p4north",
+ "coords": {
+ "x": 800,
+ "y": 500
+ },
+ "markup": {
+ "title": "North",
+ "subtitle": "."
+ }
+ },
+ {
+ "nodeType": "square",
+ "id": "p4east",
+ "coords": {
+ "x": 900,
+ "y": 600
+ },
+ "markup": {
+ "title": "East",
+ "subtitle": "."
+ }
+ },
+ {
+ "nodeType": "square",
+ "id": "p4south",
+ "coords": {
+ "x": 800,
+ "y": 700
+ },
+ "markup": {
+ "title": "South",
+ "subtitle": "."
+ }
+ }
+ ],
+ "links": [
+ { "from": ["p1center", "s"], "to": ["p1south", "n"] },
+ { "from": ["p1center", "e"], "to": ["p1east", "w"] },
+ { "from": ["p1center", "n"], "to": ["p1north", "s"] },
+ { "from": ["p1center", "w"], "to": ["p1west", "e"] },
+
+ { "from": ["p2center", "s"], "to": ["p2south", "e"] },
+ { "from": ["p2center", "e"], "to": ["p2east", "n"] },
+ { "from": ["p2center", "n"], "to": ["p2north", "w"] },
+ { "from": ["p2center", "w"], "to": ["p2west", "s"] },
+
+ { "from": ["p3center", "s"], "to": ["p3south", "s"] },
+ { "from": ["p3center", "e"], "to": ["p3east", "e"] },
+ { "from": ["p3center", "n"], "to": ["p3north", "n"] },
+ { "from": ["p3center", "w"], "to": ["p3west", "w"] },
+
+ { "from": ["p4center", "s"], "to": ["p4south", "w"] },
+ { "from": ["p4center", "e"], "to": ["p4east", "s"] },
+ { "from": ["p4center", "n"], "to": ["p4north", "e"] },
+ { "from": ["p4center", "w"], "to": ["p4west", "n"] }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/graflow_examples/flows/testFlow2.json b/graflow_examples/flows/testFlow2.json
new file mode 100644
index 0000000..fc53220
--- /dev/null
+++ b/graflow_examples/flows/testFlow2.json
@@ -0,0 +1,47 @@
+{
+ "nodesFile": "/app/thirdparty/buildoz/graflow_examples/nodesLib/nodesTest2.html",
+ "flow": {
+ "nodes":[
+ { "nodeType": "process",
+ "id": "aze2",
+ "xcoords": { "x": 220, "y": 120},
+ "markup": { "text": "x = alph - 1" }
+ },
+ { "nodeType": "condition",
+ "id": "qsd",
+ "xcoords": { "x": 250, "y": 270},
+ "markup": { "text": "x > 0" }
+ },
+ { "nodeType": "preparation",
+ "id": "qsd2",
+ "xcoords": { "x": 250, "y": 470},
+ "markup": { "text": "prepare SQL" }
+ },
+ { "nodeType": "database",
+ "id": "wcx",
+ "xcoords": { "x": 500, "y": 450},
+ "markup": { "text": "MySQL
Store" }
+ },
+ { "nodeType": "end",
+ "id": "ert",
+ "xcoords": { "x": 250, "y": 650},
+ "markup": { "text": "End" }
+ },
+ { "nodeType": "start",
+ "id": "aze",
+ "xcoords": { "x": 220, "y": 20},
+ "markup": { "text": "StartMike" }
+ }
+ ],
+ "links": [
+ { "from": ["aze", "out1"], "to": ["aze2", "inout1"], "endArrow":true },
+ { "from": ["aze2", "inout2"], "to": ["qsd", "inp1"], "endArrow":true },
+ { "from": ["qsd", "out1"], "to": ["aze2", "inout3"], "endArrow":true },
+ { "from": ["qsd", "out2"], "to": ["qsd2", "inp1"], "endArrow":true },
+ { "from": ["qsd2", "inout2"], "to": ["wcx", "inout1"], "startArrow":true , "endArrow":true },
+ { "from": ["qsd2", "out1"], "to": ["ert", "inp1"], "endArrow":true },
+ { "from": ["qsd2", "inout1"], "to": ["qsd2", "inout1"], "endArrow":true },
+ { "from": ["aze2", "inout4"], "to": ["wcx", "inout1"], "endArrow":true }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/graflow_examples/flows/testFlowEic.json b/graflow_examples/flows/testFlowEic.json
new file mode 100644
index 0000000..3bcfe51
--- /dev/null
+++ b/graflow_examples/flows/testFlowEic.json
@@ -0,0 +1,74 @@
+{
+ "nodesFile": "/app/thirdparty/buildoz/graflow_examples/nodesLib/nodesEIC.html",
+ "flow": {
+ "nodes":[
+ { "nodeType": "eicBasic",
+ "id": "aze",
+ "ncoords": { "x": 50, "y": 120},
+ "markup": {
+ "title": "Build attendees list",
+ "subtitle": "Build an attendees list to email"
+ },
+ "data": { "a": "a1", "b":"b1"}
+ },
+ { "nodeType": "eicBasic",
+ "id": "aze2",
+ "ncoords": { "x": 100, "y": 220},
+ "markup": {
+ "title": "Select message",
+ "subtitle": "Select an email template"
+ },
+ "data": { "a": "a2", "b":"b2"}
+ },
+ { "nodeType": "eicBasic",
+ "id": "aze3",
+ "ncoords": { "x": 150, "y": 320},
+ "markup": {
+ "title": "Data mapping",
+ "subtitle": "Associate content variables with attendees data"
+ },
+ "data": { "a": "a3", "b":"b3"},
+ "subflow": {
+ "url": "/app/thirdparty/buildoz/graflow_examples/flows/testFlowICMP.json",
+ "portLinks": [
+ { "refNodeType": "refnodein", "refnodePort": "out1",
+ "parentPort": "in1",
+ "subflowNode":"cid", "subflowPort": "in3",
+ "direction": "in"
+ },
+ { "refNodeType": "refnodeout", "refnodePort": "in1",
+ "parentPort": "out1",
+ "subflowNode":"signature", "subflowPort": "out2",
+ "direction": "out"
+ }
+ ]
+ }
+ },
+ { "nodeType": "eicBasic",
+ "id": "aze4",
+ "ncoords": { "x": 150, "y": 320},
+ "markup": {
+ "title": "Schedule mailing",
+ "subtitle": "Choose time to send the mail"
+ },
+ "data": { "a": "a3", "b":"b3"}
+ },
+ { "nodeType": "eicBasic",
+ "id": "aze5",
+ "ncoords": { "x": 150, "y": 320},
+ "markup": {
+ "title": "Stats",
+ "subtitle": "Access mailing statistics"
+ },
+ "data": { "a": "a3", "b":"b3"}
+ }
+ ],
+ "links": [
+ { "from": ["aze2", "out1"], "to": ["aze", "in1"] },
+ { "from": ["aze2", "out2"], "to": ["aze3", "in1"] },
+ { "from": ["aze", "out1"], "to": ["aze4", "in1"] },
+ { "from": ["aze3", "out1"], "to": ["aze4", "in2"] },
+ { "from": ["aze4", "out1"], "to": ["aze5", "in1"] }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/graflow_examples/flows/testFlowICMP.json b/graflow_examples/flows/testFlowICMP.json
new file mode 100644
index 0000000..610faa3
--- /dev/null
+++ b/graflow_examples/flows/testFlowICMP.json
@@ -0,0 +1,150 @@
+{
+ "nodesFile": "/app/thirdparty/buildoz/graflow_examples/nodesLib/nodesEIC.html",
+ "flow": {
+ "nodes":[
+ { "nodeType": "eicBasic",
+ "id": "eval",
+ "markup": {
+ "title": "Evaluations",
+ "subtitle": "...",
+ "severity": "secondary"
+ },
+ "data": { "node": "eval", "nodeId":null}
+ },
+ { "nodeType": "eicBasic",
+ "id": "gap",
+ "ncoords": { "x": 100, "y": 220},
+ "markup": {
+ "title": "GAP",
+ "subtitle": "...",
+ "severity": "secondary"
+ },
+ "data": { "a": "a2", "b":"b2"}
+ },
+ { "nodeType": "eicBasic",
+ "id": "cid",
+ "ncoords": { "x": 150, "y": 320},
+ "markup": {
+ "title": "CID",
+ "subtitle": "...",
+ "severity": "secondary"
+ },
+ "data": { "a": "a3", "b":"b3"}
+ },
+ {
+ "nodeType": "eicBasic",
+ "id": "allocation",
+ "markup": {
+ "title": "Case Allocation",
+ "subtitle": "...",
+ "severity": "secondary"
+ },
+ "data": {
+ "track": "equity"
+ }
+ },
+ {
+ "nodeType": "eicBasic",
+ "id": "signature",
+ "markup": {
+ "title": "Grant Signature",
+ "subtitle": "...",
+ "severity": "secondary"
+ },
+ "data": {
+ "track": "grant"
+ }
+ },
+ {
+ "nodeType": "eicBasic",
+ "id": "progress-meeting",
+ "markup": {
+ "title": "Progress Meetings",
+ "subtitle": "...",
+ "severity": "secondary"
+ },
+ "data": {
+ "track": "grant",
+ "instanciable": true
+ }
+ },
+ {
+ "nodeType": "eicBasic",
+ "id": "techdd",
+ "markup": {
+ "title": "Tech Due Diligences",
+ "subtitle": "...",
+ "severity": "secondary"
+ },
+ "data": {
+ "track": "equity"
+ }
+ },
+ {
+ "nodeType": "eicBasic",
+ "id": "kyc",
+ "markup": {
+ "title": "KYC",
+ "subtitle": "...",
+ "severity": "secondary"
+ },
+ "data": {
+ "track": "equity"
+ }
+ },
+ {
+ "nodeType": "eicBasic",
+ "id": "aifm-advisory",
+ "markup": {
+ "title": "AIFM Advisory Commitee",
+ "subtitle": "...",
+ "severity": "secondary"
+ },
+ "data": {
+ "track": "equity"
+ }
+ },
+ {
+ "nodeType": "eicBasic",
+ "id": "aifm-investment",
+ "markup": {
+ "title": "AIFM Investment Commitee",
+ "subtitle": "...",
+ "severity": "secondary"
+ },
+ "data": {
+ "track": "equity",
+ "parent": "aifm-advisory"
+ }
+ },
+ {
+ "nodeType": "eicBasic",
+ "id": "agreement",
+ "markup": {
+ "title": "Investment Agreement",
+ "subtitle": "...",
+ "severity": "secondary"
+ },
+ "data": {
+ "track": "equity",
+ "parent": "aifm-investment"
+ }
+ }
+ ],
+ "links": [
+ { "from": ["eval", "out2"], "to": ["gap", "in1"] },
+ { "from": ["eval", "out1"], "to": ["cid", "in1"] },
+ { "from": ["eval", "out3"], "to": ["allocation", "in1"] },
+ { "from": ["gap", "out1"], "to": ["signature", "in1"] },
+ { "from": ["signature", "out1"], "to": ["progress-meeting", "in1"] },
+ { "from": ["cid", "out1"], "to": ["techdd", "in1"] },
+ { "from": ["allocation", "out1"], "to": ["techdd", "in3"] },
+ { "from": ["allocation", "out2"], "to": ["kyc", "in2"] },
+ { "from": ["techdd", "out1"], "to": ["aifm-advisory", "in1"] },
+ { "from": ["kyc", "out1"], "to": ["aifm-advisory", "in3"] },
+ { "from": ["aifm-advisory", "out1"], "to": ["aifm-investment", "in1"] },
+ { "from": ["aifm-investment", "out1"], "to": ["agreement", "in1"] },
+ { "from": ["gap", "out3"], "to": ["aifm-investment", "in1"] }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/graflow_examples/flows/testFlowICMP2.json b/graflow_examples/flows/testFlowICMP2.json
new file mode 100644
index 0000000..b8f636e
--- /dev/null
+++ b/graflow_examples/flows/testFlowICMP2.json
@@ -0,0 +1,150 @@
+{
+ "nodesFile": "/app/thirdparty/buildoz/graflow_examples/nodesLib/nodesEIC2.html",
+ "flow": {
+ "nodes":[
+ { "nodeType": "eicBasic",
+ "id": "eval",
+ "markup": {
+ "title": "Evaluations",
+ "subtitle": "...",
+ "severity": "secondary"
+ },
+ "data": { "node": "eval", "nodeId":null}
+ },
+ { "nodeType": "eicBasic",
+ "id": "gap",
+ "ncoords": { "x": 100, "y": 220},
+ "markup": {
+ "title": "GAP",
+ "subtitle": "...",
+ "severity": "secondary"
+ },
+ "data": { "a": "a2", "b":"b2"}
+ },
+ { "nodeType": "eicBasic",
+ "id": "cid",
+ "ncoords": { "x": 150, "y": 320},
+ "markup": {
+ "title": "CID",
+ "subtitle": "...",
+ "severity": "secondary"
+ },
+ "data": { "a": "a3", "b":"b3"}
+ },
+ {
+ "nodeType": "eicBasic",
+ "id": "allocation",
+ "markup": {
+ "title": "Case Allocation",
+ "subtitle": "...",
+ "severity": "secondary"
+ },
+ "data": {
+ "track": "equity"
+ }
+ },
+ {
+ "nodeType": "eicBasic",
+ "id": "signature",
+ "markup": {
+ "title": "Grant Signature",
+ "subtitle": "...",
+ "severity": "secondary"
+ },
+ "data": {
+ "track": "grant"
+ }
+ },
+ {
+ "nodeType": "eicBasic",
+ "id": "progress-meeting",
+ "markup": {
+ "title": "Progress Meetings",
+ "subtitle": "...",
+ "severity": "secondary"
+ },
+ "data": {
+ "track": "grant",
+ "instanciable": true
+ }
+ },
+ {
+ "nodeType": "eicBasic",
+ "id": "techdd",
+ "markup": {
+ "title": "Tech Due Diligences",
+ "subtitle": "...",
+ "severity": "secondary"
+ },
+ "data": {
+ "track": "equity"
+ }
+ },
+ {
+ "nodeType": "eicBasic",
+ "id": "kyc",
+ "markup": {
+ "title": "KYC",
+ "subtitle": "...",
+ "severity": "secondary"
+ },
+ "data": {
+ "track": "equity"
+ }
+ },
+ {
+ "nodeType": "eicBasic",
+ "id": "aifm-advisory",
+ "markup": {
+ "title": "AIFM Advisory Commitee",
+ "subtitle": "...",
+ "severity": "secondary"
+ },
+ "data": {
+ "track": "equity"
+ }
+ },
+ {
+ "nodeType": "eicBasic",
+ "id": "aifm-investment",
+ "markup": {
+ "title": "AIFM Investment Commitee",
+ "subtitle": "...",
+ "severity": "secondary"
+ },
+ "data": {
+ "track": "equity",
+ "parent": "aifm-advisory"
+ }
+ },
+ {
+ "nodeType": "eicBasic",
+ "id": "agreement",
+ "markup": {
+ "title": "Investment Agreement",
+ "subtitle": "...",
+ "severity": "secondary"
+ },
+ "data": {
+ "track": "equity",
+ "parent": "aifm-investment"
+ }
+ }
+ ],
+ "links": [
+ { "from": ["eval", "out1"], "to": ["gap", "in1"] , "endArrow":true},
+ { "from": ["eval", "out1"], "to": ["cid", "in1"] , "endArrow":true},
+ { "from": ["eval", "out1"], "to": ["allocation", "in1"] , "endArrow":true},
+ { "from": ["gap", "out1"], "to": ["signature", "in1"] , "endArrow":true},
+ { "from": ["signature", "out1"], "to": ["progress-meeting", "in1"] , "endArrow":true},
+ { "from": ["cid", "out1"], "to": ["techdd", "in1"] , "endArrow":true, "startArrow":true},
+ { "from": ["allocation", "out1"], "to": ["techdd", "in1"] , "endArrow":true, "startArrow":true},
+ { "from": ["allocation", "out1"], "to": ["kyc", "in1"] , "endArrow":true, "startArrow":true},
+ { "from": ["techdd", "out1"], "to": ["aifm-advisory", "in1"] },
+ { "from": ["kyc", "out1"], "to": ["aifm-advisory", "in1"] , "endArrow":true},
+ { "from": ["aifm-advisory", "out1"], "to": ["aifm-investment", "in1"] , "endArrow":true},
+ { "from": ["aifm-investment", "out1"], "to": ["agreement", "in1"] , "endArrow":true},
+ { "from": ["gap", "out1"], "to": ["aifm-investment", "in1"] , "endArrow":true}
+ ]
+ }
+}
\ No newline at end of file
diff --git a/graflow_examples/nodesLib/nodes16ports.html b/graflow_examples/nodesLib/nodes16ports.html
new file mode 100644
index 0000000..cab951a
--- /dev/null
+++ b/graflow_examples/nodesLib/nodes16ports.html
@@ -0,0 +1,59 @@
+
+
+
+