gojs实现一个功能齐全的思维导图编辑效果代码
代码语言:html
所属分类:图表
代码描述:gojs实现一个功能齐全的思维导图编辑效果代码,鼠标滚轮缩放、单独按钮缩放。节点、链接样式。节点阴影。展开按钮样式。操作按钮包含SVG图标。单击节点、展开/折叠节点事件。默认展开某些节点。过滤节点:根据过滤器和父节点匹配,匹配的节点展开,其他隐藏。展开/折叠节点:不改变根位置。按"text"属性升序排序节点。默认调整到容器大小。不允许拖出容器外。 按钮:展开全部。折叠全部。
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link type="text/css" rel="stylesheet" href="//repo.bfw.wiki/bfwrepo/css/all.5.6.1.css">
<style>
.content {
padding: 10px;
}
.diagram {
background-color: white;
border: solid 1px #B1B1B1;
width: 100%;
height: 500px;
}
/* remove blue frame from diagram */
canvas {
outline: none;
}
.filter {
position: absolute;
z-index: 3;
top: 20px;
left: 20px;
}
.zoom {
color: #373737;
width: 20px;
position: absolute;
z-index: 3;
top: 20px;
right: 15px;
cursor: pointer;
}
.fa-plus,
.fa-minus {
background: #E4E4E4;
}
.introduction {
margin-top: 20px;
padding: 10px;
}
.about {
margin-bottom: 20px;
}
</style>
</head>
<body>
<div class="content">
<div id="myDiagram" class="diagram">
</div>
<div class="filter">
<input type="text" id="filterText" />
<button id="filterBtn">
<i class="fas fa-search"></i>
</button>
<button id="expandBtn" title="Expand all nodes">
<i class="fas fa-arrows-alt"></i>
</button>
<button id="collapseBtn" title="Collapse all nodes">
<i class="fas fa-compress"></i>
</button>
</div>
<div class="zoom">
<i class="fas fa-plus" id="soomInBtn" title="zoom in"></i>
<i class="fas fa-minus" id="soomOutBtn" title="zoom out"></i>
</div>
</div>
<div class="introduction">
此自定义图是使用 GoJs 制作的。
定制零件:
缩放鼠标滚轮。
用于缩放的单独按钮。
节点和链接的样式。
节点周围的阴影。
展开按钮样式。
带有包含 svg 图标的操作按钮的工具提示。
事件处理程序:单击节点、展开/折叠节点、添加/删除 btn 单击(请参阅控制台和警报)。
默认情况下,某些节点会展开。
蓝框将从主图和节点中删除。
筛选节点。如果筛选器不为空,则查找与筛选器及其所有直接父节点匹配的节点,然后展开这些节点。其他节点处于隐藏状态。
扩展/折叠节点时不会更改根位置。
节点按“text”属性升序排序。
默认情况下,将图表调整到其容器
不允许将图表拖到容器外
单击按钮时展开所有节点。
单击按钮时折叠所有节点。
</div>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/go.js"></script>
<script>
(function(){
var myDiagram;
init();
document.getElementById("soomInBtn").addEventListener("click", onZoomInClick);
document.getElementById("soomOutBtn").addEventListener("click", onZoomOutClick);
document.getElementById("filterBtn").addEventListener("click", onDoFilterClick);
document.getElementById("expandBtn").addEventListener("click", onExpandAllClick);
document.getElementById("collapseBtn").addEventListener("click", onCollapseAllClick);
function init() {
var $ = go.GraphObject.make; // for conciseness in defining templates
myDiagram =
$(go.Diagram, "myDiagram", // must be the ID or reference to div
{
initialContentAlignment: go.Spot.Center,
initialAutoScale: go.Diagram.Uniform, // fit to container by default
hoverDelay: 100, // controls how long to wait motionless (msec) before showing Adornment
scrollMode: go.Diagram.DocumentScroll // do not allow to drag the diagram outside container
});
myDiagram.toolManager.mouseWheelBehavior = go.ToolManager.WheelZoom; // Don't set Diagram.autoScale if you want the user to zoom the diagram.
// define all of the gradient brushes
var rootBrush = $(go.Brush, { color: "#6d7993" });
var mainGroupBrush = $(go.Brush, { color: "#984b43" });
var subGroupBrush = $(go.Brush, { color: "#994466" });
var subSubGroupBrush = $(go.Brush, { color: "#07889b" });
var leafBrush = $(go.Brush, { color: "#4484ce" });
// this is shown by the mouseHover event handler
var nodeHoverAdornment =
$(go.Adornment, "Spot",
{
background: "transparent",
// hide the Adornment when the mouse leaves it
mouseLeave: function(e, obj) {
var ad = obj.part;
ad.adornedPart.removeAdornment("mouseHover");
},
click: function(e, obj) {
var ad = obj.part;
debugger
}
},
$(go.Placeholder,
{
background: "transparent", // to allow this Placeholder to be "seen" by mouse events
isActionable: true, // needed because this is in a temporary Layer
click: function(e, obj) {
var node = obj.part.adornedPart;
node.diagram.select(node);
}
}),
$(go.Panel, "Auto",
{ alignment: new go.Spot(0.5, 0, 0, -20) },
$(go.Panel, "Vertical",
{ name: 'actionsPanel' },
$(go.Panel, "Auto",
$(go.Shape, "RoundedRectangle",
{
fill: "#333333",
stroke: "#333333",
height: 30,
margin: 0,
strokeWidth: 1,
shadowVisible: false,
parameter1: 2, // border radius
}),
$(go.Panel, "Horizontal",
$("Button",
{
width: 30,
height: 30,
margin: 0,
"ButtonBorder.fill": "transparent", // background color
"ButtonBorder.stroke": "transparent", // border color
"_buttonFillOver": "#535353",
"_buttonStrokeOver": "transparent", // border color on hover
toolTip:
$("ToolTip",
$(go.TextBlock, { margin: 1, text: "add" })
),
click: onAddSubItemClick
},
new go.Binding("visible", "addingSubItemAllowed"),
$(go.Shape, {
geometry: go.Geometry.parse('M1600 736v192q0 40-28 68t-68 28h-416v416q0 40-28 68t-68 28h-192q-40 0-68-28t-28-68v-416h-416q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h416v-416q0-40 28-68t68-28h192q40 0 68 28t28 68v416h416q40 0 68 28t28 68z', true),
fill: "#ffffff",
stroke: "#ffffff",
strokeWidth: 0,
width: 12,
height: 12,
maxSize: new go.Size(12, 12)
})
),
$("Button",
{
width: 30,
height: 30,
margin: 0,
"ButtonBorder.fill": "transparent", // background color
"ButtonBorder.stroke": "transparent", // border color
"_buttonFillOver": "#535353",
.........完整代码请登录后点击上方下载按钮下载查看
网友评论0