draw.io 网页版二次开发(2):开始修改代码

目录

一 说明

二 打开开发环境 

1. 代码调整

2. 修改访问链接

 3. 注意

三  部分功能的代码汇总

1.  保存功能

2. 菜单栏折叠按钮功能

3.  顶部菜单栏

4.在顶部菜单栏中的【文件】菜单中新增选项

(1) 方法一:单独增加

(2) 方法二 :使用addMenuItems增加(我这次添加了一个保存到数据库的功能)

5. 底部菜单栏

6. 隐藏底部菜单栏的按钮

7. 左侧节点栏

8. 左侧菜单栏底部的【更多图形】的点击后弹窗

9. 元素右击添加点击事件

10.  查找、替换弹窗

11.  共享按钮隐藏

(1)隐藏页面右上角的共享按钮

(2)隐藏菜单栏【文件】下拉框中的共享按钮

12. 快捷键以及其功能配置

四 最后


一 说明

        应公司项目要求,需要对draw.io进行二次开发,并将html界面通过iframe 嵌入到本公司产品中使用,但是由于功能限制,做到最后还是放弃了使用draw.io。但是之前的研究内容可不能浪费。便准备写个专栏进行记录,希望能够帮到需要将draw.io进行二次开发的朋友,其中有涉及到不正确的地方还请大家多包涵!

二 打开开发环境 

        应该有小伙伴发现,修改代码后,刷新界面,为什么界面没有任何变化。那是因为还需要对某些地方进行调整。具体调整如下:

1. 代码调整

        如下图:在webapp根目录下找到index.html 文件,将黄色方框里面的代码(原始代码)修改为绿色方框的代码(即修改后的代码),这是为了注释掉远程地址 ,否则测试环境下不会请求本地修改后的 js 代码。

2. 修改访问链接

        正常访问是直接访问 http://localhost:3000/,但是开发模式的话,需要在访问url后面加上 ?.dev=1 。即 http://localhost:3000/?dev=1 。 这样,代码中修改的部分就可以看到效果了。

 3. 注意

        文件中有很多后缀为 .min.js 的文件,这个是自动生成的,千万不能改哦。

三  部分功能的代码汇总

1.  保存功能

        代码位置:src/main/webapp/js/diagramly/Dialogs.js        

2. 菜单栏折叠按钮功能

代码位置:src/main/webapp/js/diagramly/App.js

3.  顶部菜单栏

(1) 代码位置:src/main/webapp/js/diagramly/Menus.js

4.在顶部菜单栏中的【文件】菜单中新增选项

        新增选项有两种方式,如下:

        前提,需要添加多语言文件,比如中英对照文件:src/main/webapp/resources/dia_zh.txt

(1) 方法一:单独增加

        文件地址:src/main/webapp/js/diagramly/Menus.js

        ① 添加对应的字段(自己找准添加的位置写代码即可)

        ② 添加对应的点击功能

        ③  刷新界面,运行就可见到新的功能按钮。

(2) 方法二 :使用addMenuItems增加(我这次添加了一个保存到数据库的功能)

        ① 添加菜单按钮,代码位置:src/main/webapp/js/diagramly/Menus.js

        ②  添加点击事件:src/main/webapp/js/grapheditor/Actions.js

        ③  添加快捷键:src/main/webapp/js/grapheditor/EditorUi.js

        ④  保存并刷新界面,运行效果如下:

5. 底部菜单栏

(1) 代码位置:src/main/webapp/js/diagramly/Pages.js

(2) 在菜单栏中添加功能(同样也要先添加多语言对照文件)

(3)保存代码后,刷新界面,点击菜单栏,展示如下效果: 

6. 隐藏底部菜单栏的按钮

代码位置:src/main/webapp/js/diagramly/Pages.js 

7. 左侧节点栏

        

 代码位置:src/main/webapp/js/diagramly/sidebar/Sidebar.js

8. 左侧菜单栏底部的【更多图形】的点击后弹窗

代码位置: src/main/webapp/js/diagramly/Dialogs.js

9. 元素右击添加点击事件

 (1) 添加事件的中英文对应名字:src/main/webapp/resources/dia_zh.txt

(2)  将名字添加到菜单上

        注意:代码中的  -  表示添加一行分割线。

        添加方式有两个(需要看具体放的位置在哪里,看代码具体分析。):

        ① 添加在:src/main/webapp/js/diagramly/EditorUi.js

        ② 添加在:src/main/webapp/js/grapheditor/Menus.js

 (3) 添加点击事件:src/main/webapp/js/grapheditor/Actions.js

        在函数Actions.prototype.init中添加:

(4) 保存后运行效果如下:

10.  查找、替换弹窗

        

 触发事件:src/main/webapp/js/diagramly/Menus.js 中的 init 函数中的 findreplace 事件

弹出的弹窗代码位置: src/main/webapp/js/diagramly/Dialogs.js

11.  共享按钮隐藏

(1)隐藏页面右上角的共享按钮

代码位置: src/main/webapp/js/diagramly/App.js 具体位置如下(注释掉框起来的代码即可)

(2)隐藏菜单栏【文件】下拉框中的共享按钮

代码地址:src/main/webapp/js/diagramly/Menus.js  。具体位置如下(注释掉即可):

12. 快捷键以及其功能配置

代码位置:src/main/webapp/js/grapheditor/EditorUi.js

功能配置: src\main\webapp\js\grapheditor\Actions.js

四 最后

        代码的修改就到这里了。以后要是有其他的记录,我会继续补充。下一章开始写draw.io的打包和部署。

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

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

相关文章

Kubernetes 群集部署

一、Kubernetes 概述 1.1、什么是 Kubernetes Kubernetes 是一个可移植、可扩展的开源容器编排系统,主要用于自动化部署、扩展和管理容器应用,提供资源调度、部署管理、服务发现、扩容缩容、监控等功能。对于负载均衡、服务发现、高可用、滚动升级、自…

android自定义view仿微信联系人列表

说明:最近碰到一个需求,弄一个类似国家或省份列表,样式参照微信联系人 文件列表: step1:主界面 加载列表数据~\app\src\main\java\com\example\iosdialogdemo\MainActivity.java step2:右侧列表数据排序~\app\src\com\example\io…

Python 3 中zip()函数的用法

1 创作灵感 我们在阅读代码的时候,经常会看到zip函数,有的时候还和循环在一起用,今天举几个例子测试一下该函数的用法 2.应用举例 (1)定义了两个列表一个是num,一个是letter (2)使用zip可以把num列表和letter列表中…

计算机vcruntime140.dll找不到如何修复,分享5种靠谱的修复教程

当您在运行某个应用程序或游戏时遇到提示“找不到vcruntime140.dll”,这通常意味着系统中缺少了Visual C Redistributable for Visual Studio 2015或更高版本的一个重要组件。这个错误通常发生在运行某些程序时,系统无法找到所需的动态链接库文件。小编将…

element-ui的表单中,输入框、级联选择器的长度设置

使用<el-col>控制输入框的长度 <el-form-item label"姓名" label-width"80px"><el-col :span"15"><el-input v-model"form.name" autocomplete"off"></el-input></el-col></el-form…

Sectigo SSL证书申请的流程是怎样的?

在当今数字化时代&#xff0c;网络安全成为了一个不可忽视的问题。为了保护网站和用户数据的安全&#xff0c;SSL证书成为了网站运营的重要组成部分。Sectigo作为全球领先的数字证书颁发机构之一&#xff0c;提供了一系列的证书解决方案来满足不同类型网站的需求。以下是对Sect…

【LeetCode刷题】136.只出现一次的数字(Ⅰ)

【LeetCode刷题】136.只出现一次的数字&#xff08;Ⅰ&#xff09; 1. 题目&#xff1a;2.思路分析&#xff1a;思路1&#xff1a;一眼异或&#xff01; 1. 题目&#xff1a; 2.思路分析&#xff1a; 思路1&#xff1a;一眼异或&#xff01; 看到题目&#xff0c;如果有一定基…

Spring Boot 整合讯飞星火3.5通过接口Api接口实现聊天功能(首发)复制粘贴即可使用,后续更新WebSocket实现聊天功能

程序员必备网站&#xff1a; 天梦星服务平台 (tmxkj.top)https://tmxkj.top/#/ 1.pom.xml <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.72</version></dependency><depen…

618速递丨各平台内卷严重,这些行业能否率先炸场?

根据最新发布的《中国网络视听发展研究报告&#xff08;2024&#xff09;》显示&#xff0c;71.2%的受访用户因为看短视频和直播进行网上购物&#xff0c;超40%的用户认为短视频和直播是他们的主要消费渠道&#xff0c;内容消费正成为各大电商争夺的关键赛道。 今年618&#x…

pytest中@pytest.mark.parametrize和自定义装饰器如何一起使用?

在Pytest中&#xff0c;pytest.mark.parametrize装饰器用于将测试函数参数化。它允许我们通过传递多个参数和对应的值来运行相同的测试函数多次。另一方面&#xff0c;自定义装饰器可以用于添加额外的功能或重用代码。在本文中&#xff0c;我们将详细介绍如何在Pytest中同时使用…

搜索引擎的设计与实现(四)

目录 6 系统测试 6.1测试重要性 6.2测试用例 结 论 参 考 文 献 前面内容请移步 搜索引擎的设计与实现&#xff08;三&#xff09; 免费源代码&毕业设计论文 搜索引擎的设计与实现 6 系统测试 6.1测试重要性 该项目是在本地服务器上进行运行和调试&#xff0c;…

Go微服务: Gin框架搭建网关, 接入熔断器,链路追踪以及服务端接入限流和链路追踪

概述 本文使用最简单和快速的方式基于Gin框架搭建一个微服务的网关调用微服务的场景网关作为客户端基于RPC调用某一服务端的服务并接入熔断和限流以及链路追踪具体场景&#xff1a;通过网关API查询购物车里的数据在最后&#xff0c;会贴上网关和购物车服务的代码仓库 服务端搭…