diff --git a/ui-eln-lims/src/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/util/BarcodeUtil.js b/ui-eln-lims/src/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/util/BarcodeUtil.js index 9dce953f5d9b8cf478f6a8f94e04c91a4ff2aacd..a86c5bb19ec4b4e68809ec1c60ca8854631cd51a 100644 --- a/ui-eln-lims/src/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/util/BarcodeUtil.js +++ b/ui-eln-lims/src/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/util/BarcodeUtil.js @@ -51,6 +51,8 @@ var BarcodeUtil = new function() { mainController.backButtonLogic(); mainController.backButtonLogic(); })); + var $videoCameraSelection = $("<select>", { id: "videoCameraSelect", style : "margin-left: 4px;"}); + content.append($videoCameraSelection); content.append($("<legend>").text("Read Barcode:")); var $video = $("<video>", { id : "video", width : "100%", height : "100%" }); content.append($video); @@ -60,7 +62,8 @@ var BarcodeUtil = new function() { codeReader.listVideoInputDevices().then((videoInputDevices) => { const sourceSelect = document.getElementById('sourceSelect'); selectedDeviceId = videoInputDevices[0].deviceId; - codeReader.decodeFromVideoDevice(selectedDeviceId, 'video', (result, err) => { + + var decodeFromVideoDeviceCallback = (result, err) => { if(result && result.text) { codeReader.reset(); BarcodeUtil.readSample(result.text); @@ -71,7 +74,24 @@ var BarcodeUtil = new function() { mainController.backButtonLogic(); mainController.backButtonLogic(); } - }); + }; + + if(videoInputDevices.length > 1) { + videoInputDevices.forEach((element) => { + var option = $("<option>", { value: element.deviceId }).text(element.label); + $videoCameraSelection.append(option); + }); + + $videoCameraSelection.change(function(event) { + //Stop + codeReader.reset(); + //Start + selectedDeviceId = $(this).val(); + codeReader.decodeFromVideoDevice(selectedDeviceId, 'video', decodeFromVideoDeviceCallback); + }); + } + + codeReader.decodeFromVideoDevice(selectedDeviceId, 'video', decodeFromVideoDeviceCallback); }); }