diff options
| author | Christophe Simonis <chs@openerp.com> | 2013-06-13 19:39:00 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@openerp.com> | 2013-06-13 19:39:00 +0200 |
| commit | a61e7cb0c80ae773cab9753bd8a4e7e888bbf415 (patch) | |
| tree | 019a235869a5e087055700895d4584c80e2f9afb /addons/web/static/src/js/view_list.js | |
| parent | 5ed0ac2614b9430e61dae472d657a21c037d6ee9 (diff) | |
| parent | 180e6e41d81e28df43b41e3cb6131225d4169a28 (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.js | 25 |
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); |
