From a58fb415fc6465b1a150d7cc295c260b6ac0b9d5 Mon Sep 17 00:00:00 2001 From: Aaron Bohy Date: Mon, 11 Sep 2017 10:26:21 +0200 Subject: [PATCH] [FIX] web: click on many2many tag with no color Before this rev., a traceback was raised when the user clicked on a many2many tag in a kanban view without color field. For instance, it was the case in the kanban view opened by clicking on the Lead/Opportunity section of the activities icon in the systray. --- .../static/src/js/fields/relational_fields.js | 2 +- addons/web/static/tests/views/kanban_tests.js | 37 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js index 5c2b1795e9f..25304b1c6b6 100644 --- a/addons/web/static/src/js/fields/relational_fields.js +++ b/addons/web/static/src/js/fields/relational_fields.js @@ -1678,6 +1678,7 @@ var KanbanFieldMany2ManyTags = FieldMany2ManyTags.extend({ _.each(this.value.data, function (m2m) { var $tag = $('') .text(m2m.data.display_name) + .data('res_id', m2m.res_id) .prepend('') .appendTo(self.$el); if (self.colorField in m2m.data) { @@ -1686,7 +1687,6 @@ var KanbanFieldMany2ManyTags = FieldMany2ManyTags.extend({ $tag.hide(); } else { $tag.addClass('o_tag o_tag_color_' + m2m.data[self.colorField]); - $tag.data('res_id', m2m.res_id); } } else { // display tags in grey by default diff --git a/addons/web/static/tests/views/kanban_tests.js b/addons/web/static/tests/views/kanban_tests.js index 204847ab3bf..6deaf34bbca 100644 --- a/addons/web/static/tests/views/kanban_tests.js +++ b/addons/web/static/tests/views/kanban_tests.js @@ -564,6 +564,43 @@ QUnit.module('Views', { kanban.destroy(); }); + QUnit.test('many2many_tags with no color field and search by tag', function (assert) { + assert.expect(3); + + delete this.data.category.fields.color; + this.data.partner.records[0].category_ids = [6, 7]; + + var kanban = createView({ + View: KanbanView, + model: 'partner', + data: this.data, + arch: '' + + '
' + + '' + + '' + + '
' + + '
', + intercepts: { + add_filter: function (event) { + assert.deepEqual(event.data, { + domain: "[['category_ids','=','gold']]", + help: 'gold', + }, "should trigger an 'add_filter' event with correct data"); + }, + }, + }); + + var $first_record = kanban.$('.o_kanban_record:first()'); + assert.strictEqual($first_record.find('.o_field_many2manytags .o_tag').length, 2, + 'first record should contain 2 tags'); + assert.ok($first_record.find('.o_tag.o_tag_color_0').hasClass('o_tag_color_0'), + 'both tags should have the default color'); + // click on a tag to trigger a search by tag + kanban.$('.o_tag:contains(gold):first').click(); + + kanban.destroy(); + }); + QUnit.test('can drag and drop a record from one column to the next', function (assert) { assert.expect(9);