diff --git a/web_widget_json_graph/README.rst b/web_widget_json_graph/README.rst index 88a76936a..9f5a74e74 100644 --- a/web_widget_json_graph/README.rst +++ b/web_widget_json_graph/README.rst @@ -14,13 +14,13 @@ Web Widget JSON Graph :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html :alt: License: LGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github - :target: https://github.com/OCA/web/tree/12.0/web_widget_json_graph + :target: https://github.com/OCA/web/tree/15.0/web_widget_json_graph :alt: OCA/web .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/web-12-0/web-12-0-web_widget_json_graph + :target: https://translation.odoo-community.org/projects/web-15-0/web-15-0-web_widget_json_graph :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/12.0 + :target: https://runbot.odoo-community.org/runbot/162/15.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -28,7 +28,7 @@ Web Widget JSON Graph This module allows to load a line graph per ordered pair from an One2many or Many2many field. -.. image:: https://raw.githubusercontent.com/OCA/web/12.0/web_widget_json_graph/static/description/widget_in_action.png +.. image:: https://raw.githubusercontent.com/OCA/web/15.0/web_widget_json_graph/static/description/widget_in_action.png :width: 400px :alt: Widget in action @@ -50,70 +50,64 @@ For example:: The JSON needs to be like:: - fields = ['field1', 'field2', 'field3', ...] - field_x = 'field_x' - dictionary = self.value_ids.sorted(field_x).read(fields) - color = { - 'field1': HEXCOLOR1, - 'field2': '#FFBB78', - 'field3': '#1F77B4', - ... - } - dictionary = self.value_ids.sorted(field_x).read(fields) - content = {} - data = [] - for field in fields: - if field != field_x: - content[field] = [] - for rec in dictionary: - content[field].append({'x': rec[field_x], 'y': rec[field]}) - if field in color: - data.append({'values': content[field], 'key': field, - 'color': color[field]}) - continue - data.append({'values': content[field], 'key': field}) info = { - 'label_x': 'X Label', - 'label_y': 'Y label', - 'data': data + "type": "line", + "data": {"datasets": [], "labels": []}, + "options": { + "scales": { + "yAxes": [ + { + "ticks": {"beginAtZero": True, "stacked": False}, + "scaleLabel": {"display": True, "labelString": "Quantity"}, + } + ], + "xAxes": [ + { + "scaleLabel": {"display": True, "labelString": "Date"}, + } + ], + }, + "elements": {"point": {"radius": 3}}, + "legend": {"labels": {"usePointStyle": True}}, + "tooltips": {"intersect": False, "axis": "xy", "mode": "index"}, + }, } self.field_text_json = json.dumps(info) For example:: - fields = ['sequence', 'value', 'sma', 'cma'] - field_x = 'sequence' - dictionary = self.value_ids.sorted(field_x).read(fields) - color = { - 'value': '#2CA02C', - 'sma': '#FFBB78' - } - dictionary = self.value_ids.sorted(field_x).read(fields) - content = {} - data = [] - for field in fields: - if field != field_x: - content[field] = [] - for rec in dictionary: - content[field].append({'x': rec[field_x], 'y': rec[field]}) - if field in color: - data.append({'values': content[field], 'key': field, - 'color': color[field]}) - continue - data.append({'values': content[field], 'key': field}) + plot_dataset = [1, 2, 3, 4, 3, 2] + labels = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"] info = { - 'label_x': 'Sequence', - 'label_y': '', - 'data': data + "type": "line", + "data": {"datasets": plot_dataset, "labels": labels}, + "options": { + "scales": { + "yAxes": [ + { + "ticks": {"beginAtZero": True, "stacked": False}, + "scaleLabel": {"display": True, "labelString": "Quantity"}, + } + ], + "xAxes": [ + { + "scaleLabel": {"display": True, "labelString": "Date"}, + } + ], + }, + "elements": {"point": {"radius": 3}}, + "legend": {"labels": {"usePointStyle": True}}, + "tooltips": {"intersect": False, "axis": "xy", "mode": "index"}, + }, } self.values_data = json.dumps(info) +For more information, please see `Chart Js Documentation `. + Known issues / Roadmap ====================== -* ``nolabel`` is ignored, this image will never bring a label, by default simply use an extra separator. -* A graph will always use 100% of the width, pending the css dynamic attribute. -* Height is harcoded. +* None Bug Tracker =========== @@ -121,7 +115,7 @@ 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 `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -162,11 +156,14 @@ promote its widespread use. .. |maintainer-luisg123v| image:: https://github.com/luisg123v.png?size=40px :target: https://github.com/luisg123v :alt: luisg123v +.. |maintainer-frahikLV| image:: https://github.com/frahikLV.png?size=40px + :target: https://github.com/frahikLV + :alt: frahikLV -Current `maintainer `__: +Current `maintainers `__: -|maintainer-luisg123v| +|maintainer-luisg123v| |maintainer-frahikLV| -This module is part of the `OCA/web `_ project on GitHub. +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_json_graph/static/description/index.html b/web_widget_json_graph/static/description/index.html index 25c77de5a..692461cd5 100644 --- a/web_widget_json_graph/static/description/index.html +++ b/web_widget_json_graph/static/description/index.html @@ -367,10 +367,10 @@ ul.auto-toc { !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

This module allows to load a line graph per ordered pair from an One2many or Many2many field.

-Widget in action +Widget in action

Table of contents

    @@ -398,71 +398,64 @@ Many2many field.

    The JSON needs to be like:

    -fields = ['field1', 'field2', 'field3', ...]
    -field_x = 'field_x'
    -dictionary = self.value_ids.sorted(field_x).read(fields)
    -color = {
    -    'field1': HEXCOLOR1,
    -    'field2': '#FFBB78',
    -    'field3': '#1F77B4',
    -    ...
    -}
    -dictionary = self.value_ids.sorted(field_x).read(fields)
    -content = {}
    -data = []
    -for field in fields:
    -    if field != field_x:
    -        content[field] = []
    -        for rec in dictionary:
    -            content[field].append({'x': rec[field_x], 'y': rec[field]})
    -        if field in color:
    -            data.append({'values': content[field], 'key': field,
    -                'color': color[field]})
    -            continue
    -        data.append({'values': content[field], 'key': field})
     info = {
    -    'label_x': 'X Label',
    -    'label_y': 'Y label',
    -    'data': data
    +    "type": "line",
    +    "data": {"datasets": [], "labels": []},
    +    "options": {
    +        "scales": {
    +            "yAxes": [
    +                {
    +                    "ticks": {"beginAtZero": True, "stacked": False},
    +                    "scaleLabel": {"display": True, "labelString": "Quantity"},
    +                }
    +            ],
    +            "xAxes": [
    +                {
    +                    "scaleLabel": {"display": True, "labelString": "Date"},
    +                }
    +            ],
    +        },
    +        "elements": {"point": {"radius": 3}},
    +        "legend": {"labels": {"usePointStyle": True}},
    +        "tooltips": {"intersect": False, "axis": "xy", "mode": "index"},
    +    },
     }
     self.field_text_json = json.dumps(info)
     

    For example:

    -fields = ['sequence', 'value', 'sma', 'cma']
    -field_x = 'sequence'
    -dictionary = self.value_ids.sorted(field_x).read(fields)
    -color = {
    -    'value': '#2CA02C',
    -    'sma': '#FFBB78'
    -}
    -dictionary = self.value_ids.sorted(field_x).read(fields)
    -content = {}
    -data = []
    -for field in fields:
    -    if field != field_x:
    -        content[field] = []
    -        for rec in dictionary:
    -            content[field].append({'x': rec[field_x], 'y': rec[field]})
    -        if field in color:
    -            data.append({'values': content[field], 'key': field,
    -                'color': color[field]})
    -            continue
    -        data.append({'values': content[field], 'key': field})
    +plot_dataset = [1, 2, 3, 4, 3, 2]
    +labels = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
     info = {
    -    'label_x': 'Sequence',
    -    'label_y': '',
    -    'data': data
    +    "type": "line",
    +    "data": {"datasets": plot_dataset, "labels": labels},
    +    "options": {
    +        "scales": {
    +            "yAxes": [
    +                {
    +                    "ticks": {"beginAtZero": True, "stacked": False},
    +                    "scaleLabel": {"display": True, "labelString": "Quantity"},
    +                }
    +            ],
    +            "xAxes": [
    +                {
    +                    "scaleLabel": {"display": True, "labelString": "Date"},
    +                }
    +            ],
    +        },
    +        "elements": {"point": {"radius": 3}},
    +        "legend": {"labels": {"usePointStyle": True}},
    +        "tooltips": {"intersect": False, "axis": "xy", "mode": "index"},
    +    },
     }
     self.values_data = json.dumps(info)
     
    +

    For more information, please see Chart Js Documentation <https://www.chartjs.org/docs/2.9.4/>.

Known issues / Roadmap

    -
  • nolabel is ignored, this image will never bring a label, by default simply use an extra separator.
  • -
  • A graph will always use 100% of the width, pending the css dynamic attribute.
  • -
  • Height is harcoded.
  • +
  • None
@@ -470,7 +463,7 @@ self.values_data = json.dumps(info)

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.

+feedback.

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

@@ -501,9 +494,9 @@ If you spotted it first, help us smashing it by providing a detailed and welcome

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.

-

Current maintainer:

-

luisg123v

-

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

+

Current maintainers:

+

luisg123v frahikLV

+

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.