当前位置: 首页 > news >正文

Gojs渲染实线、虚线

在这里插入图片描述

渲染页面

<template><div><div id="topology-container"></div></div>
</template>

js逻辑渲染实线、虚线

<script>
import go from 'gojs';export default {mounted() {this.initDiagram();},methods: {// 加载initDiagram() {const $ = go.GraphObject.make;const diagram = $(go.Diagram, "topology-container", {initialContentAlignment: go.Spot.Center,"undoManager.isEnabled": true,// layout: $(go.ForceDirectedLayout) // 自动布局});// 节点模板diagram.nodeTemplate = $(go.Node, "Auto",$(go.Shape, {fill: "white",strokeWidth: 2,stroke: "black"},new go.Binding("fill", "status", (status) =>status === "正常" ? "lightgreen" : "lightcoral")),$(go.TextBlock, {margin: 20,stroke: "black",font: "12px sans-serif"},new go.Binding("text", "name")));// 创建模板映射const templmap = new go.Map();const lineColor = "white";// 默认实线模板const defaultTemplate = $(go.Link,{ routing: go.Link.AvoidsNodes },$(go.Shape, {stroke: lineColor,strokeWidth: 2}),$(go.Shape, {toArrow: "Standard",fill: lineColor,stroke: lineColor}));// 虚线模板(带动画支持)const dashedTemplate = $(go.Link,{routing: go.Link.AvoidsNodes,selectionAdorned: false},$(go.Shape, {name: "dashedLink",stroke: "#FFA500",  // 橙色虚线strokeWidth: 3,strokeDashArray: [8, 4]  // 虚线样式}),$(go.Shape, {toArrow: "Standard",fill: "#FFA500",stroke: "#FFA500"}));// 添加到模板映射templmap.add("", defaultTemplate);  // 默认模板templmap.add("dashed", dashedTemplate);  // 虚线模板diagram.linkTemplateMap = templmap;// 节点数据const nodeDataArray = [{ key: 1, name: "遥测处理", status: "正常" },{ key: 2, name: "系统监控", status: "异常" },{ key: 3, name: "拓扑指标1", status: "正常" },{ key: 4, name: "站监控", status: "异常" },{ key: 5, name: "轨道计算管理", status: "正常" },{ key: 6, name: "遥测处理服务器", status: "正常" },{ key: 7, name: "任务编排服务器", status: "正常" },{ key: 8, name: "站监控服务器", status: "异常" },];// 连接数据(使用category指定虚线)const linkDataArray = [{ from: 3, to: 4, category: "solid", id: 2 },{ from: 4, to: 5, category: "dashed", id: 3 },{ from: 5, to: 6, category: "dashed", id: 4 },{ from: 6, to: 7, category: "solid", id: 5 }];diagram.model = new go.GraphLinksModel(nodeDataArray, linkDataArray);// 保存diagram引用到Vue实例this.diagram = diagram;// 虚线动画效果this.animateDashedLinks(diagram);},animateDashedLinks(diagram) {// 找到所有虚线连接const dashedLinks = [];diagram.links.each(link => {if (link.category === "dashed") {dashedLinks.push(link);}});// 为每条虚线添加动画let offset = 0;setInterval(() => {offset = (offset + 2) % 24;  // 24是虚线样式的总长度(8+4)*2dashedLinks.forEach(link => {const shape = link.findObject("dashedLink");if (shape) {shape.strokeDashOffset = offset;}});this.diagram.updateAllTargetBindings();}, 50);},}
};
</script>
<style scoped>
#topology-container {width: 100%;height: 600px;background-color: #3740be;border: 1px solid #ccc;
}
</style>

相关文章:

  • JavaScript 中的单例内置对象:Global 与 Math 的深度解析
  • RFC8489-STUN
  • [蓝桥杯]解谜游戏
  • 凌晨四点的星光
  • Delphi 实现远程连接 Access 数据库的指南
  • MySQL基础(一)介绍、下载及安装
  • Hubstudio浏览器如何使用Loongproxy?
  • libGL error
  • MS8258D 高增益带宽积 FET 输入放大器/激光雷达接收跨阻放大器
  • arcpy与扩展模块
  • Android Test3 获取的ANDROID_ID值不同
  • kubeadm安装k8s
  • 2024年第十五届蓝桥杯青少Scratch初级组-国赛—画矩形
  • 2003-2024年高铁列车信息数据
  • JeecgBoot低代码管理平台
  • 【图论 强连通分量】P1653 [USACO04DEC] Cow Ski Area G|普及+
  • 一篇文章实现Android图片拼接并保存至相册
  • 13.MySQL用户管理
  • 巨控GRM550系列,西门子 S7-1200 PLC 远程上下载与调试技术方案
  • linux系统终端远程控制和传输方式
  • 微网站建设要多少钱/成都seo网站qq
  • 企业网站怎么做推广/品牌营销理论有哪些
  • 如何查看域名以前是做什么网站的/优化关键词排名的工具
  • 南昌哪里有网站建设/暴疯团队seo课程
  • 网站产品详情用哪个软件做的/免费的网络推广渠道有哪些
  • 新淘客wordpress插件/seo外包服务方案