From 23e84c17508697d17d5a6433f6ea7f760aa314f4 Mon Sep 17 00:00:00 2001 From: Mathieu Duckerts-Antoine Date: Tue, 7 Sep 2021 06:22:56 +0000 Subject: [PATCH] [IMP] project: new ProjectControlPanel class The reporting views are going to be converted to OWL so that their extensions (like the project_graph and project_pivot views) have to be converted too. We thus need an owl version of the ProjectControlPanel class. Here we introduce that control panel and refactor a bit the legacy code. Part-of: odoo/odoo#73311 --- addons/project/__manifest__.py | 3 +- .../project_control_panel.js | 51 +++++++++++++++++++ .../project_control_panel.xml | 34 +++++++++++++ .../static/src/xml/project_templates.xml | 23 ++------- 4 files changed, 91 insertions(+), 20 deletions(-) create mode 100644 addons/project/static/src/project_control_panel/project_control_panel.js create mode 100644 addons/project/static/src/project_control_panel/project_control_panel.xml diff --git a/addons/project/__manifest__.py b/addons/project/__manifest__.py index d635e16c866..831a8482575 100644 --- a/addons/project/__manifest__.py +++ b/addons/project/__manifest__.py @@ -59,6 +59,7 @@ 'post_init_hook': '_project_post_init', 'assets': { 'web.assets_backend': [ + 'project/static/src/project_control_panel/*', 'project/static/src/css/project.css', 'project/static/src/js/project_activity.js', 'project/static/src/js/project_control_panel.js', @@ -85,7 +86,7 @@ 'project/static/src/js/portal_rating.js', ], 'web.assets_qweb': [ - 'project/static/src/xml/**/*', + 'project/static/src/**/*.xml', ], 'web.qunit_suite_tests': [ 'project/static/tests/burndown_chart_tests.js', diff --git a/addons/project/static/src/project_control_panel/project_control_panel.js b/addons/project/static/src/project_control_panel/project_control_panel.js new file mode 100644 index 00000000000..6d415a547ff --- /dev/null +++ b/addons/project/static/src/project_control_panel/project_control_panel.js @@ -0,0 +1,51 @@ +/** @odoo-module **/ + +import { ControlPanel } from "@web/search/control_panel/control_panel"; +import { useService } from "@web/core/utils/hooks"; + +export class ProjectControlPanel extends ControlPanel { + constructor() { + super(...arguments); + this.orm = useService("orm"); + this.user = useService("user"); + const { active_id, show_project_update } = this.env.searchModel.globalContext; + this.showProjectUpdate = this.env.searchModel.view.type === "form" || show_project_update; + this.projectId = this.showProjectUpdate ? active_id : false; + } + + async willStart() { + const proms = [super.willStart(...arguments)]; + if (this.showProjectUpdate) { + proms.push(this.loadData()); + } + await Promise.all(proms); + } + + async willUpdateProps() { + const proms = [super.willUpdateProps(...arguments)]; + if (this.showProjectUpdate) { + proms.push(this.loadData()); + } + await Promise.all(proms); + } + + async loadData() { + const [data, isProjectUser] = await Promise.all([ + this.orm.call("project.project", "get_last_update_or_default", [this.projectId]), + this.user.hasGroup("project.group_project_user"), + ]); + this.data = data; + this.isProjectUser = isProjectUser; + } + + async onStatusClick(ev) { + ev.preventDefault(); + this.actionService.doAction("project.project_update_all_action", { + additionalContext: { + default_project_id: this.projectId, + active_id: this.projectId, + }, + }); + } +} +ProjectControlPanel.template = "project.ProjectControlPanel"; diff --git a/addons/project/static/src/project_control_panel/project_control_panel.xml b/addons/project/static/src/project_control_panel/project_control_panel.xml new file mode 100644 index 00000000000..44aa7941a7f --- /dev/null +++ b/addons/project/static/src/project_control_panel/project_control_panel.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + +
  • + +
  • +
  • + +
  • +
    +
    + + + + + + + + + + + + + +
    diff --git a/addons/project/static/src/xml/project_templates.xml b/addons/project/static/src/xml/project_templates.xml index 55aad92746c..1369eefb859 100644 --- a/addons/project/static/src/xml/project_templates.xml +++ b/addons/project/static/src/xml/project_templates.xml @@ -19,28 +19,13 @@
    - + + + +
    - - - - - - - - - -
  • - -
  • -
  • - -
  • -
    -
    -