my codes:
myDiagram.nodeTemplateMap.add("flowChart",
g_(go.Node, "Auto",
{ selectable: true },
new go.Binding("location","loc",go.Point.parse).makeTwoWay(go.Point.stringify),
g_(go.Shape, "Rectangle",
{ fill: null, stroke: "rgba(0,0,0,1)",strokeWidth: 3, },
new go.Binding("stroke","color").makeTwoWay(),
new go.Binding("strokeWidth","thickness").makeTwoWay()),
g_(go.Panel, "Table",
g_(go.RowColumnDefinition, { column: 0, separatorStroke: "black", separatorStrokeWidth: 3}),
g_(go.RowColumnDefinition, { column: 1, separatorStroke: "black", separatorStrokeWidth: 3 }),
g_(go.RowColumnDefinition, { column: 2, separatorStroke: "black", separatorStrokeWidth: 3 }),
g_(go.RowColumnDefinition, { column: 3, separatorStroke: "black", separatorStrokeWidth: 3 }),
g_(go.RowColumnDefinition, { row: 0, separatorStroke: "black", separatorStrokeWidth: 3 }),
g_(go.RowColumnDefinition, { row: 1, separatorStroke: "black", separatorStrokeWidth: 3 }),
g_(go.RowColumnDefinition, { row: 2, separatorStroke: "black", separatorStrokeWidth: 3 }),
g_(go.RowColumnDefinition, { row: 3, separatorStroke: "black", separatorStrokeWidth: 3 }),
g_(go.RowColumnDefinition, { row: 4, separatorStroke: "black", separatorStrokeWidth: 3 }),
g_(go.RowColumnDefinition, { row: 5, separatorStroke: "black", separatorStrokeWidth: 3 }),
g_(go.TextBlock, "",
{ row: 0,columnSpan: 2,
wrap: go.TextBlock.None, margin: 5, width: 200,
isMultiline: false, textAlign: 'center',
font: '10pt Segoe UI,sans-serif', stroke: 'black' },
new go.Binding("text", "player1").makeTwoWay()),
g_(go.TextBlock, "",
{ row: 1,columnSpan: 2,
wrap: go.TextBlock.None, margin: 5, width: 200,
isMultiline: false, textAlign: 'center',
font: '10pt Segoe UI,sans-serif', stroke: 'black' },
new go.Binding("text", "player2").makeTwoWay()),
g_(go.TextBlock, "",
{ row: 2,columnSpan: 2,
wrap: go.TextBlock.None, margin: 5, width: 200,
isMultiline: false, textAlign: 'center',
font: '10pt Segoe UI,sans-serif', stroke: 'black' },
new go.Binding("text", "player3").makeTwoWay()),
g_(go.TextBlock, "",
{ row: 3,
wrap: go.TextBlock.None, margin: 5, width: 100,
isMultiline: false, textAlign: 'center',
font: '10pt Segoe UI,sans-serif', stroke: 'black' },
new go.Binding("text", "player4").makeTwoWay()),
g_(go.TextBlock, "",
{ row: 4,
wrap: go.TextBlock.None, margin: 5, width: 100,
isMultiline: false, textAlign: 'center',
font: '10pt Segoe UI,sans-serif', stroke: 'black' },
new go.Binding("text", "player5").makeTwoWay()),
g_(go.TextBlock, "",
{ row: 5,
wrap: go.TextBlock.None, margin: 5, width: 100,
isMultiline: false, textAlign: 'center',
font: '10pt Segoe UI,sans-serif', stroke: 'black' },
new go.Binding("text", "player6").makeTwoWay()),
g_(go.TextBlock, "",
{ column: 2, row: 0,columnSpan: 2,
wrap: go.TextBlock.None, margin: 2, width: 200,
isMultiline: false, editable: true, textAlign: 'center',
font: '10pt Segoe UI,sans-serif', stroke: 'black' },
new go.Binding("text", "score1").makeTwoWay()),
g_(go.TextBlock, "",
{ column: 2, row: 1,columnSpan: 2,
wrap: go.TextBlock.None, margin: 2, width: 200,
isMultiline: false, editable: true, textAlign: 'center',
font: '10pt Segoe UI,sans-serif', stroke: 'black' },
new go.Binding("text", "score2").makeTwoWay()),
g_(go.TextBlock, "",
{ column: 2, row: 2,columnSpan: 2,
wrap: go.TextBlock.None, margin: 2, width: 200,
isMultiline: false, editable: true, textAlign: 'center',
font: '10pt Segoe UI,sans-serif', stroke: 'black' },
new go.Binding("text", "score3").makeTwoWay()),
g_(go.TextBlock, "",
{ column: 1, row: 3,
wrap: go.TextBlock.None, margin: 2, width: 100,
isMultiline: false, editable: true, textAlign: 'center',
font: '10pt Segoe UI,sans-serif', stroke: 'black' },
new go.Binding("text", "score4").makeTwoWay()),
g_(go.TextBlock, "",
{ column: 1, row: 4,
wrap: go.TextBlock.None, margin: 2, width: 100,
isMultiline: false, editable: true, textAlign: 'center',
font: '10pt Segoe UI,sans-serif', stroke: 'black' },
new go.Binding("text", "score5").makeTwoWay()),
g_(go.TextBlock, "",
{ column: 1, row: 5,
wrap: go.TextBlock.None, margin: 2, width: 100,
isMultiline: false, editable: true, textAlign: 'center',
font: '10pt Segoe UI,sans-serif', stroke: 'black' },
new go.Binding("text", "score6").makeTwoWay()),
g_(go.TextBlock, "",
{ column: 2, row: 3,
wrap: go.TextBlock.None, margin: 2, width: 100,
isMultiline: false, editable: true, textAlign: 'center',
font: '10pt Segoe UI,sans-serif', stroke: 'black' },
new go.Binding("text", "player7").makeTwoWay()),
g_(go.TextBlock, "",
{ column: 2, row: 4,
wrap: go.TextBlock.None, margin: 2, width: 100,
isMultiline: false, editable: true, textAlign: 'center',
font: '10pt Segoe UI,sans-serif', stroke: 'black' },
new go.Binding("text", "player8").makeTwoWay()),
g_(go.TextBlock, "",
{ column: 2, row: 5,
wrap: go.TextBlock.None, margin: 2, width: 100,
isMultiline: false, editable: true, textAlign: 'center',
font: '10pt Segoe UI,sans-serif', stroke: 'black' },
new go.Binding("text", "player9").makeTwoWay()),
g_(go.TextBlock, "",
{ column: 3, row: 3,
wrap: go.TextBlock.None, margin: 2, width: 100,
isMultiline: false, editable: true, textAlign: 'center',
font: '10pt Segoe UI,sans-serif', stroke: 'black' },
new go.Binding("text", "score7").makeTwoWay()),
g_(go.TextBlock, "",
{ column: 3, row: 4,
wrap: go.TextBlock.None, margin: 2, width: 100,
isMultiline: false, editable: true, textAlign: 'center',
font: '10pt Segoe UI,sans-serif', stroke: 'black' },
new go.Binding("text", "score8").makeTwoWay()),
g_(go.TextBlock, "",
{ column: 3, row: 5,
wrap: go.TextBlock.None, margin: 2, width: 100,
isMultiline: false, editable: true, textAlign: 'center',
font: '10pt Segoe UI,sans-serif', stroke: 'black' },
new go.Binding("text", "score9").makeTwoWay())
)
));