var _scannerIsRunning = false; function checkConfidence(result){ var countDecodedCodes=0, err=0; $.each(result.codeResult.decodedCodes, function(id,error){ if (error.error!=undefined) { countDecodedCodes++; err+=parseFloat(error.error); } }); if (err/countDecodedCodes < 0.1) { $("#scanned_bar_code").text(result.codeResult.code); if($("#get_barcode_object").length){ $("#get_barcode_object").show(); var _href = $("#get_barcode_object").attr("href"); _href = _href.replace(/placeholder/,result.codeResult.code); $("#get_barcode_object").attr("href",_href); } $(".bar_code:text").each(function(){ $(this).val(result.codeResult.code); }); } else { } } function startScanner() { Quagga.init({ inputStream: { name: "Live", type: "LiveStream", target: document.querySelector('#scanner_container') }, decoder: { readers: [ "code_128_reader", "ean_reader", "ean_8_reader", "code_39_reader", "code_39_vin_reader", "codabar_reader", "upc_reader", "upc_e_reader", "i2of5_reader" ], debug: { showCanvas: true, showPatches: true, showFoundPatches: true, showSkeleton: true, showLabels: true, showPatchLabels: true, showRemainingPatchLabels: true, boxFromPatches: { showTransformed: true, showTransformedBox: true, showBB: true } } }, }, function (err) { if (err) { console.log(err); return } console.log("Initialization finished. Ready to start"); Quagga.start(); // Set flag to is running _scannerIsRunning = true; }); Quagga.onProcessed(function (result) { var drawingCtx = Quagga.canvas.ctx.overlay, drawingCanvas = Quagga.canvas.dom.overlay; if (result) { if (result.boxes) { drawingCtx.clearRect(0, 0, parseInt(drawingCanvas.getAttribute("width")), parseInt(drawingCanvas.getAttribute("height"))); result.boxes.filter(function (box) { return box !== result.box; }).forEach(function (box) { Quagga.ImageDebug.drawPath(box, { x: 0, y: 1 }, drawingCtx, { color: "green", lineWidth: 2 }); }); } if (result.box) { Quagga.ImageDebug.drawPath(result.box, { x: 0, y: 1 }, drawingCtx, { color: "#00F", lineWidth: 2 }); } if (result.codeResult && result.codeResult.code) { Quagga.ImageDebug.drawPath(result.line, { x: 'x', y: 'y' }, drawingCtx, { color: 'red', lineWidth: 3 }); } } }); Quagga.onDetected(function (result) { checkConfidence(result); }); } $(document).on('click','#toggle_barcode_scanner',function(){ if(_scannerIsRunning === false){ startScanner(); $("#scan_barcode_instructions").slideDown('fast'); } else{ Quagga.stop(); $("#scan_barcode_instructions").slideUp('fast'); _scannerIsRunning = false; } }); $(document).on('change','#force_show',function(){ var _href = $("#get_barcode_object").attr("href"); var setting = "false"; if($(this).is(':checked')){ setting = "true"; } else{ setting = "false" } $("#get_barcode_object").attr('href',_href.replace(/force_show=(true|false)/,"force_show=" + setting )); }); $(document).on('change','#go_to_next_step',function(){ var _href = $("#get_barcode_object").attr("href"); var setting = "false"; if($('#go_to_next_step').is(':checked')){ setting = "true"; } else{ setting = "false" } $("#get_barcode_object").attr('href',_href.replace(/go_to_next_step=(true|false)/,"go_to_next_step=" + setting )); });