From the above screenshot, I would like the FOSTER nodes to expand from the top of the parent when clicked on. A second option would be to have a treeexpander inside of the parent that would expand the FOSTER children when clicked on. The CHILD nodes would remain the same.
function init(){
var $ = go.GraphObject.make;
window.onload = function() { appendStyle(styles) };
var div = document.createElement(“div”);
div.id = ‘cssStyle’;
div.innerHTML=‘style=“display: none; font: bold”’;
document.body.appendChild(div);
var myDiagram =
$(go.Diagram, “myDiagram”,
<span =“Apple-tab-span” style=“white-space:pre”> { <span =“Apple-tab-span” style=“white-space:pre”> layout:
<span =“Apple-tab-span” style=“white-space:pre”> $(go.TreeLayout,{ angle: 180, nodeSpacing: 10 })
});
var sngModel = $(go.TreeModel);
sngModel.nodeDataArray = [
{key: 0, name: “SOCIALNETWORK”, nodeType: “DEPLOYMENT”, parent:0},
{key: 1, name: “PARENT_A”, nodeType: “WINDOW”, parent: 0},
{key: 2, name: “CHILD_A”, nodeType: “TABLE”, parent: 1},
{key: 3, name: “FOSTER_A”, nodeType: “SCENARIO”, parent: 1},
{key: 4, name: “FOSTER_B”, nodeType: “SCENARIO”, parent: 1},
<span =“Apple-tab-span” style=“white-space:pre”> {key: 5, name: “PARENT_B”, nodeType: “WINDOW”, parent: 0},
<span =“Apple-tab-span” style=“white-space:pre”> {key: 6, name: “CHILD_A”, nodeType: “TABLE”,parent: 5},
{key: 7, name: “FOSTER_A”, nodeType: “SCENARIO”, parent: 5},
{key: 8, name: “PARENT_C”, nodeType: “WINDOW”, parent: 5},
<span =“Apple-tab-span” style=“white-space:pre”> {key: 9, name: “CHILD_C”, nodeType: “TABLE”,parent: 8 },
{key: 10, name: “FOSTER_A”, nodeType: “SCENARIO”, parent: 8},
{key: 11, name: “FOSTER_B”, nodeType: “SCENARIO”, parent: 8},
<span =“Apple-tab-span” style=“white-space:pre”> {key: 12, name: “FOSTER_C”, nodeType: “SCENARIO”,parent: 8}
];
myDiagram.model = sngModel;
function tooltipNameConverter(node) {
<span =“Apple-tab-span” style=“white-space:pre”> return node.nodeType + ': ’ + node.name;}
function textStyle() {
<span =“Apple-tab-span” style=“white-space:pre”> return{
<span =“Apple-tab-span” style=“white-space:pre”> font: “bold 8pt Helvetica, bold Arial, sans-serif”,
<span =“Apple-tab-span” style=“white-space:pre”> alignment: go.Spot.Left,
<span =“Apple-tab-span” style=“white-space:pre”> margin: 16,
<span =“Apple-tab-span” style=“white-space:pre”> width: 145
<span =“Apple-tab-span” style=“white-space:pre”> };
<span =“Apple-tab-span” style=“white-space:pre”> }
function tooltipStyle() {
<span =“Apple-tab-span” style=“white-space:pre”> return{
<span =“Apple-tab-span” style=“white-space:pre”> font: “bold 8pt Helvetica, bold Arial, sans-serif”,
<span =“Apple-tab-span” style=“white-space:pre”> alignment: go.Spot.Left,
<span =“Apple-tab-span” style=“white-space:pre”> margin: 16,
<span =“Apple-tab-span” style=“white-space:pre”> width: 175
<span =“Apple-tab-span” style=“white-space:pre”> };
<span =“Apple-tab-span” style=“white-space:pre”> }
function nodeTypeBrushConverter(nodeType) {
<span =“Apple-tab-span” style=“white-space:pre”> var returnColor = “#E8EBEE”;
<span =“Apple-tab-span” style=“white-space:pre”> return returnColor;
<span =“Apple-tab-span” style=“white-space:pre”> }
myDiagram.nodeTemplate =
<span =“Apple-tab-span” style=“white-space:pre”> $(go.Node, “Auto”,
<span =“Apple-tab-span” style=“white-space:pre”> { deletable: false},
<span =“Apple-tab-span” style=“white-space:pre”> $(go.Shape, “RoundedRectangle”,
<span =“Apple-tab-span” style=“white-space:pre”> <span =“Apple-tab-span” style=“white-space:pre”> {fill: “#E8EBEE”,
<span =“Apple-tab-span” style=“white-space:pre”> stroke: “#99A2A7”,
<span =“Apple-tab-span” style=“white-space:pre”> width: 175,
<span =“Apple-tab-span” style=“white-space:pre”> height: 80
}, new go.Binding(“fill”, “nodeType”, nodeTypeBrushConverter)),
$(go.Picture,
<span =“Apple-tab-span” style=“white-space:pre”> new go.Binding(“source”, “”, function (data) {
<span =“Apple-tab-span” style=“white-space:pre”> var path = “images/”;
<span =“Apple-tab-span” style=“white-space:pre”> var url = path + data.nodeType + “.png”;
<span =“Apple-tab-span” style=“white-space:pre”> return url;
<span =“Apple-tab-span” style=“white-space:pre”> }),
<span =“Apple-tab-span” style=“white-space:pre”> {alignment: go.Spot.TopRight,
<span =“Apple-tab-span” style=“white-space:pre”> width: 24,
<span =“Apple-tab-span” style=“white-space:pre”> height: 24
}),
<span =“Apple-tab-span” style=“white-space:pre”> $(go.TextBlock,
new go.Binding(“text”, “name”)
),
<span ="Apple-tab-span" style="white-space:pre"> </span>$(go.Panel,
<span =“Apple-tab-span” style=“white-space:pre”> { height: 15,
<span =“Apple-tab-span” style=“white-space:pre”> alignment: go.Spot.Left,
<span =“Apple-tab-span” style=“white-space:pre”> alignmentFocus: go.Spot.Center,
<span =“Apple-tab-span” style=“white-space:pre”> },
<span =“Apple-tab-span” style=“white-space:pre”> $(“TreeExpanderButton”)
)
<span =“Apple-tab-span” style=“white-space:pre”> );
myDiagram.linkTemplate =
<span =“Apple-tab-span” style=“white-space:pre”> $(go.Link, // the whole link panel
<span =“Apple-tab-span” style=“white-space:pre”> $(go.Shape, // the link path shape
{ isPanelMain: true, stroke: “#99A2A7”, strokeWidth: 1 }),
$(go.Shape, // the arrowhead
{ fromArrow: “backward”, stroke: null, fill: “#99A2A7”}));
}
init();