diff --git a/addons/base/static/src/js/data.js b/addons/base/static/src/js/data.js index 244c057d544..2dac0bb5ae4 100644 --- a/addons/base/static/src/js/data.js +++ b/addons/base/static/src/js/data.js @@ -286,14 +286,16 @@ openerp.base.DataSet = openerp.base.Widget.extend( /** @lends openerp.base.Data * Read a slice of the records represented by this DataSet, based on its * domain and context. * + * @param {Array} [fields] fields to read and return, by default all fields are returned * @params {Object} options - * @param {Array} [options.fields] fields to read and return, by default all fields are returned * @param {Number} [options.offset=0] The index from which selected records should be returned * @param {Number} [options.limit=null] The maximum number of records to return * @param {Function} callback function called with read_slice result * @returns {$.Deferred} */ - read_slice: function (options, callback) { return null; }, + read_slice: function (fields, options, callback) { + return null; + }, /** * Reads the current dataset record (from its index) * @@ -478,11 +480,12 @@ openerp.base.DataSetStatic = openerp.base.DataSet.extend({ // all local records this.ids = ids || []; }, - read_slice: function (options, callback) { + read_slice: function (fields, options, callback) { + // TODO remove fields from options var self = this, offset = options.offset || 0, limit = options.limit || false, - fields = options.fields || false; + fields = fields || false; var end_pos = limit && limit !== -1 ? offset + limit : undefined; return this.read_ids(this.ids.slice(offset, end_pos), fields, callback); }, @@ -532,12 +535,12 @@ openerp.base.DataSetSearch = openerp.base.DataSet.extend({ * @param {Function} callback function called with read_slice result * @returns {$.Deferred} */ - read_slice: function (options, callback) { + read_slice: function (fields, options, callback) { var self = this; var offset = options.offset || 0; return this.rpc('/base/dataset/search_read', { model: this.model, - fields: options.fields || false, + fields: fields || false, domain: this.get_domain(options.domain), context: this.get_context(options.context), sort: this.sort(), diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index d3056e618bf..c85d1fd4cb2 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -458,9 +458,7 @@ openerp.base.form.SidebarAttachments = openerp.base.Widget.extend({ ['res_model', '=', this.view.dataset.model], ['res_id', '=', this.view.datarecord.id], ['type', 'in', ['binary', 'url']] - ])).read_slice( - {fields: ['name', 'url', 'type']}, - this.on_attachments_loaded); + ])).read_slice(['name', 'url', 'type'], this.on_attachments_loaded); } }, on_attachments_loaded: function(attachments) { diff --git a/addons/base/static/src/js/list.js b/addons/base/static/src/js/list.js index a0440221520..d715c3600be 100644 --- a/addons/base/static/src/js/list.js +++ b/addons/base/static/src/js/list.js @@ -476,7 +476,8 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi */ do_activate_record: function (index, id, dataset) { var self = this; - this.dataset.read_slice({ + // TODO is it needed ? + this.dataset.read_slice([],{ context: dataset.get_context(), domain: dataset.get_domain() }, function () { @@ -1034,11 +1035,9 @@ openerp.base.ListView.Groups = openerp.base.Class.extend( /** @lends openerp.bas d = new $.Deferred(), page = this.datagroup.openable ? this.page : view.page; - dataset.read_slice({ - fields: _.pluck(_.select(this.columns, function(x) {return x.tag == "field"}), 'name'), - offset: page * limit, - limit: limit - }, function (records) { + var fields = _.pluck(_.select(this.columns, function(x) {return x.tag == "field"}), 'name'); + var options = { offset: page * limit, limit: limit }; + dataset.read_slice(fields, options , function (records) { if (!self.datagroup.openable) { view.configure_pager(dataset); } else { diff --git a/addons/base/static/src/js/view_tree.js b/addons/base/static/src/js/view_tree.js index 5c3c7457e1c..59544a998b3 100644 --- a/addons/base/static/src/js/view_tree.js +++ b/addons/base/static/src/js/view_tree.js @@ -72,7 +72,7 @@ openerp.base.TreeView = openerp.base.View.extend({ 'toolbar': has_toolbar })); - this.dataset.read_slice({fields: this.fields_list()}, function (records) { + this.dataset.read_slice(this.fields_list(), {}, function (records) { if (!has_toolbar) { // WARNING: will do a second read on the same ids, but only on // first load so not very important diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index f21c6387d32..ad75268156f 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -17,6 +17,7 @@ openerp.base.ActionManager = openerp.base.Widget.extend({ this.dialog = null; this.dialog_viewmanager = null; this.client_widget = null; + this.url = {} }, render: function() { return "
"; @@ -35,6 +36,28 @@ openerp.base.ActionManager = openerp.base.Widget.extend({ this.inner_viewmanager = null; } }, + url_update: function(action) { + // this.url = { + // "model": action.model, + // "domain": action.domain, + // }; + // action.res_model + // action.domain + // action.context + // after + // action.views + // action.res_id + // mode + // menu + }, + url_stringify: function(action) { + }, + url_parse: function(action) { + }, + on_url_update: function(url) { + }, + do_url_action: function(url) { + }, do_action: function(action, on_close) { var type = action.type.replace(/\./g,'_'); var popup = action.target === 'new'; @@ -69,6 +92,7 @@ openerp.base.ActionManager = openerp.base.Widget.extend({ this.inner_stop(); this.inner_viewmanager = new openerp.base.ViewManagerAction(this, action); this.inner_viewmanager.appendTo(this.$element); + this.url_update(action); } /* new window code this.rpc("/base/session/save_session_action", { the_action : action}, function(key) { diff --git a/addons/base_calendar/static/src/js/calendar.js b/addons/base_calendar/static/src/js/calendar.js index d02fbe490e2..8b0f1e995b6 100644 --- a/addons/base_calendar/static/src/js/calendar.js +++ b/addons/base_calendar/static/src/js/calendar.js @@ -302,8 +302,7 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ // TODO: handle non-empty results.group_by with read_group self.dataset.context = self.context = results.context; self.dataset.domain = self.domain = results.domain; - self.dataset.read_slice({ - fields: _.keys(self.fields), + self.dataset.read_slice(_.keys(self.fields), { offset:0, limit: self.limit }, function(events) { diff --git a/addons/base_dashboard/static/src/js/dashboard.js b/addons/base_dashboard/static/src/js/dashboard.js index 422d279a485..727e5e5519c 100644 --- a/addons/base_dashboard/static/src/js/dashboard.js +++ b/addons/base_dashboard/static/src/js/dashboard.js @@ -290,7 +290,7 @@ openerp.base_dashboard.ConfigOverview = openerp.base.View.extend({ this.dataset.domain = [['type', '=', 'manual']]; }, start: function () { - $.when(this.dataset.read_slice({fields: ['state', 'action_id', 'category_id']}), + $.when(this.dataset.read_slice(['state', 'action_id', 'category_id']), this.dataset.call('progress')) .then(this.on_records_loaded); }, @@ -352,9 +352,7 @@ openerp.base_dashboard.ApplicationTiles = openerp.base.View.extend({ }, start: function () { var self = this; - this.dataset.read_slice( - {fields: ['name', 'web_icon_data', 'web_icon_hover_data']}, - function (applications) { + this.dataset.read_slice( ['name', 'web_icon_data', 'web_icon_hover_data'], {}, function (applications) { // Create a matrix of 3*x applications var rows = []; while (applications.length) { @@ -384,9 +382,7 @@ openerp.base_dashboard.Widgets = openerp.base.View.extend({ this.widgets = new openerp.base.DataSetSearch(this, 'res.widget'); }, start: function () { - this.user_widgets.read_slice( - {fields: ['widget_id', 'user_id']}, - this.on_widgets_list_loaded); + this.user_widgets.read_slice(['widget_id', 'user_id'], {}, this.on_widgets_list_loaded); }, on_widgets_list_loaded: function (user_widgets) { var self = this; diff --git a/addons/base_default_home/static/src/js/home.js b/addons/base_default_home/static/src/js/home.js index ebdf7ea7d00..e1f96c89da7 100644 --- a/addons/base_default_home/static/src/js/home.js +++ b/addons/base_default_home/static/src/js/home.js @@ -86,7 +86,7 @@ openerp.base_default_home = function (openerp) { $.blockUI({ message: '' }); - Modules.read_slice({fields: ['id']}, function (records) { + Modules.read_slice(['id'], function (records) { if (!(records.length === 1)) { return; } Modules.call('state_update', [_.pluck(records, 'id'), 'to install', ['uninstalled']], diff --git a/addons/base_gantt/static/src/js/gantt.js b/addons/base_gantt/static/src/js/gantt.js index 307dc94c6b8..6a5342f9c55 100644 --- a/addons/base_gantt/static/src/js/gantt.js +++ b/addons/base_gantt/static/src/js/gantt.js @@ -79,7 +79,7 @@ init: function(parent, element_id, dataset, view_id) { get_events: function() { var self = this; - this.dataset.read_slice({}, function(result) { + this.dataset.read_slice([],{}, function(result) { self.load_event(result); }); @@ -498,7 +498,7 @@ init: function(parent, element_id, dataset, view_id) { reload_gantt: function() { var self = this; - this.dataset.read_slice({}, function(response) { + this.dataset.read_slice([],{}, function(response) { ganttChartControl.clearAll(); jQuery("#GanttDiv").children().remove(); self.load_event(response); diff --git a/addons/base_graph/static/src/js/graph.js b/addons/base_graph/static/src/js/graph.js index f7c949dc194..e76d38b33bc 100644 --- a/addons/base_graph/static/src/js/graph.js +++ b/addons/base_graph/static/src/js/graph.js @@ -89,7 +89,7 @@ openerp.base_graph.GraphView = openerp.base.View.extend({ } this.dataset.domain = domain; this.dataset.context = this.view_manager.dataset.context; - this.dataset.read_slice({fields: _(this.fields).keys()}, function(res) { + this.dataset.read_slice(_(this.fields).keys(),{}, function(res) { self.schedule_chart(res); }); } @@ -468,7 +468,7 @@ openerp.base_graph.GraphView = openerp.base.View.extend({ } self.dataset.context = results.context; self.dataset.domain = results.domain; - self.dataset.read_slice({}, $.proxy(self, 'load_chart')); + self.dataset.read_slice([],{}, $.proxy(self, 'load_chart')); }); } }); diff --git a/addons/web_mobile/static/src/js/form_mobile.js b/addons/web_mobile/static/src/js/form_mobile.js index a8c7bcc480e..793d944ddcd 100644 --- a/addons/web_mobile/static/src/js/form_mobile.js +++ b/addons/web_mobile/static/src/js/form_mobile.js @@ -12,7 +12,7 @@ openerp.web_mobile.FormView = openerp.base.Widget.extend({ view_id = this.action.views[1][0]; this.dataset = new openerp.base.DataSetSearch(this.session, this.action.res_model, null, null); - this.dataset.read_slice({}, function (result) { + this.dataset.read_slice([],{}, function (result) { for (var i = 0; i < result.length; i++) { if (result[i].id == id) {