Ext.define("Compass.ErpApp.Shared.PartySearchField", {
extend: "Ext.form.field.ComboBox",
alias: 'widget.partysearchfield',
typeAhead: false,
hideTrigger: true,
pageSize: 10,
constructor: function (config) {
var me = this,
extraParams = {role_type: config.partyRole, to_role: config.toRole},
listTemplate = config.list_template,
fields = config.fields;
// merge extraParams with extraParams passed in config
if (config.extraParams)
extraParams = Ext.apply(config.extraParams, extraParams);
if (!listTemplate) {
listTemplate = '
{description}
';
listTemplate += '';
listTemplate += '{addressLine1}
';
listTemplate += '{addressLine2}
';
listTemplate += '{city}, {state}
{zip}
';
listTemplate += '';
}
if (!fields) {
fields = [
'id',
'description',
{name: 'addressLine1', mapping: 'address_line_1'},
{name: 'addressLine2', mapping: 'address_line_2'},
'city',
'state',
'zip'
]
}
config = Ext.apply({
emptyText: (config.emptyText || 'Search'),
valueField: (config.valueField || 'id'),
displayField: (config.valueField || 'description'),
triggerAction: 'all',
listConfig: {
loadingText: 'Searching...',
emptyText: 'No matching results found.',
// Custom rendering template for each item
getInnerTpl: function () {
return listTemplate;
}
},
hideTrigger: true,
typeAhead: (config.typeAhead || true),
minChars: 3,
store: Ext.create('Ext.data.Store', {
fields: fields,
proxy: {
type: 'ajax',
reader: {
type: 'json',
root: 'parties',
totalProperty: 'total'
},
extraParams: extraParams,
url: (config.url || '/erp_app/organizer/crm/parties/search')
},
autoLoad: true
})
}, config);
this.callParent([config]);
}
});