<!DOCTYPE html>
<html>
<head>
<title>Minimal GoJS Sample</title>
<!-- Copyright 1998-2019 by Northwoods Software Corporation. -->
<meta charset="UTF-8">
<script src="https://unpkg.com/gojs"></script>
<script id="code">
function init() {
var $ = go.GraphObject.make;
myDiagram =
$(go.Diagram, "myDiagramDiv",
{ "undoManager.isEnabled": true });
myDiagram.nodeTemplate =
$(go.Node, "Vertical",
$(go.TextBlock, new go.Binding("text")),
$(go.Panel, "Auto",
new go.Binding("visible", "show"),
$(go.Shape, { fill: "lightyellow" }),
$(go.Panel, "Table",
new go.Binding("itemArray"),
{
itemTemplate:
$(go.Panel, "TableRow",
new go.Binding("visible"),
$(go.TextBlock, { margin: 4 },
new go.Binding("text")),
$("Button",
{
column: 1,
click: function(e, button) {
toggleVisible(e.diagram.model, button.part.data, button.panel.data);
}
},
$(go.TextBlock, "X")
)
)
}
)
)
);
function toggleVisible(model, nodedata, itemdata) {
model.commit(function(m) {
var vis = itemdata.visible !== false;
m.set(itemdata, "visible", !vis);
var show = false;
var arr = nodedata.itemArray;
// check all items, assume undefined means "visible"
arr.forEach(function(d) {
if (d.visible === true || d.visible === undefined) show = true;
});
m.set(nodedata, "show", show);
});
}
myDiagram.model = new go.GraphLinksModel(
[
{
key: 1, text: "ONE",
show: true,
itemArray: [
{ text: "A", visible: true },
{ text: "B", visible: false },
{ text: "C" },
]
},
{
key: 2, text: "TWO",
itemArray: [
{ text: "AA", visible: true },
{ text: "BBBB", visible: false },
{ text: "CCCCCC" },
]
}
],
[
{ from: 1, to: 2 }
]);
}
</script>
</head>
<body onload="init()">
<div id="myDiagramDiv" style="border: solid 1px black; width:100%; height:600px"></div>
</body>
</html>