summaryrefslogtreecommitdiff
path: root/addons/barcodes/static/src/js/barcode_form_view.js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/barcodes/static/src/js/barcode_form_view.js')
-rw-r--r--addons/barcodes/static/src/js/barcode_form_view.js55
1 files changed, 46 insertions, 9 deletions
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');