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;
});
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать