gojs实现一个可拖动的数据库表实体关系图表效果代码
代码语言:html
所属分类:图表
代码描述:gojs实现一个可拖动的数据库表实体关系图表效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> <body> <script src="//repo.bfw.wiki/bfwrepo/js/go.js"></script> <div id="allSampleContent" class="p-4 w-full"> <script id="code"> function init() { // Since 2.2 you can also author concise templates with method chaining instead of GraphObject.make // For details, see https://gojs.net/latest/intro/buildingObjects.html const $ = go.GraphObject.make; // for conciseness in defining templates myDiagram = $(go.Diagram, "myDiagramDiv", // must name or refer to the DIV HTML element { allowDelete: false, allowCopy: false, layout: $(go.ForceDirectedLayout), "undoManager.isEnabled": true }); var colors = { 'red': '#be4b15', 'green': '#52ce60', 'blue': '#6ea5f8', 'lightred': '#fd8852', 'lightblue': '#afd4fe', 'lightgreen': '#b9e986', 'pink': '#faadc1', 'purple': '#d689ff', 'orange': '#fdb400', } // the template for each attribute in a node's array of item data var itemTempl = $(go.Panel, "Horizontal", $(go.Shape, { desiredSize: new go.Size(15, 15), strokeJoin: "round", strokeWidth: 3, stroke: null, margin: 2 }, new go.Binding("figure", "figure"), new go.Binding("fill", "color"), new go.Binding("stroke", "color")), $(go.TextBlock, { stroke: "#333333", font: "bold 14px sans-serif" }, new go.Binding("text", "name")) ); // define the Node template, representing an entity myDiagram.nodeTemplate = $(go.Node, "Auto", // the whole node panel { selectionAdorned: true, resizable: true, layoutConditions: go.Part.LayoutStandard & ~go.Part.LayoutNodeSized, fromSpot: go.Spot.AllSides, toSpot: go.Spot.AllSides, isShadowed: true, shadowOffset: new go.Point(3, 3), shadowColor: "#C5C1AA" }, new go.Binding("location", "location").makeTwoWay(), // whenever the PanelExpanderButton changes the visible property of the "LIST" panel, // clear out any desiredSize set by the ResizingTool. new go.Binding("desiredSize", "visible", v => new go.Size(NaN, NaN)).ofObject("LIST"), // define the node's outer shape, which will surround the Table $(go.Shape, "RoundedRectangle", { fill: 'white', stroke: "#eeeeee", strokeWidth: 3 }), $(go.Panel, "Table", { margin: 8, stretch: go.GraphObject.Fill }, $(go.RowColumnDefinition, { row: 0, sizing: go.RowColumnDefinition.None }), // the table header $(go.TextBlock, { row: 0, alignment: go.Spot.Center, margin: new go.Margin(0, 24, 0, 2), // leave room for Button font: "bold 16px sans-serif" }, new go.Binding("text", "key")), // the collapse/expand button $("PanelExpanderButton", "LIST", // the name of the element whose visibility this button toggles { row: 0, alignment: go.Spot.TopRight }), // the list of Panels, each showing an attribute $(go.Panel, "Vertical", { name: "LIST", row: 1, padding: 3, alignment: go.Spot.TopLeft, defaultAlignment: go.Spot.Left, stretch: go.GraphObject.Horizontal, itemTemplate: itemTempl }, new go.Binding("itemArray", "items")) ) // end Table Panel ); // end Node // define the Link template, representing a relationship myDiagram.linkTemplate = $(go.Link, // the whole link panel { selectionAdorned: true, layerName: "Foreground", reshapable: true, .........完整代码请登录后点击上方下载按钮下载查看
网友评论0