diff --git a/setup/web_widget_remote_measure/odoo/addons/web_widget_remote_measure b/setup/web_widget_remote_measure/odoo/addons/web_widget_remote_measure deleted file mode 120000 index 8b24be629..000000000 --- a/setup/web_widget_remote_measure/odoo/addons/web_widget_remote_measure +++ /dev/null @@ -1 +0,0 @@ -../../../../web_widget_remote_measure \ No newline at end of file diff --git a/setup/web_widget_remote_measure/setup.py b/setup/web_widget_remote_measure/setup.py deleted file mode 100644 index 28c57bb64..000000000 --- a/setup/web_widget_remote_measure/setup.py +++ /dev/null @@ -1,6 +0,0 @@ -import setuptools - -setuptools.setup( - setup_requires=['setuptools-odoo'], - odoo_addon=True, -) diff --git a/web_widget_remote_measure/README.rst b/web_widget_remote_measure/README.rst deleted file mode 100644 index b3987d3db..000000000 --- a/web_widget_remote_measure/README.rst +++ /dev/null @@ -1,133 +0,0 @@ -============================ -Remote Measure Devices Input -============================ - -.. - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! This file is generated by oca-gen-addon-readme !! - !! changes will be overwritten. !! - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:21bff9cec19c28e304b5f4553dff7661daddd2a1e87947a72b621a9eeeade61b - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -.. |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/15.0/web_widget_remote_measure - :alt: OCA/web -.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/web-15-0/web-15-0-web_widget_remote_measure - :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/web&target_branch=15.0 - :alt: Try me on Runboat - -|badge1| |badge2| |badge3| |badge4| |badge5| - -This module allows to input data from remote devices in your network. Currently, only -websockets devices are supported, but it can be extended for any protocol like -Webservices. - -Other modules can extend this one in order to use the widget. - -**Table of contents** - -.. contents:: - :local: - -Configuration -============= - -To configure your remote devices: - -#. Go to *Settings > Technical > Devices > Remote devices* -#. Create a new one configuring the required info. -#. If the devices has an special port, set it up in the host data: e.g.: 10.1.1.2:3210 - -Usage -===== - -The remote device has to be in the users network so their web clients can reach them. - -In order to test a device you can: - -#. Go to *Settings > Technical > Devices > Remote devices* -#. In the Kanban view you'll wich devices can be reached as they'll have a green dot in - their card. -#. Go to one of those and click *Edit*. -#. You can start measuring from the remote device in the *Test measure* field. - -On the technical side, you can use the widget in your own `Float``. You'll need to -provide an uom field so records that aren't in that UoM don't measure from the device. - -.. code:: xml - - - -Known issues / Roadmap -====================== - -Current support: - -- Websockets connection -- F501 protocol on continuous message stream. - -But this is a commonground to add: - -- Other connection interfaces like Webservices APIs -- Other device protocols. -- Active device controls, la Tare, resets, etc. - -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 to smash it by providing a detailed and welcomed -`feedback `_. - -Do not contact contributors directly about support or help with technical issues. - -Credits -======= - -Authors -~~~~~~~ - -* Tecnativa - -Contributors -~~~~~~~~~~~~ - -* `Tecnativa `_: - - * David Vidal - -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. - -.. |maintainer-chienandalu| image:: https://github.com/chienandalu.png?size=40px - :target: https://github.com/chienandalu - :alt: chienandalu - -Current `maintainer `__: - -|maintainer-chienandalu| - -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_remote_measure/__init__.py b/web_widget_remote_measure/__init__.py deleted file mode 100644 index 0650744f6..000000000 --- a/web_widget_remote_measure/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from . import models diff --git a/web_widget_remote_measure/__manifest__.py b/web_widget_remote_measure/__manifest__.py deleted file mode 100644 index a90e6b4d6..000000000 --- a/web_widget_remote_measure/__manifest__.py +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2023 Tecnativa - David Vidal -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -{ - "name": "Remote Measure Devices Input", - "summary": "Allows to connect to remote devices to record measures", - "version": "15.0.1.0.0", - "author": "Tecnativa, Odoo Community Association (OCA)", - "website": "https://github.com/OCA/web", - "maintainers": ["chienandalu"], - "license": "AGPL-3", - "category": "Stock", - "depends": ["web", "uom"], - "data": [ - "views/remote_measure_device_views.xml", - "views/res_users_views.xml", - "security/ir.model.access.csv", - ], - "assets": { - "web.assets_backend": [ - "web_widget_remote_measure/static/src/**/*.js", - "web_widget_remote_measure/static/src/**/*.scss", - ], - "web.assets_qweb": ["web_widget_remote_measure/static/src/**/*.xml"], - }, -} diff --git a/web_widget_remote_measure/i18n/es.po b/web_widget_remote_measure/i18n/es.po deleted file mode 100644 index abfe0f58f..000000000 --- a/web_widget_remote_measure/i18n/es.po +++ /dev/null @@ -1,210 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * web_widget_remote_measure -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 15.0\n" -"Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2023-11-19 16:33+0000\n" -"Last-Translator: Ivorra78 \n" -"Language-Team: none\n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.17\n" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__active -msgid "Active" -msgstr "Activo" - -#. module: web_widget_remote_measure -#: model_terms:ir.ui.view,arch_db:web_widget_remote_measure.measure_device_form -msgid "Archived" -msgstr "Archivado" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__uom_category_id -msgid "Category" -msgstr "Categoría" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__connection_mode -msgid "Connection Mode" -msgstr "Modo de Conexión" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,help:web_widget_remote_measure.field_remote_measure_device__uom_category_id -msgid "" -"Conversion between Units of Measure can only occur if they belong to the " -"same category. The conversion will be made based on the ratios." -msgstr "" -"La conversión entre Unidades de Medida sólo puede producirse si pertenecen a " -"la misma categoría. La conversión se realizará en función de las " -"proporciones." - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__create_uid -msgid "Created by" -msgstr "Creado por" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__create_date -msgid "Created on" -msgstr "Creado el" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,help:web_widget_remote_measure.field_res_users__remote_measure_device_id -msgid "Default remote measure device for this user" -msgstr "Dispositivo de medida remota por defecto para este usuario" - -#. module: web_widget_remote_measure -#: model_terms:ir.ui.view,arch_db:web_widget_remote_measure.measure_device_kanban -msgid "Device name" -msgstr "Nombre del Dispositivo" - -#. module: web_widget_remote_measure -#: model:ir.ui.menu,name:web_widget_remote_measure.menu_device_config -#: model_terms:ir.ui.view,arch_db:web_widget_remote_measure.view_users_form -msgid "Devices" -msgstr "Dispositivos" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__display_name -msgid "Display Name" -msgstr "Mostrar Nombre" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__host -msgid "Host" -msgstr "Huésped" - -#. module: web_widget_remote_measure -#. openerp-web -#: code:addons/web_widget_remote_measure/static/src/xml/measure_device_status.xml:0 -#, python-format -msgid "Host is up?" -msgstr "¿El huésped está levantado?" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,help:web_widget_remote_measure.field_remote_measure_device__uom_factor -msgid "" -"How much bigger or smaller this unit is compared to the reference Unit of " -"Measure for this category: 1 * (reference unit) = ratio * (this unit)" -msgstr "" -"Cuánto mayor o menor es esta unidad en comparación con la unidad de medida " -"de referencia para esta categoría: 1 * (unidad de referencia) = proporción * " -"(esta unidad)" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__id -msgid "ID" -msgstr "ID (identificación)" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device____last_update -msgid "Last Modified on" -msgstr "Última Modificación el" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__write_uid -msgid "Last Updated by" -msgstr "Última Actualización Por" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__write_date -msgid "Last Updated on" -msgstr "Última Actualización el" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__name -msgid "Name" -msgstr "Nombre" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,help:web_widget_remote_measure.field_remote_measure_device__protocol -msgid "Operating protocol" -msgstr "Protocolo operativo" - -#. module: web_widget_remote_measure -#: model_terms:ir.ui.view,arch_db:web_widget_remote_measure.view_users_form -msgid "Preferred remote device" -msgstr "Dispositivo remoto preferido" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__protocol -msgid "Protocol" -msgstr "Protocolo" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__uom_factor -msgid "Ratio" -msgstr "Proporción" - -#. module: web_widget_remote_measure -#: model:ir.actions.act_window,name:web_widget_remote_measure.action_measure_device -#: model:ir.ui.menu,name:web_widget_remote_measure.menu_measure_device -msgid "Remote Devices" -msgstr "Dispositivos Remotos" - -#. module: web_widget_remote_measure -#. openerp-web -#: code:addons/web_widget_remote_measure/static/src/js/remote_measure_widget.esm.js:0 -#, python-format -msgid "Remote Measure" -msgstr "Medición a Distancia" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_res_users__remote_measure_device_id -msgid "Remote Measure Device" -msgstr "Dispositivo de Medición a Distancia" - -#. module: web_widget_remote_measure -#: model:ir.model,name:web_widget_remote_measure.model_remote_measure_device -msgid "Remote measure device" -msgstr "Dispositivo de medición a distancia" - -#. module: web_widget_remote_measure -#: model:ir.model.fields.selection,name:web_widget_remote_measure.selection__remote_measure_device__protocol__f501 -msgid "Scale F501" -msgstr "Escala F501" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__test_measure -msgid "Test Measure" -msgstr "Medida de Prueba" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__uom_id -msgid "Unit of measure" -msgstr "Unidad de Medida" - -#. module: web_widget_remote_measure -#: model:ir.model,name:web_widget_remote_measure.model_res_users -msgid "Users" -msgstr "Usuarios" - -#. module: web_widget_remote_measure -#: model:ir.model.fields.selection,name:web_widget_remote_measure.selection__remote_measure_device__connection_mode__webservices -msgid "Web Services" -msgstr "Servicios web" - -#. module: web_widget_remote_measure -#: model:ir.model.fields.selection,name:web_widget_remote_measure.selection__remote_measure_device__connection_mode__websockets -msgid "Web Sockets" -msgstr "Zócalos web" - -#. module: web_widget_remote_measure -#: model_terms:ir.ui.view,arch_db:web_widget_remote_measure.measure_device_form -msgid "e.g. Dock 1 Scale" -msgstr "p. ej. Muelle 1 Escala" - -#. module: web_widget_remote_measure -#. openerp-web -#: code:addons/web_widget_remote_measure/static/src/xml/measure_device_status.xml:0 -#, python-format -msgid "{{widget.title}}" -msgstr "" diff --git a/web_widget_remote_measure/i18n/web_widget_remote_measure.pot b/web_widget_remote_measure/i18n/web_widget_remote_measure.pot deleted file mode 100644 index fbba863df..000000000 --- a/web_widget_remote_measure/i18n/web_widget_remote_measure.pot +++ /dev/null @@ -1,201 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * web_widget_remote_measure -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 15.0\n" -"Report-Msgid-Bugs-To: \n" -"Last-Translator: \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__active -msgid "Active" -msgstr "" - -#. module: web_widget_remote_measure -#: model_terms:ir.ui.view,arch_db:web_widget_remote_measure.measure_device_form -msgid "Archived" -msgstr "" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__uom_category_id -msgid "Category" -msgstr "" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__connection_mode -msgid "Connection Mode" -msgstr "" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,help:web_widget_remote_measure.field_remote_measure_device__uom_category_id -msgid "" -"Conversion between Units of Measure can only occur if they belong to the " -"same category. The conversion will be made based on the ratios." -msgstr "" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__create_uid -msgid "Created by" -msgstr "" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__create_date -msgid "Created on" -msgstr "" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,help:web_widget_remote_measure.field_res_users__remote_measure_device_id -msgid "Default remote measure device for this user" -msgstr "" - -#. module: web_widget_remote_measure -#: model_terms:ir.ui.view,arch_db:web_widget_remote_measure.measure_device_kanban -msgid "Device name" -msgstr "" - -#. module: web_widget_remote_measure -#: model:ir.ui.menu,name:web_widget_remote_measure.menu_device_config -#: model_terms:ir.ui.view,arch_db:web_widget_remote_measure.view_users_form -msgid "Devices" -msgstr "" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__display_name -msgid "Display Name" -msgstr "" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__host -msgid "Host" -msgstr "" - -#. module: web_widget_remote_measure -#. openerp-web -#: code:addons/web_widget_remote_measure/static/src/xml/measure_device_status.xml:0 -#, python-format -msgid "Host is up?" -msgstr "" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,help:web_widget_remote_measure.field_remote_measure_device__uom_factor -msgid "" -"How much bigger or smaller this unit is compared to the reference Unit of " -"Measure for this category: 1 * (reference unit) = ratio * (this unit)" -msgstr "" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__id -msgid "ID" -msgstr "" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device____last_update -msgid "Last Modified on" -msgstr "" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__write_uid -msgid "Last Updated by" -msgstr "" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__write_date -msgid "Last Updated on" -msgstr "" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__name -msgid "Name" -msgstr "" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,help:web_widget_remote_measure.field_remote_measure_device__protocol -msgid "Operating protocol" -msgstr "" - -#. module: web_widget_remote_measure -#: model_terms:ir.ui.view,arch_db:web_widget_remote_measure.view_users_form -msgid "Preferred remote device" -msgstr "" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__protocol -msgid "Protocol" -msgstr "" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__uom_factor -msgid "Ratio" -msgstr "" - -#. module: web_widget_remote_measure -#: model:ir.actions.act_window,name:web_widget_remote_measure.action_measure_device -#: model:ir.ui.menu,name:web_widget_remote_measure.menu_measure_device -msgid "Remote Devices" -msgstr "" - -#. module: web_widget_remote_measure -#. openerp-web -#: code:addons/web_widget_remote_measure/static/src/js/remote_measure_widget.esm.js:0 -#, python-format -msgid "Remote Measure" -msgstr "" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_res_users__remote_measure_device_id -msgid "Remote Measure Device" -msgstr "" - -#. module: web_widget_remote_measure -#: model:ir.model,name:web_widget_remote_measure.model_remote_measure_device -msgid "Remote measure device" -msgstr "" - -#. module: web_widget_remote_measure -#: model:ir.model.fields.selection,name:web_widget_remote_measure.selection__remote_measure_device__protocol__f501 -msgid "Scale F501" -msgstr "" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__test_measure -msgid "Test Measure" -msgstr "" - -#. module: web_widget_remote_measure -#: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__uom_id -msgid "Unit of measure" -msgstr "" - -#. module: web_widget_remote_measure -#: model:ir.model,name:web_widget_remote_measure.model_res_users -msgid "Users" -msgstr "" - -#. module: web_widget_remote_measure -#: model:ir.model.fields.selection,name:web_widget_remote_measure.selection__remote_measure_device__connection_mode__webservices -msgid "Web Services" -msgstr "" - -#. module: web_widget_remote_measure -#: model:ir.model.fields.selection,name:web_widget_remote_measure.selection__remote_measure_device__connection_mode__websockets -msgid "Web Sockets" -msgstr "" - -#. module: web_widget_remote_measure -#: model_terms:ir.ui.view,arch_db:web_widget_remote_measure.measure_device_form -msgid "e.g. Dock 1 Scale" -msgstr "" - -#. module: web_widget_remote_measure -#. openerp-web -#: code:addons/web_widget_remote_measure/static/src/xml/measure_device_status.xml:0 -#, python-format -msgid "{{widget.title}}" -msgstr "" diff --git a/web_widget_remote_measure/models/__init__.py b/web_widget_remote_measure/models/__init__.py deleted file mode 100644 index e59cc94f8..000000000 --- a/web_widget_remote_measure/models/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from . import remote_measure_device -from . import res_users diff --git a/web_widget_remote_measure/models/remote_measure_device.py b/web_widget_remote_measure/models/remote_measure_device.py deleted file mode 100644 index 9edfc10f0..000000000 --- a/web_widget_remote_measure/models/remote_measure_device.py +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright 2023 Tecnativa - David Vidal -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import fields, models - - -class RemoteMeasureDevice(models.Model): - _name = "remote.measure.device" - _description = "Remote measure device" - - active = fields.Boolean(default=True) - name = fields.Char(required=True) - uom_id = fields.Many2one( - string="Unit of measure", - comodel_name="uom.uom", - required=True, - ) - uom_category_id = fields.Many2one(related="uom_id.category_id") - uom_factor = fields.Float(related="uom_id.factor") - protocol = fields.Selection( - selection=[("f501", "Scale F501")], - help="Operating protocol", - required=True, - ) - connection_mode = fields.Selection( - selection=[ - ("websockets", "Web Sockets"), - ("webservices", "Web Services"), - ], - required=True, - ) - host = fields.Char(required=True) - test_measure = fields.Float(default=0.0) diff --git a/web_widget_remote_measure/models/res_users.py b/web_widget_remote_measure/models/res_users.py deleted file mode 100644 index 8fb9864b7..000000000 --- a/web_widget_remote_measure/models/res_users.py +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright 2023 Tecnativa - David Vidal -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import fields, models - - -class ResUsers(models.Model): - _inherit = "res.users" - - remote_measure_device_id = fields.Many2one( - comodel_name="remote.measure.device", - help="Default remote measure device for this user", - ) diff --git a/web_widget_remote_measure/readme/CONFIGURE.rst b/web_widget_remote_measure/readme/CONFIGURE.rst deleted file mode 100644 index 3b58dd020..000000000 --- a/web_widget_remote_measure/readme/CONFIGURE.rst +++ /dev/null @@ -1,5 +0,0 @@ -To configure your remote devices: - -#. Go to *Settings > Technical > Devices > Remote devices* -#. Create a new one configuring the required info. -#. If the devices has an special port, set it up in the host data: e.g.: 10.1.1.2:3210 diff --git a/web_widget_remote_measure/readme/CONTRIBUTORS.rst b/web_widget_remote_measure/readme/CONTRIBUTORS.rst deleted file mode 100644 index 94b6ba953..000000000 --- a/web_widget_remote_measure/readme/CONTRIBUTORS.rst +++ /dev/null @@ -1,3 +0,0 @@ -* `Tecnativa `_: - - * David Vidal diff --git a/web_widget_remote_measure/readme/DESCRIPTION.rst b/web_widget_remote_measure/readme/DESCRIPTION.rst deleted file mode 100644 index a96bba15a..000000000 --- a/web_widget_remote_measure/readme/DESCRIPTION.rst +++ /dev/null @@ -1,5 +0,0 @@ -This module allows to input data from remote devices in your network. Currently, only -websockets devices are supported, but it can be extended for any protocol like -Webservices. - -Other modules can extend this one in order to use the widget. diff --git a/web_widget_remote_measure/readme/ROADMAP.rst b/web_widget_remote_measure/readme/ROADMAP.rst deleted file mode 100644 index e21f0ea6e..000000000 --- a/web_widget_remote_measure/readme/ROADMAP.rst +++ /dev/null @@ -1,10 +0,0 @@ -Current support: - -- Websockets connection -- F501 protocol on continuous message stream. - -But this is a commonground to add: - -- Other connection interfaces like Webservices APIs -- Other device protocols. -- Active device controls, la Tare, resets, etc. diff --git a/web_widget_remote_measure/readme/USAGE.rst b/web_widget_remote_measure/readme/USAGE.rst deleted file mode 100644 index acbfc0635..000000000 --- a/web_widget_remote_measure/readme/USAGE.rst +++ /dev/null @@ -1,16 +0,0 @@ -The remote device has to be in the users network so their web clients can reach them. - -In order to test a device you can: - -#. Go to *Settings > Technical > Devices > Remote devices* -#. In the Kanban view you'll wich devices can be reached as they'll have a green dot in - their card. -#. Go to one of those and click *Edit*. -#. You can start measuring from the remote device in the *Test measure* field. - -On the technical side, you can use the widget in your own `Float``. You'll need to -provide an uom field so records that aren't in that UoM don't measure from the device. - -.. code:: xml - - diff --git a/web_widget_remote_measure/security/ir.model.access.csv b/web_widget_remote_measure/security/ir.model.access.csv deleted file mode 100644 index 04f222591..000000000 --- a/web_widget_remote_measure/security/ir.model.access.csv +++ /dev/null @@ -1,3 +0,0 @@ -id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -web_widget_remote_measure.access_remote_measure_device_user,access_remote_measure_device users,web_widget_remote_measure.model_remote_measure_device,base.group_user,1,0,0,0 -web_widget_remote_measure.access_remote_measure_device_admin,access_remote_measure_device admin,web_widget_remote_measure.model_remote_measure_device,base.group_system,1,1,1,1 diff --git a/web_widget_remote_measure/static/description/icon.png b/web_widget_remote_measure/static/description/icon.png deleted file mode 100644 index 613498008..000000000 Binary files a/web_widget_remote_measure/static/description/icon.png and /dev/null differ diff --git a/web_widget_remote_measure/static/description/index.html b/web_widget_remote_measure/static/description/index.html deleted file mode 100644 index d5e0b81b9..000000000 --- a/web_widget_remote_measure/static/description/index.html +++ /dev/null @@ -1,472 +0,0 @@ - - - - - - -Remote Measure Devices Input - - - -
-

Remote Measure Devices Input

- - -

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

-

This module allows to input data from remote devices in your network. Currently, only -websockets devices are supported, but it can be extended for any protocol like -Webservices.

-

Other modules can extend this one in order to use the widget.

-

Table of contents

- -
-

Configuration

-

To configure your remote devices:

-
    -
  1. Go to Settings > Technical > Devices > Remote devices
  2. -
  3. Create a new one configuring the required info.
  4. -
  5. If the devices has an special port, set it up in the host data: e.g.: 10.1.1.2:3210
  6. -
-
-
-

Usage

-

The remote device has to be in the users network so their web clients can reach them.

-

In order to test a device you can:

-
    -
  1. Go to Settings > Technical > Devices > Remote devices
  2. -
  3. In the Kanban view you’ll wich devices can be reached as they’ll have a green dot in -their card.
  4. -
  5. Go to one of those and click Edit.
  6. -
  7. You can start measuring from the remote device in the Test measure field.
  8. -
-

On the technical side, you can use the widget in your own Float`. You’ll need to -provide an uom field so records that aren’t in that UoM don’t measure from the device.

-
-<field name="float_field" widget="remote_measure" options="{'remote_device_field': 'measure_device_id', 'uom_field': 'uom_id'}" />
-
-
-
-

Known issues / Roadmap

-

Current support:

-
    -
  • Websockets connection
  • -
  • F501 protocol on continuous message stream.
  • -
-

But this is a commonground to add:

-
    -
  • Other connection interfaces like Webservices APIs
  • -
  • Other device protocols.
  • -
  • Active device controls, la Tare, resets, etc.
  • -
-
-
-

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 to smash it by providing a detailed and welcomed -feedback.

-

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

-
-
-

Credits

-
-

Authors

-
    -
  • Tecnativa
  • -
-
-
-

Contributors

- -
-
-

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.

-

Current maintainer:

-

chienandalu

-

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_remote_measure/static/src/js/remote_measure_device_kanban_widget.esm.js b/web_widget_remote_measure/static/src/js/remote_measure_device_kanban_widget.esm.js deleted file mode 100644 index 312197856..000000000 --- a/web_widget_remote_measure/static/src/js/remote_measure_device_kanban_widget.esm.js +++ /dev/null @@ -1,33 +0,0 @@ -/** @odoo-module **/ -import Widget from "web.Widget"; -import widgetRegistry from "web.widget_registry"; - -const RemoteMeasureDeviceStatusWidget = Widget.extend({ - template: "web_widget_remote_measure.measure_device_status", - xmlDependencies: [ - "/web_widget_remote_measure/static/src/xml/measure_device_status.xml", - ], - init(_parent, _data, options) { - this._super(...arguments); - this.className = "text-muted"; - this.title = "Requesting status..."; - this.host = options.attrs.host; - }, - async willStart() { - await this._super(...arguments); - const socket = new WebSocket(this.host); - socket.onerror = async () => { - this.className = "text-danger"; - this.title = "Device is down"; - this.renderElement(); - }; - socket.onmessage = async () => { - socket.close(); - this.className = "text-success"; - this.title = "Device ready"; - this.renderElement(); - }; - }, -}); - -widgetRegistry.add("remote_measure_device_status", RemoteMeasureDeviceStatusWidget); diff --git a/web_widget_remote_measure/static/src/js/remote_measure_widget.esm.js b/web_widget_remote_measure/static/src/js/remote_measure_widget.esm.js deleted file mode 100644 index d17170f4d..000000000 --- a/web_widget_remote_measure/static/src/js/remote_measure_widget.esm.js +++ /dev/null @@ -1,359 +0,0 @@ -/** @odoo-module **/ -// TODO: Implement in OWL in v16. It should have be a much much simpler implementation. -import {FieldFloat} from "web.basic_fields"; -import {_lt} from "@web/core/l10n/translation"; -import {_t} from "web.translation"; -import fieldRegistry from "web.field_registry"; -import session from "web.session"; - -// Animate the measure steps for each measure received. -export const nextState = { - "fa-thermometer-empty": "fa-thermometer-quarter", - "fa-thermometer-quarter": "fa-thermometer-half", - "fa-thermometer-half": "fa-thermometer-three-quarters", - "fa-thermometer-three-quarters": "fa-thermometer-full", - "fa-thermometer-full": "fa-thermometer-empty", -}; - -export const RemoteMeasureMixin = { - /** - * F501 Protocol response: - * [STX][status1][status2][data][ETX] - * - status1 beign weight status: \x20 (space) for stable weight and ? for unstable - * - status2 beign weight sign: + for positive and - for negative. - * - data being the weight itself with 6 characters for weight and one . for the - * decimal dot - * - * @param {String} msg ASCII string - * @returns {Object} with the value and the stable flag - */ - _proccess_msg_f501(msg) { - return { - stable: msg[1] === "\x20", - value: parseFloat(msg.slice(2, 10)), - }; - }, - /** - * Implemented for a continous remote stream - * TODO: Abstract more the possible device scenarios - */ - _connect_to_websockets() { - try { - this.socket = new WebSocket(this.host); - } catch (error) { - // Avoid websockets security error. Local devices won't have wss normally - if (error.code === 18) { - return; - } - throw error; - } - var icon = "fa-thermometer-empty"; - var stream_success_counter = 10; - this.socket.onmessage = async (msg) => { - const data = await msg.data.text(); - const processed_data = this[`_proccess_msg_${this.protocol}`](data); - if (!processed_data.stable) { - stream_success_counter = 5; - } - if (processed_data.stable && !stream_success_counter) { - this._stableMeasure(); - this._closeSocket(); - this._awaitingMeasure(); - this._recordMeasure(); - return; - } - this._unstableMeasure(); - - if (stream_success_counter) { - --stream_success_counter; - } - icon = this._nextStateIcon(icon); - this.amount = processed_data.value; - this._setMeasure(); - }; - this.socket.onerror = () => { - this._awaitingMeasure(); - }; - }, - /** - * Implement for your device protocol service - */ - _connect_to_webservices() { - return; - }, - /** - * Convert the measured units to the units expecte by the record if different - * @param {Number} amount - * @returns {Number} converted amount - */ - _compute_quantity(amount) { - if (this.uom.id === this.device_uom.id) { - return amount; - } - let converted_amount = amount / this.remote_device_data.uom_factor; - converted_amount *= this.uom.factor; - return converted_amount; - }, - /** - * Set value - */ - async _setMeasure() { - if (isNaN(this.amount)) { - return; - } - this.amount = this._compute_quantity(this.amount); - if (this.start_add) { - this.amount += this.input_val; - } - this.$input.val(this.amount.toLocaleString(this.locale_code)); - this._setValue(this.$input.val()); - }, - /** - * Procure to close the socket whenever the widget stops being used - */ - _closeSocket() { - if (this.socket) { - this.socket.close(); - } - }, - /** - * Animate the measure steps for each measure received. - * @param {String} icon - * @returns {String} next icon - */ - _nextStateIcon(icon) { - const next_icon = nextState[icon]; - this.$icon.removeClass(icon); - this.$icon.addClass(next_icon); - return next_icon; - }, - /** - * While a measure is not stable the button will be red - */ - _unstableMeasure() { - this.$stop_measure.removeClass("btn-primary btn-success"); - this.$stop_measure.addClass("btn-danger"); - }, - /** - * Once we consider the measure is stable render the button as green - */ - _stableMeasure() { - this.$stop_measure.removeClass("btn-primary btn-danger"); - this.$stop_measure.addClass("btn-success"); - }, - /** - * While the widget isn't querying it will be purple as a signal that we can start - */ - _awaitingMeasure() { - this.$start_measure.removeClass("btn-success btn-danger"); - this.$start_measure.addClass("btn-primary"); - this.$stop_measure.addClass("d-none"); - this.$start_measure.removeClass("d-none"); - if (this.$start_measure_add) { - this.$start_measure_add.removeClass("d-none"); - } - }, - /** - * - */ - _recordMeasure() { - this.start_add = false; - this.input_val = this.amount; - this.start_add = false; - }, - /** - * Start requesting measures from the remote device - * @param {MouseEvent} ev - */ - _onMeasure(ev) { - ev.preventDefault(); - this.$start_measure.addClass("d-none"); - this.$stop_measure.removeClass("d-none"); - this.$icon = this.$stop_measure.find("i"); - this[`_connect_to_${this.connection_mode}`](); - }, - _onMeasureAdd(ev) { - ev.preventDefault(); - this.start_add = true; - this.$start_measure.addClass("d-none"); - this.$start_measure_add.addClass("d-none"); - this.$stop_measure.removeClass("d-none"); - this.$icon = this.$stop_measure.find("i"); - this[`_connect_to_${this.connection_mode}`](); - }, - /** - * Validate the requested measure - * @param {MouseEvent} ev - */ - _onValidateMeasure(ev) { - ev.preventDefault(); - this._closeSocket(); - this._awaitingMeasure(); - this._recordMeasure(); - }, - /** - * Remote measure handle to start measuring - * @returns {jQueryElement} - */ - _addRemoteMeasureWidgetStart() { - return $( - ` - - - - ` - ).on("click", this._onMeasure.bind(this)); - }, - /** - * Remote measure handle to start measuring - * @returns {jQueryElement} - */ - _addRemoteMeasureWidgetStartAdd() { - return $( - ` - - - - ` - ).on("click", this._onMeasureAdd.bind(this)); - }, - /** - * Remote measure handle to stop and register measuring - * @returns {jQueryElement} - */ - _addRemoteMeasureWidgetStop() { - return $( - ` - - - - ` - ).on("click", this._onValidateMeasure.bind(this)); - }, -}; - -export const RemoteMeasure = FieldFloat.extend(RemoteMeasureMixin, { - description: _lt("Remote Measure"), - className: "o_field_remote_device o_field_number", - tagName: "span", - isQuickEditable: true, - resetOnAnyFieldChange: true, - events: Object.assign({}, FieldFloat.prototype.events, { - focusin: "_onFocusIn", - }), - /** - * Setup the field layout and the remote device parameters - */ - init() { - this._super(...arguments); - if (this.mode === "edit") { - this.tagName = "div"; - this.className += " o_input"; - } - this.locale_code = _t.database.parameters.code.replace("_", "-"); - this.decimal_separator = _t.database.parameters.decimal_point; - this.thousands_sep = _t.database.parameters.thousands_sep; - this.remote_device_field = this.nodeOptions.remote_device_field; - this.default_user_device = this.nodeOptions.default_user_device; - if (this.nodeOptions.remote_device_field === "id") { - this.remote_device_data = this.recordData; - } else if (this.remote_device_field) { - this.remote_device_data = this.recordData[this.remote_device_field].data; - } - this.uom = this.recordData[this.nodeOptions.uom_field].data; - this.allow_additive_measure = this.nodeOptions.allow_additive_measure; - // Add to your view options so you can log requests and responses - }, - /** - * Request the configured remote device info - */ - async willStart() { - await this._super(...arguments); - // Try to get the user's preferred device if any - if (!this.remote_device_data && this.default_user_device) { - [this.remote_device_data] = await this._rpc({ - model: "res.users", - method: "read", - args: [session.uid, ["remote_measure_device_id"]], - }); - if (!this.remote_device_data.remote_measure_device_id) { - return; - } - if (this.remote_device_data) { - this.remote_device_data.id = - this.remote_device_data.remote_measure_device_id[0]; - } - } - if (!this.remote_device_data || !this.uom) { - return; - } - [this.remote_device_data] = await this._rpc({ - model: "remote.measure.device", - method: "read", - args: [this.remote_device_data.id, []], - }); - [this.uom] = await this._rpc({ - model: "uom.uom", - method: "read", - args: [this.uom.id, []], - }); - this.uom_category = this.uom.category_id[0]; - this.device_uom_category = this.remote_device_data.uom_category_id[0]; - this.device_uom = this.remote_device_data.uom_id[0]; - this.host = this.remote_device_data && this.remote_device_data.host; - this.protocol = this.remote_device_data && this.remote_device_data.protocol; - this.connection_mode = - this.remote_device_data && this.remote_device_data.connection_mode; - }, - /** - * Set de widget layout up - * @returns {Promise} - */ - _renderEdit() { - this.$el.empty(); - var def = this._prepareInput(this.$input).appendTo(this.$el); - // From locale format - if (this.input_val === undefined) { - let pre_value = this.$input.val() || "0"; - pre_value = pre_value.replace(this.thousands_sep, ""); - pre_value = pre_value.replace(this.decimal_separator, "."); - this.input_val = parseFloat(pre_value); - } - this.start_add = false; - const [device_uom = undefined] = - (this.remote_device_data && this.remote_device_data.uom_id) || []; - if ( - !this.remote_device_data || - !this.uom || - !device_uom || - this.uom_category !== this.device_uom_category - ) { - return def; - } - this.$start_measure = this._addRemoteMeasureWidgetStart(); - this.$stop_measure = this._addRemoteMeasureWidgetStop(); - if (this.allow_additive_measure && this.input_val > 0) { - this.$start_measure_add = this._addRemoteMeasureWidgetStartAdd(); - this.$el.prepend(this.$start_measure_add); - } - this.$el.prepend(this.$start_measure, this.$stop_measure); - return def; - }, - /** - * Ensure that the socket is allways closed - */ - destroy() { - this._closeSocket(); - this._super.apply(this, arguments); - }, - /** - * Auto select all the content - */ - _onFocusIn: function () { - // Auto select all content when user enters into fields with this - // widget. - this.$input.select(); - }, -}); - -fieldRegistry.add("remote_measure", RemoteMeasure); diff --git a/web_widget_remote_measure/static/src/scss/remote_measure_widget.scss b/web_widget_remote_measure/static/src/scss/remote_measure_widget.scss deleted file mode 100644 index 16c15b980..000000000 --- a/web_widget_remote_measure/static/src/scss/remote_measure_widget.scss +++ /dev/null @@ -1,30 +0,0 @@ -.o_field_widget { - &.o_field_remote_device { - display: inline-flex; - > span, - > button { - flex: 0 0 auto; - } - } - &.o_field_remote_device { - &.o_input { - align-items: baseline; - - > input { - width: 100px; - flex: 1 0 auto; - } - } - } -} -.o_list_view { - .o_list_table { - .o_data_row.o_selected_row - > .o_data_cell:not(.o_readonly_modifier):not(.o_invisible_modifier) { - .o_field_remote_device input { - width: 0; - margin: 0 4px; - } - } - } -} diff --git a/web_widget_remote_measure/static/src/xml/measure_device_status.xml b/web_widget_remote_measure/static/src/xml/measure_device_status.xml deleted file mode 100644 index fbb7f6bc5..000000000 --- a/web_widget_remote_measure/static/src/xml/measure_device_status.xml +++ /dev/null @@ -1,15 +0,0 @@ - - diff --git a/web_widget_remote_measure/views/remote_measure_device_views.xml b/web_widget_remote_measure/views/remote_measure_device_views.xml deleted file mode 100644 index 0d6bca325..000000000 --- a/web_widget_remote_measure/views/remote_measure_device_views.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - remote.measure.device - -
- - - -
-

-
- - - - - - - - - - -
-
-
-
- - remote.measure.device - - - - - - - - - - - - remote.measure.device - - - - - - - - -
-
-
-
- - - - -
-
-
    -
  • -
  • -
-
-
-
-
-
-
-
- - Remote Devices - remote.measure.device - kanban,tree,form - - - -
diff --git a/web_widget_remote_measure/views/res_users_views.xml b/web_widget_remote_measure/views/res_users_views.xml deleted file mode 100644 index 570b5370a..000000000 --- a/web_widget_remote_measure/views/res_users_views.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - res.users - - - - - - - - - -