@@ -56,7 +56,7 @@ const Expression = ({data}) => {
5656 </ div >
5757 }
5858}
59- const createNodesAndEdges = ( ops ) => {
59+ const createNodesAndEdges = ( ops , innerEdges ) => {
6060 let currNodes = [ ] ;
6161 let currEdges = [ ] ;
6262 let extraEdges = [ ]
@@ -80,9 +80,15 @@ const createNodesAndEdges = (ops) => {
8080 return e
8181 }
8282 } )
83+ if ( innerEdges ) {
84+ innerEdges . forEach ( ( e ) => {
85+ console . log ( e )
86+ tmpEdges . push ( { type : e . type , input : e . input , output :e . output } )
87+ } )
88+ }
8389 tmpEdges . forEach ( ( e ) => {
8490
85- if ( e . input . type === "node" && e . input . type === "node" ) {
91+ if ( e . input . type === "node" && e . output . type === "node" ) {
8692 currEdges . push ( [ e . input . ref , e . output . ref , { type : e . type , meta : e } ] )
8793 } else {
8894 extraEdges . push ( e )
@@ -132,7 +138,7 @@ const renderEdges = (edge, nodesPos) => {
132138 }
133139
134140}
135- const renderExtraEdge = ( edge , nodePos ) => {
141+ const renderExtraEdge = ( edge , nodePos , requiredHeight ) => {
136142 if ( nodePos ) {
137143 let inputX = 0 ;
138144 let inputY = 0 ;
@@ -146,6 +152,14 @@ const renderExtraEdge = (edge, nodePos) => {
146152 outputX = nodePos [ edge . output . ref ] . renderX + 40 + 40 * edge . output . argnr
147153 outputY = nodePos [ edge . output . ref ] . renderY
148154 }
155+ if ( edge . input . type === "node" ) {
156+ inputX = nodePos [ edge . input . ref ] . renderX + nodePos [ edge . input . ref ] . width / 2
157+ inputY = nodePos [ edge . input . ref ] . renderY + nodePos [ edge . input . ref ] . height
158+ }
159+ if ( edge . output . type === "parentResult" ) {
160+ outputX = edge . input . resnr * 40 + 20
161+ outputY = requiredHeight
162+ }
149163 if ( edge . type === "requiredInput" ) {
150164 return < line x1 = { inputX } y1 = { inputY } x2 = { outputX } y2 = { outputY }
151165 fill = { "none" }
@@ -159,6 +173,12 @@ const renderExtraEdge = (edge, nodePos) => {
159173 stroke = { "darkgreen" } strokeWidth = { 2 } strokeLinecap = { "square" }
160174 strokeOpacity = { 0.7 } > </ line >
161175
176+ } else if ( edge . type === "resultEdge" ) {
177+ console . log ( edge . input )
178+ return < line x1 = { inputX } y1 = { inputY } x2 = { outputX } y2 = { outputY }
179+ fill = { "none" }
180+ stroke = { "brown" } strokeWidth = { 2 } strokeLinecap = { "square" }
181+ strokeOpacity = { 0.7 } > </ line >
162182 }
163183 }
164184}
@@ -216,7 +236,7 @@ const Operator = ({data, onOperatorSelect, selectedOps}) => {
216236 }
217237 let results = [ ]
218238 for ( let i = 0 ; i < numResults ; i ++ ) {
219- results . push ( < div style = { {
239+ results . push ( < div title = { data . results [ i ] . type } style = { {
220240 width : 40 ,
221241 fontWeight : 800 ,
222242 fontSize : "medium" ,
@@ -227,7 +247,7 @@ const Operator = ({data, onOperatorSelect, selectedOps}) => {
227247 } } > { "\u22b8" }
228248 </ div > )
229249 }
230- let [ nodes , edges , extraEdges ] = createNodesAndEdges ( data . subops )
250+ let [ nodes , edges , extraEdges ] = createNodesAndEdges ( data . subops , data . innerEdges )
231251
232252
233253
@@ -260,7 +280,7 @@ const Operator = ({data, onOperatorSelect, selectedOps}) => {
260280 selectedOps = { selectedOps } /> ) }
261281 renderEdge = { renderEdges }
262282 drawExtra = { ( nodesPos , requiredHeight ) => {
263- return extraEdges . map ( e => renderExtraEdge ( e , nodesPos ) )
283+ return extraEdges . map ( e => renderExtraEdge ( e , nodesPos , requiredHeight ) )
264284 } }
265285 />
266286 < div >
@@ -321,7 +341,7 @@ const Operator = ({data, onOperatorSelect, selectedOps}) => {
321341 </ div > )
322342 }
323343
324- let [ nodes , edges , extraEdges ] = createNodesAndEdges ( data . subops )
344+ let [ nodes , edges , extraEdges ] = createNodesAndEdges ( data . subops , data . innerEdges )
325345
326346
327347 return < div style = { { display : "flex" } } >
@@ -353,7 +373,7 @@ const Operator = ({data, onOperatorSelect, selectedOps}) => {
353373 selectedOps = { selectedOps } /> ) }
354374 renderEdge = { renderEdges }
355375 drawExtra = { ( nodesPos , requiredHeight ) => {
356- return extraEdges . map ( e => renderExtraEdge ( e , nodesPos ) )
376+ return extraEdges . map ( e => renderExtraEdge ( e , nodesPos , requiredHeight ) )
357377 } } />
358378 </ div >
359379 </ div >
0 commit comments