From 04bc03ced200248ca6d607dc95a91bd5fdadb004 Mon Sep 17 00:00:00 2001 From: Aaron Bohy Date: Wed, 22 Mar 2017 16:29:26 +0100 Subject: [PATCH] [IMP] web: Kanban grouped: don't allow to sort column ... if not grouped by m2o, as it won't save anything in database anyway, so at the next refresh of the view the new order will be lost. --- .../src/js/views/kanban/kanban_renderer.js | 47 ++++++++++--------- addons/web/static/src/less/kanban_view.less | 5 +- addons/web/static/test/views/kanban_tests.js | 8 +++- 3 files changed, 34 insertions(+), 26 deletions(-) diff --git a/addons/web/static/src/js/views/kanban/kanban_renderer.js b/addons/web/static/src/js/views/kanban/kanban_renderer.js index faeb08d72bc..d49149debc3 100644 --- a/addons/web/static/src/js/views/kanban/kanban_renderer.js +++ b/addons/web/static/src/js/views/kanban/kanban_renderer.js @@ -247,30 +247,33 @@ var KanbanRenderer = BasicRenderer.extend({ } }); - // Enable column sorting - this.$el.sortable({ - axis: 'x', - items: '> .o_kanban_group', - handle: '.o_kanban_header', - cursor: 'move', - revert: 150, - delay: 100, - tolerance: 'pointer', - forcePlaceholderSize: true, - stop: function () { - var ids = []; - self.$('.o_kanban_group').each(function (index, u) { - ids.push($(u).data('id')); - }); - self.trigger_up('resequence_columns', {ids: ids}); - }, - }); + if (groupedByM2O) { + // Enable column sorting + this.$el.sortable({ + axis: 'x', + items: '> .o_kanban_group', + handle: '.o_kanban_header', + cursor: 'move', + revert: 150, + delay: 100, + tolerance: 'pointer', + forcePlaceholderSize: true, + stop: function () { + var ids = []; + self.$('.o_kanban_group').each(function (index, u) { + ids.push($(u).data('id')); + }); + self.trigger_up('resequence_columns', {ids: ids}); + }, + }); - // Column quick create - if (this.columnOptions.group_creatable && groupedByM2O) { - var quickCreate = new ColumnQuickCreate(this); - quickCreate.appendTo(fragment); + // Enable column quickcreate + if (this.columnOptions.group_creatable) { + var quickCreate = new ColumnQuickCreate(this); + quickCreate.appendTo(fragment); + } } + }, /** * Renders an ungrouped kanban view in a fragment. diff --git a/addons/web/static/src/less/kanban_view.less b/addons/web/static/src/less/kanban_view.less index fa66da84641..9b2f914d3b4 100644 --- a/addons/web/static/src/less/kanban_view.less +++ b/addons/web/static/src/less/kanban_view.less @@ -389,7 +389,6 @@ margin: 0 @o-kanban-record-margin; height: 50px; line-height: 2.2; - cursor: move; .o-flex-display(); .o_column_unfold { display: none; @@ -473,7 +472,9 @@ } } } - + &.ui-sortable .o_kanban_header { + cursor: move; + } .o_column_quick_create { background-color: darken(@odoo-webclient-background-color, 10%); cursor: pointer; diff --git a/addons/web/static/test/views/kanban_tests.js b/addons/web/static/test/views/kanban_tests.js index 25b3504eb89..eaa33a0b396 100644 --- a/addons/web/static/test/views/kanban_tests.js +++ b/addons/web/static/test/views/kanban_tests.js @@ -265,7 +265,7 @@ QUnit.module('Views', { }); QUnit.test('create in grouped on m2o', function (assert) { - assert.expect(4); + assert.expect(5); var kanban = createView({ View: KanbanView, @@ -281,6 +281,8 @@ QUnit.module('Views', { }); kanban.renderButtons(); + assert.ok(kanban.$('.o_kanban_view').hasClass('ui-sortable'), + "columns are sortable when grouped by a m2o field"); assert.ok(kanban.$buttons.find('.o-kanban-button-new').hasClass('btn-primary'), "'create' button should be btn-primary for grouped kanban with at least one column"); assert.ok(kanban.$('.o_kanban_view > div:last').hasClass('o_column_quick_create'), @@ -296,7 +298,7 @@ QUnit.module('Views', { }); QUnit.test('create in grouped on char', function (assert) { - assert.expect(3); + assert.expect(4); var kanban = createView({ View: KanbanView, @@ -310,6 +312,8 @@ QUnit.module('Views', { groupBy: ['foo'], }); + assert.ok(!kanban.$('.o_kanban_view').hasClass('ui-sortable'), + "columns aren't sortable when not grouped by a m2o field"); assert.strictEqual(kanban.$('.o_kanban_group').length, 3, "should have " + 3 + " columns"); assert.strictEqual(kanban.$('.o_kanban_group:first() .o_column_title').text(), "yop", "'yop' column should be the first column");