jsPlumb: как делать условные соединения - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь создать соединения между узлами на основе, например, правил: enter image description here

  1. Конечная точка «API-запрос» не может подключиться ни к каким другим узлам, кроме « Initiate Call ».
  2. Конечная точка« Failed »не может подключиться к« Play Audio »И так далее ...

и вот мой код определения конечной точки:

let addEndpoints = function(toId, sourceAnchors, targetAnchors) {
    console.log(toId, sourceAnchors, targetAnchors);
    for (var i = 0; i < sourceAnchors.length; i++) {
      var sourceUUID = toId + sourceAnchors[i];
      instance.addEndpoint(toId, sourceEndpoint, {
        anchor: sourceAnchors[i],
        uuid: sourceUUID
      });
    }
    for (var j = 0; j < targetAnchors.length; j++) {
      var targetUUID = toId + targetAnchors[j];
      instance.addEndpoint(toId, targetEndpoint, {
        anchor: targetAnchors[j],
        // anchor: 'Continuous',
        uuid: targetUUID
      });
    }
  };

кто может помочь?

Ответы [ 2 ]

1 голос
/ 21 июня 2020

После большого количества поисков я понял, как получить доступ к uuids конечных точек, но, как указано выше, его нужно вызывать в beforeDrop перехватчике следующим образом:

    instance.bind("beforeDrop", function(info) {
      ...
    });

Это событие запускается, когда новое или существующее соединение было разорвано, поэтому теперь info содержит то, к чему нам нужно получить доступ, для получения исходной конечной точки команда будет такой: info.connection.endpoints[0].getUuid() и для получения целевой конечной точки: info.dropEndpoint.getUuid().

Теперь полное состояние будет примерно таким:

 if (info.connection.endpoints[0].getUuid().includes("start") &&
  info.dropEndpoint.getUuid().includes("playaudio")) {
 instance.deleteConnection(connInfo.connection)
  } else {
   init(info.connection);
   }
1 голос
/ 17 июня 2020

Попробуйте использовать для этого перехватчик beforeDrop:

https://docs.jsplumbtoolkit.com/community/current/articles/events-community.html#evt -beforedrop

Вы можете увидеть его в использовании (не совсем так, как вы хотите использовать это выскакивает подтверждение в этой демонстрации) здесь:

https://jsplumbtoolkit.com/community/demonstration/draggableConnectors

Попробуйте перетащить одну из синих конечных точек на одну из других синих конечных точек.

...