#javascript #jquery #orgchart
Вопрос:
Я создаю приведенную ниже организационную диаграмму с помощью jQuery Orgchart.js. Эта библиотека не имеет функции перетаскивания, поэтому я пытаюсь написать ее самостоятельно . Ниже приведена фотография Orgchart
введите описание изображения здесь
в приведенном ниже html — файле я написал функцию-Проблема , с которой я сталкиваюсь, заключается в том, что я могу перетаскивать, но вместо создания нового узла он меняет узел. Есть идеи, как исправить эту проблему . Внутри библиотеки, я думаю this.render = function(opts){}
, создается новый узел. Как создать новый узел при перетаскивании узла, кроме 1 — го основного узла.
Дошло до точки , когда я могу перетаскивать, но в пользовательском интерфейсе это выглядит так, как показано ниже
введите описание изображения здесь
<!DOCTYPE html>
<html>
<head>
<title>jQuery orgChart Plugin Demo</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="http://www.jqueryscript.net/css/jquerysctipttop.css" rel="stylesheet" type="text/css">
<link href="jquery.orgchart.css" media="all" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="http://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"/>
<style>
#draggable { width: 100px; height: 100px; padding: 0.5em; float: left; margin: 10px 10px 10px 0; }
#droppable { width: 150px; height: 150px; padding: 0.5em; float: left; margin: 10px; }
</style>
<style type="text/css">
#orgChart{
width: auto;
height: auto;
}
#orgChartContainer{
width: 1000px;
height: 500px;
overflow: auto;
background: #eeeeee;
}
</style>
</head>
<body>
<div id="orgChartContainer">
<div id="orgChart"></div>
</div>
<div id="consoleOutput">
</div>
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js" type="text/javascript"></script>
<script type="text/javascript" src="jquery.orgchart.js"></script>
<script type="text/javascript">
var testData = [
{id: 1, name: 'My Organization', parent: 0},
{id: 2, name: 'CEO Office', parent: 1},
{id: 3, name: 'Division 1', parent: 1},
{id: 4, name: 'Division 2', parent: 1},
{id: 6, name: 'Division 3', parent: 1},
{id: 7, name: 'Division 4', parent: 1},
{id: 8, name: 'Division 5', parent: 1},
{id: 5, name: 'Sub Division', parent: 3},
];
$(function(){
org_chart = $('#orgChart').orgChart({
data: testData,
showControls: true,
allowEdit: true,
onAddNode: function(node){
log('Created new node on node ' node.data.id);
org_chart.newNode(node.data.id);
},
onDeleteNode: function(node){
log('Deleted node ' node.data.id);
org_chart.deleteNode(node.data.id);
},
onClickNode: function(node){
log('Clicked node ' node.data.id);
}
});
$( ".draggable" ).draggable({revert: true, snap: 'inner'});
$( ".droppable" ).droppable({
drop: function( event, ui ) {
var draggable = ui.draggable;
var id = draggable.attr("node-id");
var droppable = ui.droppable;
var droppableId = $(this).attr("node-id");
$(this).append(ui.draggable);
}
});
});
// just for example purpose
function log(text){
$('#consoleOutput').append('<p>' text '</p>')
}
</script>
</body>
</html>