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

vpn网站模板wordpress 分类信息主题

vpn网站模板,wordpress 分类信息主题,在线网页制作系统搭建,北京中风险地区在开发流程应用系统的过程中,流程图格式化是最基础且关键的一步。本文将全面分析 JavaScript 流程图格式化的实现原理,分段解释它如何利用层级和宽度进行布局,并最终实现节点和连线的美观排列。 一、格式化总体思路 想要实现自动排列流程图节…

在开发流程应用系统的过程中,流程图格式化是最基础且关键的一步。本文将全面分析 JavaScript 流程图格式化的实现原理,分段解释它如何利用层级和宽度进行布局,并最终实现节点和连线的美观排列。

一、格式化总体思路

想要实现自动排列流程图节点,需要分三步进行计算:

  1. 计算节点层级 Level
  2. 计算节点布局宽度 Wide
  3. 根据层级和宽度,确定节点坐标 x/y
  4. 根据节点坐标,计算连线抵达路径

二、层级计算原理 (Level)

层级描述节点在流程中所处的第几层,通常以 DFS 递归的方式得出:

  • 开始节点设为 level = 0
  • 对每个出线节点向下递归,level + 1
  • 如果遇到回路,别递归,标记 IsInCycle = true

**目的:**确定每个节点置于终端流程线路的第几层

流程图

三、节点宽度计算 (Wide)

宽度是指一个节点在横向属于它的子节点总布局需要的平面空间。

主要原理:

  • 普通节点:Wide = 节点默认宽度
  • splitNode:按照子节点数 * 单节点宽度
  • joinNode:同理,往上逆向传播
/**********************************************************功能:计算最大占宽入线/出线的最大占宽>=并行分支占宽(取大的一方),若再次遇到并行分支,跳到对应结束/开始并行分支节点避免向上/下将宽度传给所遇分支内的节点**********************************************************/
function FlowChart_calcWide(node,type,number){if(type=="up"){if(node.LineIn.length>0){for(var i=0;i<node.LineIn.length;i++){var startNode = node.LineIn[i].StartNode;while(startNode.Type == 'joinNode'){startNode.Wide = startNode.Wide<FlowChartObject.Nodes.Wide*number?FlowChartObject.Nodes.Wide*number:startNode.Wide;var splitNode = FlowChartObject.Nodes.GetNodeById(startNode.Data.relatedNodeIds);splitNode.Wide = splitNode.Wide<FlowChartObject.Nodes.Wide*number?FlowChartObject.Nodes.Wide*number:splitNode.Wide;startNode = splitNode.LineIn[0].StartNode;}startNode.Wide = startNode.Wide<FlowChartObject.Nodes.Wide*number?FlowChartObject.Nodes.Wide*number:startNode.Wide;FlowChart_calcWide(startNode,type,number);}}}else{if(node.LineOut.length>0){for(var i=0;i<node.LineOut.length;i++){var endNode = node.LineOut[i].EndNode;while(endNode.Type == 'splitNode'){endNode.Wide = endNode.Wide<FlowChartObject.Nodes.Wide*number?FlowChartObject.Nodes.Wide*number:endNode.Wide;var joinNode = FlowChartObject.Nodes.GetNodeById(endNode.Data.relatedNodeIds);joinNode.Wide = joinNode.Wide<FlowChartObject.Nodes.Wide*number?FlowChartObject.Nodes.Wide*number:joinNode.Wide;endNode = joinNode.LineOut[i].EndNode;}endNode.Wide = endNode.Wide<FlowChartObject.Nodes.Wide*number?FlowChartObject.Nodes.Wide*number:endNode.Wide;FlowChart_calcWide(endNode,type,number);}}}
}
节点宽度会把子节点都计算出来,然后推算出来开始节点宽度

四、节点坐标计算

根据 层级 Level宽度 Wide 确定 X/Y

var x = parent.x - (parent.Wide - node.Wide)/2 + offset;
var y = baseTop + node.Level * verticalSpacing;

  • **x 座标:**在父节点左侧居中排列
  • **y 座标:**根据层级 Level 线性增长
  • 初始 baseTop = 60, verticalSpacing = 80

五、连线路径计算

**目标:**使连线不交叉,地方明确,回路区分显著

基本思路

  1. 第一点:出发节点口
  2. 第二点:线垂直向下/上错差
  3. 第三点:接近节点输入口

psStart[0] = node.GetPointByPosition("3");
psStart[1] = { x: ..., y: ... }
psStart[2] = nextNode.GetPointByPosition("1");

回路连线设计:

  • 如果 nextNode.IsInCycle == true
  • 设置为虚线 + 曲线路径

六、实际应用

  • 每个节点的实际宽度 = 120 px
  • 逻辑宽度 = 160 px (Margin + Padding)
  • 实际 x 坐标 = 添加应用 offset

七、总结

通过层级 + 宽度 的分析,配合 DFS 阻止回路,可以在最简单的前端开发环境下,实现美观、通用、高效的流程图格式化系统。

格式化后流程图:

格式化后的美化流程图。


文章转载自:

http://N09ZX0Vv.frghq.cn
http://t8Tw2RbN.frghq.cn
http://GdaBmbAT.frghq.cn
http://DrpX2vz6.frghq.cn
http://E2P0oEUS.frghq.cn
http://1uljziEV.frghq.cn
http://ZWYyJUe8.frghq.cn
http://O9cNF4Df.frghq.cn
http://nFjplt0g.frghq.cn
http://kMmcNIZe.frghq.cn
http://hIOEROye.frghq.cn
http://tYjP2XDf.frghq.cn
http://FV4A7GfW.frghq.cn
http://fYgtuQ9K.frghq.cn
http://iCXWqWom.frghq.cn
http://SoNUEoLz.frghq.cn
http://VxtHiaBJ.frghq.cn
http://Xo4M2ac3.frghq.cn
http://tiZPCNK2.frghq.cn
http://nl1DYRb5.frghq.cn
http://8Qx1y1RJ.frghq.cn
http://I3S0h2Lb.frghq.cn
http://WQMh2iTw.frghq.cn
http://tF2gw1xG.frghq.cn
http://jAbjEjTj.frghq.cn
http://Y1d1S6wf.frghq.cn
http://fQvsMg8J.frghq.cn
http://nQ5ElVBn.frghq.cn
http://qQTCEAR2.frghq.cn
http://TN3iEvoK.frghq.cn
http://www.dtcms.com/wzjs/682247.html

相关文章:

  • 本地镇江网站建设长沙设计网站多少钱
  • 网站安全建设管理制度会展网站代码源码
  • 什么是网站设计在网站上做送餐外卖需要哪些资质
  • 金融棋牌网站建设wordpress 页面模板 自定义
  • 做商城型网站汕头网页制作
  • 钟落潭有没有做网站的云南品牌网站开发
  • 网站建设设计主要系统网站建设这个职业是什么
  • 用wordpress做站群深圳网站建设服务什么便宜
  • 西宁市建设网站多少钱高端品牌网站建设九五网络
  • 温州制作企业网站厦门人才网唯一官网登录
  • wordpress建站教程视频做儿童文学有哪些的网站
  • 企业网站建设范文淘宝网页版登陆
  • 黑龙江网站备案管理局重庆装修
  • 网站建设套模板下载wordpress新主题去版权
  • 个人做网站备案吗深圳公司官网设计
  • 网站模板如何使用 如何修改吗赚钱的软件
  • 住房和城乡建设网站南阳网站托管
  • 十大SEO网站外链建设误区个人站长怎么样做网站才不会很累
  • 知名营销类网站国家企业信用信息公示系统官网 2
  • 做水果网站弄个什么名字做外贸网站卖什么东西好
  • 网站建站建设首选上海黔文信息科技有限公司2wordpress相册代码
  • 恒佳企划网站建设qq免费申请账号
  • 哈尔滨网站建站模板wordpress默认页面
  • 智慧团建登录网站入口企业策划公司
  • 重庆制作网站怎么选中英切换的网站咋做
  • 建网站需要哪些步骤舞台灯光网站建设公司
  • 浙江省城乡建设厅网站首页百度网站推广费用
  • 网站建设捌金手指花总十六排名前50名免费的网站
  • 网站会员推广功能wordpress 4.5.4 漏洞
  • 地产公司网站建设方案wordpress wordcloud