jsPlumb - dynamique de terminaison d'ancrage de chaque côté

Je suis en train d'essayer de trouver un moyen comment ajouter des ancres d'extrémité de manière dynamique à jsPlumb conteneur.

Je voudrais avoir une source d'extrémité sur le côté gauche et cible les ordinateurs d'extrémité sur le côté droit seulement.

Le problème, c'est que je n'étais pas en mesure de trouver un moyen de le faire, sans avoir recours à certains hacks, comme je le fais maintenant.

jsPlumb prend en charge Continue Ancres, mais la position de l'ancrage individuel sera recalculé en fonction de l'orientation entre les connecteurs et le nombre continue d'ancres. Cela signifie à la fois la source et la cible des points de terminaison peut être le partage d'un même côté du conteneur, c'est quelque chose que je voudrais éviter.

Ici est un jsFiddler code je suis venu avec

Voici une partie du code que j'utilise hack et recalculer les positions d'ancrage moi-même (lors de l'Ajout du bouton est cliqué), avec quelques buggy résultats 🙁

   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);
});

jsPlumb - dynamique de terminaison d'ancrage de chaque côté

Comme vous pouvez le voir sur l'image ci-dessus, de gauche est la seule source d'extrémité (Dot) et à droite (Encadré) ne cible que les points de terminaison, une fois le nouveau point de terminaison est ajouté, les ancres sont recalculées sur la base du nombre d'ancres sur un côté.

Cela fonctionne, mais encore buggé: la position est mise à jour seulement une fois que j'ai déplacer le conteneur et la connexion entre les conteneurs n'est pas correct ainsi.

Ce que j'aimerais avoir, c'est une façon pour elle de travailler et de se connecter correctement ces éléments (de préférence à l'utilisation correcte des jsPlumb code sans avoir recours à des hacks)

InformationsquelleAutor DMINATOR | 2013-03-04