1309 lines
36 KiB
JavaScript
1309 lines
36 KiB
JavaScript
|
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);
|
||
|
|
||
|
});
|
||
|
|