(三)kityMinder如何实现节点间的跳转

2023-11-18

本文章系列将会记录在做kityminder二次开发过程中,遇到的问题以及解决方法

有同事反馈需要脑图能够支持类似于xmind中的节点中的跳转的功能,但是实际上节点目前支持的链接方式只是支持跳转到外部的链接上去而已,并不能够支持节点间跳转的功能。

思考

其实想要实现这个功能,并不是很复杂,因为我们想要一个逻辑,只要在待跳转的节点中,定义好需要跳转到节点的id的数据,然后我们需要有个图标响应点击操作,其实整个流程就非常的顺理成章了。

定义一个图标

关于图标的定义可能需要参考下关于测试结果中图标的定义,我们可以看下这块是如何去声明一个图表出来的。

pass = new kity.Path().setTranslate( - 10, -10).setPathData("M15.812,7.896l-6.75,6.75l-4.5-4.5L6.25,8.459l2.812,2.803l5.062-5.053L15.812,7.896z").fill("#EEE")

如上就是一个通过图标的定义, 其实就是一个svg的定义即可,所以我们就可以照猫画虎的处理,定义好NodeLinkIcon

var NodeLInkIcon = kity.createClass('NodeLinkIcon', {
    base: kity.Group,
    constructor: function (value) {
        this.callBase()
        this.setSize(20)
        this.create()
        this.setValue(value)
        this.setId(utils.uuid('node_link'))
        this.translate(0.5, 0.5)
    },
    setSize: function (size) {
        this.width = this.height = size
    },
    create: function () {
        var default_circle = new kity.Circle(9).fill("#FFED83").setOpacity(.1)
        nodeLink = new kity.Path().setTranslate(- 10, -10).setScale(.02).setPathData("M307.2 307.2a204.8 204.8 0 0 0 0 409.6h102.4a34.133333 34.133333 0 1 1 0 68.266667H307.2A273.066667 273.066667 0 1 1 307.2 238.933333h102.4a34.133333 34.133333 0 1 1 0 68.266667H307.2z m273.066667-34.133333a34.133333 34.133333 0 0 1 34.133333-34.133334h102.4a273.066667 273.066667 0 1 1 0 546.133334h-102.4a34.133333 34.133333 0 1 1 0-68.266667h102.4a204.8 204.8 0 0 0 0-409.6h-102.4a34.133333 34.133333 0 0 1-34.133333-34.133333z m-307.2 238.933333a34.133333 34.133333 0 0 1 34.133333-34.133333h409.6a34.133333 34.133333 0 1 1 0 68.266666H307.2a34.133333 34.133333 0 0 1-34.133333-34.133333z").fill("#666")
        this.addShapes([default_circle, nodeLink])
        this.nodeLink = nodeLink
    },
    setValue: function (value) {
        this.nodeLink.setVisible(null !== value && value !== '');
    }
})

处理点击响应事件并做跳转

这里我们只要在节点的render逻辑中实例化出icon。并且实现click的方法。如下做的内容即获取到nodeLink中的值,即要跳转的节点的id值,进行选中以及居中的操作。

var nodeIcon = new NodeLInkIcon();
nodeIcon.setStyle('cursor', 'pointer');
nodeIcon.on("click", function () {
    minder.selectById(node.getData().nodeLink, true);
    var nodes = window.minder.getNodesById(node.getData().nodeLink);
    if (nodes !== null && nodes.length !== 0) {
        window.minder.execCommand('Camera', nodes[0], 0);
        if (!nodes[0].isExpanded()) window.minder.execCommand('Expand', true);
    }
});
return nodeIcon;

PS:至于节点的nodeLink值如何被赋值,这个就比较简单些了,这里就不在说明了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(三)kityMinder如何实现节点间的跳转 的相关文章

  • keil找不到device,怎么办?

    下载好的keil 准备调试程序 却发现这个问题 找不到我需要的芯片啊啊啊 头大 后面发现是缺少相应的pack 安装keil时 好像没有自动装上STM32系列芯片 所以得需要自己安装 百度一下 找一些资源 然后 把途中红色框住的 分别放在安装
  • 对字符串进行正则取子串

    题目是这样的 对一段HTML网页内容 解析出其中所有的键值对 比如其中type text type为属性 text为值 二者为一个键值对 内容如下
  • Day4-1 反射、可变变量、线程池和Tomcat调优

    反射 Class的三种获取方式 方式一 通过Class forName获取 Class cla1 Class forName lt 类名 gt 方式二 通过类属性 lt 类名 gt class获取 Class cla2 lt 类名 gt c
  • uniapp本地插件列表为空的问题

    在开发中 我遇到本地插件列表为空的问题 问题来源 当我们在打包时不想选择本地的某个插件 但是 但是删除 再去选择 你会发现 来列表为空 也不会报错 解决方案 1 我们删除造成问题后的导入原生插件 然后重新导入 我就是这样解决的 可能你改原生
  • Android OkHttp4 RequestBody.create()过时解决办法 kotlin、java版本

    前段时间 OKhttp3已升级到Okhttp4 编写语言由java过渡到kotlin 而以前okhttp3经常用到的post提交数据的 RequestBody create 已过时 并且换成了kotlin的新特性写法 okhttp3 pos
  • Android WebView使用技巧

    1 不使用WebView缓存 使用场景 通过WebView输入用户名和密码进行登录 退出登陆后 再进行登录会默认是之前输入的用户名和密码登录 那么使用如下方式可以设置webview的缓存模式 WebSettings seting web v
  • 存储过程中的when others then 和 raise 何意义?

    EXCEPTION when others then rollback dbms output put line code sqlcode dbms output put line errm sqlerrm raise when other
  • MATLAB初学_分类方法_4.0

    一 K 近邻分类 K 近邻算法是一种基于实例的非参数的分类方法 其作用原理是计算每个训练样例到待分类样品间的距离 取和待分类样品距离最近的看k个训练样例 k个样品中那个类别的训练样例占多数 则待分类元组就属于该类 2 1 K NN算法具体步
  • linux文件重命名命令

    linux下重命名文件有两种方式 1 较简单的处理命令 mv mv 原文件名 新文件名 如 mv myFile newName 将MyFile重命名为newName 2 linux提供了一个重命名文件命令 rename rename fro
  • HDR技术

    转自 http digi tech qq com a 20150513 008211 htm http digi tech qq com a 20150119 009229 htm http tech sina com cn e 2015
  • Fix a Tree【Codeforces 699 D】【dfs + 树的性质】

    Codeforces Round 363 Div 2 D 题意 有N个点 每个点i都有一个父节点p i 如果 i p i 则是说明i结点是根结点 现在我们给出这样的1 N的p i 这可能是不合法的 问 我们应该最少改变多少个使它变成一棵合法
  • kubernetes各组件介绍

    文章目录 一 kubernetes 是什么 1 基础架构图 2 kubernetes 各组件介绍 2 1 master 组件 one Kubernetes API Server kube apiserver two Kubernetes C
  • 位的巧妙应用

    前言 前几天做了一个笔试题目 当时没多想 今天翻看博客才发现 原来每个笔试题都藏的很深啊 原文链接 http blog csdn net u010429424 article details 77856133 先说题目 面试题 8个试剂 其
  • 输入两个学生的学号,成绩,输出成绩较高的学生的学号姓名和成绩

    include
  • 贝叶斯判别分析器_用朴素的贝叶斯构建情感分析器

    贝叶斯判别分析器 Sentiment Analysis is contextual mining of text which identifies and extracts subjective information in the sou
  • 传感器超声波雷达

    转自 http www itsiwei com 21962 html 在上一次分享中 我介绍了毫米波雷达的原理 数据特性及优缺点 毫米波雷达的低环境敏感和低成本的特性使得其在ADAS和自动驾驶领域得到了广泛的应用 今天要介绍的是一款极其常见
  • 【Python】cnocr的使用

    1 介绍 cnocr于2019年7月25日开源 以下是使用介绍 2 安装 pip install cnocr 3 使用 from cnocr import CnOcr ocr CnOcr path r D server cnocr exam
  • 【AI前沿】chatgpt还有哪些不足?

    博客昵称 吴NDIR 个人座右铭 得之淡然 失之坦然 作者简介 喜欢轻音乐 象棋 爱好算法 刷题 其他推荐内容 计算机导论速记思维导图 其他内容推荐 五种排序算法 在这个愉快的周末让我们聊一下ChatGPT吧 ChatGPT 4时代来临 C

随机推荐

  • AD怎么调整PCB板子大小

    方法一 Design Board Shape Redefine Board Shape 快捷键D S R 对于方形 依次画好4个点 然后右键退出操作 没有画成想要的形状之前不要点击右键 方法二 1 在PCB页面用Keep Out Layer
  • C语言学习笔记(七)————分支语句相关

    1 单独一个分号是空语句 在一些情况下有重要作用 2 使用if else语句时 如果条件成立 要执行多条语句 这里要用一对 封装一个代码块 如果if else后面是单条语句则不用大括号括起 3 注意C语言中if else遵循就近原则 不看缩
  • 分析告警流量

    关键指标分析 事件量 原始告警量 主告警量 自动去重 规则压缩后告警量 压缩比 压缩比计算公式 1 主告警量 事件量 100 MTTA 告警平均响应or认领时长 MTTR 告警平均恢复or关闭时长 事件压缩分析 按天统计事件量 所有告警 主
  • 电商数据分析---RFM用户画像

    电商数据分析 一 数据描述 数据下载 订单顺序编号 订单号 用户名 商品编号 订单金额 付款金额 二 分析角度 1 整体角度 探索每个月有效的订单 以及销售额 2 个人角度 统计第一次购买的数量 以及最新时间购买的人数 3 用户画像 使用R
  • Windows API一日一练(13)TranslateMessage函数

    Windows API一日一练 13 TranslateMessage函数 分类 Direct3D 2007 07 23 08 41 7881人阅读 评论 5 收藏 举报 windows api winapi null 工作 Transla
  • linux基础命令之zip

    zip用来解压缩文件或对文件进行打包 语法 zip 选项 参数 zip压缩包 指定要创建的zip压缩包 文件列表 指定要压缩的文件列表 通常用法 zip r aaa zip aaa 压缩目录 zip r aaa zip aaa 压缩文件 选
  • 服务器来电后自动开机

    实战 xfs文件系统的备份和恢复 XFS提供了 xfsdump 和 xfsrestore 工具协助备份XFS文件系统中的数据 xfsdump 按inode顺序备份一个XFS文件系统 与传统的UNIX文件系统不同 XFS不需要在dump前被卸
  • Mac M1(arm 系列芯片)如何安装 Chromium

    最近写个脚本用到 puppeteer 然后安装 Chromium 出现一点问题 这里记录一下解决方案 Puppeteer 自动安装失败 在 Puppeteer 安装时会自动安装 Chromium 然而却总是报错 502 导致下载失败 直接下
  • [Unity] Unity 插件Behavior Designer行为树使用

    Unity 插件Behavior Designer行为树使用 1 创建行为树 在Tools gt Behavior Designer gt Editor中打开行为树编辑编辑窗口 选择一个游戏物体 在Behavior Designer中右键A
  • open3d-点云读写和显示

    目录 一 点云读取 二 点云写入 二 点云显示 三 open3d支持如下点云文件类型 四 代码及结果示例 一 点云读取 read point cloud filename format auto remove nan points True
  • 人工智能专家:AI并不像你想象的那么先进

    2019 10 28 14 44 32 神译局是36氪旗下编译团队 关注科技 商业 职场 生活等领域 重点介绍国外的新技术 新观点 新风向 编者按 近些年 很多人工智能产品已经投入应用 走进人们的生活 人工智能迅猛的发展速度很难不引人注意
  • OSI七层模型及各层功能概述

    目录 1 OSI的基本概念及原则 2 OSI七层模型各层功能概述 3 OSI七层模型举例 4 OSI七层模型总结 1 OSI的基本概念及原则 OSI是Open System Interconnect的缩写 意为开放式系统互联 其各个层次的划
  • pandas读取SQL数据库到DataFrame

    在查询sql数据库时可以直接将数据读取到dataframe中 这样直接解决读取了大量含BLOB的记录后出现BLOB数据无效的问题 如LOB variable no longer valid after subsequent fetch 对这
  • python绘制饼图双层_Python通过matplotlib画双层饼图及环形图简单示例

    1 饼图 pie 即在一个圆圈内分成几块 显示不同数据系列的占比大小 这也是我们在日常数据的图形展示中最常用的图形之一 在python中常用matplotlib的pie来绘制 基本命令如下所示 python3 X版本 vals 1 2 3
  • 刷脸支付促使传统行业迎来了数字化变革契机

    人脸识别的时候可以进行性别识别 性别识别是利用计算机视觉来辨别和分析图像中的人脸性别属性 多年来 人脸性别分类因其在人类身份认证 人机接口 视频检索以及机器人视觉中的潜在应用而备受关注 性别分类是一个复杂的大规模二次模式分类问题 分类器将数
  • Flutter安装的常见错误

    1 android studio not installed flutter config android studio dir E Android AndroidStudio 指定android studio的目录 2 flutter d
  • Pytorch Windows C++调用(libtorch) Cmake编译 分别在python和C++中验证一致

    0 下载准备 具备vs2015 cmake libtorch libtorch https pytorch org get started locally 先用的release版本测试了一下 把lib中的dll放在bin中 然后加到环境变量
  • 云服务器网卡mac地址修改,服务器mac地址修改教程

    服务器mac地址修改教程 内容精选 换一换 您可以根据以下步骤使用管理控制台创建一个裸金属服务器实例 本教程以部署一台Web应用服务器为场景 旨在帮助您快速创建一个实例 因此不会涵盖所有可能的选项 详细的创建信息和参数说明 请参见创建裸金属
  • NGUI的学习

    一 导入和创建UIROOT 1 导入Ngui 导入哪个都可以 推荐第一个 2点击NGUI Options Reset prefabs ToolBar 插入背景prefab创建了UIROOT和摄像机及背景 二 UI Label 的使用 1 选
  • (三)kityMinder如何实现节点间的跳转

    本文章系列将会记录在做kityminder二次开发过程中 遇到的问题以及解决方法 有同事反馈需要脑图能够支持类似于xmind中的节点中的跳转的功能 但是实际上节点目前支持的链接方式只是支持跳转到外部的链接上去而已 并不能够支持节点间跳转的功