From f86d1acc51d4834b5e0c86d6791680a50d520d00 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 31 Mar 2011 13:35:45 +0200 Subject: [PATCH 1/8] [FIX] don't needlessly prevent events from bubbling bzr revid: xmo@openerp.com-20110331113545-ig0kcaxzi8x2g4c1 --- addons/base/static/src/js/search.js | 20 +++++--------------- addons/base/static/src/xml/base.xml | 16 ++++++++++------ 2 files changed, 15 insertions(+), 21 deletions(-) diff --git a/addons/base/static/src/js/search.js b/addons/base/static/src/js/search.js index 52c501bcc77..fc16f9beebe 100644 --- a/addons/base/static/src/js/search.js +++ b/addons/base/static/src/js/search.js @@ -371,7 +371,7 @@ openerp.base.search.ExtendedSearch = openerp.base.BaseWidget.extend({ this._super(parent); this.fields = fields; }, - add_group: function(group) { + add_group: function() { var group = new openerp.base.search.ExtendedSearchGroup(this, this.fields); var render = group.render({}); this.$element.find('.searchview_extended_groups_list').append(render); @@ -382,10 +382,8 @@ openerp.base.search.ExtendedSearch = openerp.base.BaseWidget.extend({ var _this = this; openerp.base.search.add_expand_listener(this.$element); this.add_group(); - this.$element.find('.searchview_extended_add_group').click(function (e) { + this.$element.find('.searchview_extended_add_group').click(function () { _this.add_group(); - e.stopPropagation(); - e.preventDefault(); }); }, get_context: function() { @@ -418,16 +416,12 @@ openerp.base.search.ExtendedSearchGroup = openerp.base.BaseWidget.extend({ this._super(); var _this = this; this.add_prop(); - this.$element.find('.searchview_extended_add_proposition').click(function (e) { + this.$element.find('.searchview_extended_add_proposition').click(function () { _this.add_prop(); - e.stopPropagation(); - e.preventDefault(); }); var delete_btn = this.$element.find('.searchview_extended_delete_group'); delete_btn.click(function (e) { _this.stop(); - e.stopPropagation(); - e.preventDefault(); }); }, get_domain: function() { @@ -476,16 +470,12 @@ openerp.base.search.ExtendedSearchProposition = openerp.base.BaseWidget.extend({ this._super(); this.set_selected(this.fields.length > 0 ? this.fields[0] : null); var _this = this; - this.$element.find(".searchview_extended_prop_field").change(function(e) { + this.$element.find(".searchview_extended_prop_field").change(function() { _this.changed(); - e.stopPropagation(); - e.preventDefault(); }); var delete_btn = this.$element.find('.searchview_extended_delete_prop'); - delete_btn.click(function (e) { + delete_btn.click(function () { _this.stop(); - e.stopPropagation(); - e.preventDefault(); }); }, changed: function() { diff --git a/addons/base/static/src/xml/base.xml b/addons/base/static/src/xml/base.xml index 3124f5a5686..acfd78d6670 100644 --- a/addons/base/static/src/xml/base.xml +++ b/addons/base/static/src/xml/base.xml @@ -368,8 +368,9 @@ -
- +
+ @@ -382,8 +383,10 @@
- - + +
@@ -400,10 +403,11 @@ - + - + From 8bd00f390ed7c063f8d504519da8350979b25894 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 31 Mar 2011 13:36:10 +0200 Subject: [PATCH 2/8] [FIX] not (ilike) is (not ilike), not (not like) bzr revid: xmo@openerp.com-20110331113610-e0wjfbcterqmx30h --- addons/base/static/src/js/search.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/base/static/src/js/search.js b/addons/base/static/src/js/search.js index fc16f9beebe..beaa3358fc3 100644 --- a/addons/base/static/src/js/search.js +++ b/addons/base/static/src/js/search.js @@ -441,7 +441,7 @@ openerp.base.search.extended_filters_types = { char: { operators: [ {value: "ilike", text: "contains"}, - {value: "not like", text: "doesn't contain"}, + {value: "not ilike", text: "doesn't contain"}, {value: "=", text: "is equal to"}, {value: "!=", text: "is not equal to"}, {value: ">", text: "greater than"}, From a95012dea971bb31e008b09706cf5408940f5d35 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 31 Mar 2011 14:00:10 +0200 Subject: [PATCH 3/8] [IMP] simplify templates a bit, rename set_selected to select_field for clarity bzr revid: xmo@openerp.com-20110331120010-vsxxmo1ec4mtstac --- addons/base/static/src/js/search.js | 25 +++++++++++++++---------- addons/base/static/src/xml/base.xml | 8 +++----- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/addons/base/static/src/js/search.js b/addons/base/static/src/js/search.js index beaa3358fc3..ce3113532cc 100644 --- a/addons/base/static/src/js/search.js +++ b/addons/base/static/src/js/search.js @@ -461,14 +461,15 @@ openerp.base.search.ExtendedSearchProposition = openerp.base.BaseWidget.extend({ init: function (parent, fields) { this._super(parent); this.fields = _(fields).chain() - .map(function(val,key) {return {name:key, obj:val};}) - .sortBy(function(x) {return x.obj.string;}).value(); + .map(function(val, key) { return _.extend({}, val, {'name': key}); }) + .sortBy(function(field) {return field.string;}) + .value(); this.attrs = {_: _, fields: this.fields, selected: null}; this.value_component = null; }, start: function () { this._super(); - this.set_selected(this.fields.length > 0 ? this.fields[0] : null); + this.select_field(this.fields.length > 0 ? this.fields[0] : null); var _this = this; this.$element.find(".searchview_extended_prop_field").change(function() { _this.changed(); @@ -481,26 +482,30 @@ openerp.base.search.ExtendedSearchProposition = openerp.base.BaseWidget.extend({ changed: function() { var nval = this.$element.find(".searchview_extended_prop_field").val(); if(this.attrs.selected == null || nval != this.attrs.selected.name) { - this.set_selected(_.detect(this.fields, function(x) {return x.name == nval;})); + this.select_field(_.detect(this.fields, function(x) {return x.name == nval;})); } }, - set_selected: function(selected) { + /** + * Selects the provided field object + * + * @param field a field descriptor object (as returned by fields_get, augmented by the field name) + */ + select_field: function(field) { var _this = this; if(this.attrs.selected != null) { this.value_component.stop(); this.value_component = null; this.$element.find('.searchview_extended_prop_op').html(''); } - this.attrs.selected = selected; - if(selected == null) { + this.attrs.selected = field; + if(field == null) { return; } - var type = selected.obj.type; + var type = field.type; var extended_filters_types = openerp.base.search.extended_filters_types; type = type in extended_filters_types ? type : "char"; _.each(extended_filters_types[type].operators, function(operator) { - var option = jQuery('