var msgTime = 0;
var modalVisible = false;
var ultimos = [];
var checkInterval = null;
function az(i) {
return `${i < 10 ? '0' : ''}${i}`;
}
function init() {
setInterval(function () {
var current_time = new Date().getTime();
var excecution_time = parseInt((current_time - started_at) / 1000);
var s = new Date((server_time + excecution_time) * 1000);
drawClock(az(s.getHours()), az(s.getMinutes()));
drawFecha(az(s.getDate()), s.getDay(), s.getMonth(), s.getFullYear());
}, 1000);
}
function drawClock(hora, min) {
$('#min').text(min);
$('#hr').text(hora);
}
function drawFecha(dd, dnum, mm, yyyy) {
var meses = ['Ene', 'Feb', 'Mzo', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'];
$('#fecha').text(' ' + meses[mm] + ' ' + dd);
$('#ano').text(yyyy);
}
function modalTimer() {
if (checkInterval === null) {//no es error de internet
setTimeout(function () {
$(".sub-bloque ").addClass("d-none");
$("#registro").removeClass("d-none");
$("#cve").focus();
}
, 7000 + msgTime);
}
}
//--Sin conexión de internet ---
function checadorAlive() {
if (checkInterval == null) {
checkInterval = setInterval(isAlive, 2500);
}
}
function isAlive() {
var alive = false;
try {
$.ajax({
url: 'checador_alive.php',
type: 'POST',
dataType: 'json',
async: false,
timeout: 500,/*ms*/
success: function (result) {
if (result["ok"] != "" && result["ok"] !== undefined) {
cambiaVista('.sub-bloque', '#registro');
$('#db-error').text(result.error);
$("#cve").focus();
alive = true;
clearInterval(checkInterval);
checkInterval = null;
}
},
error: function (jqXHR, textStatus, errorThrown) {
console.log("Sin internet");
}
});//ajax*/
} catch (e) {
console.log("error! ", e);
}
return alive;
}
//--Fin sin conexión de internet ---
function cambiaVista(objHide, objShow) {
$(objHide).addClass("d-none");
$(objShow).removeClass("d-none");
}
function showAviso(avisos) {
cambiaVista('#registro', '#avisos');
const lista = document.querySelector('#lista-avisos');
lista.innerHTML = '';
avisos.forEach(({ aviso_texto: texto }) => {
const li = document.createElement('li');
li.innerHTML = texto;
lista.appendChild(li);
});
}
/*
$('#formaChecador').on('submit', function (e) {
e.preventDefault();
var clave = $("#cve").val();
console.log("clave: ", clave);
$.ajax({
url: 'checador_action.php',
type: 'POST',
dataType: 'json',
data: { cve: $("#cve").val(), facultad: $("#facultad_id").val() },
timeout: 3500,
success: function (result) {
if ((result?.error ?? "") != "") {
console.log(result["error"]);
// avisos
// alert("here")
if (result.nombre != undefined && result.ok == undefined) {
showAviso(result.avisos);
return
cambiaVista('#registro', '#result_no');
$("#nombre-profesor").text(result["nombre"]);
$('#result_no .clave').text(clave);
$("#last-error").text(result["error"]);
}
else if(result.nombre == undefined) {
cambiaVista('#registro', '#not_in_db');
$('#clave-no-encontrada').html(clave);
} else
cambiaVista('#registro', '#internet');
return;
}
$("#list-result").find(".mat-desc").html("");
$("#list-result").find(".mat-fecha").html("");
$("#list-result").find(".mat-salon").html("");
$("#list-result").find(".mat-gpo").html("");
$("#nombre").html(result["nombre"]);
var rows = $("#list-result > li").length;//limpia tabla actual
var resultRows = 0;
//nuevas
if (result["result"] !== undefined && result["result"] != null) resultRows += result["result"].length;
//viejas
if (result["asistencias"] !== undefined && result["asistencias"] != null) resultRows += result["asistencias"].length;
if (rows > resultRows) {//sobran
//borrar renglones extra (rows - result.length) pero dejar al menos 1
while (rows > resultRows && rows > 1) {
$("#list-result li:last-child").remove();
rows--;
}
} else {//faltan, clonar
for (var i = rows; i < resultRows; i++) {
$("#list-result li:first-child").clone(true).appendTo("#list-result");
}
}
//----------
var retardo = false;
//hay elementos checado nuevo?
if (result["result"] !== undefined && result["result"] != null && result["result"].length != 0) {
cambiaVista('#registro', '#result_ok');
$("#list-result").children().each(function (index) {
if (index < result["result"].length) {//llenar info
if (result["result"][index]["grupo"] != "") {
if (result["result"][index]["retardo"]) {
retardo = true;
} else {
retardo = false;
}
$(this).find(".mat-gpo").html("Grupo: " + result["result"][index]["grupo"]);
}
$(this).find(".mat-desc").html(result["result"][index]["materia"]);
$(this).find(".mat-fecha").html("Inicia " + result["result"][index]["hora_inicio"]);
if (result["result"][index]["salon"] != "")
$(this).find(".mat-salon").html("Salón: " + result["result"][index]["salon"]);
//else $(this).find(".mat-salon").html("");
}
});
}
var texto = "";
//hay elementos checado anterior?
if (result["asistencias"] !== undefined && result["asistencias"] != null && result["asistencias"].length != 0) {
cambiaVista('#registro', '#result_ok');
$("#list-result").children().each(function (index) {
if (index < result["asistencias"].length) {//llenar info
if (result["asistencias"][index]["grupo"] != "") {
if (result["asistencias"][index]["retardo"]) {
retardo = true;
} else {
retardo = false;
}
$(this).find(".mat-gpo").html("Grupo: " + result["asistencias"][index]["grupo"]);
}
$(this).find(".mat-desc").html(result["asistencias"][index]["materia"]);
$(this).find(".mat-fecha").html("Inicia " + result["asistencias"][index]["hora_inicio"]);
texto = "" +
"Ya estaba registrada" +
""
if (result["asistencias"][index]["salon"] !== undefined && result["asistencias"][index]["salon"] != "")
$(this).find(".mat-salon").html("Salón: " + result["asistencias"][index]["salon"]);
}
});
}
console.log(texto);
if (retardo) {
$("#estado").find("img").prop("src", "imagenes/retardo.svg");
$("#estado").find("h2").text("Retardo").removeClass("text-success text-blue").addClass("text-warning");
} else {
$("#estado").find("img").prop("src", "imagenes/asistencia.svg");
if (texto == "")
$("#estado").find("h2").text("Asistencia").removeClass("text-warning text-blue").addClass("text-success");
else
$("#estado").find("h2").html("Asistencia
" + texto).removeClass("text-warning text-success").addClass("text-blue");
}
if (result.nombre.replace(/ /g, '') == "") {
// if (false) {
console.log(clave)
cambiaVista('#registro', '#not_in_db');
$("#clave-no-encontrada").html(clave);
} else if (resultRows == 0) {
console.log(result)
//$("#nombre-profesor").text(result["nombre"]);
cambiaVista('#registro', '#result_no');
}
},
error: function (jqXHR, textStatus, errorThrown) {
cambiaVista('#registro', '#internet');
$('#db-error').text(textStatus);
checadorAlive();//Muestra mensaje sin internet y comienza a checar hasta que haya
},
complete: function (jqXHR, textStatus) {
$("#cve").val('');
modalTimer();
}
});
});
*/
document.querySelector('#formaChecador').addEventListener('submit', async (e) => {
e.preventDefault();
const clave = document.querySelector('#cve');
if (clave.value == '') {
clave.focus(); return;
}
const data = new FormData();
data.append('cve', clave.value);
const btn = document.querySelector('#btnChecar');
// remove btn
btn.classList.add('disabled');
// add spinner
btn.insertAdjacentHTML('afterbegin', '');
try {
const result = await fetch('action_checador.php', {
method: 'POST',
body: data
}).then(response => response.json());
if (!result.ok) {
function not_int_db(clave) {
cambiaVista('#registro', '#not_in_db');
document.querySelector('#clave-no-encontrada').innerHTML = clave;
}
function not_has_horario(nombre_profesor, from = '#registro') {
cambiaVista(from, '#result_no');
document.querySelector('#nombre-profesor').innerHTML = nombre_profesor;
}
switch (result.failure) {
case 'profesor':
not_int_db(clave.value);
break;
case 'horario':
let from;
if (result.avisos.length > 0) {
await show_avisos(result.avisos)
from = '#avisos';
}
else
from = '#registro';
not_has_horario(result.nombre, from);
break;
default:
alert('La clave no es válida');
location.reload();
}
setTimeout(() => {
location.reload();
}, 5000);
return;
}
function show_avisos(avisos) {
return new Promise(resolve => {
if (avisos.length == 0) {
resolve();
return;
}
const lista_avisos = document.querySelector('#lista-avisos');
avisos.forEach(aviso => lista_avisos.innerHTML += `
${aviso}
${aviso}