summaryrefslogtreecommitdiff
path: root/addons/web
diff options
context:
space:
mode:
authorNans Lefebvre <len@odoo.com>2019-01-10 13:53:05 +0000
committerNans Lefebvre <len@odoo.com>2019-01-11 15:07:40 +0000
commita7cbac305ed8645ce8ce67210d2ca5d723a891f0 (patch)
tree435baa3b0dec241288cc07151c3312f4966dbd15 /addons/web
parentf8e953fdd6eb5d9ce3f6713f9cd06665ca20bb2a (diff)
[FIX] web: reset offset in the search more view dialog
Start on the modal obtained by a "search more". The offset is never reset. So suppose you are on page 2, looking at record 81-160. Do a research that gives less than 80 records. The result of the search is nothing, since is has been done with a 80 offset. It should be reset to 0 when we do a new search. opw 1920826 closes odoo/odoo#30109
Diffstat (limited to 'addons/web')
-rw-r--r--addons/web/static/src/js/views/view_dialogs.js2
-rw-r--r--addons/web/static/tests/fields/relational_fields_tests.js55
2 files changed, 56 insertions, 1 deletions
diff --git a/addons/web/static/src/js/views/view_dialogs.js b/addons/web/static/src/js/views/view_dialogs.js
index 163131d47f3..99c56bf8dd1 100644
--- a/addons/web/static/src/js/views/view_dialogs.js
+++ b/addons/web/static/src/js/views/view_dialogs.js
@@ -264,7 +264,7 @@ var SelectCreateDialog = ViewDialog.extend({
event.stopPropagation(); // prevent this event from bubbling up to the view manager
var d = event.data;
var searchData = this._process_search_data(d.domains, d.contexts, d.groupbys);
- this.list_controller.reload(searchData);
+ this.list_controller.reload(_.extend({offset: 0}, searchData));
},
get_controller_context: '_onGetControllerContext',
}),
diff --git a/addons/web/static/tests/fields/relational_fields_tests.js b/addons/web/static/tests/fields/relational_fields_tests.js
index 3991d499f3d..5d2ab325ef2 100644
--- a/addons/web/static/tests/fields/relational_fields_tests.js
+++ b/addons/web/static/tests/fields/relational_fields_tests.js
@@ -525,6 +525,61 @@ QUnit.module('relational_fields', {
form.destroy();
});
+ QUnit.test('search more pager is reset when doing a new search', function (assert) {
+ assert.expect(6);
+ for(var i = 10; i < 180; i++) {
+ this.data.partner.records.push({
+ id: i,
+ display_name: "Partner " + i,
+ });
+ }
+
+ function stringToEvent ($element, string) {
+ for (var i = 0; i < string.length; i++) {
+ var keyAscii = string.charCodeAt(i);
+ $element.val($element.val()+string[i]);
+ $element.trigger($.Event('keyup', {which: keyAscii, keyCode:keyAscii}));
+ }
+ $element.trigger($.Event('keyup', {which: $.ui.keyCode.ENTER, keyCode:$.ui.keyCode.ENTER}));
+ }
+
+ this.data.partner.fields.datetime.searchable = true;
+ var form = createView({
+ View: FormView,
+ model: 'partner',
+ data: this.data,
+ arch: '<form string="Partners">' +
+ '<sheet>' +
+ '<group>' +
+ '<field name="trululu"/>' +
+ '</group>' +
+ '</sheet>' +
+ '</form>',
+ archs: {
+ 'partner,false,list': '<tree><field name="display_name"/></tree>',
+ 'partner,false,search': '<search><field name="datetime"/><field name="display_name"/></search>',
+ },
+ res_id: 1,
+ });
+
+ form.$buttons.find('.o_form_button_edit').click();
+ var $dropdown = form.$('.o_field_many2one input').autocomplete('widget');
+ form.$('.o_field_many2one input').click();
+ $dropdown.find('.o_m2o_dropdown_option:contains(Search)').mouseenter().click();
+ $('.modal .o_pager_next').click();
+
+ assert.strictEqual($('.o_pager_limit').text(), "1173", "there should be 173 records");
+ assert.strictEqual($('.o_pager_value').text(), "181-160", "should display the second page");
+ assert.strictEqual($('tr.o_data_row').length, 80, "should display 80 record");
+
+ stringToEvent($('.modal .o_searchview_input'), 'first');
+
+ assert.strictEqual($('.o_pager_limit').text(), "11", "there should be 1 record");
+ assert.strictEqual($('.o_pager_value').text(), "11-1", "should display the first page");
+ assert.strictEqual($('tr.o_data_row').length, 1, "should display 1 record");
+ form.destroy();
+ });
+
QUnit.test('onchanges on many2ones trigger when editing record in form view', function (assert) {
assert.expect(9);