diff options
| author | Christophe Simonis <chs@odoo.com> | 2017-10-10 16:49:59 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2017-10-10 16:49:59 +0200 |
| commit | 6c2ab192eab5d7a730edad6d1b42ae98a2a75471 (patch) | |
| tree | 4c86ef12648c69654c41ae03d30c96115899eed1 /addons/web/static | |
| parent | bfba2c0e758d3ef4bdda1f704bbb044569fa4683 (diff) | |
| parent | 88a9980b0c0ba83938f3976f33b28c2bfb06ee75 (diff) | |
[MERGE] forward port branch saas-16 up to 88a9980b0c0
Diffstat (limited to 'addons/web/static')
5 files changed, 33 insertions, 4 deletions
diff --git a/addons/web/static/src/js/chrome/search_menus.js b/addons/web/static/src/js/chrome/search_menus.js index eee7303ffbd..fe2ce5f3c32 100644 --- a/addons/web/static/src/js/chrome/search_menus.js +++ b/addons/web/static/src/js/chrome/search_menus.js @@ -415,7 +415,7 @@ return Widget.extend({ this.groupableFields = []; var groupable_types = ['many2one', 'char', 'boolean', 'selection', 'date', 'datetime']; _.each(fields, function (field, name) { - if (field.store && _.contains(groupable_types, field.type)) { + if (field.sortable && _.contains(groupable_types, field.type)) { self.groupableFields.push(_.extend({}, field, {name: name})); } }); diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js index dbbafe4432c..ed5f03b4f9b 100644 --- a/addons/web/static/src/js/fields/relational_fields.js +++ b/addons/web/static/src/js/fields/relational_fields.js @@ -372,9 +372,14 @@ var FieldMany2One = AbstractField.extend({ } // create and edit ... if (create_enabled && !self.nodeOptions.no_create_edit) { + var createAndEditAction = function () { + // Clear the value in case the user clicks on discard + self.$('input').val(''); + return self._searchCreatePopup("form", false, self._createContext(search_val)); + }; values.push({ label: _t("Create and Edit..."), - action: self._searchCreatePopup.bind(self, "form", false, self._createContext(search_val)), + action: createAndEditAction, classname: 'o_m2o_dropdown_option', }); } else if (values.length === 0) { diff --git a/addons/web/static/src/js/widgets/domain_selector.js b/addons/web/static/src/js/widgets/domain_selector.js index 82cca87f4df..782128994db 100644 --- a/addons/web/static/src/js/widgets/domain_selector.js +++ b/addons/web/static/src/js/widgets/domain_selector.js @@ -805,7 +805,7 @@ var DomainLeaf = DomainNode.extend({ if (_.isBoolean(this.value)) { this.value = ""; } else if (_.isObject(this.value) && !_.isArray(this.value)) { // Can be object if parsed to x2x representation - this.value = this.value.id || ""; + this.value = this.value.id || value || ""; } } diff --git a/addons/web/static/tests/fields/relational_fields_tests.js b/addons/web/static/tests/fields/relational_fields_tests.js index 0c910e5b4de..7a0937084c3 100644 --- a/addons/web/static/tests/fields/relational_fields_tests.js +++ b/addons/web/static/tests/fields/relational_fields_tests.js @@ -1491,7 +1491,7 @@ QUnit.module('relational_fields', { QUnit.test('pressing ENTER on a \'no_quick_create\' many2one should not trigger M2ODialog', function (assert) { var done = assert.async(); - assert.expect(1); + assert.expect(2); var M2O_DELAY = relationalFields.FieldMany2One.prototype.AUTOCOMPLETE_DELAY; relationalFields.FieldMany2One.prototype.AUTOCOMPLETE_DELAY = 0; @@ -1529,6 +1529,10 @@ QUnit.module('relational_fields', { $input.blur(); assert.strictEqual($('.modal').length, 1, "should have one modal in body"); + // Check that discarding clears $input + $('.modal .o_form_button_cancel').click(); + assert.strictEqual($input.val(), '', + "the field should be empty"); form.destroy(); relationalFields.FieldMany2One.prototype.AUTOCOMPLETE_DELAY = M2O_DELAY; done(); diff --git a/addons/web/static/tests/widgets/domain_selector_tests.js b/addons/web/static/tests/widgets/domain_selector_tests.js index 77d8eeb24da..55ddc971642 100644 --- a/addons/web/static/tests/widgets/domain_selector_tests.js +++ b/addons/web/static/tests/widgets/domain_selector_tests.js @@ -174,6 +174,26 @@ QUnit.module('DomainSelector', { domainSelector.destroy(); }); + + QUnit.test("building a domain with a m2o without following the relation", function (assert) { + assert.expect(1); + + var $target = $("#qunit-fixture"); + + // Create the domain selector and its mock environment + var domainSelector = new DomainSelector(null, "partner", [["product_id", "ilike", 1]], { + debugMode: true, + readonly: false, + }); + testUtils.addMockEnvironment(domainSelector, {data: this.data}); + domainSelector.appendTo($target); + + domainSelector.$('.o_domain_leaf_value_input').val('pad').trigger('input').trigger('change'); + assert.strictEqual(domainSelector.$('.o_domain_debug_input').val(), '[["product_id","ilike","pad"]]', + "string should have been allowed as m2o value"); + + domainSelector.destroy(); + }); }); }); }); |
