Skip to content

Commit

Permalink
CRM-14093 - prefetch searchBuilder options in bulk using CRM.api3
Browse files Browse the repository at this point in the history
  • Loading branch information
colemanw committed Jan 20, 2014
1 parent 4bad157 commit 3eb318a
Showing 1 changed file with 20 additions and 1 deletion.
21 changes: 20 additions & 1 deletion templates/CRM/Contact/Form/Search/Builder.js
Original file line number Diff line number Diff line change
Expand Up @@ -238,5 +238,24 @@
;

$().crmAccordions();
$('select[id^=mapper][id$="_1"]', '#Builder').each(handleUserInputField);

// Fetch initial options during page refresh - it's more efficient to bundle them in a single ajax request
var initialFields = {}, fetchFields = false;
$('select[id^=mapper][id$="_1"] option:selected', '#Builder').each(function() {
var field = $(this).attr('value');
if (typeof(CRM.searchBuilder.fieldOptions[field]) == 'string') {
initialFields[field] = [CRM.searchBuilder.fieldOptions[field], 'getoptions', {field: field, sequential: 1}];
fetchFields = true;
}
});
if (fetchFields) {
CRM.api3(initialFields).done(function(data) {
$.each(data, function(field, result) {
CRM.searchBuilder.fieldOptions[field] = result.values;
});
$('select[id^=mapper][id$="_1"]', '#Builder').each(handleUserInputField);
});
} else {
$('select[id^=mapper][id$="_1"]', '#Builder').each(handleUserInputField);
}
})(cj, CRM);

0 comments on commit 3eb318a

Please sign in to comment.