myMedisys/tomcatfiles/mymedisys-frontend/WEB-INF/classes/scripts/registration/worker-registration.js

1309 lines
36 KiB
JavaScript
Raw Normal View History

2023-09-06 05:56:42 +05:30
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 = "<span class='badge " + color + "'>" + statusDesc + "</span>";
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('<i class="far fa-lg fa-question-circle"></i>');
$('#' + 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('<i class="far fa-lg fa-check-circle"></i>');
} 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('<i class="far fa-lg fa-times-circle"></i>');
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('<label id="' + images + "-error" + '"' + 'class="error" for="' + images + '">' + message + '</label>');
$('#' + 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('<label id="canvas-portrait-error" class="error" for="canvas-portrait">' + message + '</label>');
$('#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);
});