From 121556dcea72be9f4829b46a9ca03e00866e7c92 Mon Sep 17 00:00:00 2001 From: Arthur Maniet Date: Thu, 27 Aug 2015 16:29:34 +0200 Subject: [PATCH] [ADD] barcodes/web: element button can use attribute barcode_trigger A button can be triggered when a barcode corresponding to its attribute 'barcode_trigger' is scanned --- .../src/js/inherited_form_widget_button.js | 29 +++++++++++++++++++ addons/barcodes/views/templates.xml | 1 + .../web/static/src/js/views/form_widgets.js | 3 +- 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 addons/barcodes/static/src/js/inherited_form_widget_button.js diff --git a/addons/barcodes/static/src/js/inherited_form_widget_button.js b/addons/barcodes/static/src/js/inherited_form_widget_button.js new file mode 100644 index 00000000000..6c85b9a92a8 --- /dev/null +++ b/addons/barcodes/static/src/js/inherited_form_widget_button.js @@ -0,0 +1,29 @@ +odoo.define('barcode.InheritedFormWidgetButton', function (require) { +"use strict"; + +var widgets = require('web.form_widgets'); +var BarcodeHandlerMixin = require('barcodes.BarcodeHandlerMixin'); + +// If the button has a barcode_trigger attribute, dynamically inherit +// BarcodeHandlerMixin and redefine on_barcode_scanned + +var ButtonBarcodeHandlerMixin = _.extend({}, BarcodeHandlerMixin, { + init: function(field_manager, node) { + if (node.attrs.barcode_trigger) { + BarcodeHandlerMixin.init.call(this, field_manager, node); + var self = this; + this.on_barcode_scanned = function(barcode) { + var match = barcode.match(/O-BTN\.(.+)/); + if (match && match[1] === self.node.attrs.barcode_trigger && self.$el.is(':visible')) { + self.on_click(); + } + }; + } else { + this._super(field_manager, node); + } + }, +}); + +widgets.WidgetButton.include(ButtonBarcodeHandlerMixin); + +}); diff --git a/addons/barcodes/views/templates.xml b/addons/barcodes/views/templates.xml index 1b36f049a9c..2fcab2ea6db 100644 --- a/addons/barcodes/views/templates.xml +++ b/addons/barcodes/views/templates.xml @@ -8,6 +8,7 @@ + diff --git a/addons/web/static/src/js/views/form_widgets.js b/addons/web/static/src/js/views/form_widgets.js index 8a51e8aa480..54c57c6fd8c 100644 --- a/addons/web/static/src/js/views/form_widgets.js +++ b/addons/web/static/src/js/views/form_widgets.js @@ -1663,7 +1663,8 @@ core.form_tag_registry.add('button', WidgetButton); return { FieldChar: FieldChar, - FieldMonetary: FieldMonetary + FieldMonetary: FieldMonetary, + WidgetButton: WidgetButton }; });