diff options
| author | Ravi Gadhia <rga@odoo.com> | 2018-06-06 13:41:44 +0000 |
|---|---|---|
| committer | Aaron Bohy <aab@odoo.com> | 2019-04-02 11:55:57 +0000 |
| commit | 234d92c4f0c092dca9f10d194ddcff998fc3a886 (patch) | |
| tree | 9b4cd9794b9f494694b9671e6bb682d75c007bd7 /addons/web/static/src/js/views/basic | |
| parent | 55676110c8787dfafd34a6508b207952f5c5eb88 (diff) | |
[IMP] web: list: editable grouped list views
This rev. enables the editable feature in grouped list views.
Part of task 1915702
Co-authored-by: Aaron Bohy <aab@odoo.com>
Co-authored-by: Martin Geubelle <mge@odoo.com>
Diffstat (limited to 'addons/web/static/src/js/views/basic')
| -rw-r--r-- | addons/web/static/src/js/views/basic/basic_model.js | 25 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/basic/basic_renderer.js | 16 |
2 files changed, 38 insertions, 3 deletions
diff --git a/addons/web/static/src/js/views/basic/basic_model.js b/addons/web/static/src/js/views/basic/basic_model.js index 79fac0f2247..150b97ff0d8 100644 --- a/addons/web/static/src/js/views/basic/basic_model.js +++ b/addons/web/static/src/js/views/basic/basic_model.js @@ -88,8 +88,10 @@ var concurrency = require('web.concurrency'); var Context = require('web.Context'); var core = require('web.core'); var Domain = require('web.Domain'); +var fieldUtils = require('web.field_utils'); var session = require('web.session'); var utils = require('web.utils'); +var viewUtils = require('web.viewUtils'); var _t = core._t; @@ -178,7 +180,7 @@ var BasicModel = AbstractModel.extend({ addDefaultRecord: function (listID, options) { var self = this; var list = this.localData[listID]; - var context = this._getContext(list); + var context = _.extend({}, this._getDefaultContext(list), this._getContext(list)); var position = (options && options.position) || 'top'; var params = { @@ -3333,6 +3335,27 @@ var BasicModel = AbstractModel.extend({ return toFetch; }, /** + * Given a dataPoint of type list (that may be a group), returns an object + * with 'default_' keys to be used to create new records in that group. + * + * @private + * @param {Object} dataPoint + * @returns {Object} + */ + _getDefaultContext: function (dataPoint) { + var defaultContext = {}; + while (dataPoint.parentID) { + var parent = this.localData[dataPoint.parentID]; + var groupByField = parent.groupedBy[0].split(':')[0]; + var value = viewUtils.getGroupValue(dataPoint, groupByField); + if (value) { + defaultContext['default_' + groupByField] = value; + } + dataPoint = parent; + } + return defaultContext; + }, + /** * Some records are associated to a/some domain(s). This method allows to * retrieve them, evaluated. * diff --git a/addons/web/static/src/js/views/basic/basic_renderer.js b/addons/web/static/src/js/views/basic/basic_renderer.js index 6f5fa263ba8..f741e11b789 100644 --- a/addons/web/static/src/js/views/basic/basic_renderer.js +++ b/addons/web/static/src/js/views/basic/basic_renderer.js @@ -91,8 +91,7 @@ var BasicRenderer = AbstractRenderer.extend({ */ confirmChange: function (state, id, fields, ev) { this.state = state; - - var record = state.id === id ? state : _.findWhere(state.data, {id: id}); + var record = this._getRecord(id); if (!record) { return this._render().then(_.constant([])); } @@ -351,6 +350,19 @@ var BasicRenderer = AbstractRenderer.extend({ return _.findWhere(this.allModifiersData, {node: node}); }, /** + * This function is meant to be overriden in renderers. It takes a dataPoint + * id (for a dataPoint of type record), and should return the corresponding + * dataPoint. + * + * @abstract + * @private + * @param {string} [recordId] + * @returns {Object|null} + */ + _getRecord: function (recordId) { + return null; + }, + /** * @private * @param {jQueryElement} $el * @param {Object} node |
