summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/data.js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src/js/data.js')
-rw-r--r--addons/web/static/src/js/data.js21
1 files changed, 16 insertions, 5 deletions
diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js
index 1f2520ee774..26147b4d4e0 100644
--- a/addons/web/static/src/js/data.js
+++ b/addons/web/static/src/js/data.js
@@ -265,14 +265,25 @@ openerp.web.DataSet = openerp.web.Widget.extend( /** @lends openerp.web.DataSet
return this;
},
select_id: function(id) {
- var idx = _.indexOf(this.ids, id);
- if (idx === -1) {
+ var idx = this.get_id_index(id);
+ if (idx === null) {
return false;
} else {
this.index = idx;
return true;
}
},
+ get_id_index: function(id) {
+ for (var i=0, ii=this.ids.length; i<ii; i++) {
+ // Here we use type coercion because of the mess potentially caused by
+ // OpenERP ids fetched from the DOM as string. (eg: dhtmlxcalendar)
+ // OpenERP ids can be non-numeric too ! (eg: recursive events in calendar)
+ if (id == this.ids[i]) {
+ return i;
+ }
+ }
+ return null;
+ },
/**
* Read records.
*
@@ -414,8 +425,8 @@ openerp.web.DataSet = openerp.web.Widget.extend( /** @lends openerp.web.DataSet
return this.rpc('/web/dataset/call', {
model: this.model,
method: method,
- domain_id: domain_index || null,
- context_id: context_index || null,
+ domain_id: domain_index == undefined ? null : domain_index,
+ context_id: context_index == undefined ? null : context_index,
args: args || []
}, callback, error_callback);
},
@@ -433,7 +444,7 @@ openerp.web.DataSet = openerp.web.Widget.extend( /** @lends openerp.web.DataSet
model: this.model,
method: method,
domain_id: null,
- context_id: 1,
+ context_id: args.length - 1,
args: args || []
}, callback, error_callback);
},