Comment utiliser Layui pour développer un concepteur d'organigrammes prenant en charge la possibilité de modification
Introduction :
Avec le développement rapide de l'informatisation, les organigrammes sont de plus en plus utilisés dans diverses industries. Cependant, la sélection d'éditeurs d'organigrammes actuellement sur le marché est limitée et la plupart sont payants. Cet article explique comment utiliser le framework Layui pour développer un concepteur d'organigrammes modifiables et fournit des exemples de code spécifiques.
1. Introduction à Layui :
Layui est un framework front-end simple et facile à utiliser qui fournit une multitude de composants et d'interfaces pour créer rapidement une interface Web. Il se caractérise par sa légèreté, sa modularité, sa réactivité, etc., ce qui est très adapté au développement rapide d'applications Web simples.
2. Idées de conception :
L'exemple de code est le suivant :
<div class="toolbar"> <button class="layui-btn layui-btn-primary" id="start">开始节点</button> <button class="layui-btn layui-btn-primary" id="process">流程节点</button> <button class="layui-btn layui-btn-primary" id="decision">决策节点</button> </div> <div id="canvas"></div>
L'exemple de code est le suivant :
layui.use(['jquery', 'layer'], function(){ var $ = layui.jquery; var layer = layui.layer; // 初始化工具栏按钮 $('#start').click(function(){ // 创建开始节点元素并在画布中显示 ... }); $('#process').click(function(){ // 创建流程节点元素并在画布中显示 ... }); $('#decision').click(function(){ // 创建决策节点元素并在画布中显示 ... }); // 初始化画布 var canvas = $('#canvas'); jsPlumb.ready(function(){ jsPlumb.setContainer(canvas); ... }); });
makeSource
pour le rendre déplaçable et la méthode makeTarget
pour le rendre connectable. makeSource
方法使其可拖动,调用makeTarget
方法使其可连接。示例代码如下:
// 创建开始节点元素 var start = $('<div class="node start">开始</div>'); canvas.append(start); jsPlumb.makeSource(start, { filter: '.node', anchor: 'Continuous', connectorStyle: { strokeStyle: '#999', lineWidth: 2 }, connectionType: 'basic', extract:{ "action":"the-action" }, maxConnections: 1, onMaxConnections: function(info, e) { layer.msg("不能再添加连接了!", {time: 1000}); } }).initDraggable(); // 创建流程节点元素 var process = $('<div class="node process">流程节点</div>'); canvas.append(process); jsPlumb.makeSource(process, { filter: '.node', anchor: 'Continuous', connectorStyle: { strokeStyle: '#999', lineWidth: 2 }, connectionType: 'basic', extract:{ "action":"the-action" }, maxConnections: -1, onMaxConnections: function(info, e) { layer.msg("不能再添加连接了!", {time: 1000}); } }).initDraggable(); // 创建决策节点元素 var decision = $('<div class="node decision">决策节点</div>') canvas.append(decision); jsPlumb.makeSource(decision, { filter: '.node', anchor: 'Continuous', connectorStyle: { strokeStyle: '#999', lineWidth: 2 }, connectionType: 'basic', extract:{ "action":"the-action" }, maxConnections: -1, onMaxConnections: function(info, e) { layer.msg("不能再添加连接了!", {time: 1000}); } }).initDraggable();
connect
canvas.on('contextmenu', '.node', function(e){ e.preventDefault(); var node = $(this); var menu = $('<div class="menu"></div>'); // 获取所有可连接的节点 var targets = canvas.find('.node').not(node); // 创建菜单项 targets.each(function(){ var target = $(this); var item = $('<div class="menu-item"></div>').text(target.text()); item.click(function(){ // 添加连接线 jsPlumb.connect({ source: node, target: target, ... // 连接线的样式和属性设置 }); menu.remove(); }); menu.append(item); }); // 显示菜单 menu.css({ top: e.pageY, left: e.pageX }); canvas.append(menu); });
En utilisant la méthode connect
du moteur jsPlumb, nous pouvons implémenter la connexion ligne entre les nœuds. Cliquez avec le bouton droit sur le nœud et un menu apparaîtra pour que l'utilisateur sélectionne le nœud cible auquel se connecter.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!