[IMP] move some functions in a better position (web client)

the prepare_search_inputs is an initialization function, and was at
the end of the Searchview class.  It is more intuitive to put it closer
to the top
This commit is contained in:
Géry Debongnie
2014-10-21 09:33:53 +02:00
parent e8ee946a86
commit bc20dd9f03
+54 -54
View File
@@ -431,6 +431,60 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea
}
return $.when(custom_filters_ready).then(this.proxy('set_default_filters'));
},
// it should parse the arch field of the view, instantiate the corresponding
// filters/fields, and put them in the correct variables:
// * this.search_fields is a list of all the fields,
// * this.filters: groups of filters
// * this.group_by: group_bys
prepare_search_inputs: function () {
var self = this,
arch = this.fields_view_get.arch;
var filters = [].concat.apply([], _.map(arch.children, function (item) {
return item.tag !== 'group' ? eval_item(item) : item.children.map(eval_item);
}));
function eval_item (item) {
var category = 'filters';
if (item.attrs.context) {
try {
var context = instance.web.pyeval.eval('context', item.attrs.context);
if (context.group_by) {
category = 'group_by';
}
} catch (e) {}
}
return {
item: item,
category: category,
}
}
var current_group = [],
current_category = 'filters',
categories = {filters: this.filters, group_by: this.groupbys};
_.each(filters.concat({category:'filters', item: 'separator'}), function (filter) {
if (filter.item.tag === 'filter' && filter.category === current_category) {
return current_group.push(new my.Filter(filter.item, self));
}
if (current_group.length) {
var group = new my.FilterGroup(current_group, self);
categories[current_category].push(group);
current_group = [];
}
if (filter.item.tag === 'field') {
var attrs = filter.item.attrs,
field = self.fields_view_get.fields[attrs.name],
Obj = my.fields.get_any([attrs.widget, field.type]);
if (Obj) {
self.search_fields.push(new (Obj) (filter.item, field, self));
}
}
if (filter.item.tag === 'filter') {
current_group.push(new my.Filter(filter.item, self));
}
current_category = filter.category;
});
},
set_default_filters: function () {
var self = this,
default_custom_filter = this.$buttons && this.favorite_menu.get_default_filter();
@@ -642,60 +696,6 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea
renderChangedFacets: function (model, options) {
this.renderFacets(undefined, model, options);
},
// it should parse the arch field of the view, instantiate the corresponding
// filters/fields, and put them in the correct variables:
// * this.search_fields is a list of all the fields,
// * this.filters: groups of filters
// * this.group_by: group_bys
prepare_search_inputs: function () {
var self = this,
arch = this.fields_view_get.arch;
var filters = [].concat.apply([], _.map(arch.children, function (item) {
return item.tag !== 'group' ? eval_item(item) : item.children.map(eval_item);
}));
function eval_item (item) {
var category = 'filters';
if (item.attrs.context) {
try {
var context = instance.web.pyeval.eval('context', item.attrs.context);
if (context.group_by) {
category = 'group_by';
}
} catch (e) {}
}
return {
item: item,
category: category,
}
}
var current_group = [],
current_category = 'filters',
categories = {filters: this.filters, group_by: this.groupbys};
_.each(filters.concat({category:'filters', item: 'separator'}), function (filter) {
if (filter.item.tag === 'filter' && filter.category === current_category) {
return current_group.push(new my.Filter(filter.item, self));
}
if (current_group.length) {
var group = new my.FilterGroup(current_group, self);
categories[current_category].push(group);
current_group = [];
}
if (filter.item.tag === 'field') {
var attrs = filter.item.attrs,
field = self.fields_view_get.fields[attrs.name],
Obj = my.fields.get_any([attrs.widget, field.type]);
if (Obj) {
self.search_fields.push(new (Obj) (filter.item, field, self));
}
}
if (filter.item.tag === 'filter') {
current_group.push(new my.Filter(filter.item, self));
}
current_category = filter.category;
});
},
});
/**