2013-10-03 2 views
0

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

Я успешно установил новые узлы и извлечь его значения через diagramBuilder.toJSON()

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

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

Default node attributes, as shown in the WebStorm debugger

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

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

Но ничего не работает. Вы знаете, как изменить редактор по умолчанию?

ответ

0

Благодаря Роберту Фрэмптоном, который anwered мой вопрос в google groups, способ сделать это:

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

    editor: new Y.DateCellEditor() 
}); 

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

 Смежные вопросы

  • Нет связанных вопросов^_^