summaryrefslogtreecommitdiff
path: root/addons/web/static
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2017-10-10 16:49:59 +0200
committerChristophe Simonis <chs@odoo.com>2017-10-10 16:49:59 +0200
commit6c2ab192eab5d7a730edad6d1b42ae98a2a75471 (patch)
tree4c86ef12648c69654c41ae03d30c96115899eed1 /addons/web/static
parentbfba2c0e758d3ef4bdda1f704bbb044569fa4683 (diff)
parent88a9980b0c0ba83938f3976f33b28c2bfb06ee75 (diff)
[MERGE] forward port branch saas-16 up to 88a9980b0c0
Diffstat (limited to 'addons/web/static')
-rw-r--r--addons/web/static/src/js/chrome/search_menus.js2
-rw-r--r--addons/web/static/src/js/fields/relational_fields.js7
-rw-r--r--addons/web/static/src/js/widgets/domain_selector.js2
-rw-r--r--addons/web/static/tests/fields/relational_fields_tests.js6
-rw-r--r--addons/web/static/tests/widgets/domain_selector_tests.js20
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();
+ });
});
});
});