var AjaxSelectDetailsFilterView = ChoiceFilters.DetailsChoiceFilterView.extend({
template: getTemplate('#ajax-select-filter-template'),
listTemplate: getTemplate('#choice-filter-template'),
+ searchKey: 's',
render: function() {
this.query = this.$('.navigator-filter-search input').val();
if (this.query.length > 1) {
this.$el.addClass('fetching');
- var selected = that.options.filterView.getSelected();
+ var selected = that.options.filterView.getSelected(),
+ data = { ps: PAGE_SIZE };
+ data[this.searchKey] = this.query;
this.options.filterView.choices.fetch({
- data: {
- s: this.query,
- ps: PAGE_SIZE
- },
+ data: data,
success: function() {
selected.forEach(function(item) {
that.options.filterView.choices.unshift(item);
var AjaxSelectFilterView = ChoiceFilters.ChoiceFilterView.extend({
- initialize: function() {
+ initialize: function(options) {
ChoiceFilters.ChoiceFilterView.prototype.initialize.call(this, {
- detailsView: AjaxSelectDetailsFilterView
+ detailsView: (options && options.detailsView) ? options.detailsView : AjaxSelectDetailsFilterView
});
},
var RuleSuggestions = AjaxSelectFilters.Suggestions.extend({
url: function() {
- return baseUrl + '/api/rules/list';
+ return baseUrl + '/api/rules/search';
},
parse: function(r) {
- this.more = r.more;
- return r.results.map(function(r) {
- return { id: r.key, text: r.name, category: r.language };
+ this.more = r.p * r.ps < r.total;
+ return r.rules.map(function(r) {
+ return { id: r.key, text: r.name, category: r.lang };
});
}
});
+
+
+ var RuleDetailsFilterView = AjaxSelectFilters.AjaxSelectDetailsFilterView.extend({
+ searchKey: 'q'
+ });
+
+
return AjaxSelectFilters.AjaxSelectFilterView.extend({
initialize: function() {
AjaxSelectFilters.AjaxSelectFilterView.prototype.initialize.call(this, {
- detailsView: AjaxSelectFilters.AjaxSelectDetailsFilterView
+ detailsView: RuleDetailsFilterView
});
this.choices = new RuleSuggestions();