This commit is contained in:
angel.alducin 2025-04-29 21:21:31 -06:00
parent 8df6427723
commit 1cca9e10df
5 changed files with 169 additions and 5 deletions

View File

@ -3,13 +3,33 @@
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>SwimArt Manager Crear Rutina</title>
<title>Inicializar rutina</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" />
</head>
<body class="bg-light">
<div class="container py-5">
<h1 class="mb-4 text-center">Crear Rutina SwimArt Manager</h1>
<h1 class="mb-4 text-center">Inicializar rutina</h1>
<nav class="navbar navbar-expand-lg navbar-dark bg-primary fixed-top">
<div class="container-fluid">
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto">
<li class="nav-item">
<a class="nav-link" href="#inicializarRutina">Inicializar Rutina</a>
</li>
<li class="nav-item">
<a class="nav-link" href="equipoDisponibles.html">Crear Formaciones</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#otroLink2">Catalogo de formaciones</a>
</li>
</ul>
</div>
</div>
</nav>
<form id="routineForm" class="row g-3">
<div class="col-md-6">
<label for="title" class="form-label">Título de la rutina</label>

View File

@ -0,0 +1,9 @@
.card-container {
display: flex;
flex-wrap: wrap;
gap: 15px;
}
.card {
width: 18rem;
margin-top: 10px;
}

View File

@ -0,0 +1,73 @@
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Equipos Disponibles</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="css/equipoDisponible.css" rel="stylesheet">
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-primary fixed-top">
<div class="container-fluid">
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto">
<li class="nav-item">
<a class="nav-link" href="coach.html">Inicializar Rutina</a>
</li>
<li class="nav-item">
<a class="nav-link" href="equipoDisponibles.html">Crear Formaciones</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#otroLink2">Catalogo de formaciones</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container mt-5">
<h2>Rutinas Disponibles</h2>
<div class="card-container" id="routinesList"></div>
</div>
<script>
// Función para cargar las rutinas
async function loadRoutines() {
const response = await fetch('/routines'); // Llama a la API para obtener las rutinas
const routines = await response.json();
const routinesList = document.getElementById('routinesList');
routinesList.innerHTML = ''; // Limpiar cualquier contenido anterior
// Iterar sobre las rutinas y crear cards
routines.forEach(routine => {
const card = document.createElement('div');
card.classList.add('card', 'text-center', 'border-primary');
card.innerHTML = `
<div class="card-body">
<h5 class="card-title">${routine.nombreCompetencia}</h5>
<p class="card-text"><strong>Competencia:</strong> ${routine.tipoCompetencia}</p>
<p class="card-text"><strong>Modalidad:</strong> ${routine.modalidad}</p>
<h6>Atletas:</h6>
<ul>
${Array.isArray(routine.participants) && routine.participants.length > 0
? routine.participants.map(participant =>
`<li>${participant.atletaId.nombre} - ${participant.rol}</li>`
).join('')
: '<li>No hay atletas asignados</li>'}
</ul>
</div>
`;
routinesList.appendChild(card); // Agregar la card al contenedor
});
}
// Cargar rutinas cuando se cargue la página
document.addEventListener('DOMContentLoaded', loadRoutines);
</script>
</body>
</html>

View File

@ -84,13 +84,13 @@ async function saveRoutine() {
const result = await res.json();
if (res.ok) {
alert(" Rutina guardada correctamente.");
alert(" Rutina guardada correctamente.");
window.location.reload();
} else {
alert("Error: " + result.error);
alert("Error: " + result.error);
}
} catch (err) {
console.error(err);
alert(" Error al guardar la rutina.");
alert(" Error al guardar la rutina.");
}
}

62
routes/routines copy.js Normal file
View File

@ -0,0 +1,62 @@
const express = require('express');
const mongoose = require('mongoose');
const router = express.Router();
const routineSchema = new mongoose.Schema({
title: String,
createdBy: { type: String, default: "coach-id-ejemplo" },
language: { type: String, enum: ['es', 'en', 'fr'], default: 'es' },
duration: Number,
musicUrl: { type: String, default: "" },
nombreCompetencia: String,
tipoCompetencia: { type: String, enum: ['libre', 'técnica'], default: 'libre' },
modalidad: { type: String, enum: ['solo', 'duo', 'equipo'], default: 'solo' },
participantes: [
{
atletaId: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
rol: String,
idPersonalizado: String
}
],
elements: [
{
code: String,
startTime: Number,
duration: Number,
position: {
x: Number,
y: Number
}
}
],
createdAt: { type: Date, default: Date.now }
});
const Routine = mongoose.model('Routine', routineSchema);
router.post('/', async (req, res) => {
try {
console.log("📩 Recibido en backend:", JSON.stringify(req.body, null, 2)); // 👈 LOG
const nuevaRutina = new Routine(req.body);
await nuevaRutina.save();
console.log("✅ Rutina guardada.");
res.status(201).json({ message: 'Rutina creada correctamente' });
} catch (err) {
console.error("❌ Error al guardar rutina:", err); // 👈 ERROR DETALLADO
res.status(500).json({ error: 'Error al guardar la rutina' });
}
});
// Ruta para obtener todas las rutinas
router.get('/routines', async (req, res) => {
try {
const routines = await Routine.find(); // Obtén todas las rutinas de la base de datos
res.json(routines);
} catch (error) {
res.status(500).json({ message: 'Error al obtener las rutinas', error });
}
});
module.exports = router;