Quantcast
Channel: GoJS - Northwoods Software
Viewing all articles
Browse latest Browse all 7069

Problems with port & node creation

$
0
0

@sillyMredul wrote:

Hello,
I am trying to build a diagram having multiple inport, outport. The idea in abstract… after declaring gojs diagram, an empty model have been declared. Later I am adding node & link to the model from my local JS array. I think my makePort & makeTemplate function is working fine.

                    var $$ = go.GraphObject.make;
        			Diagram =
        		        $$(go.Diagram, "graph",
        		          {   		        	
        		            ....
        		          }
    					);
                self.nodeDataArray = [];
				self.linkDataArray = [];
  
var graph_model_data = ({class: 'go.GraphLinksModel', nodeCategoryProperty: 'type', linkFromPortIdProperty: 'frompid', linkToPortIdProperty: 'topid', nodeDataArray: self.nodeDataArray, linkDataArray: self.linkDataArray});
Diagram.model = go.Model.fromJson(JSON.stringify(graph_model_data));  

function makePort(name, leftside) {
   ....
}
function makeTemplate(typename, background, inports, outports) {
   ....
}

rels['nodeDataArray'].forEach(function(node) {
					type = node.type;
					name = node.name;
					
					switch(type) {
						case "Operator":
							color = 'CadetBlue';
							break;
						case "Data":
							color = 'SteelBlue';
							break;
						case "Service":
							color = 'Teal';
							break;
						case "Operator":
							color = 'CadetBlue';
							break;
						default:
							color = 'SteelBlue';
					}

					var listOfInputPorts  = [];
					var listOfOutputPorts = [];
					
					rels['linkDataArray'].forEach(function(link) {
						//input port definition
						if(node.key == link.to){
							var aNewInputPort = makePort(link.topid, true);
							listOfInputPorts.push(aNewInputPort);
						}
						//output port definition
						if(node.key == link.from){
							var aNewOutputPort = makePort(link.frompid, false);
							listOfOutputPorts.push(aNewOutputPort);
						}
					
						Diagram.startTransaction("add link");
						Diagram.model.addLinkData(link);
						Diagram.commitTransaction("add link");

						});   
                    makeTemplate(type, color,
							listOfInputPorts,
							listOfOutputPorts);
					
					Diagram.startTransaction("add node");
					Diagram.model.addNodeData(node);
					Diagram.commitTransaction("add node");
});

While I debugged, It seems nodes & ports are creating using same data from JS array. But, there is only one port in each node having same port_id while drawing the graph, even if the node suppose to have multiple port.


Am i messing with the model data?
Thanks in advance.

Posts: 2

Participants: 2

Read full topic


Viewing all articles
Browse latest Browse all 7069

Trending Articles