gooflow学习笔记
前端jqury脚本实现流程设计,兼容目前主流浏览器
gooflow 默认属性节点只有:id,name,top,left,width,height,type (各个版本不同,属性节点有所增加),但是这些都是和流程设计器本身有关的
实现自定义属性字段:
1、在节点数据对象上加上自己的定义属性字段(我自定义了一个data 属性字段)
2、修改的时候把属性字段填充到对应的对象属性字段中
var focusLine = demo.getItemInfo(focusId, "node");
focusLine.data = $("#ele_data").val();
<!DOCTYPE html>
<html xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>流程图DEMO</title>
<!--[if lt IE 9]>
<?import namespace="v" implementation="#default#VML" ?>
<![endif]-->
<link rel="stylesheet" type="text/css" href="../codebase/GooFlow.css"/>
<style>
.myForm{display:block;margin:0px;padding:0px;line-height:1.5;border:#ccc 1px solid;font: 12px Arial, Helvetica, sans-serif;margin:5px 5px 0px 0px;border-radius:4px;}
.myForm .form_title{background:#428bca;padding:4px;color:#fff;border-radius:3px 3px 0px 0px;}
.myForm .form_content{padding:4px;background:#fff;}
.myForm .form_content table{border:0px}
.myForm .form_content table td{border:0px}
.myForm .form_content table .th{text-align:right;font-weight:bold}
.myForm .form_btn_div{text-align:center;border-top:#ccc 1px solid;background:#f5f5f5;padding:4px;border-radius:0px 0px 3px 3px;}
#propertyForm{float:right;width:260px}
</style>
<script type="text/javascript" src="child.js"></script>
<script type="text/javascript" src="../plugin/jquery.min.js"></script>
<script type="text/javascript" src="../codebase/GooFunc.js"></script>
<script type="text/javascript" src="../plugin/json2.js"></script>
<link rel="stylesheet" type="text/css" href="default.css"/>
<script type="text/javascript" src="../codebase/GooFlow.js"></script>
<script type="text/javascript" src="../codebase/GooFlow.color.js"></script>
<script type="text/javascript">
var property={
width:1072,
height:600,
toolBtns:["start round","end round","task round","node","chat","state","plug","join","fork","complex mix"],
haveHead:true,
headBtns:["new","open","save","undo","redo","reload"],//如果haveHead=true,则定义HEAD区的按钮
haveTool:true,
haveGroup:true,
useOperStack:true
};
var remark={
cursor:"选择指针",
direct:"结点连线",
start:"入口结点",
"end":"结束结点",
"task":"任务结点",
node:"自动结点",
chat:"决策结点",
state:"状态结点",
plug:"附加插件",
fork:"分支结点",
"join":"联合结点",
"complex mix":"复合结点",
group:"组织划分框编辑开关"
};
var demo;
$(document).ready(function(){
demo=$.createGooFlow($("#demo"),property);
demo.setNodeRemarks(remark);
demo.onItemDel=function(id,type){
if(confirm("确定要删除该单元吗?")){
this.blurItem();
return true;
}else{
return false;
}
}
demo.loadData(jsondata);
demo.onItemFocus=function(id,model){
console.info(this.$nodeData);
$("#ele_model").val(model);
$("#ele_id").val(id);
if(model=="line"){
obj=this.$lineData[id];
$("#ele_type").val(obj.M);
$("#ele_left").val("");
$("#ele_top").val("");
$("#ele_width").val("");
$("#ele_height").val("");
$("#ele_from").val(obj.from);
$("#ele_to").val(obj.to);
$("#ele_data").val(obj.data);
}else if(model=="node"){
obj=this.$nodeData[id];
$("#ele_type").val(obj.type);
$("#ele_left").val(obj.left);
$("#ele_top").val(obj.top);
$("#ele_width").val(obj.width);
$("#ele_height").val(obj.height);
$("#ele_from").val("");
$("#ele_to").val("");
$("#ele_data").val(obj.data);
}
$("#ele_name").val(obj.name);
return true;
};
demo.onItemBlur=function(id,model){
document.getElementById("propertyForm").reset();
return true;
};
});
var out;
function Export(){
document.getElementById("result").value=JSON.stringify(demo.exportData());
} function backConChoose(focusId) { var focusNode = demo.getItemInfo(focusId, "node");
focusNode.data = $("#ele_data").val(); document.getElementById("result").value=JSON.stringify(demo.exportData());
} </script>
</head>
<body style="background:#EEEEEE">
<div id="demo" style="margin:5px;float:left"></div>
<form class="myForm" id="propertyForm">
<div class="form_title">属性设置</div>
<div class="form_content">
<table>
<tr><td class="th">Id:</td><td><input type="text" style="width:120px" id="ele_id"/></td></tr>
<tr><td class="th">Name:</td><td><input type="text" style="width:120px" id="ele_name"/></td></tr>
<tr><td class="th">Type:</td><td><input type="text" style="width:120px" id="ele_type"/></td></tr>
<tr><td class="th">Model:</td><td><input type="text" style="width:120px" id="ele_model"/></td></tr>
<tr><td class="th">Left-r:</td><td><input type="text" style="width:120px" id="ele_left"/></td></tr>
<tr><td class="th">Top-r:</td><td><input type="text" style="width:120px" id="ele_top"/></td></tr>
<tr><td class="th">Width:</td><td><input type="text" style="width:120px" id="ele_width"/></td></tr>
<tr><td class="th">Height:</td><td><input type="text" style="width:120px" id="ele_height"/></td></tr>
<tr><td class="th">From:</td><td><input type="text" style="width:120px" id="ele_from"/></td></tr>
<tr><td class="th">To:</td><td><input type="text" style="width:120px" id="ele_to"/></td></tr>
<tr><td class="th">Data:</td><td><input type="text" style="width:120px" id="ele_data"/></td></tr>
</table>
</div>
<div class="form_btn_div">
<input type="reset" value="重置"/>
<input type="button" value="确定" onclick="backConChoose(demo.$focus)"/>
</div>
</form>
<div style="clear:both">
<input id="submit" type="button" value='导出结果' onclick="Export()"/>
<textarea id="result" row="6"></textarea>
</div>
</body>
</html>
其特点:
1、跨浏览器,可兼容IE7--IE11, FireFox, Chrome, Opera等几大内核的浏览器,且不需要浏览器再加装任何控件。 (IE7-IE8时,使用VML;IE9以上,FF,OPERA,CHROME,SAFARI上使用SVG)
2、 多系统兼容性、可移植性:由于只包括前台UI,因此二次开发者可很方便将本插件用在任何一种需要流程图的B/S系统应用上,流程图的详细实现逻辑完全交于后台程序开发者自己实现;对于后台,只要能返回/接收能被本插件解析的JSON格式数据即可.所以本插件可用于不同的服务器语言建立的后台上.
3、跨领域:流程图设计器不止用在电信领域,在其它需要IT进行技术支持的领域中都有重大作用.
以下从纯技术实现层面具体描述:
1、 页面顶部栏、左边侧边栏均可自定义;
2、当左边的侧边栏设为不显示时,为只读状态,此时的视图区可当作是一个查看器而非编辑器。
3、侧边工具栏除了基本和一些流程节点按钮外,还自定义新的节点按钮,自定义节点都可以有自有的图标、类型名称,定义后在使用可可在工作区内增加这些自定义节点。
4、顶部栏可显示流程图数据组的标题,也可提供一些常用操作按钮。
5、 顶部栏的按钮,除了撤销、重做按钮外,其余按钮均可自定义点击事件。
6、 可画直线、折线;折线还可以左右/上下移动其中段。
7、 具有区域划分功能,能让用户更直观地了解哪些节点及其相互间的转换,是属于何种自定义区域内的。
8、 具有标注功能,用橙红色标注某个结点或者转换线,一般用在展示流程进度时。
9、 能直接双击结点、连线、分组区域中的文字进行编辑
10、 在对结点、连线、分组区域的各种编辑操作,如新增/删除/修改名称/重设样式或大小/移动/标注时,均可捕捉到事件,并触发自定义事件,如果自定义事件执行的方法返回FALSE,则会阻止操作。
11、 具有操作事务序列控制功能,在工作区内的各种有效操作都能记录到一个栈中,然后可以进行撤销(undo())或重做(redo()),像典型的C/S软件一样。
gooflow 官网:https://gooflow.xyz/docs/index.html#methods
感谢博主:https://www.cnblogs.com/tangxf/p/4227639.html
https://files.cnblogs.com/files/itclw/GooFlow1.1.zip
gooflow学习笔记的更多相关文章
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
- HTML学习笔记
HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...
- DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记
今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...
随机推荐
- webstorm2016.3注册码,License server更新方式,webstorm2017.1版本可用
以前的webstorm和phpstorm的激活码和地址,今天打开的时候过期了 (your license has expored) 以前是用activation code的更新方式: 后来搜了下,换个 ...
- day72Django之ORM
Django框架之ORM(day72)一 ORM即Object Relational Mapping,全称对象关系映射. 1 不用写sql,不会sql的人也可以写程序 2 开发效率高 3 可能sql的 ...
- Python全栈开发记录_第六篇(生成器和迭代器)
说生成器之前先说一个列表生成式:[x for x in range(10)] ->[0,1,2....,9]这里x可以为函数(因为对python而言就是一个对象而已),range(10)也可 ...
- Android 开发 关于APP无法安装到Android模拟器上的问题
我们在创建一个app后,打算安装到Android模拟器上.可能会出现无法安装,或者提示已经安装无法卸载的问题.这个时候需要添加兼容CPU. 选择 build.gradle 文件打开添加如下代码: an ...
- OO第一单元(求导)单元总结
OO第一单元(求导)单元总结 这是我们oo课程的第一个单元,也是意在让我们接触了解掌握oo思想的一个单元,这个单元的作业以求导为主题,从一开始的加减多项式求导再到最后的嵌套多项式求导,难度逐渐提高,编 ...
- STS临时授权访问OSS
STS临时授权访问OSS OSS 可以通过阿里云 STS (Security Token Service) 进行临时授权访问.阿里云 STS 是为云计算用户提供临时访问令牌的Web服务.通过 STS, ...
- 从 注解和继承 到 JAXB中的注意事项
从 注解和继承 到 JAXB中的注意事项 注解在继承中的行为 如果一个父类添加了一个注解,子类是否能取到这个注解呢?如下 package inheritance; import java.lang.a ...
- linux中ip命令使用介绍
ifconfig是CentOS 5.6系统中经典的配置网络的命令,但是到了CentOS 7的时候,命令就变成了ip了,我们也要学习,我们也要与时俱进.跟随高手一起学习 查看链路 ip link sho ...
- 深入理解Java虚拟机读书笔记9----线程完全与锁优化
九 线程完全与锁优化 1 Java语言中的线程完全 ---线程安全:当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用 ...
- anu小程序快速入门
众所周知,微信推出小程序以来,可谓火遍大江南北,就像当前互联网兴起时,大家忙着抢域名与开私人博客一样.小程序之所以这么火,是因为微信拥有庞大的用户量,并且腾讯帮你搞定后台问题及众多功能问题(如分享,支 ...