前端jqury腳本實現流程設計,兼容目前主流瀏覽器 javascript
gooflow 默認屬性節點只有:id,name,top,left,width,height,type (各個版本不一樣,屬性節點有所增長),可是這些都是和流程設計器自己有關的 css
實現自定義屬性字段:html
一、在節點數據對象上加上本身的定義屬性字段(我自定義了一個data 屬性字段)前端
二、修改的時候把屬性字段填充到對應的對象屬性字段中java
var focusLine = demo.getItemInfo(focusId, "node");
focusLine.data = $("#ele_data").val();node
<!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>
其特色:jquery
一、跨瀏覽器,可兼容IE7--IE11, FireFox, Chrome, Opera等幾大內核的瀏覽器,且不須要瀏覽器再加裝任何控件。 (IE7-IE8時,使用VML;IE9以上,FF,OPERA,CHROME,SAFARI上使用SVG)
二、 多系統兼容性、可移植性:因爲只包括前臺UI,所以二次開發者可很方便將本插件用在任何一種須要流程圖的B/S系統應用上,流程圖的詳細實現邏輯徹底交於後臺程序開發者本身實現;對於後臺,只要能返回/接收能被本插件解析的JSON格式數據便可.因此本插件可用於不一樣的服務器語言創建的後臺上.
三、跨領域:流程圖設計器不止用在電信領域,在其它須要IT進行技術支持的領域中都有重大做用.
如下從純技術實現層面具體描述:
一、 頁面頂部欄、左邊側邊欄都可自定義;
二、當左邊的側邊欄設爲不顯示時,爲只讀狀態,此時的視圖區可看成是一個查看器而非編輯器。
三、側邊工具欄除了基本和一些流程節點按鈕外,還自定義新的節點按鈕,自定義節點均可以有自有的圖標、類型名稱,定義後在使用可可在工做區內增長這些自定義節點。
四、頂部欄可顯示流程圖數據組的標題,也可提供一些經常使用操做按鈕。
五、 頂部欄的按鈕,除了撤銷、重作按鈕外,其他按鈕都可自定義點擊事件。
六、 可畫直線、折線;折線還能夠左右/上下移動其中段。
七、 具備區域劃分功能,能讓用戶更直觀地瞭解哪些節點及其相互間的轉換,是屬於何種自定義區域內的。
八、 具備標註功能,用橙紅色標註某個結點或者轉換線,通常用在展現流程進度時。
九、 能直接雙擊結點、連線、分組區域中的文字進行編輯
十、 在對結點、連線、分組區域的各類編輯操做,如新增/刪除/修更名稱/重設樣式或大小/移動/標註時,都可捕捉到事件,並觸發自定義事件,若是自定義事件執行的方法返回FALSE,則會阻止操做。
十一、 具備操做事務序列控制功能,在工做區內的各類有效操做都能記錄到一個棧中,而後能夠進行撤銷(undo())或重作(redo()),像典型的C/S軟件同樣。 json
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