[IMP] Added all fields in custom filters.
authorniv-openerp <nicolas.vanhoren@openerp.com>
Thu, 19 May 2011 15:12:49 +0000 (17:12 +0200)
committerniv-openerp <nicolas.vanhoren@openerp.com>
Thu, 19 May 2011 15:12:49 +0000 (17:12 +0200)
bzr revid: nicolas.vanhoren@openerp.com-20110519151249-jsla662056a8r01m

addons/base/controllers/main.py
addons/base/static/src/js/search.js
addons/base/static/src/xml/base.xml

index c0d89bb..88fb05e 100644 (file)
@@ -712,6 +712,12 @@ class SearchView(View):
     def load(self, req, model, view_id):
         fields_view = self.fields_view_get(req, model, view_id, 'search')
         return {'fields_view': fields_view}
+    
+    @openerpweb.jsonrequest
+    def fields_get(self, req, model):
+        Model = req.session.model(model)
+        fields = Model.fields_get()
+        return {'fields': fields}
 
 class Action(openerpweb.Controller):
     _cp_path = "/base/action"
index efaca3c..b463d21 100644 (file)
@@ -112,7 +112,7 @@ openerp.base.SearchView = openerp.base.Controller.extend({
             data.fields_view.fields);
 
         // for extended search view
-        var ext = new openerp.base.search.ExtendedSearch(null, data.fields_view.fields);
+        var ext = new openerp.base.search.ExtendedSearch(null, this.session, this.model);
         lines.push([ext]);
         this.inputs.push(ext);
         
@@ -390,77 +390,6 @@ openerp.base.search.Group = openerp.base.search.Widget.extend({
     }
 });
 
-openerp.base.search.ExtendedSearch = openerp.base.BaseWidget.extend({
-    template: 'SearchView.extended_search',
-    identifier_prefix: 'extended-search',
-    init: function (parent, fields) {
-        this._super(parent);
-        this.fields = fields;
-    },
-    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);
-        group.start();
-    },
-    start: function () {
-        this._super();
-        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.add_group();
-        });
-    },
-    get_context: function() {
-        return null;
-    },
-    get_domain: function() {
-        if(this.$element.hasClass("folded")) {
-            return null;
-        }
-        return _.reduce(this.children,
-            function(mem, x) { return mem.concat(x.get_domain());}, []);
-    }
-});
-
-openerp.base.search.ExtendedSearchGroup = openerp.base.BaseWidget.extend({
-    template: 'SearchView.extended_search.group',
-    identifier_prefix: 'extended-search-group',
-    init: function (parent, fields) {
-        this._super(parent);
-        this.fields = fields;
-    },
-    add_prop: function() {
-        var prop = new openerp.base.search.ExtendedSearchProposition(this, this.fields);
-        var render = prop.render({});
-        this.$element.find('.searchview_extended_propositions_list').append(render);
-        prop.start();
-    },
-    start: function () {
-        this._super();
-        var _this = this;
-        this.add_prop();
-        this.$element.find('.searchview_extended_add_proposition').click(function (e) {
-            _this.add_prop();
-        });
-        var delete_btn = this.$element.find('.searchview_extended_delete_group');
-        delete_btn.click(function (e) {
-            _this.stop();
-        });
-    },
-    get_domain: function() {
-        var props = _(this.children).chain().map(function(x) {
-            return x.get_proposition();
-        }).compact().value();
-        var choice = this.$element.find(".searchview_extended_group_choice").val();
-        var op = choice == "all" ? "&" : "|";
-        return [].concat(choice == "none" ? ['!'] : [],
-            _.map(_.range(_.max([0,props.length - 1])), function() { return op; }),
-            props);
-    }
-});
-
 openerp.base.search.Input = openerp.base.search.Widget.extend(
     /** @lends openerp.base.search.Input# */{
     /**
@@ -772,6 +701,81 @@ openerp.base.search.custom_filters = new openerp.base.Registry({
     'datetime': 'openerp.base.search.ExtendedSearchProposition.DateTime'
 });
 
+openerp.base.search.ExtendedSearch = openerp.base.BaseWidget.extend({
+    template: 'SearchView.extended_search',
+    identifier_prefix: 'extended-search',
+    init: function (parent, session, model) {
+        this._super(parent, session);
+        this.model = model;
+    },
+    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);
+        group.start();
+    },
+    start: function () {
+        this._super();
+        var self = this;
+        this.rpc("/base/searchview/fields_get",
+            {"model": this.model}, function(data) {
+            self.fields = data.fields;
+            openerp.base.search.add_expand_listener(self.$element);
+            self.add_group();
+            self.$element.find('.searchview_extended_add_group').click(function (e) {
+                self.add_group();
+            });
+        });
+    },
+    get_context: function() {
+        return null;
+    },
+    get_domain: function() {
+        if(this.$element.hasClass("folded")) {
+            return null;
+        }
+        return _.reduce(this.children,
+            function(mem, x) { return mem.concat(x.get_domain());}, []);
+    }
+});
+
+openerp.base.search.ExtendedSearchGroup = openerp.base.BaseWidget.extend({
+    template: 'SearchView.extended_search.group',
+    identifier_prefix: 'extended-search-group',
+    init: function (parent, fields) {
+        this._super(parent);
+        this.fields = fields;
+    },
+    add_prop: function() {
+        var prop = new openerp.base.search.ExtendedSearchProposition(this, this.fields);
+        var render = prop.render({});
+        this.$element.find('.searchview_extended_propositions_list').append(render);
+        prop.start();
+    },
+    start: function () {
+        this._super();
+        var _this = this;
+        this.add_prop();
+        this.$element.find('.searchview_extended_add_proposition').click(function (e) {
+            _this.add_prop();
+        });
+        var delete_btn = this.$element.find('.searchview_extended_delete_group');
+        delete_btn.click(function (e) {
+            _this.stop();
+        });
+    },
+    get_domain: function() {
+        var props = _(this.children).chain().map(function(x) {
+            return x.get_proposition();
+        }).compact().value();
+        var choice = this.$element.find(".searchview_extended_group_choice").val();
+        var op = choice == "all" ? "&" : "|";
+        return [].concat(choice == "none" ? ['!'] : [],
+            _.map(_.range(_.max([0,props.length - 1])), function() { return op; }),
+            props);
+    }
+});
+
 openerp.base.search.ExtendedSearchProposition = openerp.base.BaseWidget.extend({
     template: 'SearchView.extended_search.proposition',
     identifier_prefix: 'extended-search-proposition',
@@ -880,7 +884,16 @@ openerp.base.search.ExtendedSearchProposition.DateTime = openerp.base.BaseWidget
         {value: "<=", text: "less or equal than"}
     ],
     get_value: function() {
-        return this.$element.val();
+        var val = this.$element.val();
+        debugger;
+        return val;
+    },
+    render: function(add) {
+        this._super(add);
+        this.$element.find('input').datetimepicker({
+            dateFormat: 'yy-mm-dd',
+            timeFormat: 'hh:mm:ss'
+        });
     }
 });
 
index e124441..104a4a7 100644 (file)
 <t t-name="SearchView.extended_search.proposition.char">
     <input t-att-id="element_id"/>
 </t>
+<t t-name="SearchView.extended_search.proposition.datetime">
+    <input type="text"
+        t-att-id="element_id"
+    />
+</t>
 <t t-name="ViewManager.sidebar">
     <div t-att-id="element_id" class="sidebar-main-div closed-sidebar">