summaryrefslogtreecommitdiff
path: root/addons/barcodes/static/src
diff options
context:
space:
mode:
Diffstat (limited to 'addons/barcodes/static/src')
-rw-r--r--addons/barcodes/static/src/js/barcode_events.js22
-rw-r--r--addons/barcodes/static/src/js/barcode_field.js2
-rw-r--r--addons/barcodes/static/src/js/barcode_form_view.js55
3 files changed, 55 insertions, 24 deletions
diff --git a/addons/barcodes/static/src/js/barcode_events.js b/addons/barcodes/static/src/js/barcode_events.js
index 04c03a41308..0f13c59fe66 100644
--- a/addons/barcodes/static/src/js/barcode_events.js
+++ b/addons/barcodes/static/src/js/barcode_events.js
@@ -77,13 +77,7 @@ var BarcodeEvents = core.Class.extend(mixins.PropertiesMixin, {
'bubbles': old_event.bubbles,
'cancelable': old_event.cancelable,
};
- try {
- new_event = new Event("keypress", params);
- } catch(error) {
- // For IE >= 9, use new CustomEvent(), instead of new Event()
- new_event = new CustomEvent("keypress", params);
- }
-
+ new_event = $.Event('keypress', params);
new_event.viewArg = old_event.viewArg;
new_event.ctrl = old_event.ctrl;
new_event.alt = old_event.alt;
@@ -96,7 +90,7 @@ var BarcodeEvents = core.Class.extend(mixins.PropertiesMixin, {
new_event.which = old_event.which;
new_event.dispatched_by_barcode_reader = true;
- old_event.target.dispatchEvent(new_event);
+ $(old_event.target).trigger(new_event);
}
}
},
@@ -173,17 +167,17 @@ var BarcodeEvents = core.Class.extend(mixins.PropertiesMixin, {
},
start: function(prevent_key_repeat){
- document.body.addEventListener('keypress', this.__handler, true);
+ $('body').bind("keypress", this.__handler);
if (prevent_key_repeat === true) {
- document.body.addEventListener('keydown', this.__keydown_handler, true);
- document.body.addEventListener('keyup', this.__keyup_handler, true);
+ $('body').bind("keydown", this.__keydown_handler);
+ $('body').bind('keyup', this.__keyup_handler);
}
},
stop: function(){
- document.body.removeEventListener('keypress', this.__handler, true);
- document.body.removeEventListener('keydown', this.__keydown_handler, true);
- document.body.removeEventListener('keyup', this.__keyup_handler, true);
+ $('body').unbind("keypress", this.__handler);
+ $('body').unbind("keydown", this.__keydown_handler);
+ $('body').unbind('keyup', this.__keyup_handler);
},
});
diff --git a/addons/barcodes/static/src/js/barcode_field.js b/addons/barcodes/static/src/js/barcode_field.js
index aa31b4d8261..9b0f2391e3a 100644
--- a/addons/barcodes/static/src/js/barcode_field.js
+++ b/addons/barcodes/static/src/js/barcode_field.js
@@ -40,7 +40,7 @@ var FieldFloatScannable = basicFields.FieldFloat.extend({
*/
_onKeypress: function (e) {
/* only simulate a keypress if it has been previously prevented */
- if (e.originalEvent.dispatched_by_barcode_reader !== true) {
+ if (e.dispatched_by_barcode_reader !== true) {
e.preventDefault();
this.$input.blur();
return;
diff --git a/addons/barcodes/static/src/js/barcode_form_view.js b/addons/barcodes/static/src/js/barcode_form_view.js
index 69a59fdaafa..37fa34dcf95 100644
--- a/addons/barcodes/static/src/js/barcode_form_view.js
+++ b/addons/barcodes/static/src/js/barcode_form_view.js
@@ -26,19 +26,21 @@ FormController.include({
this.activeBarcode = {
form_view: {
commands: {
- 'O-CMD.NEW': 'createRecord',
- 'O-CMD.EDIT': 'toEditMode',
- 'O-CMD.CANCEL': 'discardChange',
- 'O-CMD.SAVE': function () { return this.saveRecord({reload: true}); },
- // 'O-CMD.PAGER-PREV':
- // 'O-CMD.PAGER-NEXT':
- }
- }
+ 'O-CMD.EDIT': this._onEdit.bind(this),
+ 'O-CMD.CANCEL': this._onDiscard.bind(this),
+ 'O-CMD.SAVE': this._onCommandSave.bind(this),
+ 'O-CMD.PAGER-PREV': this._onCommandPrevious.bind(this),
+ 'O-CMD.PAGER-NEXT': this._onCommandNext.bind(this),
+ },
+ },
};
this.barcodeMutex = new concurrency.Mutex();
this._barcodeStartListening();
},
+ /**
+ * @override
+ */
destroy: function () {
this._barcodeStopListening();
this._super();
@@ -70,6 +72,8 @@ FormController.include({
}
},
/**
+ * Returns true iff the given barcode matches the given record (candidate).
+ *
* @private
* @param {Object} candidate: record in the x2m
* @param {string} barcode sent by the scanner (string generate from keypress series)
@@ -128,7 +132,7 @@ FormController.include({
*/
_getBarCodeRecord: function (record, barcode, activeBarcode) {
var self = this;
- if (!activeBarcode.fieldName) {
+ if (!activeBarcode.fieldName || !record.data[activeBarcode.fieldName]) {
return;
}
return _.find(record.data[activeBarcode.fieldName].data, function (record) {
@@ -239,6 +243,24 @@ FormController.include({
},
/**
* @private
+ */
+ _onCommandNext: function () {
+ return this.mutex.exec(function () {}).then(this.pager.next.bind(this.pager));
+ },
+ /**
+ * @private
+ */
+ _onCommandPrevious: function () {
+ return this.mutex.exec(function () {}).then(this.pager.previous.bind(this.pager));
+ },
+ /**
+ * @private
+ */
+ _onCommandSave: function () {
+ return this.saveRecord();
+ },
+ /**
+ * @private
* @param {KeyEvent} event
*/
_quantityListener: function (event) {
@@ -359,6 +381,21 @@ FormRenderer.include({
}
return $button;
},
+ /**
+ * Add barcode event handler
+ *
+ * @override
+ * @private
+ * @param {Object} node
+ * @returns {jQueryElement}
+ */
+ _renderTagButton: function (node) {
+ var $button = this._super.apply(this, arguments);
+ if (node.attrs.barcode_trigger) {
+ this._barcodeButtonHandler($button, node);
+ }
+ return $button;
+ }
});
BarcodeEvents.ReservedBarcodePrefixes.push('O-BTN');