237 lines
7.8 KiB
JavaScript
237 lines
7.8 KiB
JavaScript
let userData = "";
|
|
|
|
$(document).ready(function () {
|
|
userData = JSON.parse(localStorage.getItem("userData"));
|
|
FastClick.attach(document.body);
|
|
setView();
|
|
setEvents();
|
|
});
|
|
|
|
function setEvents() {
|
|
|
|
$(".btnSalir").on("click", function () {
|
|
cerrar();
|
|
});
|
|
|
|
$(".in").on("click", function () {
|
|
fichar('in');
|
|
});
|
|
|
|
$(".inMiddle").on("click", function () {
|
|
fichar('middle');
|
|
});
|
|
|
|
$(".outMiddle").on("click", function () {
|
|
fichar('middle');
|
|
});
|
|
|
|
$(".out").on("click", function () {
|
|
fichar('out');
|
|
});
|
|
|
|
setTimeout(function () {
|
|
cerrar();
|
|
}, 5000);
|
|
}
|
|
|
|
function setView() {
|
|
$(".footer").hide();
|
|
$("#txtNombre").text(userData["name"] + " " + userData["surname"]);
|
|
getInfo();
|
|
$("." + userData["button1"]).show();
|
|
$("." + userData["button2"]).show();
|
|
}
|
|
|
|
function fichar(direction) {
|
|
const data = {
|
|
workerFk: userData['userFk'],
|
|
direction,
|
|
device: localStorage.getItem("device")
|
|
}
|
|
|
|
$.post({
|
|
urlPath: 'WorkerTimeControls/clockIn',
|
|
jsonData: data,
|
|
processData: false,
|
|
success: function (msg) {
|
|
if (msg.error){
|
|
printErrores(msg);
|
|
setTimeout(function () {
|
|
cerrar();
|
|
}, 2000);
|
|
}else {
|
|
$(".confirm").fadeIn(200);
|
|
$(".txtConfirm").append('Fichada registrada correctamente');
|
|
setTimeout(function () {
|
|
cerrar();
|
|
}, 1000);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
function setView() {
|
|
$(".footer").hide();
|
|
$(".in").hide();
|
|
$(".inMiddle").hide();
|
|
$(".outMiddle").hide();
|
|
$(".out").hide();
|
|
$("#txtNombre").text(userData["name"] + " " + userData["surname"]);
|
|
getInfo();
|
|
if(userData["button1"] === null && userData["button2"] === null ) {
|
|
printError ("Contacta con tu responsable")
|
|
} else {
|
|
$("." + userData["button1"]).show();
|
|
$("." + userData["button2"]).show();
|
|
}
|
|
}
|
|
|
|
function getInfo() {
|
|
const queryString = $.param({ workerFk: userData['userFk'] });
|
|
|
|
$.get({
|
|
urlPath: `WorkerTimeControls/getClockIn?${queryString}`,
|
|
processData: false,
|
|
success: function (data) {
|
|
$('.footer').show();
|
|
printTimetable(data);
|
|
}
|
|
});
|
|
}
|
|
|
|
function printTimetable(timetable) {
|
|
const listWeekName = [
|
|
'Domingo',
|
|
'Lunes',
|
|
'Martes',
|
|
'Miércoles',
|
|
'Jueves',
|
|
'Viernes',
|
|
'Sábado'
|
|
];;
|
|
let dated = new Date();
|
|
dated.setDate(dated.getDate() - 6);
|
|
|
|
for (let i = 0; i < 6; i++) {
|
|
$(".listHorario").append('<label>' + listWeekName[dated.getDay()] +'</label>');
|
|
dated.setDate(dated.getDate() + 1);
|
|
}
|
|
$(".listHorario").append('<label class="hoy">HOY</label>');
|
|
$(".listHorario").append('<li class="hrTop"></li>');
|
|
|
|
for (let i = 0; i < timetable.length; i++) {
|
|
|
|
$(".listHorario").append(
|
|
'<li>' +
|
|
'<div class="time ' + ifIsEmpty(timetable[i]["6daysAgo"]) + '">' +
|
|
'<div>' +
|
|
'<img src="' + ifIsEmptyImage(timetable[i]["6daysAgoDirection"]) + '" />' +
|
|
'<p>' + ifIsEmptyText(timetable[i]["6daysAgo"]) + '</p>' +
|
|
'</div>' +
|
|
'</div>' +
|
|
'<div class="time ' + ifIsEmpty(timetable[i]["5daysAgo"]) + '">' +
|
|
'<div>' +
|
|
'<img src="' + ifIsEmptyImage(timetable[i]["5daysAgoDirection"]) + '" />' +
|
|
'<p>' + ifIsEmptyText(timetable[i]["5daysAgo"]) + '</p>'+
|
|
'</div>' +
|
|
'</div>' +
|
|
'<div class="time ' + ifIsEmpty(timetable[i]["4daysAgo"]) + '">' +
|
|
'<div>' +
|
|
'<img src="' + ifIsEmptyImage(timetable[i]["4daysAgoDirection"]) + '" />' +
|
|
'<p>' + ifIsEmptyText(timetable[i]["4daysAgo"]) + '</p>'+
|
|
'</div>' +
|
|
'</div>' +
|
|
'<div class="time ' + ifIsEmpty(timetable[i]["3daysAgo"]) + '">' +
|
|
'<div>' +
|
|
'<img src="' + ifIsEmptyImage(timetable[i]["3daysAgoDirection"]) + '" />' +
|
|
'<p>' + ifIsEmptyText(timetable[i]["3daysAgo"]) + '</p>'+
|
|
'</div>' +
|
|
'</div>' +
|
|
'<div class="time ' + ifIsEmpty(timetable[i]["2daysAgo"]) + '">' +
|
|
'<div>' +
|
|
'<img src="' + ifIsEmptyImage(timetable[i]["2daysAgoDirection"]) + '" />' +
|
|
'<p>' + ifIsEmptyText(timetable[i]["2daysAgo"]) + '</p>'+
|
|
'</div>' +
|
|
'</div>' +
|
|
'<div class="time ' + ifIsEmpty(timetable[i]["1daysAgo"]) + '">' +
|
|
'<div>' +
|
|
'<img src="' + ifIsEmptyImage(timetable[i]["1daysAgoDirection"]) + '" />' +
|
|
'<p>' + ifIsEmptyText(timetable[i]["1daysAgo"]) + '</p>'+
|
|
'</div>' +
|
|
'</div>' +
|
|
'<div class="time ' + ifIsEmpty(timetable[i]["0daysAgo"]) + '">' +
|
|
'<div>' +
|
|
'<img src="' + ifIsEmptyImage(timetable[i]["0daysAgoDirection"]) + '" />' +
|
|
'<p>' + ifIsEmptyText(timetable[i]["0daysAgo"]) + '</p>'+
|
|
'</div>' +
|
|
'</div>' +
|
|
'</li>'
|
|
);
|
|
}
|
|
printTotalHours(timetable);
|
|
}
|
|
|
|
function printTotalHours(timetable) {
|
|
if(timetable.length > 0) {
|
|
|
|
$(".listHorario").append('<hr>');
|
|
$(".listHorario").append('<li><div class="time">' + secondsToHm(ifIsEmptyText(timetable[0]["6daysAgoTotal"]))
|
|
+ ' h</div><div class="time">' + secondsToHm(ifIsEmptyText(timetable[0]["5daysAgoTotal"]))
|
|
+ ' h</div><div class="time">' + secondsToHm(ifIsEmptyText(timetable[0]["4daysAgoTotal"]))
|
|
+ ' h</div><div class="time">' + secondsToHm(ifIsEmptyText(timetable[0]["3daysAgoTotal"]))
|
|
+ ' h</div><div class="time">' + secondsToHm(ifIsEmptyText(timetable[0]["2daysAgoTotal"]))
|
|
+ ' h</div><div class="time">' + secondsToHm(ifIsEmptyText(timetable[0]["1daysAgoTotal"]))
|
|
+ ' h</div><div class="time">' + secondsToHm(ifIsEmptyText(timetable[0]["0daysAgoTotal"]))
|
|
+ ' h</div></li>');
|
|
|
|
$(".total").text('Total: ' +
|
|
secondsToHm(
|
|
Number(timetable[0]["6daysAgoTotal"] == null) +
|
|
Number(timetable[0]["5daysAgoTotal"]) +
|
|
Number(timetable[0]["4daysAgoTotal"]) +
|
|
Number(timetable[0]["3daysAgoTotal"]) +
|
|
Number(timetable[0]["2daysAgoTotal"]) +
|
|
Number(timetable[0]["1daysAgoTotal"]) +
|
|
Number(timetable[0]["0daysAgoTotal"])
|
|
) + ' h');
|
|
} else{
|
|
$(".total").text('Total: 0h');
|
|
}
|
|
|
|
}
|
|
|
|
function printErrores(errores) {
|
|
let error = '';
|
|
for (let i = 0; i < errores.length; i++) {
|
|
if (errores[i].error) {
|
|
error += errores[i].error + "<br>";
|
|
}
|
|
}
|
|
printError(error);
|
|
}
|
|
|
|
function ifIsEmpty(value) {
|
|
return value.trim() ? "show" : "hide";
|
|
}
|
|
|
|
function ifIsEmptyImage(value) {
|
|
return value.trim() ? `img/${value}.svg` :"img/in.svg";
|
|
}
|
|
|
|
function ifIsEmptyText(value) {
|
|
return value.toString().trim() ? value : "00:00";
|
|
}
|
|
|
|
function cerrar(){
|
|
localStorage.removeItem("userData");
|
|
setTimeout(function () {
|
|
window.location='index.html';
|
|
}, 200);
|
|
}
|
|
|
|
function secondsToHm(seconds) {
|
|
seconds = Number(seconds);
|
|
let hours = Math.floor(seconds / 3600);
|
|
let minutes = Math.floor(seconds % 3600 / 60);
|
|
return hours.toString().padStart(2, '0') + ':' + minutes.toString().padStart(2, '0');
|
|
} |