Публикация
Select, поиск контрола на странице, пуш контрола, расширение методов (пример)
14 февраля 2018 01:12
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; });
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать