Tôi đang cố gắng tìm ra cách để thêm neo điểm cuối động vào vùng chứa jsPlumb.jsPlumb - neo điểm cuối động trên mỗi bên
Tôi muốn có điểm cuối nguồn ở phía bên trái và điểm cuối mục tiêu chỉ ở bên phải.
Vấn đề là, tôi đã không thể tìm thấy bất kỳ cách nào để làm như vậy, mà không cần đến một số hack, như tôi đang làm bây giờ.
jsTrụ hỗ trợ Continuous Anchors, nhưng vị trí của neo riêng lẻ sẽ được tính toán lại dựa trên hướng giữa các đầu nối và số lượng neo liên tục. Điều này có nghĩa là cả hai điểm cuối nguồn và đích đều có thể chia sẻ cùng một phía của vùng chứa, đây là điều tôi muốn tránh.
Đây là một jsFiddler code I came up with
Đây là một phần của mã Tôi đang sử dụng hack và tính toán lại neo vị trí bản thân mình (khi Add button được click), với một số kết quả buggy :(
function fixEndpoints(endpoints) {
//there are 2 types - input and output
var inputAr = $.grep(endpoints, function (elementOfArray, indexInArray) {
return elementOfArray.isSource; //input
});
var outputAr = $.grep(endpoints, function (elementOfArray, indexInArray) {
return elementOfArray.isTarget; //output
});
calculateEndpoint(inputAr, true);
calculateEndpoint(outputAr, false);
}
function calculateEndpoint(endpointArray, isInput) {
//multiplyer
var mult = 1/endpointArray.length;
for (var i = 0; i < endpointArray.length; i++) {
if (isInput) {
endpointArray[i].anchor.x = 1;
endpointArray[i].anchor.y = mult * i;//, 1, 0] };
}
else {
endpointArray[i].anchor.x = 0;
endpointArray[i].anchor.y = mult * i;//, -1, 0] };
}
}
}
//Add additional anchor
$(".button_add").live("click", function() {
var parentnode = $(this)[0].parentNode.parentNode;
jsPlumb.addEndpoint(
parentnode,
anEndpointSource
);
jsPlumb.addEndpoint(
parentnode,
anEndpointDestination
);
//get list of current endpoints
var endpoints = jsPlumb.getEndpoints(parentnode);
//fix endpoints
fixEndpoints(endpoints);
jsPlumb.recalculateOffsets();
jsPlumb.repaint(parentnode);
});
Như bạn có thể thấy trên hình bên trên, bên trái chỉ có điểm cuối nguồn (Dot) và bên phải (Hộp) chỉ nhắm mục tiêu điểm cuối, khi điểm cuối mới được thêm vào, neo được tính toán lại dựa trên số lượng neo trên e bên.
Tác phẩm này vẫn còn lỗi: vị trí chỉ được cập nhật khi tôi di chuyển vùng chứa và kết nối giữa các vùng chứa cũng không chính xác.
Những gì tôi muốn làm, là một cách để cho nó hoạt động và kết nối các mặt hàng một cách chính xác (tốt nhất là sử dụng mã jsPlumb đúng mà không cần đến hacks)
thực hiện rất tốt :) Có cách nào để "xóa" nút (đã chọn) không? Tôi tr để tạo ra một trình soạn thảo máy nhà nước w/jsplumb nhưng chỉ đấu tranh w/tự động thêm/xóa các nút và các kết nối. Một jsfiddle sẽ rất tuyệt vời :) – Dominik