Изменить редактор по умолчанию для узла в AlloYUI Diagram Builder

Мне нужно создать редактор диаграмм, поэтому я использую AlloYUI, я добавил пользовательский узел после ответа на этот вопрос.

Я успешно установил новые узлы и получил их значения через диаграмму Builder.toJSON().

То, что я пытаюсь сделать, это изменить виджет редактора по умолчанию для пользовательского атрибута моего пользовательского узла, я хотел бы изменить текстовое поле для виджета выбора даты, но моя цель - использовать любые другие элементы формы, такие как выберите или набор переключателей.

Играя с отладчиком javascript, включенным в WebStorm, я обнаружил, что поля по умолчанию имеют атрибут «редактор», где определен «textAreaCellEditor».

Атрибуты узла по умолчанию, как показано в отладчике WebStorm

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

Y.DiagramNodeCustom = Y.Component.create({
        NAME: 'diagram-node',

        ATTRS: {
          type: {
            value: 'custom'
          },
          custom_attr: {
            value: 'customAttr'
          }
        },
        EXTENDS: Y.DiagramNodeTask,

        prototype: {
          getPropertyModel: function () {
            var instance = this;

            var model = Y.DiagramNodeTask.superclass.getPropertyModel.apply(
                instance, arguments);

            model.push({
              attributeName: 'customAttr',
              name: 'Custom Attribute',
              editor: Y.Component.create({
                NAME: "DateField",
                EXTENDS: Y.DateCellEditor
              })
            });

            return model;
          },
          SERIALIZABLE_ATTRS: ['description', 'name', 'required', 'type',
            'width', 'height', 'zIndex', 'xy', 'customAttr']
        }

      });
      Y.DiagramBuilder.types['custom'] = Y.DiagramNodeCustom;

Я также попытался изменить раздел «model.push» на:

model.push({
      attributeName: 'customAttr',
      name: 'Custom Attribute',
      editor: {name: "textCellEditor"}
    });

и к:

model.push({
          attributeName: 'customAttr',
          name: 'Custom Attribute',
          editor: Y.DateCellEditor({
            name: 'DateCellEditor'
          })
        });

Но ничего не работает. У вас есть идеи, как я могу изменить редактор по умолчанию?


person Hector Armando Vela Santos    schedule 03.10.2013    source источник


Ответы (1)


Спасибо Роберту Фрэмптону, который ответил на мой вопрос в группах Google. сделать это:

model.push({
   attributeName: 'customAttr',
   name: 'Custom Attribute',

   editor: new Y.DateCellEditor()
});

Вам нужно создать новый экземпляр объекта Y.DateCellEditor с добавлением «нового» перед конструктором.

person Hector Armando Vela Santos    schedule 04.10.2013