-
+
diff --git a/addons/web_mobile/static/src/js/web_mobile.js b/addons/web_mobile/static/src/js/web_mobile.js index b6cb2ffc9eb..36fe79164e0 100644 --- a/addons/web_mobile/static/src/js/web_mobile.js +++ b/addons/web_mobile/static/src/js/web_mobile.js @@ -1,8 +1,5 @@ - openerp.web_mobile = function(openerp) { - openerp.web_mobile = {}; - openerp.web_mobile.MobileWebClient = openerp.base.Controller.extend({ init: function(element_id) { var self = this; @@ -14,9 +11,7 @@ openerp.web_mobile.MobileWebClient = openerp.base.Controller.extend({ this.session = new openerp.base.Session("oe_errors"); this.crashmanager = new openerp.base.CrashManager(this.session); this.login = new openerp.web_mobile.Login(this.session, "oe_app"); - this.session.on_session_invalid.add(this.login.do_ask_login); - }, start: function() { this.session.start(); @@ -84,26 +79,66 @@ openerp.web_mobile.ListView = openerp.base.Controller.extend({ var self = this; if (data.action.length) { this.action = data.action[0][2]; - this.dataset = (new openerp.base.DataSetSearch(this.session, this.action.res_model, null, null)) - this.dataset.read_slice(false, false, false, function(result){ - self.$element.html(QWeb.render("ListView", {'records' : result})); - self.$element.find("a#list-id").click(self.on_list_click); - }); + this.on_search_data(''); } }, + on_search_data: function(request){ + if(request){ + if(request.term){ + var search_val = request.term; + }else{ + if(request.which==27 || request.which==13 || request.which==9){ + var search_val = ''; + }else if(request.which==38 || request.which==40 || request.which==39 || request.which==37){ + return; + }else if($("#searchid").val()==""){ + var search_val = ''; + }else{ + return; + } + } + } + else{ + var search_val = ''; + } + var self = this; + + var dataset = new openerp.base.DataSetStatic(this.session, this.action.res_model, this.action.context); + dataset.domain=[['name','ilike',search_val]]; + dataset.name_search(search_val, dataset.domain, 'ilike',false ,function(result){ + self.$element.html(QWeb.render("ListView", {'records' : result.result})); + self.$element.find("#searchid").focus(); + if(request.term){ + self.$element.find("#searchid").val(request.term); + } + self.$element.find("#searchid").autocomplete({ + source: function(req) { self.on_search_data(req); }, + focus: function(e, ui) { + e.preventDefault(); + }, + html: true, + minLength: 0, + delay: 0 + }); + self.$element.find("#searchid").keyup(self.on_search_data); + self.$element.find("a#list-id").click(self.on_list_click); + + }); + }, on_list_click: function(ev) { $record = $(ev.currentTarget); var self = this; id = $record.data('id'); model = this.action.res_model; view_id = this.action.views[1][0]; + this.dataset = new openerp.base.DataSetSearch(this.session, this.action.res_model, null, null); this.dataset.read_slice(false, false, false, function(result){ for (var i = 0; i < result.length; i++) { if (result[i].id == id) { var data = result[i]; } } - self.rpc("/base/formview/load", {"model": model, "view_id": view_id }, + self.rpc("/base/formview/load", {"model": model, "view_id": view_id }, function(result){ var view_fields = result.fields_view.arch.children; get_fields = self.filter_fields(view_fields); @@ -162,8 +197,8 @@ openerp.web_mobile.Secondary = openerp.base.Controller.extend({ } else { if (id) { - this.listview = new openerp.web_mobile.ListView(this.session, "oe_app", id); - this.listview.start(); + this.listview = new openerp.web_mobile.ListView(this.session, "oe_app", id); + this.listview.start(); } } } diff --git a/addons/web_mobile/static/src/web_mobile.html b/addons/web_mobile/static/src/web_mobile.html index 425666bd09c..b6abd9f3255 100755 --- a/addons/web_mobile/static/src/web_mobile.html +++ b/addons/web_mobile/static/src/web_mobile.html @@ -5,9 +5,10 @@