summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/views/basic/basic_renderer.js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src/js/views/basic/basic_renderer.js')
-rw-r--r--addons/web/static/src/js/views/basic/basic_renderer.js46
1 files changed, 15 insertions, 31 deletions
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 8db6058f242..f90e27d23d8 100644
--- a/addons/web/static/src/js/views/basic/basic_renderer.js
+++ b/addons/web/static/src/js/views/basic/basic_renderer.js
@@ -142,7 +142,7 @@ var BasicRenderer = AbstractRenderer.extend(WidgetAdapterMixin, {
*/
confirmChange: function (state, id, fields, ev) {
var self = this;
- this.state = state;
+ this._setState(state);
var record = this._getRecord(id);
if (!record) {
return this._render().then(_.constant([]));
@@ -646,25 +646,25 @@ var BasicRenderer = AbstractRenderer.extend(WidgetAdapterMixin, {
return modifiersData.evaluatedModifiers[record.id];
},
/**
- * Render the view
- *
* @override
- * @returns {Promise}
*/
- _render: function () {
- var oldAllFieldWidgets = this.allFieldWidgets;
+ async _render() {
+ const oldAllFieldWidgets = this.allFieldWidgets;
this.allFieldWidgets = {}; // TODO maybe merging allFieldWidgets and allModifiersData into "nodesData" in some way could be great
this.allModifiersData = [];
- var oldWidgets = this.widgets;
+ const oldWidgets = this.widgets;
this.widgets = [];
- return this._renderView().then(function () {
- _.each(oldAllFieldWidgets, function (recordWidgets) {
- _.each(recordWidgets, function (widget) {
- widget.destroy();
- });
- });
- _.invoke(oldWidgets, 'destroy');
- });
+
+ await this._super(...arguments);
+
+ for (const id in oldAllFieldWidgets) {
+ for (const widget of oldAllFieldWidgets[id]) {
+ widget.destroy();
+ }
+ }
+ for (const widget of oldWidgets) {
+ widget.destroy();
+ }
},
/**
* Instantiates the appropriate AbstractField specialization for the given
@@ -776,22 +776,6 @@ var BasicRenderer = AbstractRenderer.extend(WidgetAdapterMixin, {
.append($noContent);
},
/**
- * Actual rendering. Supposed to be overridden by concrete renderers.
- * The basic responsabilities of _renderView are:
- * - use the xml arch of the view to render a jQuery representation
- * - instantiate a widget from the registry for each field in the arch
- *
- * Note that the 'state' field should contains all necessary information
- * for the rendering. The field widgets should be as synchronous as
- * possible.
- *
- * @abstract
- * @returns {Promise}
- */
- _renderView: function () {
- return Promise.resolve();
- },
- /**
* Instantiate custom widgets
*
* @private