Создание собственного элемента управления

Пытаюсь создать и использовать собственный элемент управления основанный на ListView. По поводу создания никаких проблем (создать модуль и унаследоваться от модуля компонента). Вопрос, как создать элемент управления в клиентской схеме?

Нравится

1 комментарий

Здравствуйте, Иван!
Реализация зависит от того, какая именно версия bpmonline используется (выше или ниже 7.3), но ключевым является указание свойства "className" при добавлении контрола. Пример с кнопкой для 7.3 и выше:

{
					"operation": "insert",
					"name": "DataGridActiveRowOpenAction",
					"parentName": "DataGrid",
					"propertyName": "activeRowActions",
					"values": {
						"className": "Terrasoft.Button",
						"style": Terrasoft.controls.ButtonEnums.style.BLUE,
						"caption": {"bindTo": "Resources.Strings.OpenRecordGridRowButtonCaption"},
						"tag": "edit"
					}
				},

Пример для 7.2 и ниже:

var btnConfig = {
    type: ConfigurationEnums.CustomViewModelSchemaItem.CUSTOM_ELEMENT,
    className: 'Terrasoft.Button',
    caption: "Кнопка",
    style: Terrasoft.controls.ButtonEnums.style.GREEN,
    enabled: true,
    click: {
        bindTo: 'sayHello'
    }
};
 this.schema.leftPanel.push(btnConfig);

Также можно создавать конфиг с помощью Ext.create:

var buttonsConfig = Ext.create('Terrasoft.Button', {
					imageConfig: resources.localizableImages.CloseIcon,
					style: Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
					classes: {wrapperClass: 'close-btn-user-class'},
					selectors: {
						wrapEl: '#googlemap'
					},
					click: {bindTo: 'onClickCloseMaps'}
				});

В этом случае можно также сразу указать свойство renderTo, передв туда контейнер, в который будет помещен контрол, тогда контрол сразу будет отрисован, иначе нужно будет вызывать метод render(renderTo). Это должно работать примерно одинаково для всех версий 7.х.

Показать все комментарии