From 77b9c7bd8ba01938f62233af8a7ba4b81e070ff5 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 22 Mar 2011 21:36:44 +0100 Subject: [PATCH] [ADD] basic implementations of DataSet.select and DataSet.active_ids bzr revid: xmo@openerp.com-20110322203644-iubno2jusxp4z98p --- addons/base/static/openerp/js/base_views.js | 29 +++++++++---------- addons/base/static/openerp/js/tests.js | 31 ++++++++++++++++++++- 2 files changed, 45 insertions(+), 15 deletions(-) diff --git a/addons/base/static/openerp/js/base_views.js b/addons/base/static/openerp/js/base_views.js index 156b11a9f61..7bd96b45d86 100644 --- a/addons/base/static/openerp/js/base_views.js +++ b/addons/base/static/openerp/js/base_views.js @@ -135,7 +135,7 @@ openerp.base.DataSet = openerp.base.Controller.extend({ ids: function (offset, limit) { offset = offset || 0; limit = limit || null; - this.rpc('/base/dataset/load', { + this.rpc('/base/dataset/find', { model: this._model, fields: this._fields, domain: this._domain, @@ -174,18 +174,24 @@ openerp.base.DataSet = openerp.base.Controller.extend({ * @param {Object} event.context the context set on the DataSet before DataSet#ids was called * @param {Array} event.sort the sorting criteria used to get the ids */ - on_ids: function (records, event) { - - }, + on_ids: function (records, event) { }, /** * Fetch all the currently active records for this DataSet (records selected via DataSet#select) * - * @param {Number} [offset=0] The index from which selected records should be returned - * @param {Number} [limit=-1] The maximum number of records to return * @returns itself */ - active_ids: function (offset, limit) { + active_ids: function () { + this.rpc('/base/dataset/get', { + ids: this._active_ids + }, _.bind(function (records) { + this.on_active_ids(_.map( + records, function (record) { + return new openerp.base.DataRecord( + this.session, this._model, + this._fields, record); + }, this)); + }, this)); return this; }, /** @@ -194,14 +200,8 @@ openerp.base.DataSet = openerp.base.Controller.extend({ * Fires after the DataSet fetched the records matching its internal active ids selection * * @param {Array} records An array of the DataRecord fetched - * @param event The on_active_ids event object - * @param {Number} event.offset the offset with which the original DataSet#ids call was performed - * @param {Number} event.limit the limit set on the original DataSet#ids call - * @param {Array} event.sort the sorting criteria used to get the ids */ - on_active_ids: function (records, event) { - - }, + on_active_ids: function (records) { }, /** * Fetches the current active record for this DataSet @@ -272,6 +272,7 @@ openerp.base.DataSet = openerp.base.Controller.extend({ * @param {Object} [id] the id to activate */ select: function (ids, id) { + this._active_ids = ids; return this; } }); diff --git a/addons/base/static/openerp/js/tests.js b/addons/base/static/openerp/js/tests.js index 62d1dcda40b..cbb9c7f0dca 100644 --- a/addons/base/static/openerp/js/tests.js +++ b/addons/base/static/openerp/js/tests.js @@ -201,7 +201,7 @@ $(document).ready(function () { asyncTest("Data records", function () { var dataset = new openerp.base.DataSet({ rpc: function (url, _params, on_success) { - equal('/base/dataset/load', url); + equal('/base/dataset/find', url); _.delay(on_success, 0, [ {id: 1, sequence: 3, name: "dummy", age: 42}, {id: 5, sequence: 7, name: "whee", age: 55} @@ -242,4 +242,33 @@ $(document).ready(function () { domain.pop(); deepEqual([['foo', '=', 'bar']], dataset._domain); }); + + module('active_ids', { + setup: function () { + openerp = window.openerp.init(); + } + }); + test('Get pre-set active_ids', 6, function () { + var dataset = new openerp.base.DataSet({ + rpc: function (url, params, on_success) { + equal(url, '/base/dataset/get'); + deepEqual(params.ids, [1, 2, 3]); + _.delay(on_success, 0, _.map( + params.ids, function (id) { + return {id: id, sequence: id, name: 'foo'+id}; + } + )); + } + }); + stop(500); + dataset.select([1, 2, 3]); + dataset.on_active_ids.add(function (data_records) { + equal(data_records.length, 3); + equal(data_records[0].values.id, 1); + equal(data_records[1].values.id, 2); + equal(data_records[2].values.id, 3); + start(); + }); + dataset.active_ids(); + }); });