var passportFront = ''; var passportBack = ''; var leftSlap = ''; var rightSlap = ''; var bothSlap = ''; var rightRing = ''; var rightMiddle = ''; var rightIndex = ''; var rightLittle = ''; var leftRing = ''; var leftMiddle = ''; var leftIndex = ''; var leftLittle = ''; var leftThumb = ''; var rightThumb = ''; var checkImage = true; var minAcceptedRange = 2; // set the interval to 4 seconds var deviceCheckInterval = 4000; // always default to false var initialCheckDevice = false; var summaryStatus = 'DFT6'; var initial = true; var vendorId = 0x1FBA; var productId = 0x31; $(document).ready(function() { component.initFile(); $("a.proj-flow").click(function() { location.href = $(this).attr("href"); }); setTimeout(function() { $('.card.card-wizard').addClass('active'); }, 600); // override tabs in wizard $('.card-wizard .disabled').css('display', 'block'); loadPhotoImage(); window.setInterval(checkDermalogConnection, deviceCheckInterval); $("#btnPairDevice").on('click', function() { pairDermalogConnection(); }); // check if already have complete fingerprints var left = $('#fingerprintLeft').attr('src'); var right = $('#fingerprintRight').attr('src'); var both = $('#fingerprintBoth').attr('src'); var isComplete = checkCompleteFingerprint(left, right, both); if (isComplete) { $("#btnFingerprintSave").removeAttr("disabled"); } $('.remove-border').each(function() { $(this).css('border', '0px'); $(this).css('text-align', 'center'); }); $('.lazy').lazy({ effect: "fadeIn", effectTime: 2000, }); // Date of Birth $(".dobpicker").each(function(i) { var value = $(this).val(); $(".dobpicker").datetimepicker({ format: 'DD/MM/YYYY', minDate: new Date(new Date().getFullYear() - 45, 01 - 1, 25), maxDate: new Date(), defaultDate: false, icons: { time: "fa fa-clock-o", date: "fa fa-calendar", up: "fa fa-arrow-up", down: "fa fa-arrow-down", previous: "fa fa-chevron-left", next: "fa fa-chevron-right", today: "fa fa-clock-o", clear: "fa fa-trash-o" }, widgetPositioning: { horizontal: 'right', vertical: 'auto' } }).val(value) }); // next of kin date of birth should start at 1900 $(".dobKinPicker").each(function() { var value = $(this).val(); $(".dobKinPicker").datetimepicker({ format: 'DD/MM/YYYY', minDate: new Date(1900, 01 - 1, 25), maxDate: new Date(), defaultDate: false, icons: { time: "fa fa-clock-o", date: "fa fa-calendar", up: "fa fa-arrow-up", down: "fa fa-arrow-down", previous: "fa fa-chevron-left", next: "fa fa-chevron-right", today: "fa fa-clock-o", clear: "fa fa-trash-o" }, widgetPositioning: { horizontal: 'right', vertical: 'auto' } }).val(value) }); // Past Date Picker $(".pastDtPicker").each(function(i) { var value = $(this).val(); $(".pastDtPicker").datetimepicker({ format: 'DD/MM/YYYY', minDate: new Date(new Date().getFullYear() - 60, 01 - 1, 25), maxDate: new Date(), defaultDate: false, icons: { time: "fa fa-clock-o", date: "fa fa-calendar", up: "fa fa-arrow-up", down: "fa fa-arrow-down", previous: "fa fa-chevron-left", next: "fa fa-chevron-right", today: "fa fa-clock-o", clear: "fa fa-trash-o" }, widgetPositioning: { horizontal: 'right', vertical: 'auto' } }).val(value) }); // Expiration Date $(".futureDtPicker").each(function(i) { var value = $(this).val(); $(".futureDtPicker").datetimepicker({ format: 'DD/MM/YYYY', minDate: new Date(), maxDate: new Date(new Date().getFullYear() + 50, 01 - 1, 25), defaultDate: false, icons: { time: "fa fa-clock-o", date: "fa fa-calendar", up: "fa fa-arrow-up", down: "fa fa-arrow-down", previous: "fa fa-chevron-left", next: "fa fa-chevron-right", today: "fa fa-clock-o", clear: "fa fa-trash-o" }, widgetPositioning: { horizontal: 'right', vertical: 'auto' } }).val(value) }); // clear white space in front and avoid multiple space on last $(".clear-whitespace").on('keypress', function(e) { var value = $(this).val(); if (e.keyCode == 32) { var cursorPos = $(this).prop("selectionStart"); if (cursorPos == 0 || (cursorPos == value.length && value[value.length - 1] == " ")) { e.preventDefault(); } } }); $(".highlight-select").each(function() { $(".highlight-select").on('change', function() { var selected = $(this).val(); if (null != selected && selected != '') { $(this).parents().removeClass('has-danger'); var errorlabel = $(this).attr('id') + '-error'; $("#" + errorlabel).text(""); } }); }); $("select").each(function() { if ($(this).val()) $(this).parent().removeClass('has-danger').addClass("is-filled has-success"); }); // letter and space only regex $(".input-letter").each(function() { $(".input-letter").on('keypress', function(e) { var reg_exp = /^[a-zA-Z\s]*$/; var key = String.fromCharCode(!e.charCode ? e.which : e.charCode); return reg_exp.test(key); }); }); // letter and space only regex $(".input-letter-number").each(function() { $(".input-letter-number").on('keypress', function(e) { var reg_exp = /^[A-Za-z0-9]*$/; var key = String.fromCharCode(!e.charCode ? e.which : e.charCode); return reg_exp.test(key); }); }); // letter and space only regex $(".input-number").each(function() { $(".input-number").on('keypress', function(e) { var reg_exp = /^[0-9]*$/; var key = String.fromCharCode(!e.charCode ? e.which : e.charCode); return reg_exp.test(key); }); }); $("#formPhotograph").on('submit', function(e) { e.preventDefault(); var isValidPhotograph = validatePhoto('photoUrl', 'Worker photo is required'); if (isValidPhotograph) { var jsonObj = toJSONString($('#formPhotograph')); var length = Object.keys(jsonObj).length; if (length > 0) { var jsonMsg = JSON.stringify(jsonObj); portalUtil.showMainLoading(true); $.ajax({ headers: { 'X-CSRF-Token': csrf_token }, type: 'POST', contentType: "application/json; charset=utf-8", url: contextPath + "/resources/photograph-details", data: jsonMsg, success: function(data) { if (null != data.wrkrRegId) { location.href = contextPath + "/resources/next-of-kin?wrkrRegId=" + data.wrkrRegId; } portalUtil.showMainLoading(false); }, error: function(e) { portalUtil.showMainLoading(false); } }); } } return false; }); // intercept submit of passport form to add data from device $("#formPassport").on('submit', function(e) { e.preventDefault(); var isValidPassportFront = validateWorkerImages('passportFront', 'Please scan front page of passport'); var isValidPassportBack = validateWorkerImages('passportBack', 'Please scan back page of passport'); if (isValidPassportFront && isValidPassportBack) { var isExist = false; if (!isExist) { var jsonObj = toJSONString($('#formPassport')); var length = Object.keys(jsonObj).length; if (length > 0) { var jsonMsg = JSON.stringify(jsonObj); portalUtil.showMainLoading(true); $.ajax({ headers: { 'X-CSRF-Token': csrf_token }, type: 'POST', contentType: "application/json", url: contextPath + "/resources/passport-details", data: jsonMsg, success: function(data) { if (null != data.wrkrRegId) { location.href = contextPath + "/resources/contact-details?wrkrRegId=" + data.wrkrRegId; } portalUtil.showMainLoading(false); }, error: function(e) { portalUtil.showMainLoading(false); } }); } } } return false; }); // intercept submit of fingerprint form to add data from device $("#formFingerprint").on('submit', function(e) { e.preventDefault(); var isAcceptedRange = validateAcceptedRange(); var isValidFingerprintLeft = validateWorkerImages('fingerprintLeft', 'Please scan left slap'); var isValidFingerprintRight = validateWorkerImages('fingerprintRight', 'Please scan right slap'); var isValidFingerprintBoth = validateWorkerImages('fingerprintBoth', 'Please scan both thumb'); if (isValidFingerprintLeft && isValidFingerprintRight && isValidFingerprintBoth) { if (isAcceptedRange) { var jsonObj = toJSONString($('#formFingerprint')); var length = Object.keys(jsonObj).length; if (length > 0) { var jsonMsg = JSON.stringify(jsonObj); portalUtil.showMainLoading(true); $.ajax({ headers: { 'X-CSRF-Token': csrf_token }, type: 'POST', contentType: "application/json; charset=utf-8", url: contextPath + "/resources/fingerprint-details", data: jsonMsg, success: function(data) { if (null != data.wrkrRegId) { location.href = contextPath + "/resources/photograph-details?wrkrRegId=" + data.wrkrRegId; } portalUtil.showMainLoading(false); }, error: function(e) { portalUtil.showMainLoading(false); } }); } } } return false; }); // Worker List var oTableWorkerViewListLst = $('#tblWorkerList').DataTable({ "processing": true, "serverSide": true, /*'responsive': true,*/ 'destroy': true, 'sDom': 'lrtip', "columns": [ { "data": null, "searchable": false }, { "data": "status", "render": function(data, type, row) { var color = 'badge-info'; if (data.statusCd.indexOf("DFT") >= 0 || data.statusCd == 'PND') { color = 'badge-warning'; } else if (data.statusCd == 'REG' || data.statusCd == 'VER') { color = 'badge-info'; } else if (data.statusCd == 'FIT' || data.statusCd == 'APR') { color = 'badge-success'; } else if (data.statusCd == 'UNFIT' || data.statusCd == 'REJ') { color = 'badge-danger'; } var statusDesc = data.statusDesc || "-"; status = "" + statusDesc + ""; return status; } }, { "data": "workerProfile", "searchable": false, "render": function(data, type, row) { var fullName = data.firstName + " " + data.lastName; return fullName || '-'; }, }, { "data": "workerProfile", "searchable": false, "render": function(data, type, row) { var date = new Date(data.dob); return convertToStrDate(date); }, }, { "data": "workerProfile", "searchable": false, "render": function(data, type, row) { var gender; if (data.gender == 'M') { gender = 'MALE' } else if (data.gender == 'F') { gender = 'FEMALE' } return gender; }, }, { "data": "workerProfile", "searchable": false, "render": function(data, type, row) { return data.passportNo || "-"; }, }, { "data": "workerProfile", "searchable": false, "render": function(data, type, row) { var date = new Date(data.passportExpiryDt); return convertToStrDate(date); } }, { "data": null, className: 'td-actions text-right', "orderable": false, "render": function(data, type, row) { var buttons = action.viewButton; if (row.status.statusCd.indexOf("DFT") >= 0) { buttons = action.btnGroupOpen + action.editButton + action.closeDiv; } return buttons; } }, ], "ajax": $.fn.dataTable.pipeline({ "pages": 1, "type": "GET", "url": contextPath + "/resources/paginated", "action": 'xhttp', 'beforeSend': dtRequestHeader, "dataSrc": dtDataSrc, "data": function(data) { data.fullName = $("input#fullName").val(); data.passportNo = $("input#passportNo").val(); data.status = $('#statusType').val(); }, "error": function(e) { console.log("error: " + e); } }), "initComplete": function(settings, json) { $('#searchFilter').bind('click', function(e) { portalUtil.showMainLoading(true); oTableWorkerViewListLst .column(3).search($('input#fullName').val()) .column(6).search($('input#passportNo').val()) .column(2).search($('#statusType').val()) oTableWorkerViewListLst.draw(); $(".em-toggle").click(); }); $('#clearFilter').bind('click', function(e) { $('input#fullName').val("") $('input#passportNo').val("") oTableWorkerViewListLst.columns().search("").draw(); $(".em-toggle").click(); }); }, "fnDrawCallback": function(oSettings) { processRowNum(oSettings); hidePagination(this, "#tblWorkerList"); portalUtil.showMainLoading(false); } }); $('#tblWorkerList tbody').on('click', 'button.view', function() { var d = oTableWorkerViewListLst.row($(this).parents('tr')).data(); location.href = contextPath + "/resources/worker-view?wrkrRegId=" + d.wrkrRegId; }); $('#tblWorkerList tbody').on('click', 'button.edit', function() { var d = oTableWorkerViewListLst.row($(this).parents('tr')).data(); location.href = contextPath + "/resources/worker-update?wrkrRegId=" + d.wrkrRegId + "&tabActive=" + d.status.statusCd + "&updateFlag=1"; }); $('#tblPhotograph').DataTable({ "bSort": false, "bFilter": false, "bPaginate": false, "bInfo": false }); $('#tblFingerPrint').DataTable({ "bSort": false, "bFilter": false, "bPaginate": false, "bInfo": false }); $("#chkSignIn").change(function() { var isChecked = this.checked; if (isChecked) { $("#btnWorkerComplete").removeAttr("disabled"); } else { $("#btnWorkerComplete").attr("disabled", "disabled"); } }); }); function enableSubmit() { var isChecked = $("#chkSignIn").prop('checked') == true; var statusCd = $('#statusCd').val(); var wrkrRegId = $('#wrkrRegId').val(); // Check if status is not final if (statusCd != summaryStatus) { Swal.fire({ title: 'Error!', text: 'Please complete the application form before saving.', type: 'error', allowOutsideClick: false, allowEscapeKey: false, confirmButtonColor: '#f08f00', buttonsStyling: false, confirmButtonClass: "btn btn-warning", }).then((result) => { if (result.value) { var inputUrl = contextPath + "/resources/getCurrentStatus?previousTab=" + statusCd + '&wrkrRegId=' + wrkrRegId + '&updateFlag=1'; portalUtil.showMainLoading(true); $.ajax({ headers: { 'X-CSRF-Token': csrf_token }, type: 'GET', contentType: "application/json; charset=utf-8", url: inputUrl, success: function(data) { console.log('data: ' + data); location.href = data; portalUtil.showMainLoading(false); }, error: function(e) { portalUtil.showMainLoading(false); } }); } }); $("#chkSignIn").prop('checked', false); } else { if (isChecked) { $("#btnWorkerComplete").prop("disabled", false); } else { $("#btnWorkerComplete").prop("disabled", true); } } } function resetFingerPrint(imageId, divTableId) { var btnId; var defaultImg; var card; if (imageId == 'fingerprintRight') { btnId = 'btnFingerprintRight'; defaultImg = 'fingerprintRightImg'; card = 'card-right'; } else if (imageId == 'fingerprintLeft') { btnId = 'btnFingerprintLeft'; defaultImg = 'fingerprintLeftImg'; card = 'card-left'; } else { btnId = 'btnFingerprintBoth'; defaultImg = 'fingerprintBothImg'; card = 'card-both'; } Swal.fire({ text: 'Are you sure you want to clear?', type: 'question', showConfirmButton: true, showCancelButton: true, cancelButtonText: 'Cancel', confirmButtonText: 'Ok', allowOutsideClick: false, allowEscapeKey: false, cancelButtonColor: '#FF5C6C', confirmButtonColor: '#24D2B5', confirmButtonClass: "btn btn-success", cancelButtonClass: "btn btn-danger", }).then((result) => { if (result.value) { $('#' + imageId).attr('src', ''); $('#' + divTableId + ' tbody tr td').find('input[type=text]').each(function() { $(this).val(''); }); $('#' + card).find('.ribbon').removeClass('ribbon-danger ribbon-success').addClass('ribbon-default'); if ($('#' + card).find('i').length > 0) { $('#' + card).find('i').remove(); } $('#' + card).find('.ribbon').append(''); $('#' + imageId).hide(); $('#' + defaultImg).show(); $('#' + btnId).prop('disabled', false); return true; } else if (result.dismiss === swal.DismissReason.cancel) { return false; } }); } function scanPassport(imageId, passport) { var fullurl = "/api/mrzReader/1"; portalUtil.showMainLoading(true); var _settings = $.extend({ deviceRestDermlogUrl: "http://localhost:9000" }, imageId); $.ajax({ headers: { 'X-CSRF-Token': csrf_token }, type: "GET", async: true, url: _settings.deviceRestDermlogUrl + fullurl, success: function(data) { var newData = JSON.parse(data); setPassportFile(newData, imageId, passport); portalUtil.showMainLoading(false); }, error: function(data) { portalUtil.showMainLoading(false); } }) } function setPassportFile(newData, imageId, passport) { var btnPassport; if (imageId == 'passportFront') { passportFront = newData.passportVIS; btnPassport = "btnScanPassFront"; setPassportDetails(newData); } else if (imageId == 'passportBack') { passportBack = newData.passportVIS; btnPassport = "btnScanPassBack"; } $('#' + imageId).attr('src', "data:image/jpeg;base64," + newData.passportVIS); $('#' + imageId).parent().removeClass('has-danger'); $('#' + imageId + '-error').remove(); //disable button $('#' + btnPassport).prop('disabled', true); //hide default image $("#" + imageId + "Img").hide(); $('#' + imageId).show(); } function setPassportDetails(newData) { var response = newData.mrzresponse; setData('#firstName', response._givenName, false); setData('#lastName', response._surname, false); setData('#passportNo', response._passportNo, false); setData('#gender', response._gender, false); setData('#nationalitySelection2', response._nationality, false); setData('#dateOfBirth', response._dateOfBirth, true); setData('#validDt', response._dateValidUntil, true); } function setData(idName, value, isDtPicker) { if (null != value && value != '') { if ($(idName).is('select')) { $(idName).val(value).change(); $(idName).parent().addClass('is-filled has-success'); } else if (isDtPicker) { // this is to handle picker that always starts with 0001 if (value.split('-')[0] != '0001') { $(idName).val(formatDate(value)); $(idName).parent().addClass('is-filled has-success'); } } else { $(idName).val(value).parent().addClass('is-filled has-success'); } } else { if ($(idName).is('select')) { $(idName).val(value).change(); $(idName).parent().removeClass('is-filled has-success'); } else { $(idName).val(value).parent().removeClass('is-filled has-success'); } } } function scanFingerPrint(imageId, btnId) { var idType; var tableDt; var message; var card; if (imageId == 'fingerprintRight') { idType = 1; tableDt = 'tblFingerprintRight'; card = 'card-right'; message = 'Right Slap'; } else if (imageId == 'fingerprintLeft') { idType = 2; tableDt = 'tblFingerprintLeft'; card = 'card-left'; message = 'Left Slap'; } else { idType = 3; tableDt = 'tblFingerprintBoth'; card = 'card-both'; message = 'Both Slap'; } var fullurl = "/api/plainfingerprintbyslap/" + idType; portalUtil.showMainLoading(true); var _settings = $.extend({ deviceRestDermlogUrl: "http://localhost:9000" }, imageId); $.ajax({ headers: { 'X-CSRF-Token': csrf_token }, type: "GET", async: true, url: _settings.deviceRestDermlogUrl + fullurl, success: function(data) { var response = JSON.parse(data); if (idType == 1) { rightSlap = response.rawimage; } else if (idType == 2) { leftSlap = response.rawimage; } else if (idType == 3) { bothSlap = response.rawimage; } var isSuccessful = tableAppend(tableDt, response, imageId, message); if (isSuccessful) { $('#' + imageId).show(); $('#' + imageId).attr('src', "data:image/jpeg;base64," + response.rawimage); $('#' + imageId).parent().removeClass('has-danger'); $('#' + imageId + '-error').remove(); $('#' + imageId + 'Img').hide(); $('#' + btnId).prop('disabled', true); // check if already have complete fingerprints var left = $('#fingerprintLeft').attr('src'); var right = $('#fingerprintRight').attr('src'); var both = $('#fingerprintBoth').attr('src'); var isComplete = checkCompleteFingerprint(left, right, both); if (isComplete) { $("#btnFingerprintSave").removeAttr("disabled"); } $('#' + card).find('.ribbon').removeClass('ribbon-default ribbon-danger').addClass('ribbon-success'); if ($('#' + card).find('i').length > 0) { $('#' + card).find('i').remove(); } $('#' + card).find('.ribbon').append(''); } else { $('#' + card).find('.ribbon').removeClass('ribbon-default ribbon-success').addClass('ribbon-danger'); if ($('#' + card).find('i').length > 0) { $('#' + card).find('i').remove(); } $('#' + card).find('.ribbon').append(''); Swal.fire({ type: 'error', title: 'Error!', text: 'Cannot Read ' + message + '. please try again.', allowOutsideClick: false, allowEscapeKey: false, confirmButtonColor: '#f08f00', buttonsStyling: false, confirmButtonClass: "btn btn-warning", }); } portalUtil.showMainLoading(false); }, error: function(data) { portalUtil.showMainLoading(false); } }); } function checkCompleteFingerprint(left, right, both) { var isComplete = false; if (left != undefined && right != undefined && both != undefined) { isComplete = (left != "" && right != "" && both != "" > 0); } return isComplete; } function tableAppend(tableName, response, imageId, message) { var content; var slapError; var isSuccessful = false; var hasScanError = false; if (response.SegmentationData.length > 0) { $.each(response.SegmentationData, function(index, value) { var fileName = value.filename.slice(0, -4); if (null != value.nfiq2Score && value.nfiq2Score != '') { fileName = mapFingerValue(fileName, value.wsqRawData); $("#" + fileName).val(value.nfiq2Score); $("#" + fileName).text(value.nfiq2Score); } else { slapError = fileName; content = ""; return false; } }); // Check if has scan error if (hasScanError) { $("#" + tableName + "-error").css('display', 'block'); $("#" + tableName + "-error").text('Kindly re-scan ' + message); } else { $("#" + tableName + "-error").css('display', 'none'); $("#" + tableName + "-error").text(''); } if (content != '') { isSuccessful = true; } else { $('#' + imageId).removeAttr('src'); Swal.fire({ type: 'error', title: 'Error!', text: 'Cannot read ' + slapError + ' please retry.', allowOutsideClick: false, allowEscapeKey: false, confirmButtonColor: '#f08f00', buttonsStyling: false, confirmButtonClass: "btn btn-warning", }); } } return isSuccessful; } function mapFingerValue(posRing, rawData) { var value; if (posRing == 'finger_POS_RIGHT_RING') { rightRing = rawData; value = 'rightRing'; } else if (posRing == 'finger_POS_RIGHT_MIDDLE') { rightMiddle = rawData; value = 'rightMiddle'; } else if (posRing == 'finger_POS_RIGHT_INDEX') { rightIndex = rawData; value = 'rightIndex'; } else if (posRing == 'finger_POS_RIGHT_LITTLE') { rightLittle = rawData; value = 'rightLittle'; } else if (posRing == 'finger_POS_LEFT_RING') { leftRing = rawData; value = 'leftRing'; } else if (posRing == 'finger_POS_LEFT_MIDDLE') { leftMiddle = rawData; value = 'leftMiddle'; } else if (posRing == 'finger_POS_LEFT_INDEX') { leftIndex = rawData; value = 'leftIndex'; } else if (posRing == 'finger_POS_LEFT_LITTLE') { leftLittle = rawData; value = 'leftLittle'; } else if (posRing == 'finger_POS_LEFT_THUMB') { leftThumb = rawData; value = 'leftThumb'; } else if (posRing == 'finger_POS_RIGHT_THUMB') { rightThumb = rawData; value = 'rightThumb'; } return value; } var localstream; function startCamera() { var video = document.querySelector("#videoElement"); if (navigator.mediaDevices.getUserMedia) { navigator.mediaDevices.getUserMedia({ video: true }) .then(function(stream) { video.srcObject = stream; localstream = stream; $('#btnStart').hide(); $('#btnCapture').show(); $('#btnReset').show(); }) .catch(function(error) { }); } } function stopCamera() { var video = document.querySelector("#videoElement"); if (localstream) { localstream.getTracks()[0].stop(); } video.pause(); video.srcObject = null; } function resetAllFields() { stopCamera(); $('#videoElement').show(); $('#btnStart').show(); $('#canvas-portrait').hide(); $('#canvas-portrait').cropper('destroy') $('#canvas-portrait').hide(); $('#btnCapture').hide(); $('#btnCrop').hide(); $('#btnReset').hide(); $("#btnSavePhoto").prop('disabled', true); } function captureImage() { var video = document.querySelector("#videoElement"); var b = document.createElement("canvas"); var ratio = video.videoWidth / video.videoHeight; b.width = 800; b.height = b.width / ratio; b.getContext("2d").drawImage(video, 0, 0, b.width, b.height); var canvas = document.getElementById("canvas-portrait"); var ctx = canvas.getContext('2d'); ctx.drawImage(video, 0, 0, canvas.width, canvas.height); $('#canvas-portrait').show(); $('#canvas-portrait').cropper('destroy') $('#canvas-portrait').cropper({ dragMode: 'move', aspectRatio: 2 / 3, cropBoxResizable: false, autoCropArea: 1, strict: false, guides: false, maxCropBoxWidth: canvas.width, maxCropBoxHeight: canvas.height, restore: false, center: false, highlight: false, cropBoxMovable: false, toggleDragModeOnDblclick: false, }); stopCamera(); $('#btnCrop').show(); $('#btnCapture').hide(); $('#videoElement').hide(); var canvasProtrait = document.querySelector("#canvas-portrait"); imgUrl = canvasProtrait.toDataURL("image/jpeg").split(';base64,')[1]; $("#photoUrl").val(imgUrl) } function cropImage() { var croppedCanvas = $("#canvas-portrait").cropper('getCroppedCanvas'); var canvaURL = croppedCanvas.toDataURL("image/jpeg").split(';base64,')[1];//croppedCanvas.toDataURL(); $("#photoUrl").val(canvaURL); var canvaImage = croppedCanvas.toDataURL(); var img = new Image(); img.src = canvaImage; img.height = "300"; $("#canvas-preview").show(); $("#canvas-preview").html(img); $("#btnSavePhoto").prop('disabled', false); } function toJSONString(form) { var formData = form.serializeArray(); var obj = {}; var addCapturedVal = true; $.each(formData, function(i, field) { var name = field.name; var value = field.value; var elementType = $('[name="' + name + '"]').attr("type"); var fieldName = name.split(".").pop(); obj[fieldName] = value; if (elementType != 'hidden' && (null == value || value == '')) { obj = {}; addCapturedVal = false; return false; } }); if (addCapturedVal) { // Add passport record if (passportFront != '') { obj['passportFront'] = passportFront; passportFront = ''; } if (passportBack != '') { obj['passportBack'] = passportBack; passportBack = ''; } // Add fingerprint record if (leftSlap != '') { obj['leftSlap'] = leftSlap; leftSlap = ''; } if (rightSlap != '') { obj['rightSlap'] = rightSlap; rightSlap = ''; } if (bothSlap != '') { obj['bothSlap'] = bothSlap; bothSlap = ''; } if (rightRing != '') { obj['rightRingRaw'] = rightRing; rightRing = ''; } if (rightMiddle != '') { obj['rightMiddleRaw'] = rightMiddle; rightMiddle = ''; } if (rightIndex != '') { obj['rightIndexRaw'] = rightIndex; rightIndex = ''; } if (rightLittle != '') { obj['rightLittleRaw'] = rightLittle; rightLittle = ''; } if (leftRing != '') { obj['leftRingRaw'] = leftRing; leftRing = ''; } if (leftMiddle != '') { obj['leftMiddleRaw'] = leftMiddle; leftMiddle = ''; } if (leftIndex != '') { obj['leftIndexRaw'] = leftIndex; leftIndex = ''; } if (leftLittle != '') { obj['leftLittleRaw'] = leftLittle; leftLittle = ''; } if (leftThumb != '') { obj['leftThumbRaw'] = leftThumb; leftThumb = ''; } if (rightThumb != '') { obj['rightThumbRaw'] = rightThumb; rightThumb = ''; } } return obj } function convertToStrDate(date) { var dt = "-"; // get year var year = date.getFullYear(); // get month var month = (1 + date.getMonth()).toString(); month = month.length > 1 ? month : '0' + month; // get day var day = date.getDate().toString(); day = day.length > 1 ? day : '0' + day; if (!isNaN(year) && !isNaN(month) && !isNaN(day)) { dt = day + '/' + month + '/' + year; } return dt; } function resetPassport(passport, button) { Swal.fire({ text: 'Do you want to clear scanned passport and data?', type: 'question', showConfirmButton: true, showCancelButton: true, cancelButtonText: 'No', confirmButtonText: 'Yes', allowOutsideClick: false, allowEscapeKey: false, cancelButtonColor: '#FF5C6C', confirmButtonColor: '#24D2B5', confirmButtonClass: "btn btn-success", cancelButtonClass: "btn btn-danger", }).then((result) => { if (result.value) { setData('#firstName', null, false); setData('#lastName', null, false); setData('#passportNo', null, false); setData('#gender', null, false); setData('#nationalitySelection2', null, false); setData('#dateOfBirth', null, false); setData('#validDt', null, false); setData('#workerTypeSelection', null, false); setData('#fatherName', null, false); setData('#issueDt', null, false); $("#" + passport).removeAttr("src"); $("#" + button).prop('disabled', false); $("#" + passport + "Img").show(); $("#" + passport).hide(); return true; } else if (result.dismiss === swal.DismissReason.cancel) { $("#" + passport).removeAttr("src"); $("#" + button).prop('disabled', false); $("#" + passport + "Img").show(); $("#" + passport).hide(); return true; } }); } function loadPhotoImage() { var photoUrl = $("#photoUrl").val(); if (null != photoUrl && photoUrl != '') { var image = new Image(); image.src = 'data:image/jpeg;base64,' + photoUrl; $("#canvas-preview").show(); $("#canvas-preview").html(image); $("#btnSavePhoto").prop('disabled', false); } } function validateWorkerImages(images, message) { var valid = true; var val = $('#' + images).attr('src'); if ((val === undefined || val == '') && checkImage) { // clear first if has error var errLbl = $("#" + images + "-error"); if (errLbl.length) { errLbl.remove(); } $('#' + images).parent().append(''); $('#' + images).parent().addClass('has-danger'); valid = false; } return valid; } function validateAcceptedRange() { var leftSlap = []; var rightSlap = []; var bothSlap = []; var isAcceptedLeft = false; var isAcceptedRight = false; var isAcceptedBoth = false; var acceptedRange = parseInt($("#rangeAccepted").text().split(' ')); // Add left slap values leftSlap.push($("#leftRing").val()); leftSlap.push($("#leftMiddle").val()); leftSlap.push($("#leftIndex").val()); leftSlap.push($("#leftLittle").val()); isAcceptedLeft = validateAcceptedQuality(leftSlap, acceptedRange); // Add right slap values rightSlap.push($("#rightRing").val()); rightSlap.push($("#rightMiddle").val()); rightSlap.push($("#rightIndex").val()); rightSlap.push($("#rightLittle").val()); isAcceptedRight = validateAcceptedQuality(rightSlap, acceptedRange); // Add both slap values bothSlap.push($("#leftThumb").val()); bothSlap.push($("#rightThumb").val()); isAcceptedBoth = validateAcceptedQuality(bothSlap, acceptedRange); return (isAcceptedLeft && isAcceptedRight && isAcceptedBoth); } function validateAcceptedQuality(fingerlist, acceptedRange) { var counter; var i; /*for (i = 0; i < fingerlist.length; i++) { var val = parseInt(fingerlist[i]); console.log('acceptedRange: ' + acceptedRange); console.log('val: ' + val); console.log('CONDITION: ' + val < acceptedRange); if (val < acceptedRange) { counter++; } }*/ return true; } function formatDate(unformattedDt) { var date = new Date(unformattedDt); var year = date.getFullYear(); var month = (1 + date.getMonth()).toString(); month = month.length > 1 ? month : '0' + month; var day = date.getDate().toString(); day = day.length > 1 ? day : '0' + day; return day + '/' + month + '/' + year; } function validatePhoto(images, message) { var valid = true; var val = $('#' + images).val(); if ((val === undefined || val == '') && checkImage) { $('#canvas-portrait').parent().append(''); $('#canvas-portrait').parent().addClass('has-danger'); valid = false; } return valid; } function validateExistingUser() { var isExist = false; var passportNo = $('#passportNo').val(); var dob = $('#dateOfBirth').val(); var nationality = $('#nationalitySelection2').val(); $.ajax({ headers: { 'X-CSRF-Token': csrf_token }, type: 'GET', contentType: "application/json; charset=utf-8", url: contextPath + "/resources/getDetails?passportNo=" + passportNo + "&dob=" + dob + "&countryCode=" + nationality, async: false }).done(function(data) { // handling for error in BE if (null != data.error && data.error != '') { Swal.fire({ type: 'error', title: 'Error!', text: 'Record already exists', allowOutsideClick: false, allowEscapeKey: false, confirmButtonColor: '#f08f00', buttonsStyling: false, confirmButtonClass: "btn btn-warning", }); isExist = true; } else if (data.workerIsExists == true) { Swal.fire({ type: 'error', title: 'Error!', text: 'Record already exists', allowOutsideClick: false, allowEscapeKey: false, confirmButtonColor: '#f08f00', buttonsStyling: false, confirmButtonClass: "btn btn-warning", }); isExist = true; } }).fail(function(data) { Swal.fire({ type: 'error', title: 'Error!', text: 'System Unavailable. Please Contact Administrator.', allowOutsideClick: false, allowEscapeKey: false, confirmButtonColor: '#f08f00', buttonsStyling: false, confirmButtonClass: "btn btn-danger", }); isExist = true; }); return isExist; } // this method checks the dermalog device if connected function checkDermalogConnection() { if (checkImage) { try { // check if can connect directly in device console.log(navigator.usb); navigator.usb.getDevices().then(function(device) { var isExists = false; console.log('devices: ' + device.length); if (device.length > 0) { device.forEach(function(d) { console.log('product ID: ' + d.vendorId.toString(16)); console.log('vendor ID: ' + d.productId.toString(16)); console.log('manufacturer Name: ' + d.manufacturerName); if (d.manufacturerName.indexOf('DERMALOG') >= 0) { isExists = true; return false; } }); if (!isExists) { if (!initialCheckDevice) { initialCheckDevice = true; $('#toastErrorConn').toast('show'); $('.btn-check-device').each(function() { $(this).prop('disabled', true); }); } } else { if (initialCheckDevice) { initialCheckDevice = false; $('#toastErrorConn').toast('hide'); $('.btn-check-device').each(function() { $(this).prop('disabled', false); }); } } } else { initialCheckDevice = true; $('#toastErrorConn').toast('show'); $('.btn-check-device').each(function() { $(this).prop('disabled', true); }); } }); } catch (err) { console.log('error: ' + err); } } return initialCheckDevice; } function pairDermalogConnection() { console.log('paired product ID: ' + vendorId); console.log('paired vendor ID: ' + productId); navigator.usb.requestDevice({ filters: [{ vendorId: vendorId, productId: productId }] }).then(function(device) { console.log('paired manufacturer name: ' + device.manufacturerName); device.open() .then(() => device.selectConfiguration(1)) .then(() => device.claimInterface(0)); }).catch(e => { console.log("There is no device. " + e); }); } $("#medicalCenterSelection").change(function() { $("#mcprofile").show(); var $selectedOption = $(this).find('option:selected'); var email = $selectedOption.data('email'); var regNo = $selectedOption.data('regno'); var contactno = $selectedOption.data('contact'); var address = $selectedOption.data('address'); $("#mcemail").text(email); $("#mccontact").text(contactno); $("#mcregno").text(regNo); $("#mcadd").text(address); });