feat: Se agrego canvas en index.html y las funciones para generar graficos en index.js

This commit is contained in:
Hector 2025-03-11 06:06:41 -06:00
parent 447658ddc7
commit 9bf4c64cda
7 changed files with 106 additions and 7 deletions

View File

@ -50,7 +50,9 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Guardar la venta en la base de datos
if ($bd->guardarVenta($venta)) {
echo json_encode(['success' => true, 'message' => 'Venta realizada con éxito', 'total' => $total]);
// Guardar comprobante en sesión
$_SESSION['comprobante'] = $venta->generarComprobante();
echo json_encode(['success' => true, 'message' => 'Venta realizada con éxito', 'redirect' => '../vista/comprobante.html']);
} else {
echo json_encode(['success' => false, 'message' => 'Error al registrar la venta']);
}

View File

@ -11,7 +11,7 @@ require_once 'VendedorController.php';
header('Content-Type: application/json');
// Conexión a base de datos
$db = new BaseDatos('localhost:3306', 'root', '481037', 'boletos_db');
$db = new BaseDatos('localhost:3306', 'root', 'password', 'boletos_db');
// Inicializar el controlador
$vendedorController = new VendedorController($db);

View File

@ -35,7 +35,7 @@ if (empty($idsBoletos)) {
}
// Conexión a base de datos
$db = new BaseDatos('localhost:3306', 'root', '481037', 'boletos_db');
$db = new BaseDatos('localhost:3306', 'root', 'password', 'boletos_db');
// Inicializar el controlador
$vendedorController = new VendedorController($db);

View File

@ -19,6 +19,7 @@
width: auto;
}
</style>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<body>
<div class="container">
@ -87,6 +88,17 @@
</div>
</div>
</div>
<br>
<h2>Graficos</h2>
<div class="row">
<div class="col-md-6">
<canvas id="graficoVendidos"></canvas>
</div>
<div class="col-md-6">
<canvas id="graficoLibres"></canvas>
</div>
</div>
<script src="js/index.js"></script>
</body>

View File

@ -1,9 +1,49 @@
// js/index.js - Script para manejar la interfaz de usuario y la comunicación con el backend
document.addEventListener('DOMContentLoaded', function() {
let seleccionados = [];
const precioBoleto = 50.00; // Precio por boleto
// Inicializar gráficos
const ctxVendidos = document.getElementById('graficoVendidos').getContext('2d');
const ctxLibres = document.getElementById('graficoLibres').getContext('2d');
const graficoVendidos = new Chart(ctxVendidos, {
type: 'bar',
data: {
labels: ['Vendidos'],
datasets: [{
label: 'Asientos Vendidos',
data: [0],
backgroundColor: ['#dc3545']
}]
},
options: {
scales: {
y: {
beginAtZero: true
}
}
}
});
const graficoLibres = new Chart(ctxLibres, {
type: 'bar',
data: {
labels: ['Libres'],
datasets: [{
label: 'Asientos Libres',
data: [0],
backgroundColor: ['#28a745']
}]
},
options: {
scales: {
y: {
beginAtZero: true
}
}
}
});
// Cargar el mapa de asientos al iniciar
cargarMapaAsientos();
@ -23,6 +63,7 @@ document.addEventListener('DOMContentLoaded', function() {
}
renderizarMapaAsientos(data.mapa);
actualizarGraficos(data.mapa); // Asegúrate de llamar a actualizarGraficos aquí
} catch (error) {
console.error('Error al cargar el mapa de asientos:', error);
mostrarMensaje('Error de conexión con el servidor', 'error');
@ -203,4 +244,26 @@ document.addEventListener('DOMContentLoaded', function() {
alert(texto);
}
}
// Función para actualizar los gráficos
function actualizarGraficos(mapa) {
let totalVendidos = 0;
let totalLibres = 0;
Object.values(mapa).forEach(asientosEnFila => {
Object.values(asientosEnFila).forEach(estado => {
if (estado === 'vendido') {
totalVendidos++;
} else if (estado === 'disponible') {
totalLibres++;
}
});
});
graficoVendidos.data.datasets[0].data[0] = totalVendidos;
graficoLibres.data.datasets[0].data[0] = totalLibres;
graficoVendidos.update();
graficoLibres.update();
}
});

View File

@ -10,6 +10,7 @@
<style>
</style>
<script src="jspdf.plugin.autotable.min.js"></script>
</head>
<body>
<div class="container">
@ -56,6 +57,27 @@
<!-- Campo oculto para almacenar IDs de asientos seleccionados -->
<div id="asientosSeleccionadosInput"></div>
<div class="resumen" id="resumen">
<h3>Graficos</h3>
<table>
<thead>
</thead>
<tbody>
</tbody>
</table>
<!-- Campo oculto para almacenar IDs de asientos seleccionados -->
<div id="asientosSeleccionadosInput"></div>
</form>
</div>

View File

@ -179,8 +179,8 @@ document.addEventListener('DOMContentLoaded', function() {
return;
}
mostrarMensaje('Venta confirmada con éxito', 'success');
setTimeout(() => location.reload(), 2000);
// Redirigir al comprobante
window.location.href = data.redirect;
} catch (error) {
console.error('Error al enviar la venta:', error);