File "planilla.js"
Full Path: C:/wamp64/www/PERSONAL/EntregaCarnet/frontend/planilla.js
File size: 5.06 KB
MIME-type: text/plain
Charset: utf-8
const canvas = document.getElementById('firmaCanvas');
const ctx = canvas.getContext('2d');
let dibujando = false;
function getPosicion(event) {
const rect = canvas.getBoundingClientRect();
if (event.touches) {
return {
x: event.touches[0].clientX - rect.left,
y: event.touches[0].clientY - rect.top
};
} else {
return {
x: event.offsetX,
y: event.offsetY
};
}
}
function empezarDibujo(event) {
dibujando = true;
const pos = getPosicion(event);
ctx.beginPath();
ctx.moveTo(pos.x, pos.y);
event.preventDefault();
}
function dibujar(event) {
if (!dibujando) return;
const pos = getPosicion(event);
ctx.lineTo(pos.x, pos.y);
ctx.stroke();
event.preventDefault();
}
function terminarDibujo(event) {
dibujando = false;
guardarFirma();
event.preventDefault();
}
function guardarFirma() {
const dataURL = canvas.toDataURL();
document.getElementById('firma').value = dataURL;
}
function limpiarFirma() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
document.getElementById('firma').value = "";
}
// Eventos mouse
canvas.addEventListener('mousedown', empezarDibujo);
canvas.addEventListener('mousemove', dibujar);
canvas.addEventListener('mouseup', terminarDibujo);
canvas.addEventListener('mouseleave', terminarDibujo);
// Eventos táctiles
canvas.addEventListener('touchstart', empezarDibujo);
canvas.addEventListener('touchmove', dibujar);
canvas.addEventListener('touchend', terminarDibujo);
//------------------------------------------------------------------------------------------//--------------
document.addEventListener('DOMContentLoaded', function () {
document.getElementById('formRegistro').addEventListener('submit', function (event) {
event.preventDefault();
const canvas = document.getElementById('firmaCanvas');
if (isCanvasVacio(canvas)) {
mostrarAlerta('Por favor firme antes de enviar el formulario.', 'warning');
return;
}
const firmaInput = document.getElementById('firma');
firmaInput.value = canvas.toDataURL('image/png');
const formData = new FormData(this);
fetch('../backend/insert.php', {
method: 'POST',
body: formData
})
.then(async response => {
const contentType = response.headers.get('content-type');
if (contentType && contentType.includes('application/json')) {
return response.json();
} else {
const text = await response.text();
throw new Error('Respuesta no es JSON:\n' + text);
}
})
.then(data => {
mostrarAlerta(data.mensaje, data.status === 'success' ? 'success' : 'error');
if (data.status === 'success') {
this.reset();
limpiarFirma();
setTimeout(() => {
window.location.href = 'planilla.html';
}, 2000);
}
})
.catch(error => {
console.error('Error:', error);
mostrarAlerta('Hubo un error al enviar el formulario.', 'error');
});
});
});
//---------------------------------------------------------------//-------------------------------------------------------------
function mostrarAlerta(mensaje, tipo = "success") {
Swal.fire({
icon: tipo,
title: mensaje,
showConfirmButton: false,
timer: 2000,
timerProgressBar: true
});
}
//-----------------------------------------------------------------------------------------------
function isCanvasVacio(canvas) {
const context = canvas.getContext('2d');
const pixelData = context.getImageData(0, 0, canvas.width, canvas.height).data;
for (let i = 0; i < pixelData.length; i += 4) {
if (pixelData[i + 3] !== 0) {
return false; // Hay al menos un píxel visible
}
}
return true;
}
//-------------------------------------------------------------------------------------------------------------------------------//---------------------
// traer datos de la tabla de empleados y mostrarlos en los inputs
$('#buscarForm2').submit(function (event) {
event.preventDefault();
var cedula = $('#cedula').val();
// Use $.getJSON instead, it forces the result to be treated as JSON
$.getJSON("../backend/select2.php", { cedula: cedula })
.done(function(response) {
// No need for JSON.parse(data) here!
// jQuery already did the work.
if (response && response.exito) {
$('[name="nombre"]').val(response.cliente.nombre);
$('[name="cedula"]').val(response.cliente.cedula);
$('[name="cargo"]').val(response.cliente.cargo);
$('[name="cedula_original"]').val(response.cliente.cedula);
} else {
alert(response.mensaje || "No se encontraron datos.");
}
})
.fail(function(jqXHR, textStatus, errorThrown) {
console.error("Request failed: " + textStatus, errorThrown);
alert("Error en el servidor. Revisa la consola.");
});
});