From bb9ef004524e21c642abdff16aa6caa9abbb37ba Mon Sep 17 00:00:00 2001 From: Dhruv Patel Date: Mon, 29 Jun 2020 10:02:25 +0000 Subject: [PATCH] [IMP] web: support action helper on gantt view Currently, only List and Kanban view supports the action helper and display the folder icon with the helper text. With this commit we have also provided the action helper support for other views. The logic for no content helper has been moved in abstract_renderer.js so that it can be accessed by all views. This was done mainly to give the action helper to the gantt view. closes odoo/odoo#53902 Task: 2284779 Related: odoo/enterprise#11563 Signed-off-by: Mathieu Duckerts-Antoine Co-authored-by: Mathieu Duckerts-Antoine Co-authored-by: Mohammed Shekha --- .../static/src/js/views/abstract_renderer.js | 20 +++++++++++++++++++ .../src/js/views/basic/basic_renderer.js | 16 --------------- .../src/js/views/graph/graph_renderer.js | 19 ------------------ .../src/js/views/kanban/kanban_renderer.js | 2 +- .../static/src/js/views/list/list_renderer.js | 2 +- 5 files changed, 22 insertions(+), 37 deletions(-) diff --git a/addons/web/static/src/js/views/abstract_renderer.js b/addons/web/static/src/js/views/abstract_renderer.js index b1e30ca29bd..5e72a4827b7 100644 --- a/addons/web/static/src/js/views/abstract_renderer.js +++ b/addons/web/static/src/js/views/abstract_renderer.js @@ -132,6 +132,26 @@ return mvc.Renderer.extend({ await this._renderView(); this._suppressFocusableElements(); }, + /** + * @private + * @param {Object} context + */ + _renderNoContentHelper: function (context) { + let templateName; + if (!context && this.noContentHelp) { + templateName = "web.ActionHelper"; + context = { noContentHelp: this.noContentHelp }; + } else { + templateName = "web.NoContentHelper"; + } + const template = document.createElement('template'); + // FIXME: retrieve owl qweb instance via the env set on Component s.t. + // it also works in the tests (importing 'web.env' wouldn't). This + // won't be necessary as soon as this will be written in owl. + const owlQWeb = owl.Component.env.qweb; + template.innerHTML = owlQWeb.renderToString(templateName, context); + this.el.append(template.content.firstChild); + }, /** * Actual rendering. This method is meant to be overridden by concrete * renderers. diff --git a/addons/web/static/src/js/views/basic/basic_renderer.js b/addons/web/static/src/js/views/basic/basic_renderer.js index d0778ded0fd..b324d2ea772 100644 --- a/addons/web/static/src/js/views/basic/basic_renderer.js +++ b/addons/web/static/src/js/views/basic/basic_renderer.js @@ -761,22 +761,6 @@ var BasicRenderer = AbstractRenderer.extend(WidgetAdapterMixin, { return $el; }, - /** - * Renders the nocontent helper. - * - * This method is a helper for renderers that want to display a help - * message when no content is available. - * - * @private - * @returns {jQueryElement} - */ - _renderNoContentHelper: function () { - var $noContent = - $('
').html(this.noContentHelp).addClass('o_nocontent_help'); - return $('
') - .addClass('o_view_nocontent') - .append($noContent); - }, /** * Instantiate custom widgets * diff --git a/addons/web/static/src/js/views/graph/graph_renderer.js b/addons/web/static/src/js/views/graph/graph_renderer.js index 5cbe3f75324..118245f997b 100644 --- a/addons/web/static/src/js/views/graph/graph_renderer.js +++ b/addons/web/static/src/js/views/graph/graph_renderer.js @@ -895,25 +895,6 @@ return AbstractRenderer.extend({ options: options, }); }, - /** - * @private - */ - _renderNoContentHelper: function (context) { - let templateName; - if (!context && this.noContentHelp) { - templateName = "web.ActionHelper"; - context = { noContentHelp: this.noContentHelp }; - } else { - templateName = "web.NoContentHelper"; - } - const template = document.createElement('template'); - // FIXME: retrieve owl qweb instance via the env set on Component s.t. - // it also works in the tests (importing 'web.env' wouldn't). This won't - // be necessary as soon as this rendering will be written in owl. - const OwlQweb = owl.Component.env.qweb; - template.innerHTML = OwlQweb.renderToString(templateName, context); - this.el.append(template.content.firstChild); - }, /** * create pie chart * 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 8ea7abaa7af..555bbd665fa 100644 --- a/addons/web/static/src/js/views/kanban/kanban_renderer.js +++ b/addons/web/static/src/js/views/kanban/kanban_renderer.js @@ -490,7 +490,7 @@ var KanbanRenderer = BasicRenderer.extend({ var $noContentHelper = this.$('.o_view_nocontent'); if (displayNoContentHelper && !$noContentHelper.length) { - this.$el.append(this._renderNoContentHelper()); + this._renderNoContentHelper(); } if (!displayNoContentHelper && $noContentHelper.length) { $noContentHelper.remove(); diff --git a/addons/web/static/src/js/views/list/list_renderer.js b/addons/web/static/src/js/views/list/list_renderer.js index eaa06929d35..79e2fa10055 100644 --- a/addons/web/static/src/js/views/list/list_renderer.js +++ b/addons/web/static/src/js/views/list/list_renderer.js @@ -1114,7 +1114,7 @@ var ListRenderer = BasicRenderer.extend({ // display the no content helper if necessary if (!this._hasContent() && !!this.noContentHelp) { - this.$el.append(this._renderNoContentHelper()); + this._renderNoContentHelper(); } }, /**