亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

jsPlumb插件做一個模仿viso的可拖拉流程圖

2019-11-17 01:37:51
字體:
來源:轉載
供稿:網友

jsplumb插件做一個模仿viso的可拖拉流程圖

前言

這是我第一次寫博客,心情還是有點小小的激動!這次主要分享的是用jsPlumb,做一個可以給用戶自定義拖拉的流程圖,并且可以序列化保存在服務器端。

我在這次的實現上面做得比較粗糙,還有分享我在做jsPlumb流程圖遇到的一些問題。

準備工作

制作流程圖用到的相關的腳本:

1 <script src="<%= ResolveUrl("~/resources/jquery/jquery-1.11.1.min.js")%>" type="text/javascript"></script>2     <script src="<%= ResolveUrl("~/resources/jquery-ui-1.10.4/js/jquery-ui-1.10.4.min.js") %>" type="text/Javascript"></script>3     <script src="<%= ResolveUrl("~/resources/jquery-plugins/jquery.jsPlumb-1.6.2-min.js") %>" type="text/javascript"></script>

jsPlumb-1.6.2-min.js在官網上下載,這里用得是最新版本。jquery-1.11.1.min.js等腳本百度上都能找到,這里就不多說了。

CSS樣式在官網里也可以搜到,這里我就貼出來。

 1     .node { 2             box-shadow: 2px 2px 19px #aaa; 3             -o-box-shadow: 2px 2px 19px #aaa; 4             -webkit-box-shadow: 2px 2px 19px #aaa; 5             -moz-box-shadow: 2px 2px 19px #aaa; 6             -moz-border-radius: 0.5em; 7             border-radius: 0.5em; 8             opacity: 0.8; 9             filter: alpha(opacity=80);10             border: 1px solid #346789;11             width: 150px;12             /*line-height: 40px;*/13             text-align: center;14             z-index: 20;15             position: absolute;16             background-color: #eeeeef;17             color: black;18             padding: 10px;19             font-size: 9pt;20             cursor: pointer;21             height: 50px;22             line-height: 50px;23         }24         .radius {25             border-radius: 25em;26         }27         .node:hover {28             box-shadow: 2px 2px 19px #444;29             -o-box-shadow: 2px 2px 19px #444;30             -webkit-box-shadow: 2px 2px 19px #444;31             -moz-box-shadow: 2px 2px 19px #444;32             opacity: 0.8;33             filter: alpha(opacity=80);34         }
View Code

這里還有提到一點,jsPlumb官網上的api全是英文的,博主我從小英文就不好,所以看里面的doc非常費勁,一般都是一邊開著金山翻譯

一邊看著文檔,英語好的略過這段。

正文

言歸正傳,現在開始我們的jsPlumb流程圖制作,下面先附上流程圖。

功能

根據客戶的要求,我們要完成的功能點有以下幾點:

1.支持將左邊的div層復制拖拉到右邊中間的層,并且左邊同一個div拖拉沒有次數限制,如果只能拖拉一次,做這個東西就沒有什么意義了。

2.拖拉到中間的div層可以拖動,拖動不能超過中間div的邊框。

3.拖動到中間的層,四周能有4個endpoint點,可供客戶連線。

4.能支持刪除多余的div的功能。

5.支持刪除連接線。

6.能雙擊修改流程圖的文字。

7.能序列化保存流程圖。

操作

下面我們根據功能開始制作:

1.拖拉jsPlumb其實是提供draggable方法,和droppable方法官網里有介紹, 但是我這里用得是jquery里的draggable()和droppable()。

 1 <div id="left"> 2             <div class="node radius" id="node1">開始</div> 3             <div class="node" id="node2">流程</div> 4             <div class="node" id="node3">判斷</div> 5             <div class="node radius" id="node4">結束</div> 6         </div>      7          8         <div id="right"> 9             <p>拖拉到此區域</p>10         </div>11         <div id="save">12             <input type="button" value="保存" onclick="save()" />13         </div>
View Code
1     $("#left").children().draggable({2                 helper: "clone",3                 scope: "ss",4             });

helper:"clone"表示復制,scope:"ss"是一個標識為了判斷是否可以放置,主要用于droppable方法里面也設置這個標識來判斷拖放到的地方,

除非兩個都不寫scope,可以隨便拖放,但是會有一個問題,每次我從左邊拖東西到右邊,我再拖到的時候就會有div拖到不了,所以最好設置

scope:"http://里面的值隨便,只是一個標識"。

下面是完整的拖放:

 1 $("#left").children().draggable({ 2                 helper: "clone", 3                 scope: "ss", 4             }); 5             $("#right").droppable({ 6                 scope: "ss", 7                 drop: function (event, ui) { 8                     var left = parseInt(ui.offset.left - $(this).offset().left); 9                     var top = parseInt(ui.offset.top - $(this).offset().top);10                     var name = ui.draggable[0].id;11                     switch (name) {12                     case "node1":13                         i++;14                         var id = "state_start" + i;15                         $(this).append('<div class="node" style="border-radius: 25em"  id="' + id + '" >' + $(ui.helper).html() + '</div>');16                         $("#" + id).css("left", left).css("top", top);17                         jsPlumb.addEndpoint(id, { anchors: "TopCenter" }, hollowCircle);18                         jsPlumb.addEndpoint(id, { anchors: "RightMiddle" }, hollowCircle);19                         jsPlumb.addEndpoint(id, { anchors: "BottomCenter" }, hollowCircle);20                         jsPlumb.addEndpoint(id, { anchors: "LeftMiddle" }, hollowCircle);21                         jsPlumb.draggable(id);22                         $("#" + id).draggable({ containment: "parent" });23                         doubleclick("#" + id);24                         break;25                     case "node2":26                         i++;27                         id = "state_flow" + i;28                         $(this).append("<div class='node' id='" + id + "'>" + $(ui.helper).html() + "</div>");29                         $("#" + id).css("left", left).css("top", top);30                         jsPlumb.addEndpoint(id, { anchors: "TopCenter" }, hollowCircle);31                         jsPlumb.addEndpoint(id, { anchors: "RightMiddle" }, hollowCircle);32                         jsPlumb.addEndpoint(id, { anchors: "BottomCenter" }, hollowCircle);33                         jsPlumb.addEndpoint(id, { anchors: "LeftMiddle" }, hollowCircle);34                         jsPlumb.addEndpoint(id, hollowCircle);35                         jsPlumb.draggable(id);36                         $("#" + id).draggable({ containment: "parent" });37                         doubleclick("#" + id);38                         break;39                     case "node3":40                         i++;41                         id = "state_decide" + i;42                         $(this).append("<div class='node' id='" + id + "'>" + $(ui.helper).html() + "</div>");43                         $("#" + id).css("left", left).css("top", top);44                         jsPlumb.addEndpoint(id, { anchors: "TopCenter" }, hollowCircle);45                         jsPlumb.addEndpoint(id, { anchors: "RightMiddle" }, hollowCircle);46                         jsPlumb.addEndpoint(id, { anchors: "BottomCenter" }, hollowCircle);47                         jsPlumb.addEndpoint(id, { anchors: "LeftMiddle" }, hollowCircle);48                         jsPlumb.addEndpoint(id, hollowCircle);49                         jsPlumb.draggable(id);50                         $("#" + id).draggable({ containment: "parent" });51                         doubleclick("#" + id);52                         break;53                     case "node4":54                         i++;55                         id = "state_end" + i;56                         $(this).
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久九九亚洲综合| 国产精品日日做人人爱| 亚洲欧美日韩中文视频| 国产一区二区三区高清在线观看| 国产一区二区动漫| 欧美亚洲一区在线| 日韩综合视频在线观看| 国产精品久久久久久久久久尿| 欧美老肥婆性猛交视频| 欧美激情精品久久久久| 亚洲国产成人91精品| 中文字幕精品久久| 精品国产一区二区三区久久狼黑人| 亚洲色图日韩av| 91在线视频精品| 91美女高潮出水| 欧美一区二粉嫩精品国产一线天| 中文字幕日韩精品在线观看| 91精品视频免费| 欧美激情视频三区| 亚洲欧美日韩精品久久| 伊人久久大香线蕉av一区二区| 97久久久免费福利网址| 上原亚衣av一区二区三区| 久久精品福利视频| 亚洲精品永久免费| 主播福利视频一区| 久久精品国产69国产精品亚洲| 影音先锋欧美在线资源| 不卡在线观看电视剧完整版| 精品国产欧美一区二区五十路| 高清在线视频日韩欧美| 夜夜狂射影院欧美极品| 亚洲夜晚福利在线观看| 红桃av永久久久| 日韩精品在线影院| 亚洲欧洲国产精品| 亚洲iv一区二区三区| 欧美日韩人人澡狠狠躁视频| 欧美日韩在线第一页| 性欧美在线看片a免费观看| 国外日韩电影在线观看| 亚洲精品99999| 欧美激情一区二区三区在线视频观看| 国产成人高潮免费观看精品| 精品亚洲一区二区三区在线观看| 色狠狠av一区二区三区香蕉蜜桃| 亚洲欧美日韩国产中文专区| 亚洲精品一二区| 国模gogo一区二区大胆私拍| 久久艹在线视频| 成人写真视频福利网| 久久综合伊人77777尤物| 国产精品18久久久久久首页狼| 综合激情国产一区| 高清一区二区三区日本久| 亚洲国产精品女人久久久| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美最猛性xxxx| 国产精品视频yy9099| 欧美视频中文字幕在线| 精品国产拍在线观看| 欧美性色视频在线| 91色在线观看| 国内精品久久久久伊人av| 欧美视频第一页| 精品成人在线视频| 亚洲成人网av| 精品亚洲一区二区三区在线观看| 狠狠综合久久av一区二区小说| 久久精品国产96久久久香蕉| 亚洲美女av在线| 亚洲综合自拍一区| 日韩精品在线免费| 精品视频一区在线视频| 国产在线98福利播放视频| 国产精品久久久久久久久影视| 国产91精品黑色丝袜高跟鞋| 亚洲欧美日韩高清| 久久久精品美女| 日韩电影免费观看在线| 国产精品久久久久久久久久东京| 久久影视免费观看| 欧美日韩在线观看视频小说| 亚洲精品自拍视频| 国产在线日韩在线| 久久久久久久一区二区三区| 成人性生交大片免费观看嘿嘿视频| 亚洲精品一区二三区不卡| 国产精品第8页| 亚洲精品黄网在线观看| 亚洲尤物视频网| 国产精品一区久久久| 国产精品观看在线亚洲人成网| 亚洲一区二区三区在线视频| 精品国产31久久久久久| 欧美猛交ⅹxxx乱大交视频| 丝袜一区二区三区| 一夜七次郎国产精品亚洲| 日韩中文字幕av| 亚洲欧美日韩精品久久奇米色影视| 国产香蕉97碰碰久久人人| 欧美刺激性大交免费视频| 日韩精品亚洲视频| 亚洲人成电影网站色| 亚洲色图狂野欧美| 欧美亚洲日本网站| 亚洲xxx自由成熟| 欧美中文字幕在线视频| 欧美特级www| 最新中文字幕亚洲| 国产精品88a∨| 欧美日韩裸体免费视频| 国产精品自拍小视频| 亚洲r级在线观看| 久久精品免费电影| yellow中文字幕久久| 久久中文精品视频| 亚洲一区二区国产| 国产精品久久精品| 一本色道久久综合狠狠躁篇怎么玩| 欧美极品少妇与黑人| 精品精品国产国产自在线| 最近2019年中文视频免费在线观看| 国产丝袜一区视频在线观看| 亚洲最大的av网站| 91久久精品国产91久久性色| 国产mv免费观看入口亚洲| 国产精品亚洲精品| 国产在线观看精品一区二区三区| 亚洲激情 国产| 国产精品自拍视频| 亚洲免费视频在线观看| 亚洲自拍另类欧美丝袜| 欧美国产日韩视频| 91精品国产乱码久久久久久蜜臀| 久久人人97超碰精品888| 国产精品成人国产乱一区| 蜜月aⅴ免费一区二区三区| 久久精品视频99| 欧美激情视频一区二区| 国产91精品不卡视频| 亚洲色图av在线| 亚洲三级免费看| 麻豆国产精品va在线观看不卡| 亚洲国产天堂久久国产91| 国产精品视频区1| 久久国产精品影视| 欧美巨大黑人极品精男| 国产一区香蕉久久| 欧美成人一区在线| 色吧影院999| 91国内在线视频| www.久久久久久.com| 欧美在线观看网址综合| 欧美区在线播放| 欧美黑人xxxⅹ高潮交| 欧美激情精品久久久久久大尺度| 国产精品 欧美在线| 国产热re99久久6国产精品| 91麻豆国产语对白在线观看| 亚洲黄色免费三级| 亚洲欧美综合区自拍另类| 欧美乱大交xxxxx|