Merge PR #1769 into 12.0

Signed-off-by pedrobaeza
pull/1777/head
OCA-git-bot 2021-01-02 15:15:51 +00:00
commit 82a87ea8a0
2 changed files with 26 additions and 16 deletions

View File

@ -161,7 +161,7 @@ odoo.define("web_widget_one2many_product_picker.One2ManyProductPickerRenderer",
false, false,
true, true,
search_record_index search_record_index
) )[0]
); );
} }
} }
@ -240,7 +240,7 @@ odoo.define("web_widget_one2many_product_picker.One2ManyProductPickerRenderer",
// Need add a new one? // Need add a new one?
if (!exists && search_record_index !== -1) { if (!exists && search_record_index !== -1) {
var new_search_record = _.extend({}, search_record, {__id: state.id}); var new_search_record = _.extend({}, search_record, {__id: state.id});
defs.push(this.appendSearchRecords([new_search_record], false, true, search_record_index)); defs.push(this.appendSearchRecords([new_search_record], false, true, search_record_index)[0]);
} }
} }
this.widgets = _.compact(this.widgets); this.widgets = _.compact(this.widgets);
@ -261,7 +261,8 @@ odoo.define("web_widget_one2many_product_picker.One2ManyProductPickerRenderer",
this.$extraButtonsContainer = $(qweb.render("One2ManyProductPicker.ExtraButtons")); this.$extraButtonsContainer = $(qweb.render("One2ManyProductPicker.ExtraButtons"));
this.$btnLoadMore = this.$extraButtonsContainer.find("#productPickerLoadMore"); this.$btnLoadMore = this.$extraButtonsContainer.find("#productPickerLoadMore");
return $.Deferred(function (d) { return $.Deferred(function (d) {
self.appendSearchRecords(self.search_data, true).then(function () { var defs = self.appendSearchRecords(self.search_data, true);
defs[0].then(function () {
_.invoke(oldWidgets, "destroy"); _.invoke(oldWidgets, "destroy");
self.$el.empty(); self.$el.empty();
self.$el.append(self.$recordsContainer); self.$el.append(self.$recordsContainer);
@ -270,7 +271,7 @@ odoo.define("web_widget_one2many_product_picker.One2ManyProductPickerRenderer",
if (self._isInDom) { if (self._isInDom) {
_.invoke(self.widgets, "on_attach_callback"); _.invoke(self.widgets, "on_attach_callback");
} }
d.resolve(); d.resolve(defs[1]);
}); });
}); });
}, },
@ -405,7 +406,7 @@ odoo.define("web_widget_one2many_product_picker.One2ManyProductPickerRenderer",
* @param {Boolean} no_attach_widgets * @param {Boolean} no_attach_widgets
* @param {Boolean} no_process_records * @param {Boolean} no_process_records
* @param {Number} position * @param {Number} position
* @returns {Deferred} * @returns {Array[Deferred]}
*/ */
appendSearchRecords: function (search_records, no_attach_widgets, no_process_records, position) { appendSearchRecords: function (search_records, no_attach_widgets, no_process_records, position) {
var self = this; var self = this;
@ -418,15 +419,17 @@ odoo.define("web_widget_one2many_product_picker.One2ManyProductPickerRenderer",
delete this.defs; delete this.defs;
var defsVirtualState = this.defsVirtualState; var defsVirtualState = this.defsVirtualState;
delete this.defsVirtualState; delete this.defsVirtualState;
$.when.apply($, defsVirtualState).then(function () { return [
self.trigger_up("loading_records", {finished:true}); $.when.apply($, defs).then(function () {
}); if (!no_attach_widgets && self._isInDom) {
return $.when.apply($, defs).then(function () { var new_widgets = self.widgets.slice(cur_widget_index);
if (!no_attach_widgets && self._isInDom) { _.invoke(new_widgets, "on_attach_callback");
var new_widgets = self.widgets.slice(cur_widget_index); }
_.invoke(new_widgets, "on_attach_callback"); }),
} $.when.apply($, defsVirtualState).then(function () {
}); self.trigger_up("loading_records", {finished:true});
}),
];
}, },
/** /**

View File

@ -270,7 +270,11 @@ odoo.define("web_widget_one2many_product_picker.FieldOne2ManyProductPicker", fun
return $.Deferred(function (d) { return $.Deferred(function (d) {
self._getSearchRecords().then(function () { self._getSearchRecords().then(function () {
self.renderer.$el.scrollTop(0); self.renderer.$el.scrollTop(0);
self.renderer._renderView().then(d.resolve); self.renderer._renderView().then(function (virtualStateDefs) {
virtualStateDefs.then(function () {
d.resolve();
});
});
}); });
}); });
}, },
@ -547,8 +551,11 @@ odoo.define("web_widget_one2many_product_picker.FieldOne2ManyProductPicker", fun
* @private * @private
*/ */
_onClickSearchEraser: function () { _onClickSearchEraser: function () {
var self = this;
this._clearSearchInput(); this._clearSearchInput();
this.doRenderSearchRecords(); this.doRenderSearchRecords().then(function () {
self.$searchInput.focus();
});
}, },
/** /**