summaryrefslogtreecommitdiff
path: root/addons/barcodes/static/src/js/inherited_form_widget_button.js
diff options
context:
space:
mode:
authorArthur Maniet <arthurmaniet@me.com>2015-08-27 16:29:34 +0200
committerArthur Maniet <arthurmaniet@me.com>2015-09-01 13:26:02 +0200
commit121556dcea72be9f4829b46a9ca03e00866e7c92 (patch)
treee1b8a58e70c0c5eda2e355b6f3820349556a31a7 /addons/barcodes/static/src/js/inherited_form_widget_button.js
parent9cf6339b3e2fc489da067dbb878ccf2d2ed5446d (diff)
[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
Diffstat (limited to 'addons/barcodes/static/src/js/inherited_form_widget_button.js')
-rw-r--r--addons/barcodes/static/src/js/inherited_form_widget_button.js29
1 files changed, 29 insertions, 0 deletions
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);
+
+});