You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
3.1 KiB
80 lines
3.1 KiB
openerp.web_search_alphabetic = function (instance) {
|
|
var QWeb = instance.web.qweb;
|
|
instance.web.SearchView.include({
|
|
start: function() {
|
|
var result = this._super();
|
|
var self = this;
|
|
self.search_on = "name";
|
|
self.fields_selection = [];
|
|
this.dataset.call('fields_get', [false, {}]).done(function (fields) {
|
|
$.each(fields, function (value) {
|
|
if(fields[value].type == "char"){
|
|
fields[value].id = value;
|
|
self.fields_selection.push(fields[value]);
|
|
}
|
|
})
|
|
if(self.fields_selection.length){
|
|
$('.field_selection_column').append((QWeb.render('field-selection', {widget: self})));
|
|
$("#field_name_selection").change(function(){
|
|
self.search_on = $(this).val() || false;
|
|
})
|
|
}
|
|
});
|
|
$('.oe_filter_label').click(function (e) {
|
|
$(this).toggleClass('enabled');
|
|
self.do_search();
|
|
});
|
|
return result;
|
|
},
|
|
search_filter: function(){
|
|
var filter_domain = [];
|
|
var self = this;
|
|
_.each($('.oe_filter_label'), function(value) {
|
|
if ($(value).hasClass('enabled') && $(value).attr('id') && self.search_on) {
|
|
filter_domain.push("[('" + self.search_on + "', '=ilike', '" + $(value).attr('id').split('_')[1] + "%')]")
|
|
}
|
|
});
|
|
if (filter_domain.length) {
|
|
var filter_or_domain = [];
|
|
for (i = 0; i < filter_domain.length-1; i++) {
|
|
filter_or_domain.push("['|']");
|
|
}
|
|
return filter_or_domain.concat(filter_domain || []);
|
|
}
|
|
return false;
|
|
},
|
|
build_search_data: function () {
|
|
var result = this._super();
|
|
filter_domain = this.search_filter();
|
|
if (filter_domain)
|
|
result['domains'] = filter_domain.concat(result.domains || []);
|
|
return result;
|
|
},
|
|
});
|
|
|
|
instance.web.ViewManager.include({
|
|
switch_mode: function(view_type, no_store, view_options) {
|
|
var view = this.views[view_type];
|
|
var result = this._super(view_type, no_store, view_options);
|
|
if (this.searchview && this.active_view != "form") {
|
|
if ((view.controller.searchable === false || this.searchview.options.hidden) || this.active_view == "form"){
|
|
$('.search_filter').live().hide();
|
|
}else
|
|
$('.search_filter').show();
|
|
}
|
|
else{
|
|
$('.search_filter').live().hide();
|
|
}
|
|
return result;
|
|
},
|
|
});
|
|
instance.web.FormView.include({
|
|
load_defaults: function () {
|
|
if($('.search_filter'))
|
|
$('.search_filter').hide();
|
|
return this._super();
|
|
},
|
|
});
|
|
};
|
|
|
|
// vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax:
|