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: