markgojs
Version:
Interactive diagrams, charts, and graphs, such as trees, flowcharts, orgcharts, UML, BPMN, or business diagrams
115 lines (109 loc) • 4.22 kB
text/typescript
;
/*
* Copyright (C) 1998-2019 by Northwoods Software Corporation. All Rights Reserved.
*/
import * as go from "../release/go";
export function init() {
if (typeof (<any>window)["goSamples"] === 'function') (<any>window)["goSamples"](); // init for these samples -- you don't need to call this
const $ = go.GraphObject.make;
let myDiagram =
$(go.Diagram, "myDiagramDiv",
{
initialContentAlignment: go.Spot.Center,
"PartResized": function(e: go.DiagramEvent) {
var node = e.subject;
var scroller = node.findObject("SCROLLER");
if (scroller !== null) scroller._updateScrollBar(scroller.findObject("TABLE"));
}
});
myDiagram.nodeTemplate =
$(go.Node, "Vertical",
{
selectionObjectName: "SCROLLER",
resizable: true, resizeObjectName: "SCROLLER",
portSpreading: go.Node.SpreadingNone
},
new go.Binding("location").makeTwoWay(),
$(go.TextBlock,
{ font: "bold 14px sans-serif" },
new go.Binding("text", "key")),
$(go.Panel, "Auto",
$(go.Shape, { fill: "white" }),
$("ScrollingTable",
{
name: "SCROLLER",
desiredSize: new go.Size(NaN, 60), // fixed width
stretch: go.GraphObject.Fill, // but stretches vertically
defaultColumnSeparatorStroke: "gray",
defaultColumnSeparatorStrokeWidth: 0.5
},
new go.Binding("TABLE.itemArray", "items"),
new go.Binding("TABLE.column", "left", function(left) { return left ? 2 : 0; }),
new go.Binding("desiredSize", "size").makeTwoWay(),
{
"TABLE.itemTemplate":
$(go.Panel, "TableRow",
{
defaultStretch: go.GraphObject.Horizontal,
fromSpot: go.Spot.LeftRightSides, toSpot: go.Spot.LeftRightSides,
fromLinkable: true, toLinkable: true
},
new go.Binding("portId", "name"),
$(go.TextBlock, { column: 0 }, new go.Binding("text", "name")),
$(go.TextBlock, { column: 1 }, new go.Binding("text", "value"))
),
"TABLE.defaultColumnSeparatorStroke": "gray",
"TABLE.defaultColumnSeparatorStrokeWidth": 0.5,
"TABLE.defaultRowSeparatorStroke": "gray",
"TABLE.defaultRowSeparatorStrokeWidth": 0.5,
"TABLE.defaultSeparatorPadding": new go.Margin(1, 3, 0, 3)
}
)
)
);
myDiagram.model = $(go.GraphLinksModel,
{
linkFromPortIdProperty: "fromPort",
linkToPortIdProperty: "toPort",
nodeDataArray: [
{
key: "Alpha", left: true, location: new go.Point(0, 0), size: new go.Size(100, 50),
items:
[
{ name: "A", value: 1 },
{ name: "B", value: 2 },
{ name: "C", value: 3 },
{ name: "D", value: 4 },
{ name: "E", value: 5 },
{ name: "F", value: 6 },
{ name: "G", value: 7 }
]
},
{
key: "Beta", location: new go.Point(150, 0),
items:
[
{ name: "Aa", value: 1 },
{ name: "Bb", value: 2 },
{ name: "Cc", value: 3 },
{ name: "Dd", value: 4 },
{ name: "Ee", value: 5 },
{ name: "Ff", value: 6 },
{ name: "Gg", value: 7 },
{ name: "Hh", value: 8 },
{ name: "Ii", value: 9 },
{ name: "Jj", value: 10 },
{ name: "Kk", value: 11 },
{ name: "Ll", value: 12 },
{ name: "Mm", value: 13 },
{ name: "Nn", value: 14 }
]
}
],
linkDataArray: [
{ from: "Alpha", fromPort: "D", to: "Beta", toPort: "Ff" },
{ from: "Alpha", fromPort: "A", to: "Beta", toPort: "Nn" },
{ from: "Alpha", fromPort: "G", to: "Beta", toPort: "Aa" }
]
});
}