From ceaf203ce9a23c5c0d8c612a8c448e3187afa3ba Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 30 Jan 2012 10:53:39 +0100 Subject: [IMP] remove fixed todo bzr revid: xmo@openerp.com-20120130095339-x3cmsfrzxpwtl8u6 --- addons/web/static/src/js/data.js | 1 - 1 file changed, 1 deletion(-) (limited to 'addons/web/static/src/js/data.js') diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js index be7d707c91c..b596b1eb250 100644 --- a/addons/web/static/src/js/data.js +++ b/addons/web/static/src/js/data.js @@ -507,7 +507,6 @@ openerp.web.DataSetStatic = openerp.web.DataSet.extend({ read_slice: function (fields, options) { options = options || {}; fields = fields || {}; - // TODO remove fields from options var offset = options.offset || 0, limit = options.limit || false; var end_pos = limit && limit !== -1 ? offset + limit : this.ids.length; -- cgit v1.2.3 From ae273f2414e64f78c7e9adc70d18e1d8abe9b561 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 6 Feb 2012 10:46:48 +0100 Subject: [IMP] move DataSetSearch#sort to DataSet#sort bzr revid: xmo@openerp.com-20120206094648-1pq0y6oczk8uzzw6 --- addons/web/static/src/js/data.js | 52 ++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 26 deletions(-) (limited to 'addons/web/static/src/js/data.js') diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js index b596b1eb250..6cfe20984be 100644 --- a/addons/web/static/src/js/data.js +++ b/addons/web/static/src/js/data.js @@ -248,6 +248,7 @@ openerp.web.DataSet = openerp.web.OldWidget.extend( /** @lends openerp.web.Data this.model = model; this.context = context || {}; this.index = null; + this._sort = []; }, previous: function () { this.index -= 1; @@ -496,6 +497,31 @@ openerp.web.DataSet = openerp.web.OldWidget.extend( /** @lends openerp.web.Data return new openerp.web.CompoundContext(this.context, request_context); } return this.context; + }, + /** + * Reads or changes sort criteria on the dataset. + * + * If not provided with any argument, serializes the sort criteria to + * an SQL-like form usable by OpenERP's ORM. + * + * If given a field, will set that field as first sorting criteria or, + * if the field is already the first sorting criteria, will reverse it. + * + * @param {String} [field] field to sort on, reverses it (toggle from ASC to DESC) if already the main sort criteria + * @param {Boolean} [force_reverse=false] forces inserting the field as DESC + * @returns {String|undefined} + */ + sort: function (field, force_reverse) { + if (!field) { + return openerp.web.serialize_sort(this._sort); + } + var reverse = force_reverse || (this._sort[0] === field); + this._sort.splice.apply( + this._sort, [0, this._sort.length].concat( + _.without(this._sort, field, '-' + field))); + + this._sort.unshift((reverse ? '-' : '') + field); + return undefined; } }); openerp.web.DataSetStatic = openerp.web.DataSet.extend({ @@ -541,7 +567,6 @@ openerp.web.DataSetSearch = openerp.web.DataSet.extend(/** @lends openerp.web.D init: function(parent, model, context, domain) { this._super(parent, model, context); this.domain = domain || []; - this._sort = []; this.offset = 0; // subset records[offset:offset+limit] // is it necessary ? @@ -583,31 +608,6 @@ openerp.web.DataSetSearch = openerp.web.DataSet.extend(/** @lends openerp.web.D } return this.domain; }, - /** - * Reads or changes sort criteria on the dataset. - * - * If not provided with any argument, serializes the sort criteria to - * an SQL-like form usable by OpenERP's ORM. - * - * If given a field, will set that field as first sorting criteria or, - * if the field is already the first sorting criteria, will reverse it. - * - * @param {String} [field] field to sort on, reverses it (toggle from ASC to DESC) if already the main sort criteria - * @param {Boolean} [force_reverse=false] forces inserting the field as DESC - * @returns {String|undefined} - */ - sort: function (field, force_reverse) { - if (!field) { - return openerp.web.serialize_sort(this._sort); - } - var reverse = force_reverse || (this._sort[0] === field); - this._sort.splice.apply( - this._sort, [0, this._sort.length].concat( - _.without(this._sort, field, '-' + field))); - - this._sort.unshift((reverse ? '-' : '') + field); - return undefined; - }, unlink: function(ids, callback, error_callback) { var self = this; return this._super(ids, function(result) { -- cgit v1.2.3 From 7b25f9d4c7495ed3fe2041b1ae8c4801d3c294dd Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 6 Feb 2012 11:12:15 +0100 Subject: [UP] update underscore bzr revid: xmo@openerp.com-20120206101215-yutyc4dv2p1qgxtu --- addons/web/static/src/js/data.js | 1 + 1 file changed, 1 insertion(+) (limited to 'addons/web/static/src/js/data.js') diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js index 6cfe20984be..046930e4baf 100644 --- a/addons/web/static/src/js/data.js +++ b/addons/web/static/src/js/data.js @@ -722,6 +722,7 @@ openerp.web.BufferedDataSet = openerp.web.DataSetStatic.extend({ throw "Record not correctly loaded"; } } + completion.resolve(records); }; if(to_get.length > 0) { -- cgit v1.2.3 From 6ebf8face0c4a53ecdb33b08b7072e083fdcdcbb Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 6 Feb 2012 11:32:59 +0100 Subject: [ADD] sorting support in buffered datasets bzr revid: xmo@openerp.com-20120206103259-nt3wjmt9w9k7kegy --- addons/web/static/src/js/data.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'addons/web/static/src/js/data.js') diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js index 046930e4baf..01962f829e6 100644 --- a/addons/web/static/src/js/data.js +++ b/addons/web/static/src/js/data.js @@ -722,7 +722,24 @@ openerp.web.BufferedDataSet = openerp.web.DataSetStatic.extend({ throw "Record not correctly loaded"; } } + var sort_fields = self._sort, + compare = function (v1, v2) { + return (v1 < v2) ? -1 + : (v1 > v2) ? 1 + : 0; + }; + records.sort(function (a, b) { + return _.reduce(sort_fields, function (acc, field) { + if (acc) { return acc; } + var sign = 1; + if (field[0] === '-') { + sign = -1; + field = field.slice(1); + } + return sign * compare(a[field], b[field]); + }, 0); + }); completion.resolve(records); }; if(to_get.length > 0) { -- cgit v1.2.3 From a7354829cde7d84076c8f7a7beca68217ba9128f Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 9 Feb 2012 18:07:48 +0100 Subject: [CNG] make forms worse but pagination not break in case of manyrecords bzr revid: xmo@openerp.com-20120209170748-l70q7grxgsumha2i --- addons/web/static/src/js/data.js | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'addons/web/static/src/js/data.js') diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js index 01962f829e6..b4a202973dd 100644 --- a/addons/web/static/src/js/data.js +++ b/addons/web/static/src/js/data.js @@ -522,6 +522,9 @@ openerp.web.DataSet = openerp.web.OldWidget.extend( /** @lends openerp.web.Data this._sort.unshift((reverse ? '-' : '') + field); return undefined; + }, + size: function () { + return this.ids.length; } }); openerp.web.DataSetStatic = openerp.web.DataSet.extend({ @@ -568,6 +571,7 @@ openerp.web.DataSetSearch = openerp.web.DataSet.extend(/** @lends openerp.web.D this._super(parent, model, context); this.domain = domain || []; this.offset = 0; + this._length; // subset records[offset:offset+limit] // is it necessary ? this.ids = []; @@ -599,6 +603,7 @@ openerp.web.DataSetSearch = openerp.web.DataSet.extend(/** @lends openerp.web.D }).pipe(function (result) { self.ids = result.ids; self.offset = offset; + self._length = result.length; return result.records; }); }, @@ -619,6 +624,12 @@ openerp.web.DataSetSearch = openerp.web.DataSet.extend(/** @lends openerp.web.D if (callback) callback(result); }, error_callback); + }, + size: function () { + if (this._length !== undefined) { + return this._length; + } + return this._super(); } }); openerp.web.BufferedDataSet = openerp.web.DataSetStatic.extend({ -- cgit v1.2.3 From 6d17167b36bcfe0ce7f84e053cfac81833e24bc0 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 13 Feb 2012 17:54:37 +0100 Subject: [fix] problem in BufferedDataSetStatic : should not trigger a on_change when we call create() bzr revid: nicolas.vanhoren@openerp.com-20120213165437-lhs3d6iyvx61vlun --- addons/web/static/src/js/data.js | 1 - 1 file changed, 1 deletion(-) (limited to 'addons/web/static/src/js/data.js') diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js index b4a202973dd..cb63079fe2c 100644 --- a/addons/web/static/src/js/data.js +++ b/addons/web/static/src/js/data.js @@ -651,7 +651,6 @@ openerp.web.BufferedDataSet = openerp.web.DataSetStatic.extend({ defaults: this.last_default_get}; this.to_create.push(_.extend(_.clone(cached), {values: _.clone(cached.values)})); this.cache.push(cached); - this.on_change(); var prom = $.Deferred().then(callback); prom.resolve({result: cached.id}); return prom.promise(); -- cgit v1.2.3 From c8912b68d83d10c2b8bf6a3a56f28bf051b170ec Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Tue, 14 Feb 2012 16:20:31 +0100 Subject: [fix] problem with on_changes in the editable lists in o2m bzr revid: nicolas.vanhoren@openerp.com-20120214152031-br1lq6zqx6ycdj7p --- addons/web/static/src/js/data.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'addons/web/static/src/js/data.js') diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js index cb63079fe2c..38119c63d3a 100644 --- a/addons/web/static/src/js/data.js +++ b/addons/web/static/src/js/data.js @@ -525,7 +525,10 @@ openerp.web.DataSet = openerp.web.OldWidget.extend( /** @lends openerp.web.Data }, size: function () { return this.ids.length; - } + }, + alter_ids: function(n_ids) { + this.ids = n_ids; + }, }); openerp.web.DataSetStatic = openerp.web.DataSet.extend({ init: function(parent, model, context, ids) { @@ -784,7 +787,11 @@ openerp.web.BufferedDataSet = openerp.web.DataSetStatic.extend({ } } return this._super(method, args, callback, error_callback); - } + }, + alter_ids: function(n_ids) { + this._super(n_ids); + this.on_change(); + }, }); openerp.web.BufferedDataSet.virtual_id_regex = /^one2many_v_id_.*$/; -- cgit v1.2.3 From cf6b9b6e3e9f0778fe57c8d2fd53f7b9d742290d Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Tue, 14 Feb 2012 17:15:58 +0100 Subject: [fix] complex bug in BufferedDataSet lp bug: https://launchpad.net/bugs/925345 fixed bzr revid: nicolas.vanhoren@openerp.com-20120214161558-k634bkwbwq0vk58p --- addons/web/static/src/js/data.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/web/static/src/js/data.js') diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js index 38119c63d3a..636ad575f99 100644 --- a/addons/web/static/src/js/data.js +++ b/addons/web/static/src/js/data.js @@ -764,7 +764,7 @@ openerp.web.BufferedDataSet = openerp.web.DataSetStatic.extend({ self.cache.push({id: id, values: record}); } else { // I assume cache value is prioritary - _.defaults(cached.values, record); + cached.values = _.defaults(_.clone(cached.values), record); } }); return_records(); -- cgit v1.2.3