diff --git a/web_widget_statusbar_visible_from_record/README.rst b/web_widget_statusbar_visible_from_record/README.rst new file mode 100644 index 000000000000..989213dc92a3 --- /dev/null +++ b/web_widget_statusbar_visible_from_record/README.rst @@ -0,0 +1,99 @@ +================================================ +Statusbar widget: get visible states from record +================================================ + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github + :target: https://github.com/OCA/web/tree/14.0/web_widget_statusbar_visible_from_record + :alt: OCA/web +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/web-14-0/web-14-0-web_widget_statusbar_visible_from_record + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/162/14.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This technical module allows you as a developer to determine which states +are visible in the statusbar widget per record per field. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +Having a model with a field `stage_id` that is displayed with +`widget="statusbar"`, with this module installed you can add a `Char` field +`stage_id_visible_states` that you can populate with a comma-separated list of +states that you want to make visible for each record on its form view. + +If your state field is of type `Many2one`, the contents of your visible states +field needs to be a comma-separated list of numeric ids. + +The visible states field needs to be present in the form view, but it can be +invisible. + +The current state of the record is always visible, even if it is not in the +list of visible states for your record. + +If the visible states field is not populated, all states will be visible. + +Odoo provides a `visible_states` attribute on the widget level itself. It can +be used to globally filter out states that should be visible. When both +mechanisms are active, a state has to be present in both lists to be visible. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Opener B.V. + +Other credits +~~~~~~~~~~~~~ + +The development of this module has been made possible by: + +* Talpa eCommerce + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/web `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/web_widget_statusbar_visible_from_record/__init__.py b/web_widget_statusbar_visible_from_record/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/web_widget_statusbar_visible_from_record/__manifest__.py b/web_widget_statusbar_visible_from_record/__manifest__.py new file mode 100644 index 000000000000..10196530e9fb --- /dev/null +++ b/web_widget_statusbar_visible_from_record/__manifest__.py @@ -0,0 +1,12 @@ +# Copyright 2022 Opener B.V. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +{ + "name": "Statusbar widget: get visible states from record", + "version": "14.0.1.0.0", + "category": "Web", + "author": "Opener B.V.,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/web", + "license": "AGPL-3", + "depends": ["web"], + "data": ["views/assets_backend_views.xml"], +} diff --git a/web_widget_statusbar_visible_from_record/readme/CONFIGURE.rst b/web_widget_statusbar_visible_from_record/readme/CONFIGURE.rst new file mode 100644 index 000000000000..ca11aee333b5 --- /dev/null +++ b/web_widget_statusbar_visible_from_record/readme/CONFIGURE.rst @@ -0,0 +1,19 @@ +Having a model with a field `stage_id` that is displayed with +`widget="statusbar"`, with this module installed you can add a `Char` field +`stage_id_visible_states` that you can populate with a comma-separated list of +states that you want to make visible for each record on its form view. + +If your state field is of type `Many2one`, the contents of your visible states +field needs to be a comma-separated list of numeric ids. + +The visible states field needs to be present in the form view, but it can be +invisible. + +The current state of the record is always visible, even if it is not in the +list of visible states for your record. + +If the visible states field is not populated, all states will be visible. + +Odoo provides a `visible_states` attribute on the widget level itself. It can +be used to globally filter out states that should be visible. When both +mechanisms are active, a state has to be present in both lists to be visible. diff --git a/web_widget_statusbar_visible_from_record/readme/CONTRIBUTORS.txt b/web_widget_statusbar_visible_from_record/readme/CONTRIBUTORS.txt new file mode 100644 index 000000000000..3a29acd033ff --- /dev/null +++ b/web_widget_statusbar_visible_from_record/readme/CONTRIBUTORS.txt @@ -0,0 +1 @@ +* Stefan Rijnhart diff --git a/web_widget_statusbar_visible_from_record/readme/CREDITS.rst b/web_widget_statusbar_visible_from_record/readme/CREDITS.rst new file mode 100644 index 000000000000..9aaf471df68b --- /dev/null +++ b/web_widget_statusbar_visible_from_record/readme/CREDITS.rst @@ -0,0 +1,3 @@ +The development of this module has been made possible by: + +* Talpa eCommerce diff --git a/web_widget_statusbar_visible_from_record/readme/DESCRIPTION.rst b/web_widget_statusbar_visible_from_record/readme/DESCRIPTION.rst new file mode 100644 index 000000000000..e08f1e25a4f6 --- /dev/null +++ b/web_widget_statusbar_visible_from_record/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +This technical module allows you as a developer to determine which states +are visible in the statusbar widget per record per field. diff --git a/web_widget_statusbar_visible_from_record/static/description/index.html b/web_widget_statusbar_visible_from_record/static/description/index.html new file mode 100644 index 000000000000..c2f376fa354a --- /dev/null +++ b/web_widget_statusbar_visible_from_record/static/description/index.html @@ -0,0 +1,439 @@ + + + + + + +Statusbar widget: get visible states from record + + + +
+

Statusbar widget: get visible states from record

+ + +

Beta License: AGPL-3 OCA/web Translate me on Weblate Try me on Runbot

+

This technical module allows you as a developer to determine which states +are visible in the statusbar widget per record per field.

+

Table of contents

+ +
+

Configuration

+

Having a model with a field stage_id that is displayed with +widget=”statusbar”, with this module installed you can add a Char field +stage_id_visible_states that you can populate with a comma-separated list of +states that you want to make visible for each record on its form view.

+

If your state field is of type Many2one, the contents of your visible states +field needs to be a comma-separated list of numeric ids.

+

The visible states field needs to be present in the form view, but it can be +invisible.

+

The current state of the record is always visible, even if it is not in the +list of visible states for your record.

+

If the visible states field is not populated, all states will be visible.

+

Odoo provides a visible_states attribute on the widget level itself. It can +be used to globally filter out states that should be visible. When both +mechanisms are active, a state has to be present in both lists to be visible.

+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Opener B.V.
  • +
+
+
+

Other credits

+

The development of this module has been made possible by:

+
    +
  • Talpa eCommerce
  • +
+
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/web project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/web_widget_statusbar_visible_from_record/static/src/js/web_widget_statusbar_visible_from_record.js b/web_widget_statusbar_visible_from_record/static/src/js/web_widget_statusbar_visible_from_record.js new file mode 100644 index 000000000000..025394180283 --- /dev/null +++ b/web_widget_statusbar_visible_from_record/static/src/js/web_widget_statusbar_visible_from_record.js @@ -0,0 +1,29 @@ +/* Copyright 2022 Stefan Rijnhart + License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). */ +odoo.define("web_widget_statusbar_visible_from_record", function (require) { + "use strict"; + var FieldStatus = require("web.relational_fields").FieldStatus; + var DynamicFieldStatus = FieldStatus.include({ + _setState: function () { + /* + Query the record for a field "_visible_states" + containing a comma separated list to filter visible states by. + */ + this._super(); + const visible_states_string = this.recordData[ + this.name + "_visible_states" + ]; + if (visible_states_string) { + const visible_states = visible_states_string.split(","); + this.status_information = this.status_information.filter(function ( + value, + index, // eslint-disable-line no-unused-vars + arr // eslint-disable-line no-unused-vars + ) { + return value.selected || visible_states.includes(String(value.id)); + }); + } + }, + }); + return DynamicFieldStatus; +}); diff --git a/web_widget_statusbar_visible_from_record/views/assets_backend_views.xml b/web_widget_statusbar_visible_from_record/views/assets_backend_views.xml new file mode 100644 index 000000000000..409cd6a09279 --- /dev/null +++ b/web_widget_statusbar_visible_from_record/views/assets_backend_views.xml @@ -0,0 +1,17 @@ + + + +