diff --git a/vista/css/index.css b/vista/css/index.css index 2c00741..bb656a5 100644 --- a/vista/css/index.css +++ b/vista/css/index.css @@ -1,11 +1,10 @@ - - body { font-family: Arial, sans-serif; margin: 0; padding: 20px; background-color: #f5f5f5; } + .container { max-width: 1200px; margin: 0 auto; @@ -14,9 +13,29 @@ body { border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); } + +.main-content { + display: flex; + flex-wrap: wrap; + gap: 20px; + margin-top: 20px; +} + +.sala { + flex: 1; + min-width: 300px; + margin: 20px 0; + text-align: center; +} + +.sidebar { + flex: 0 0 350px; +} + h1, h2 { color: #333; } + .mensaje { background-color: #f8d7da; color: #721c24; @@ -25,10 +44,7 @@ h1, h2 { border-radius: 4px; display: none; } -.sala { - margin: 20px 0; - text-align: center; -} + .escenario { background-color: #ddd; padding: 10px; @@ -37,26 +53,31 @@ h1, h2 { text-align: center; font-weight: bold; } + .filas { display: flex; flex-direction: column; align-items: center; gap: 10px; } + .fila { display: flex; gap: 10px; align-items: center; } + .numero-fila { width: 30px; text-align: center; font-weight: bold; } + .asientos { display: flex; gap: 5px; } + .asiento { width: 35px; height: 35px; @@ -68,27 +89,33 @@ h1, h2 { user-select: none; font-size: 12px; } + .disponible { background-color: #28a745; color: white; } + .vendido { background-color: #dc3545; color: white; cursor: not-allowed; } + .seleccionado { background-color: #007bff; color: white; } + .form-group { margin-bottom: 15px; } + label { display: block; margin-bottom: 5px; font-weight: bold; } + input[type="text"] { width: 100%; padding: 8px; @@ -96,6 +123,7 @@ input[type="text"] { border-radius: 4px; box-sizing: border-box; } + .btn { background-color: #007bff; color: white; @@ -104,28 +132,68 @@ input[type="text"] { border-radius: 4px; cursor: pointer; } + .btn:hover { background-color: #0069d9; } -.resumen { - margin-top: 20px; - padding: 15px; + +.resumen, .concierto-detalles, #formularioVenta { background-color: #f8f9fa; border-radius: 4px; } + +.resumen { + margin-top: 20px; + padding: 15px; +} + +.concierto-detalles { + border-left: 4px solid #6c757d; +} + +#formularioVenta { + padding: 20px; + border: 1px solid #ddd; + height: fit-content; +} + +.concierto-detalles i { + color: #6c757d; + margin-right: 5px; + width: 20px; + text-align: center; +} + +#formularioVenta i { + color: #495057; + margin-right: 5px; +} + .leyenda { display: flex; gap: 15px; margin-top: 20px; justify-content: center; } + .leyenda-item { display: flex; align-items: center; gap: 5px; } + .leyenda-color { width: 20px; height: 20px; border-radius: 3px; +} + +@media (max-width: 992px) { + .main-content { + flex-direction: column; + } + + .sidebar { + width: 100%; + } } \ No newline at end of file diff --git a/vista/index.html b/vista/index.html index 0c53b73..8d65fcd 100644 --- a/vista/index.html +++ b/vista/index.html @@ -4,8 +4,12 @@ <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Sistema de Venta de Boletos</title> - <link rel="stylesheet" href="css/index.css"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous"> + <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.0/font/bootstrap-icons.css"> + <link rel="stylesheet" href="css/index.css"> + <style> + + </style> </head> <body> <div class="container"> @@ -13,46 +17,63 @@ <div id="mensajeAlerta" class="alert alert-warning d-none" role="alert"></div> - <div class="sala"> - <h2>Selección de Asientos - Sala Principal</h2> - <div class="escenario">ESCENARIO</div> - - <div class="filas" id="mapaAsientos"> - <!-- El mapa de asientos se cargará dinámicamente con JavaScript --> + <div class="main-content"> + <div class="sala"> + <h2>Selección de Asientos - Sala Principal</h2> + <div class="escenario">ESCENARIO</div> + + <div class="filas" id="mapaAsientos"> + <!-- El mapa de asientos se cargará dinámicamente con JavaScript --> + </div> + + <div class="leyenda"> + <div class="leyenda-item"> + <div class="leyenda-color" style="background-color: #28a745;"></div> + <span>Disponible</span> + </div> + <div class="leyenda-item"> + <div class="leyenda-color" style="background-color: #007bff;"></div> + <span>Seleccionado</span> + </div> + <div class="leyenda-item"> + <div class="leyenda-color" style="background-color: #dc3545;"></div> + <span>Vendido</span> + </div> + </div> </div> - <div class="leyenda"> - <div class="leyenda-item"> - <div class="leyenda-color" style="background-color: #28a745;"></div> - <span>Disponible</span> - </div> - <div class="leyenda-item"> - <div class="leyenda-color" style="background-color: #007bff;"></div> - <span>Seleccionado</span> - </div> - <div class="leyenda-item"> - <div class="leyenda-color" style="background-color: #dc3545;"></div> - <span>Vendido</span> + <div class="sidebar"> + <div class="concierto-detalles mb-4 p-3 bg-light border rounded"> + <h3 class="mb-3"><i class="bi bi-music-note-beamed"></i> Detalles del Concierto</h3> + <ul class="list-unstyled"> + <li class="mb-2"><i class="bi bi-person-circle"></i> <strong>Artista:</strong> Nombre del Artista</li> + <li class="mb-2"><i class="bi bi-calendar-event"></i> <strong>Fecha:</strong> 15 de abril, 2025</li> + <li class="mb-2"><i class="bi bi-clock"></i> <strong>Hora:</strong> 20:00 hrs</li> + <li class="mb-2"><i class="bi bi-geo-alt"></i> <strong>Lugar:</strong> Arena Principal</li> + <li class="mb-2"><i class="bi bi-hourglass-split"></i> <strong>Duración:</strong> 2 horas</li> + <li class="mb-2"><i class="bi bi-door-open"></i> <strong>Apertura:</strong> 18:30 hrs</li> + </ul> </div> + + <form id="formularioVenta"> + <h3><i class="bi bi-cart"></i> Datos de Venta</h3> + <div class="form-group mb-3"> + <label for="nombre_cliente"><i class="bi bi-person"></i> Nombre del Cliente:</label> + <input type="text" id="nombre_cliente" name="nombre_cliente" class="form-control" required> + </div> + + <div class="resumen" id="resumen"> + <h3><i class="bi bi-ticket-perforated"></i> Resumen de Selección</h3> + <p><i class="bi bi-seat"></i> Asientos seleccionados: <span id="asientosSeleccionados">Ninguno</span></p> + <p><i class="bi bi-cash"></i> Total: $<span id="totalVenta">0.00</span></p> + <button type="submit" id="btnVender" class="btn btn-primary"><i class="bi bi-check-circle"></i> Confirmar Venta</button> + </div> + + <!-- Campo oculto para almacenar IDs de asientos seleccionados --> + <div id="asientosSeleccionadosInput"></div> + </form> </div> </div> - - <form id="formularioVenta"> - <div class="form-group"> - <label for="nombre_cliente">Nombre del Cliente:</label> - <input type="text" id="nombre_cliente" name="nombre_cliente" class="form-control" required> - </div> - - <div class="resumen" id="resumen"> - <h3>Resumen de Selección</h3> - <p>Asientos seleccionados: <span id="asientosSeleccionados">Ninguno</span></p> - <p>Total: $<span id="totalVenta">0.00</span></p> - <button type="submit" id="btnVender" class="btn btn-primary">Confirmar Venta</button> - </div> - - <!-- Campo oculto para almacenar IDs de asientos seleccionados --> - <div id="asientosSeleccionadosInput"></div> - </form> </div> <script src="js/index.js"></script>