[IMP] Improved listview to add name search filter on top.
bzr revid: jra@tinyerp.com-20110707114517-3zc9cl9yjogah598
This commit is contained in:
committed by
Jiten Rangwala (OpenERP)
parent
4ad72c434c
commit
565a068138
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,9 +5,10 @@
|
||||
<title>OpenERP Web Mobile</title>
|
||||
<link rel="stylesheet" href="/web_mobile/static/lib/jquery_mobile/css/jquery.mobile-1.0a4.1.css" />
|
||||
|
||||
<script type="text/javascript" src="/base/static/lib/LABjs/LAB.js"></script>
|
||||
<script type="text/javascript" src="/base/static/lib/LABjs/LAB.js"></script>
|
||||
<script type="text/javascript" src="/base/static/lib/jquery/jquery-1.5.2.js"></script>
|
||||
|
||||
<script type="text/javascript" src="/base/static/lib/jquery.ui/js/jquery-ui-1.8.9.custom.min.js"></script>
|
||||
|
||||
<script type="text/javascript" src="/web_mobile/static/lib/jquery_mobile/js/jquery.mobile-1.0a4.1.js"></script>
|
||||
<script type="text/javascript" src="/base/static/lib/jquery.ba-bbq/jquery.ba-bbq.js"></script>
|
||||
<script type="text/javascript" src="/base/static/lib/underscore/underscore.js"></script>
|
||||
|
||||
@@ -67,12 +67,17 @@
|
||||
|
||||
<t t-name="ListView">
|
||||
<div role="main" class="ui-content" data-role="content">
|
||||
<ul role="listbox" data-role="listview" class="ui-listview" data-filter="true">
|
||||
<form class="ui-listview-filter ui-bar-c" role="search">
|
||||
<div id="search-data" class="ui-input-search ui-shadow-inset ui-btn-corner-all ui-btn-shadow ui-icon-searchfield ui-body-c">
|
||||
<input id="searchid" placeholder="Filter items..." data-type="search" class="ui-input-text ui-body-null" autosearch="true" setTimeDefault="700"/>
|
||||
</div>
|
||||
</form>
|
||||
<ul role="listbox" data-role="listview" class="ui-listview">
|
||||
<li data-theme="c" class="ui-btn ui-btn-icon-right ui-li ui-btn-up-c" t-foreach="records" t-as="record">
|
||||
<div class="ui-btn-inner ui-li">
|
||||
<div class="ui-btn-text">
|
||||
<a id="list-id" t-att-data-id="record.id" href="#" class="ui-link-inherit">
|
||||
<span><t t-esc="record.name"/></span>
|
||||
<a id="list-id" t-att-data-id="record[0]" href="#" class="ui-link-inherit">
|
||||
<span><t t-esc="record[1]"/></span>
|
||||
</a>
|
||||
</div>
|
||||
<span class="ui-icon ui-icon-arrow-r"></span>
|
||||
|
||||
Reference in New Issue
Block a user