summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/view_list.js
diff options
context:
space:
mode:
authorChristophe Simonis <chs@openerp.com>2013-06-13 19:39:00 +0200
committerChristophe Simonis <chs@openerp.com>2013-06-13 19:39:00 +0200
commita61e7cb0c80ae773cab9753bd8a4e7e888bbf415 (patch)
tree019a235869a5e087055700895d4584c80e2f9afb /addons/web/static/src/js/view_list.js
parent5ed0ac2614b9430e61dae472d657a21c037d6ee9 (diff)
parent180e6e41d81e28df43b41e3cb6131225d4169a28 (diff)
[MERGE] forward port of branch saas-1 up to revid 4887 chs@openerp.com-20130612153934-qyp6pb3bc4za4taf
bzr revid: chs@openerp.com-20130613172414-dln3g4j0ykcwaa02 bzr revid: chs@openerp.com-20130613173900-xl7rh321nnw2b04b
Diffstat (limited to 'addons/web/static/src/js/view_list.js')
-rw-r--r--addons/web/static/src/js/view_list.js25
1 files changed, 10 insertions, 15 deletions
diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js
index 840effa9221..4f58b002328 100644
--- a/addons/web/static/src/js/view_list.js
+++ b/addons/web/static/src/js/view_list.js
@@ -503,12 +503,9 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
var reloaded = $.Deferred();
this.$el.find('.oe_list_content').append(
this.groups.render(function () {
- if (self.dataset.index == null) {
- var has_one = false;
- self.records.each(function () { has_one = true; });
- if (has_one) {
+ if (self.dataset.index == null && self.records.length ||
+ self.dataset.index >= self.records.length) {
self.dataset.index = 0;
- }
}
self.compute_aggregates();
reloaded.resolve();
@@ -530,12 +527,13 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
return r.tag === 'field';
}), 'name')
).done(function (records) {
- if (!records[0]) {
+ var values = records[0];
+ if (!values) {
self.records.remove(record);
return;
}
- _(records[0]).each(function (value, key) {
- record.set(key, value, {silent: true});
+ _(_.keys(values)).each(function(key){
+ record.set(key, values[key], {silent: true});
});
record.trigger('change', record);
});
@@ -896,7 +894,7 @@ instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web.
this.record_callbacks = {
'remove': function (event, record) {
var id = record.get('id');
- self.dataset.remove_ids([id])
+ self.dataset.remove_ids([id]);
var $row = self.$current.children('[data-id=' + id + ']');
var index = $row.data('index');
$row.remove();
@@ -909,12 +907,7 @@ instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web.
throw new Error(_.str.sprintf( _t("Setting 'id' attribute on existing record %s"),
JSON.stringify(record.attributes) ));
}
- if (!_.contains(self.dataset.ids, value)) {
- // add record to dataset if not already in (added by
- // the form view?)
- self.dataset.ids.splice(
- self.records.indexOf(record), 0, value);
- }
+ self.dataset.add_ids([value], self.records.indexOf(record));
// Set id on new record
$row = self.$current.children('[data-id=false]');
} else {
@@ -925,6 +918,8 @@ instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web.
},
'add': function (ev, records, record, index) {
var $new_row = $(self.render_record(record));
+ var id = record.get('id');
+ if (id) { self.dataset.add_ids([id], index); }
if (index === 0) {
$new_row.prependTo(self.$current);