gojs 部分功能实现

最近做的项目用到了gojs,使用了一段时间发现其功能特别强大,先记录下目前自己用到的把

1. 初始化画布

myDiagram =

$(go.Diagram, "myDiagramDiv",
{
});

2. 定义node 模型

myDiagram.nodeTemplate =
$(go.Node, "Vertical",
{
locationObjectName: "ICON",
zOrder:1,
locationSpot: go.Spot.Center
},
new go.Binding("location", "loc", go.Point.parse).makeTwoWay(go.Point.stringify), //go.Binding 数据绑定 又分为单向绑定和双向绑定

$(go.Panel, "Spot",   //go.Panel 面板 相当与div里面的外框把
$(go.Panel, "Auto",
{ name: "ICON" },
$(go.Shape,  //go.Shape 图形  有一些基础的圆 矩形 圆角矩形等 箭头
{ fill: null, stroke:null,strokeWidth:2 },
new go.Binding("fill","isHighlighted", function(h) { return h ? "#B7D3F2" : "transparent"; }).ofObject()),
$(go.Picture,  //图片
{desiredSize: new go.Size(30, 30), margin:3 },
new go.Binding("source", "type", nodeTypeImage ))
),
$(go.TextBlock,//文本框
{ alignment: go.Spot.TopRight, alignmentFocus: go.Spot.TopRight, //go.Spot.TopRight   相当于定位 在右上角
width: 50, height: 30,textAlign: "right",stroke: "#272822",font:"Bold 10px Helvetica"},
new go.Binding("text", "score"))
),


);

3.  定义线

myDiagram.linkTemplate 

4.自定义一些节点模型 , 要使用自定义的节点模型 需要在json里加上 "category":"自定义节点名", 

myDiagram.nodeTemplateMap.add("detail",

$(go.Node, "Horizontal"

));

5.节点点击事件

var Select_Port = null;

myDiagram.addDiagramListener("ObjectSingleClicked", function(e) {
//Select_Port = e.subject.part.data.key;    e.subject.part.data即获取到的data

});

6.画布空白即背景点击事件

myDiagram.addDiagramListener("BackgroundSingleClicked", function(e) {

});

7. 点击放大缩小画布

初始化画布时 可以设置

scale:0.7,
minScale:0.4,
maxScale:1.4

$(".enlarge").click(function(){
myDiagram.scale+=0.1;
})
$(".narrow").click(function(){
myDiagram.scale-=0.1;
})

8. 搜索节点

function searchDiagram() {
var input = document.getElementById("mySearch");
if (!input) return;
input.focus();

var regex = new RegExp(input.value, "i");

myDiagram.startTransaction("highlight search");
myDiagram.clearHighlighteds();

if (input.value) { 
var results = myDiagram.findNodesByExample({ text: regex }); // 根据需要搜索字段定义
myDiagram.highlightCollection(results);
if (results.count > 0) myDiagram.centerRect(results.first().actualBounds);
}

myDiagram.commitTransaction("highlight search");
}

搜索效果 通过isHighlighted 字段判断

new go.Binding("fill","isHighlighted", function(h) { return h ? "#B7D3F2" : "#fff"; }).ofObject() 

9. 鹰眼功能 

<div id="myOverviewDiv"></div>

myOverview =
$(go.Overview, "myOverviewDiv",
{ observed: myDiagram, contentAlignment: go.Spot.Center });

10. 自定义group模型

myDiagram.groupTemplate =
$(go.Group, "Auto",
{
zOrder:1,
layout: $(go.GridLayout, //网格布局
{ //angle: 90,
arrangement: go.GridLayout.LeftToRight,isRealtime: false, wrappingWidth:600 }), //wrappingWidth   最宽600px
isSubGraphExpanded: false,  //默认组是未展开的
locationSpot: go.Spot.Center,

subGraphExpandedChanged: function(group) { //子图扩展变化
if (group.isSubGraphExpanded) { // 子图展开
}
else {

}
}

},
new go.Binding("location", "loc", go.Point.parse).makeTwoWay(go.Point.stringify),
$(go.Shape, "Rectangle",
{ fill: "#ffffff",strokeWidth: 1 },
new go.Binding("stroke", "score", groupborder)
),
$(go.Placeholder,
{ padding: 10})

) // end Vertical Panel
); // end Group

11. 向 data 里追加字段  原本获取的json没有score字段但是需要用到可以追加进 nodeDataArray里 方便使用

var model = myDiagram.model;
var arr = model.nodeDataArray;
for (var i = 0; i < arr.length; i++) {
datas = arr[i];
datas.score = Math.round(Math.random()*100);
model.updateTargetBindings(datas);
}

12 . 可以给node加toolTip 实现鼠标移入提示想要显示的数据

{ // this tooltip shows the name and picture of the kitten
toolTip:
$(go.Adornment, "Auto",
)
),
{padding:10}
) // end Adornment
})

 

未完待续。。。  

 

转载于:https://www.cnblogs.com/xiaorong-9/p/7018825.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/468417.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CPU是如何访问到内存的?

讨论的重点我们知道CPU有地址总线&#xff0c;数据总线和控制总线数据总线&#xff08;Data Bus&#xff09;&#xff1a;在CPU与RAM之间来回传送需要处理或是需要储存的数据。地址总线&#xff08;Address Bus&#xff09;&#xff1a;用来指定在RAM&#xff08;Random Access…

海量url mysql_海量数据mysql优化步骤

第一优化你的sql和索引&#xff1b;第二加缓存&#xff0c;memcached,redis&#xff1b;第三以上都做了后&#xff0c;还是慢&#xff0c;就做主从复制或主主复制&#xff0c;读写分离&#xff0c;可以在应用层做&#xff0c;效率高&#xff0c;也可以用三方工具&#xff0c;第…

macos支持exfat吗_打造便捷、人性化的macOS桌面使用环境

原标题&#xff1a;打造便捷、人性化的macOS桌面使用环境打造便捷、人性化的macOS桌面使用环境 2020-10-23 17:25:410点赞4收藏0评论欢迎参加#果粉是怎样炼成的#征稿&#xff0c;围观秋季发布会新品&#xff01;是什么让苹果生态无法割舍&#xff1f;快来讲讲你的果粉炼成记&am…

Delphi XE7的Splash 功能

Delphi XE7的Splash 功能转载于:https://www.cnblogs.com/LittleTiger/p/7020349.html

滴滴是如何搭建起PB级数据中台的?

滴滴公司自12年底上线至今&#xff0c;俨然成功跻身互联网大咖行列&#xff0c;在以流量活命的互联网世界里&#xff0c;如果没有一定的硬核技术为业务做支撑&#xff0c;单靠营销与宣传&#xff0c;是没有办法留住日益挑剔的用户的。我们今天就谈一谈滴滴打车背后所用到的大数…

gdbc 同步mysql_Jdbc数据同步

ElasticSearch 安装安装前准备安装JDK7及以上版本(这里不再讲述JDK安装步骤)下载ElasticSearch安装包&#xff0c;点击 获取elasticsearch-2.1.1.tar.gz安装包(https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.…

CommonJS规范

概述 Node应用由模块组成&#xff0c;采用CommonJS模块规范。 根据这个规范&#xff0c;每个文件就是一个模块&#xff0c;有自己的作用域。在一个文件里面定义的变量、函数、类&#xff0c;都是私有的&#xff0c;对其他文件不可见。转载于:https://www.cnblogs.com/happy1992…

java技术_2020年最流行的Java开发技术

点击上方“千锋教育”后台回复「 Java 」&#xff0c;领取视频学习教程在本文中&#xff0c;我们将以编程界最常用的编程语言Java为例&#xff0c;分享最为主流的技术与工具。Java几乎无处不在&#xff0c;无论在智能手机、台式机、游戏设备还是科学超级计算机上&#xff0c;处…

一个小码农对嵌入式的理解

今年毕业刚工作半年&#xff0c;稍微写一下自己的见解。嵌入式工程师简直就是硬件工程师与软件工程师的合体&#xff01;别问我是哪一类软件工程师&#xff0c;反正不是前端、后端、APP、测试、运维。也别问我是什么硬件工程师&#xff0c;电源、单片机、高频、通信……你会做你…

mysql cluster linux_【完美】Mysql-cluster数据库集群搭建(linux)

介绍《Mysql-cluster数据库集群介绍》安装系统&#xff1a;Linux CentOS7.4查看是否安装mysqlrpm -qa | grep mysql普通删除rpm -e mysql强力删除rpm -e --nodeps mysql通过wget安装wget https://dev.mysql.com/get/Downloads/MySQL-Cluster-7.5/mysql-cluster-gpl-7.5.8-linux…

洛谷P1901 发射站

P1901 发射站 245通过468提交题目提供者该用户不存在标签NOI导刊云端↑难度普及/提高-时空限制1s / 128MB提交 讨论 题解 最新讨论更多讨论 大神路过的看一下输入后面为什么带空格。有人说是单调队列&#xff0c;但不明明…题目描述 某地有 N 个能量发射站排成一行&#xf…

gx works2 存储器空间或桌面堆栈不足_静态体验奇瑞艾瑞泽GX冠军版,细节做工很精湛...

奇瑞艾瑞泽GX冠军版车型正式上市。编辑近日趁着区域上市的机会&#xff0c;对其进行了静态体验。这车怎么样&#xff1f;分几个方面来看看外观方面&#xff0c;运动范儿十足&#xff0c;看着就年轻&#xff0c;一副活力四射的样子。得益于fastback极速凌动的设计元素&#xff0…

我这几年呆的这几个公司

之前发的丰富的经历我12年硕士毕业&#xff0c;历经华为&#xff0c;某芯片原厂外企&#xff0c;某芯片原厂国企&#xff0c;某手机公司&#xff0c;最后来到大疆&#xff0c;可以说是一个跳槽小能手&#xff0c;因为具有多家大企业的工作经历&#xff0c;我觉得谈下自己在各个…

mysql 主键 最佳实践_Spring Data Jpa + MySQL IDENTITY 主键下批量插入最佳实践

Spring Data Jpa 虽然可以使用参数调整批量插入&#xff0c;但是仅限于主键策略不是 IDENTITY 的情况下&#xff0c;对于习惯了使用 IDENTITY 的 MySQL 选手来说&#xff0c;批量插入数据直接就悲剧了。幸好我们还有 JdbcTemplate 这个利器&#xff0c;我们使用 Spring Data Jp…

nsoutlineview 搜索_阿里巴巴搜索推荐广告三位一体的在线服务体系

最近在工作中大量使用到了淘系的在线分发服务体系&#xff0c;可以快速高效的实现个性化内容分发&#xff0c;其技术架构的概览在这里分享给大家。AIOS(Artificial Intelligence Online Serving)是阿里巴巴集个性化搜索、推荐、广告三位一体的在线服务平台。在大型互联网公司里…

为了生活

前几天&#xff0c;我刚刚满30岁&#xff0c;30岁的那天&#xff0c;过得很深刻&#xff0c;高烧了40度&#xff0c;每次发烧我都没有去医院&#xff0c;这次也一样&#xff0c;潜意识里面觉得它一定会来&#xff0c;潜意识里面也知道它一定会走&#xff0c;不管是40度还是45度…

深度ip转换器手机版app_手机大师智能管家app下载-手机大师智能管家app官网版 v1.0.0...

手机大师智能管家app&#xff1a;针对各种手机垃圾快速在线清除的软件&#xff0c;利用这款软件可以快速的清除各种不同的手机垃圾&#xff0c;而且还可以一键在线加速&#xff0c;更好的享受手机加速带来的便捷&#xff0c;同时针对各种文件清理也更加的简单&#xff0c;让你更…

小米19999

以前没有钱买小米现在也是&#xff0c;没有钱买小米19999的小米可能会比较贵但是看完这几个动图再决定要不要切肾毕竟肾只有一个消息提示调节音量播放音乐玩游戏CS通知栏充电好像有几次文章都说明了我有好多好多朋友在做手机所以我对手机其实没有多大新鲜感不是因为贵了就买而是…

Maven配置项目依赖使用本地仓库的方法汇总

Maven配置项目使用本地仓库有以下方式实现&#xff1a; 1、类似本地仓库&#xff0c;但是属于本地依赖&#xff0c;比如某个JAR包是引用第三方的&#xff0c;直接放在了项目的lib文件夹&#xff0c;那么此时可以如下配置项目的POM&#xff1a; <dependency><groupId&g…

html5+css3第一次作业_“台风爷爷,让我作业飞走!”南京小学生写的诗都这么逆天了?...

小学生的脑洞能有多大&#xff1f;看看他们写的诗就知道了&#xff01;最近&#xff0c;南京游府西街小学四年(6)班孩子们的语文作业火了&#xff0c;一个个神句让老师都不得不服气。赶紧戳图来看↓↓↓语文老师严杏村介绍&#xff0c;原本的作业是抄写儿童现代诗&#xff0c;但…