Публикация

Select, поиск контрола на странице, пуш контрола, расширение методов (пример)

define('ContactPage', ['terrasoft', 'Contact', 'ContactPageStructure', 'ContactPageResources'],
    function(Terrasoft, Contact, structure, resources) {
    structure.userCode = function() {
        var account;
        var accountPhone;
        var groupIndex = 0;
        var itemIndex = 0;
        var group = this.schema.leftPanel[groupIndex];
        var item = group.items[itemIndex];
        //перебором ищем нужный контрол по имени
        while (item.name !== 'Account') {
            if (itemIndex === group.items.length - 1) {
                groupIndex++;
                itemIndex = -1;
                group = this.schema.leftPanel[groupIndex];
            }
            itemIndex++;
            item = this.schema.leftPanel[groupIndex].items[itemIndex];
        }
        //пушим новую виртуальную колонку номера контрагента
        this.schema.leftPanel[groupIndex].items.push({
            type: Terrasoft.ViewModelSchemaItem.ATTRIBUTE,
            caption: "Account Phone",
            columnType: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
            name: 'AccountPhone',
            dataValueType: Terrasoft.DataValueType.TEXT,
            visible: true,
            customConfig: {
                enabled: false
            },
            dependencies: ['Account'],
            methodName: 'onAccountChange'
        });
        //описываем выборку из базы значения номера телефона по Id текущего контрагента
        //и заполняем добавленную виртуальную колонку
        var baseOnAccountChange = this.methods.onAccountChange;
        this.methods.onAccountChange = function() {
            if (Ext.isFunction(baseOnAccountChange)) {
                baseOnAccountChange.call(this);
            }
            account = this.get('Account');
            var esq = Ext.create('Terrasoft.EntitySchemaQuery', {
                rootSchemaName: 'Account'
            });
            esq.rowCount = 1;
            esq.addColumn('Id');
            esq.addColumn('Name');
            esq.addColumn('Phone');
            esq.getEntity(account.value, function(result) {
                var entity = result.entity;
                accountPhone = entity.get('Phone');
                this.set('AccountPhone', accountPhone);
            }, this);
        };
        //вызываем функцию заполнения колонки при первичной загрузке страницы
        var childOnAccountChange = this.methods.onAccountChange;
        var baseInit = this.methods.init;
        this.methods.init = function() {
            if (Ext.isFunction(baseInit)) {
                baseInit.call(this);
            }
            childOnAccountChange.call(this);
        };
    };
    return structure;
});

 

Нравится

Поделиться

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