Возможно ли иметь пользовательские коннекторы в AlloyUI

Новичок в AlloyUI, и я думаю, у меня проблемы с чем-то очень простым в структуре YUI. Я использую AlloyUI 3.0.1, который по-прежнему использует YUI и AngularJS.

Вопрос: есть ли способ создавать настраиваемые соединители для каждого пользовательского узла в AlloyUI?

Цель состоит в том, чтобы иметь возможность иметь разные настраиваемые соединители (с набором отдельных настраиваемых атрибутов) для каждого настраиваемого узла. Например, скажем, у меня есть 2 пользовательских узла A и B, и я хочу, чтобы узлы A-A были подключены с использованием одного типа пользовательского соединителя, а B-B - с использованием другого. Это возможно?

Я могу создавать пользовательские узлы с пользовательскими свойствами и т. д., например:

  service.getScriptContainer = function(Y) {
    var scriptContainer = Y.Component.create({
        NAME: 'diagram-node',
        ATTRS: {
          //..custom properies,
            connectors : {
                valueFn : function(){
                    return ConnectorFactory.getScriptConnector(Y);
                }
            }
        },
        EXTENDS: Y.DiagramNodeTask,
        prototype: {
          .....
}

где ConnectorFactory — это фабрика AngularJS, которая возвращает объект типа: «A.Connector».

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

Uncaught TypeError: undefined is not a function at line 920: aui-diagram-node.js

который:

 return instance.get('connectors').has(transition.uid);

.. и здесь я теряюсь.

Могу ли я расширить «A.connector» и использовать его для каждого пользовательского узла? Если да, то как?

Любая помощь приветствуется!

Спасибо.


person trishulpani    schedule 19.03.2015    source источник


Ответы (2)


Я думаю, что у меня есть по крайней мере направление, которое вы должны исследовать (если не ответ):

вы можете (пере) написать свой собственный aui-diagram-builder-connector.js и "заменить/перехватить старый" через applyConfig - примерно так:

YUI().use('aui-diagram-builder', function(Y) {

    /* your code */

}).applyConfig({ /* her we "hijack" default aui-diagram-builder-connector file  */
       modules: {
             "aui-diagram-builder-connector": {
                    fullpath: '/js/aui-diagram-builder-connector-mine.js' /* use relative path and minified version if possible */
             }
       }
});

Это загрузит новый файл для встроенного требуемого модуля, поэтому у вас будет максимальная свобода, сохраняя при этом старый файл нетронутым :)

Этот спас меня однажды, и я надеюсь, что он спасет кого-то еще :D

Целый день потратил на поиск :(

person nettutvikler    schedule 14.07.2015
comment
Спасибо. Думаю, это сработало бы, если бы я участвовал в этом проекте. Я больше не участвую в этом проекте, но я проголосую - может кому-то еще поможет! - person trishulpani; 13.08.2015

Я проверил это, но cpied /js/aui-diagram-builder-connector-mine.js никогда не загружается и не используется в DiagramBuilder.

с уважением

person Michiel    schedule 17.12.2018