I’ll get a trimmed down example together (drawing it differently now so I can keep going).
Your example is similar but not quite the same to what I have.
I have something like this:
var f_temp1 =
$(go.Panel, 'TableRow',
$(go.Panel, 'Auto',
{column: 0},
$(go.Shape, 'Rectangle', { fill: 'lightgreen' }),
$(go.TextBlock, {margin: 5}, new go.Binding('text', 'an', go.Binding.toString)),
$(go.Shape, 'Ellipse',
{ width: 10, height: 10, fill: 'white', alignment: new go.Spot(0, 0.5) },
{ cursor: 'pointer', toLinkable: true, toMaxLinks:1},
new go.Binding('portId', 'an', function(x){
var r = go.Binding.toString(x);
//console.log(" portid " + r);
return r;
}),
new go.Binding('_data', 'type')
)),
$(go.Panel, 'Auto',
{ column: 1 },
$(go.Shape, 'Rectangle', { fill: 'white' }),
$(go.TextBlock, {margin: 5}, new go.Binding('text', 'an', go.Binding.toString)))
);
Maybe it can’t digest a nested auto panel.
The portIds do come out unique, I’ve traced them out.