OrgChart页面模仿编程简单记录

article/2025/10/6 23:42:26

OrgChart页面模仿编程简单记录

导航栏


整体来看,导航栏设计的还是比较简洁,顶部有8个导航模块,每个模块点击后会跳转到相应模块页面。可以使用在App.js页面中使用<Router> <Navlink>来实现。

<Router>  <nav>  <Navlink>Home</Navlink>  </nav>  
</Router>

样式首先是被选择后改变背景颜色,<Navlink> 中有activeclassName 可以改变被选择后的样式。在css中将背景颜色改为白色即可。

<NavLink to="/" exact activeClassName="selected">  Home  </NavLink>  

当鼠标经过时也会进行背景颜色的改变。可以在样式文件中在<nav> 标签中添加hover 来改变背景颜色。

nav a:hover {
background-color: #fff;
color: #000;
}

home页面

主页面为svg格式,为可缩放的矢量图形。通过以下代码实现。

<svg width="860" height="240" xmlns="http://www.w3.org/2000/svg"><g><textstroke="#b80036"transform="matrix(1.2821781635284424,0,0,1.313725471496582,-94.81186294555664,-18.196077346801758) "fill="#b80036"strokeWidth="3"strokeDasharray="null"strokeLinejoin="null"strokeLinecap="null"x="524.741312"y="134.910448"id="svg_4"fontSize="92"fontFamily="Sans-serif"textAnchor="middle"fontWeight="bold">OrgChart</text><g id="svg_5" stroke="null"><rectid="svg_1"height="43.609757"width="128.702291"y="45"x="95.791349"strokeLinecap="null"strokeLinejoin="null"strokeDasharray="null"strokeWidth="7"fill="none"rx="5"ry="5"stroke="#b80036"/><rectheight="43.609757"width="128.702291"y="150.390247"x="172.297711"strokeLinecap="null"strokeLinejoin="null"strokeDasharray="null"strokeWidth="7"fill="none"id="svg_2"rx="5"ry="5"stroke="#b80036"/><rectheight="43.609757"width="128.702291"y="150.390247"x="20"strokeLinecap="null"strokeLinejoin="null"strokeDasharray="null"strokeWidth="7"fill="none"id="svg_3"rx="5"ry="5"stroke="#b80036"/><linefill="none"strokeWidth="3"strokeDasharray="null"strokeLinejoin="null"strokeLinecap="null"x1="83.636139"y1="120.590246"x2="236.648851"y2="120.590246"id="svg_8"stroke="#b80036"/><linefill="none"strokeWidth="3"strokeDasharray="null"stroklinejoin="null"strokeLinecap="null"x1="84.351146"y1="119.86342"x2="84.351146"y2="148.209759"id="svg_10"stroke="#b80036"/><linefill="none"strokeWidth="3"strokeDasharray="null"strokeLinejoin="null"strokeLinecap="null"x1="235.933844"y1="119.863418"x2="235.933844"y2="148.209759"id="svg_11"stroke="#b80036"/><linefill="none"strokeWidth="3"strokeDasharray="null"strokeLinejoin="null"strokeLinecap="null"x1="160.142495"y1="90.790247"x2="160.142495"y2="119.863416"id="svg_12"stroke="#b80036"/></g></g></svg>

使用<a><svg>进行包裹并添加href可点击svg进行跳转。
当完成矢量图的设置后,再对CSS文件进行简单的设置就可以实现主页面效果。

Default-Chart


通过安装@dabeng/react-orgchart的组件,可以在Default-Charts页面添加模版,需要设置id name title,当单个元素有子元素时,可进行添加children来进行添加子元素,children的添加类型为对象,同样包括id name title。同样,子元素可以进行嵌套使用。

Pan&Zoom Chart

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0aoo0J9B-1626254039456)(https://oscimg.oschina.net/oscnet/up-f4fcb25600222e732d25c73e12dc8c3b283.png)]
与Default-Chart没有太大的区别,在引入@dabeng/react-orgchart 的OrganizationChart组件后,自身就已经携带有pan zoom等属性,但默认为false,将其值更改为true后,便可以实现缩放效果。

<OrganizationChart datasource={ds} pan={true} zoom={true} />

Custom Node Chart


自定义节点图表通过OrganizationChart组件引入后,可以对其进行自定义设置,更改背景颜色,增加点击事件等。通过其内置chartClass属性可以进行样式的修改,可更换背景图片、颜色以及字体等。通过NodeTemplate对其进行事件的添加。可将已经完成的组件进行直接添加。

<OrganizationChartdatasource={ds}chartClass="myChart"NodeTemplate={MyNode}
/>

Export Chart


与其他页面不同的是,顶部添加了导出栏。通过对导出栏的选项更改,可以选择导出的名称及类型。通过给filename一个值再给其重新赋值可以显示默认值,同样的选择框中也是一样。再通过设置export按钮的点击事件来完成其导出功能。将filename以及选择框中的值赋给orgchart.current.exportTo()中,即可完成导出是名称及类型的选择。

const exportTo = () => {
orgchart.current.exportTo(filename, fileextension);
};

Drag&Drop Chart


其效果为可对图表元素进行拖拽并添加到其他图表元素内,需要将组件中OrganizationChart中的draggable属性值设置为true即可。

<OrganizationChart datasource={ds} draggable={true} />

Edit Chart


与其他部分不同的是顶部的编辑框,可以在默认模版的基础上实现添加、删除、改变图表元素的功能。通过对默认图表元素中值的操作来实现其功能。总体思路为获取输入的值,再点击相应按钮来实现按钮的相应功能。第一个,已经选择的以及多选框,通过读取点击的图表元素获取其值,然后进行遍历展示在SelectedNode中,这一过程通过组件OrganizationChart中的属性onClickNode获取,通过onClickChart清除已经选择的。接下来是多选框,设置类型为checkbox将其值赋予OrganizaitionChart中的multipleSelect属性来设置其是否为多选。然后是名称及标题输入框,两个input框默认值为name以及title,通过获取输入的name以及title的值,再通过JSONDigger组件中的属性与按钮的点击事件相对应,如增加图表元素子元素在JSONDigger中的属性为JSONDigger.addChildre等,对已经选择的图表元素进行操作。最后为编辑模式,即是否禁用按钮,对此input框设置类型为checkbox,默认值为true,将其相反值赋予各个按钮中disable属性的值来判断是否禁用,而编辑模式在OrganizationChart组件中有相应的collapsible属性值来判断是否为编辑模式。

<OrganizationChartref={orgchart}datasource={ds}collapsible={!isEditMode}multipleSelect={isMultipleSelect}onClickNode={readSelectedNode}onClickChart={clearSelectedNode}/>

Edit Node


与Edit Chart基本一致,不过是对单个图表元素的更改,最大的不同为顶部编辑栏只有Update Node按钮来对已经选择的图表元素进行操作。不过思路是一样的,通过获取输入框中的值,利用JSONDigger组件将获取的值赋予所选择的图表元素,其余的编辑模式以及是否多选都与Edit Chart中相似。

const updateNodes = async () => {
await dsDigger.updateNodes([...selectedNodes].map(node => node.id), {id: uuidv4(),name: newNodeName,title: newNodeTitle
});
setDS({ ...dsDigger.ds });};

http://chatgpt.dhexx.cn/article/tkL0w81f.shtml

相关文章

如何在react中使用OrgChart?

最近在将OrgChart嵌入至React时&#xff0c;碰见了一些坑&#xff0c;希望能以此记录我是怎么爬出来的~ 一、什么是OrgChart&#xff1f; 一款基于jquery来画组织架构图的插件。有以下特点&#xff1a; 支持本地数据和远程数据&#xff08;JSON&#xff09;基于CSS3转换的平滑…

orgChart的应用

文档地址&#xff1a;https://balkangraph.com/OrgChartJS/Demos/FirstLook 效果 html: <div id"tree" style"height: 500px;width: 100%;"></div><script src"__TMPL__/public/assets/js/orgchart.js"></script> <…

vue-orgchart拓扑图

安装vue-orgchart npm install vue-orgchart -S//main.js引入样式 import vue-orgchart/dist/style.min.css//使用页面引入 <template><div class"orgchart_Box_Y"><div class"box_right_container" v-if"ifLoading"><Vo…

jquery.orgchart.js

<!doctype html> <html> <head> <meta charset"utf-8"> <title>geovindu,Geovin Du,涂聚文</title><link rel"stylesheet" href"css/jquery.orgchart.css"> <script type"text/javascript&qu…

orgchart实现组织结构图

之前项目需要我搞一个组织架构图&#xff0c;用大约一周时间挑选了框架并开发&#xff0c;最后用orgchart搞出来了&#xff0c;先上结果图 orgchart下载地址 &#xff1a;https://github.com/dabeng/OrgChart 打开下载的压缩包&#xff0c;如下图 然后可以打开demo目录&#x…

orgChart的简单使用,实现树状图结构

还不知道这个插件的小伙伴可以先去官网下载&#xff0c;orgchart官网链接 呐&#xff0c;下载下来就是这样的&#xff1a; 我们把他解压出来&#xff1a; 点进去以后&#xff0c;直接找到index.html文件用浏览器打开&#xff0c;就是这样的啦&#xff1a; 这1--24都是样式样例…

orgChart生成组织结构图应用

orgChart 是一个开源JS&#xff0c;可用于生成组织结构图。现构建如下&#xff1a; 1&#xff09;动态生成HTML作为数据source var preTitle "";var content "<ul idbasic-stacking-source classhide><li>Band<ul>"; // header$.each…

OrgChart - 配置项详解 (精选+原创)

OrgChart 使用教程 &#xff08;一&#xff09; 没用开场白… 近日来&#xff0c;公司要求做一份web组织架构图&#xff0c;正好我使用的框架是vue &#xff0c;自己写太麻烦&#xff0c;于是找一找有没有合适的组件&#xff0c;直接套用。 于是找到了 OrgChart 这个 开源的组…

orgChart实现竖向排列组织图(js实现组织机构图)

一、前言 快过年了&#xff0c;博主这几天不算忙&#xff0c;又刚好用到orgChart来做组织机构图&#xff0c;写了这篇文章&#xff0c;欢迎大家指正。注意&#xff1a;我说的竖向是指文字竖着排列。 依赖库&#xff1a;jquery&#xff0c;jquery颜色选择器&#xff0c;orgCha…

武汉python自动化测试招聘,python自动化测试工程师招聘_Python-自动化测试面试

1、以你做过的项目&#xff0c;举例来说一下你的自动化测试是怎么做的&#xff1f; 参考答案&#xff1a;就拿简历上的ecshop项目来说吧&#xff0c;在编写脚本前&#xff0c;我们会对系统进行评估&#xff0c;确认这个系统可不可以实现UI自动化&#xff0c;如果可以的话&#…

测试ai模糊软件,AE/PR人工智能自动人脸检测马赛克模糊插件

Blace – AI Face Detection是一款作用在AE以及PR软件中的AI插件&#xff0c;能够自动识别检测人脸并智能添加马赛克边框&#xff0c;易于使用且基于AI的检测&#xff0c;控制检测区域并排除检测&#xff0c;有需要的用户不要错过了&#xff0c;赶快来下载吧&#xff01; 兼容性…

自动化面试题

自动化面试题 自动化&#xff1a;将人工测试转换成自动化脚本/工具去运行 优势&#xff1a;节省时间&#xff08;20% - 30%&#xff09;&#xff0c;提高工作效率 Python selenium/appium/airtest/requests unittest Jenkins WEB自动化 1. 什么样的项目适合做自动化&…

Python&OpenCV自动人脸打马赛克&调色系统[源码&UI操作界面&部署教程]

1.视频演示&#xff1a; [项目分享]Python&#xff06;OpenCV自动人脸打马赛克&#xff06;调色系统[源码&#xff06;UI操作界面&#xff06;部署教程] 2.图片演示&#xff1a; 3.图像颜色检索&#xff06;替换&#xff1a; 4.马赛克分类&#xff1a; 使用opencv库中的haar…

Python opencv:人眼/人脸识别并实时打码处理

利用Pythonopencv实现从摄像头捕获图像&#xff0c;识别其中的人眼/人脸&#xff0c;并打上马赛克。 系统环境&#xff1a;Windows 7 Python 3.6.3 opencv 3.4.2 一、系统、资源准备 要想达成该目标&#xff0c;需要满足一下几个条件&#xff1a; 找一台带有摄像头的电脑…

seleniumxpath打码平台

selenium使用 一 bs4搜索文档树二 css选择器三 selenium基本使用四 无界面浏览器五 selenium其它用法5.1 登录百度5.2 获取位置属性大小&#xff0c;文本5.3 元素操作5.4 执行js代码5.5 切换选项卡5.6 浏览器前进后退5.7 异常处理 六 selenium登录cnblogs获取cookie七 抽屉半自…

第十一章 自动编码器

简介&#xff1a;自动编码器是一种可以进行无监督学习的神经网络模型。一般而言&#xff0c;一个完整的自动编码器主要由两部分组成&#xff0c;分别是用于核心特征提取的编码部分和可以实现数据重构的解码部分。 1.自动编码器入门 在自动编码器中负责编码的部分也叫做编码器&a…

Python 题库自动化面试题

1、自动化代码中,用到了哪些设计模式? 单例设计模式 工厂模式 PO设计模式 数据驱动模式 面向接口编程设计模式 2、什么是断言( Assert) ? 断言 Assert 用于在代码中验证实际结果是不是符合预期结果&#xff0c; 如果测试用例执行失败会抛出异常并提供断言日志 3、什么…

Python实现对视频自动打码

我们在观看视频的时候&#xff0c;有时候会出现一些奇怪的马赛克&#xff0c;影响我们的观影体验&#xff0c;那么这些马赛克是如何精确的加上去的呢&#xff1f; 本次我们就来用Python实现对视频自动打码&#xff01; 准备工作 环境咱们还是使用 Python3.8 和 pycharm2021 即…

Python——超级鹰打码平台实现selenium对b站的自动化登陆

目录 一 、Chrome&#xff08;谷歌&#xff09;驱动器的下载 &#xff08;一&#xff09;驱动器版本选择 &#xff08;二&#xff09;下载Chrome驱动器 二、需要安装的库 &#xff08;一&#xff09;安装命令 &#xff08;二&#xff09;指定selenium版本原因 三、实现步…

selenium 自动化测试

Selenium 是一个用于Web应用程序测试的工具&#xff0c;支持多平台、多浏览器、多语言去实现自动化测试。目前在Web自动化领域应用越来越广泛。 selenium 介绍 Selenium的特点如下&#xff1a; 开源、免费多浏览器支持&#xff1a;Firefox、Chrome、IE、Opera、Edge多平台支…