diff --git a/addons/web/static/src/js/views/kanban/kanban_controller.js b/addons/web/static/src/js/views/kanban/kanban_controller.js index 8e2222be3a9..8a779becdea 100644 --- a/addons/web/static/src/js/views/kanban/kanban_controller.js +++ b/addons/web/static/src/js/views/kanban/kanban_controller.js @@ -82,24 +82,6 @@ var KanbanController = BasicController.extend({ } return this.renderer.updateRecord(this.model.get(id)); }, - /** - * The column quick create should be displayed in kanban iff grouped by an - * m2o field and group_create action enabled. - * - * @private - * @param {Object} state the current state - * @returns {boolean} - */ - _isCreateColumnEnabled: function (state) { - var groupCreate = this.is_action_enabled('group_create'); - if (!groupCreate) { - // pre-return to avoid a lot of the following processing - return false; - } - var groupByField = state.fields[state.groupedBy[0]]; - var groupedByM2o = groupByField && (groupByField.type === 'many2one'); - return !!groupedByM2o; - }, /** * This method calls the server to ask for a resequence. Note that this * does not rerender the user interface, because in most case, the @@ -136,7 +118,7 @@ var KanbanController = BasicController.extend({ _updateButtons: function () { if (this.$buttons) { var state = this.model.get(this.handle, {raw: true}); - var createHidden = state.data.length === 0 && this._isCreateColumnEnabled(state); + var createHidden = this.is_action_enabled('group_create') && state.isGroupedByM2ONoColumn; this.$buttons.find('.o-kanban-button-new').toggleClass('o_hidden', createHidden); } }, diff --git a/addons/web/static/src/js/views/kanban/kanban_model.js b/addons/web/static/src/js/views/kanban/kanban_model.js index 676dfdfac86..15d6284cfad 100644 --- a/addons/web/static/src/js/views/kanban/kanban_model.js +++ b/addons/web/static/src/js/views/kanban/kanban_model.js @@ -131,7 +131,11 @@ var KanbanModel = BasicModel.extend({ }); }, /** - * Add the key `tooltipData` (kanban specific) when performing a `geĊ§`. + * Add the following (kanban specific) keys when performing a `get`: + * + * - tooltipData + * - progressBarValues + * - isGroupedByM2ONoColumn * * @override * @see _readTooltipFields @@ -140,11 +144,19 @@ var KanbanModel = BasicModel.extend({ get: function () { var result = this._super.apply(this, arguments); var dp = result && this.localData[result.id]; - if (dp && dp.tooltipData) { - result.tooltipData = $.extend(true, {}, dp.tooltipData); - } - if (dp && dp.progressBarValues) { - result.progressBarValues = $.extend(true, {}, dp.progressBarValues); + if (dp) { + if (dp.tooltipData) { + result.tooltipData = $.extend(true, {}, dp.tooltipData); + } + if (dp.progressBarValues) { + result.progressBarValues = $.extend(true, {}, dp.progressBarValues); + } + if (dp.fields[dp.groupedBy[0]]) { + var groupedByM2O = dp.fields[dp.groupedBy[0]].type === 'many2one'; + result.isGroupedByM2ONoColumn = !dp.data.length && groupedByM2O; + } else { + result.isGroupedByM2ONoColumn = false; + } } return result; }, 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 4236ce74da4..913a4257257 100644 --- a/addons/web/static/src/js/views/kanban/kanban_renderer.js +++ b/addons/web/static/src/js/views/kanban/kanban_renderer.js @@ -350,7 +350,8 @@ var KanbanRenderer = BasicRenderer.extend({ !remove && !this._hasContent() && !!this.noContentHelp && - !(this.quickCreate && !this.quickCreate.folded); + !(this.quickCreate && !this.quickCreate.folded) && + !this.state.isGroupedByM2ONoColumn; var $noContentHelper = this.$('.o_view_nocontent'); diff --git a/addons/web/static/tests/views/kanban_tests.js b/addons/web/static/tests/views/kanban_tests.js index 12ffe1ae3d2..72b0bd84c7c 100644 --- a/addons/web/static/tests/views/kanban_tests.js +++ b/addons/web/static/tests/views/kanban_tests.js @@ -2464,8 +2464,8 @@ QUnit.module('Views', { "there should be no columns"); assert.strictEqual(kanban.$('.o_kanban_record').length, 0, "there should be no records"); - assert.strictEqual(kanban.$('.o_view_nocontent').length, 1, - "there should be a nocontent helper"); + assert.strictEqual(kanban.$('.o_view_nocontent').length, 0, + "there should not be a nocontent helper"); assert.strictEqual(kanban.$('.o_column_quick_create').length, 0, "there should not be a column quick create"); kanban.destroy();