My node is looking like this, when it has around 32 ports each with straight links
After dragging separately,
Snippet:
myDiagram.nodeTemplate =
$(go.Node, "Auto",
{ locationSpot: go.Spot.Center, background: "lightgray", maxSize: new go.Size(300, NaN) },
new go.Binding("location", "loc", go.Point.parse).makeTwoWay(go.Point.stringify),
$(go.Shape, "Rectangle",
{
fill: "white", background: "lightgray", stroke: "transparent", strokeWidth: 3,
portId: "",
fromSpot: go.Spot.AllSides, toSpot: go.Spot.AllSides
}),
$(go.Panel, "Horizontal",
{ background: "lightgray", defaultAlignment: go.Spot.Bottom, margin: new go.Margin(3, 3) },
$(go.TextBlock, { background: "lightgray", text: 'AXOS', font: "10px sans-serif", stroke: "blue", alignment: go.Spot.Left, angle: -90 }),
$(go.Panel, "Horizontal",
$(go.TextBlock, { font: "16px sans-serif", width: 25, height: 25, text: 'e9', stroke: "white", background: 'orange' }),
$(go.TextBlock, { font: "16px sans-serif", text: '2', stroke: "blue", alignment: go.Spot.Right })
),
),
$(go.TextBlock,
new go.Binding("text"))
);
myDiagram.linkTemplate =
$(go.Link,
{
routing: go.Link.AvoidsNodes, corner: 1, curve: go.Link.JumpOver,
toolTip: // define a tooltip for each node that displays the color as text
$("ToolTip",
$(go.TextBlock, { margin: 4 },
new go.Binding("text", "", (data) => { return `(From port : ${data?.fromPort}, To Port : ${data?.toPort})` })),
) // end of Adornment
},
//new go.Binding("routing", "straight", s => s ? go.Link.Normal : go.Link.AvoidsNodes),
$(go.Shape, "Rectangle", { stroke: "red", strokeWidth: 2 }),
$(go.Shape,
{
margin: 10, width: 7, height: 7, segmentIndex: 0, segmentOffset: new go.Point(0, 0), fill: "#672056", stroke: "#672056",
toolTip: // define a tooltip for each node that displays the color as text
$("ToolTip",
$(go.TextBlock, { margin: 4 },
new go.Binding("text", "fromPort"))
) // end of Adornment
}),
$(go.Shape, {
width: 7, height: 7, segmentIndex: -1, segmentOffset: new go.Point(0, 0), fill: "blue", stroke: "blue",
toolTip: // define a tooltip for each node that displays the color as text
$("ToolTip",
$(go.TextBlock, { margin: 4 },
new go.Binding("text", "toPort"))
) // end of Adornment
})
);