195 lines
9.7 KiB
HTML
195 lines
9.7 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="es">
|
||
<head>
|
||
<meta charset="UTF-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||
<title>Editor de Formación – SwimmingArt</title>
|
||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css">
|
||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&display=swap">
|
||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.5/font/bootstrap-icons.css">
|
||
|
||
<link rel="stylesheet" href="css/editorPiscina.css">
|
||
<link rel="stylesheet" href="css/navbar.css">
|
||
|
||
<script src="https://unpkg.com/wavesurfer.js"></script>
|
||
<script src="https://cdn.jsdelivr.net/npm/konva@9.2.0/konva.min.js"></script>
|
||
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
|
||
</head>
|
||
<body>
|
||
<!-- NAV -->
|
||
<nav class="navbar navbar-expand-lg navbar-dark bg-primary sticky-top shadow-sm px-4 py-3">
|
||
<div class="container-fluid">
|
||
<a class="navbar-brand fw-bold text-white">SwimmingArt</a>
|
||
<div class="ms-auto d-flex gap-4 align-items-center">
|
||
<a href="coach.html" class="nav-link text-white" data-i18n="nav.init">Inicializar Rutina</a>
|
||
<a href="equipoDisponibles.html" class="nav-link text-white" data-i18n="nav.equip">Equipos Disponibles</a>
|
||
<div class="dropdown">
|
||
<button class="btn btn-outline-light dropdown-toggle d-flex align-items-center gap-2 px-3 py-1" type="button" id="userDropdown" data-bs-toggle="dropdown" aria-expanded="false">
|
||
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" class="bi bi-person-circle" viewBox="0 0 16 16">
|
||
<path d="M11 10a3 3 0 1 1-6 0 3 3 0 0 1 6 0z"/>
|
||
<path fill-rule="evenodd" d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8zm8-7a7 7 0 0 0-4.546 12.174c.03-.256.071-.512.124-.767C4.28 10.798 5.94 10 8 10s3.72.798 4.422 2.407c.053.255.094.511.124.767A7 7 0 0 0 8 1z"/>
|
||
</svg>
|
||
<span id="nombreUsuarioHeader" class="fw-semibold">Usuario</span>
|
||
</button>
|
||
<ul class="dropdown-menu dropdown-menu-end text-center p-3"
|
||
aria-labelledby="userDropdown"
|
||
style="background-color: #0d6efd; color: white; border-radius: 0 0 8px 8px; min-width: 100%; max-width: 250px;">
|
||
|
||
<!-- Mostrar rol -->
|
||
<li class="mb-2">
|
||
<span id="nombreUsuarioDropdown" class="fw-semibold text-white d-block">Coach</span>
|
||
</li>
|
||
|
||
<!-- Selector de idioma alineado -->
|
||
<li class="mb-1">
|
||
<div class="d-flex align-items-center justify-content-center gap-2 w-100">
|
||
<i class="bi bi-globe" style="color: white; font-size: 1rem;"></i>
|
||
<select id="langSelector" class="form-select form-select-sm" style="border: none; border-radius: 6px; max-width: 140px;">
|
||
<option value="es">Español</option>
|
||
<option value="en">English</option>
|
||
<option value="fr">Français</option>
|
||
</select>
|
||
</div>
|
||
</li>
|
||
|
||
<!-- Botón salir pegado -->
|
||
<li>
|
||
<button class="btn btn-danger btn-sm w-100" onclick="logout()" data-i18n="logout">Salir</button>
|
||
</li>
|
||
</ul>
|
||
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<main class="container-xl px-4 my-4">
|
||
<section class="mb-4">
|
||
<h2 id="tituloRutina" class="fw-bold fs-2 mb-2" data-i18n="editor.titulo">Editor de Formación</h2>
|
||
<div class="d-flex flex-wrap gap-3 small text-muted">
|
||
<div><strong data-i18n="editor.tipo">Tipo:</strong> <span id="tipoRutina">Cargando...</span></div>
|
||
<div><strong data-i18n="editor.modalidad">Modalidad:</strong> <span id="modalidadRutina">Cargando...</span></div>
|
||
</div>
|
||
</section>
|
||
|
||
<div class="row gx-4 gy-4">
|
||
<div class="col-lg-4">
|
||
<div class="card p-4 h-100 d-flex flex-column">
|
||
<h5 class="fw-semibold mb-3 text-primary" data-i18n="editor.agregar">Agregar Atleta</h5>
|
||
|
||
<div class="mb-3">
|
||
<label for="selectAtleta" class="form-label" data-i18n="editor.seleccionarAtleta">Seleccionar atleta</label>
|
||
<select id="selectAtleta" class="form-select"></select>
|
||
</div>
|
||
|
||
<div class="mb-3">
|
||
<label for="rolAtleta" class="form-label" data-i18n="editor.rol">Rol</label>
|
||
<select id="rolAtleta" class="form-select">
|
||
<option value="" data-i18n="editor.rolSeleccionar">Seleccionar rol</option>
|
||
<option value="volador" data-i18n="editor.volador">Volador</option>
|
||
<option value="pilar" data-i18n="editor.pilar">Pilar</option>
|
||
<option value="otro" data-i18n="editor.otro">Otro</option>
|
||
</select>
|
||
</div>
|
||
|
||
<div class="mb-3">
|
||
<label for="idPersonalizado" class="form-label" data-i18n="editor.idPers">ID personalizado</label>
|
||
<input type="text" id="idPersonalizado" class="form-control" placeholder="Ej: A, 1, V2" data-i18n-placeholder="editor.idEj" readonly>
|
||
</div>
|
||
|
||
<div class="mb-3">
|
||
<label for="figura" class="form-label" data-i18n="editor.figura">Figura técnica</label>
|
||
<input type="text" id="figura" class="form-control" placeholder="Ej: Barracuda, Flamingo..." data-i18n-placeholder="editor.figuraEj" autocomplete="off">
|
||
<small id="nombreFiguraTraducido" class="form-text text-muted"></small>
|
||
<div id="sugerenciasFigura" class="list-group position-relative"></div>
|
||
<div id="previewFigura" class="text-center mt-3 mb-3"></div>
|
||
</div>
|
||
|
||
<div class="mb-3">
|
||
<label for="tipoElemento" class="form-label" data-i18n="editor.tipoElemento">Tipo de elemento</label>
|
||
<select id="tipoElemento" class="form-select">
|
||
<option value="TRE">TRE</option>
|
||
<option value="híbrido">Híbrido</option>
|
||
<option value="transición" selected>Transición</option>
|
||
</select>
|
||
</div>
|
||
|
||
<div class="mb-4">
|
||
<label for="codigoElemento" class="form-label" data-i18n="editor.codigoElemento">Código del elemento</label>
|
||
<input type="text" id="codigoElemento" class="form-control" placeholder="Ej: TRE 1A, H4..." data-i18n-placeholder="editor.codigoEj">
|
||
</div>
|
||
|
||
<button id="btnAgregarAtleta" class="btn btn-primary mt-auto" data-i18n="editor.btnAgregar">Añadir Atleta</button>
|
||
</div>
|
||
</div>
|
||
<div class="col-lg-8 d-flex flex-column gap-3">
|
||
<div class="card p-4">
|
||
<h5 class="fw-semibold mb-3 text-primary" data-i18n="editor.piscina">Piscina</h5>
|
||
|
||
<div class="mb-3">
|
||
<label for="tipoPiscina" class="form-label" data-i18n="editor.tipoPiscina">Tipo de piscina</label>
|
||
<select id="tipoPiscina" class="form-select form-select-sm w-100" style="max-width: 280px;">
|
||
<option value="olimpica" data-i18n="editor.olimpica">Olímpica (50m x 25m)</option>
|
||
<option value="semiolimpica" data-i18n="editor.semiolimpica">Semiolímpica (25m x 12.5m)</option>
|
||
<option value="fosa" data-i18n="editor.fosa">Fosa/Poza (20m x 20m)</option>
|
||
</select>
|
||
</div>
|
||
|
||
<div id="piscinaContainer" class="border rounded p-2 mb-4" style="width: 100%; height: auto;">
|
||
<div id="piscina"></div>
|
||
</div>
|
||
|
||
<div class="d-flex align-items-center gap-2 flex-wrap mb-3">
|
||
<button id="btnEditarFormacion" class="btn btn-outline-secondary btn-sm">✏ Editar formación</button>
|
||
<button id="btnEliminarFormacion" class="btn btn-outline-danger btn-sm">🗑 Eliminar Formación</button>
|
||
</div>
|
||
|
||
<label class="form-label fw-semibold" data-i18n="editor.linea">Línea de Tiempo</label>
|
||
<div id="lineaTiempo" class="timeline-placeholder d-flex flex-wrap gap-2 mb-3"></div>
|
||
|
||
<!-- Reproductor abajo -->
|
||
<div class="mb-3">
|
||
<div id="waveform" style="height: 80px;"></div>
|
||
<div class="text-end mt-2">
|
||
<button id="playPauseBtn" class="btn btn-outline-primary btn-sm" data-i18n="editor.play">▶ Reproducir</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div class="card p-4 mt-4">
|
||
<h5 class="fw-semibold mb-3 text-primary" data-i18n="editor.datos">Datos de Formación</h5>
|
||
<div class="row gy-3">
|
||
<div class="col-md-4">
|
||
<label for="nombreFormacion" class="form-label" data-i18n="editor.nombre">Nombre</label>
|
||
<input type="text" id="nombreFormacion" class="form-control" placeholder="Nombre de la formación" data-i18n-placeholder="editor.nombreEj">
|
||
</div>
|
||
|
||
<div class="col-md-4">
|
||
<label for="duracionFormacion" class="form-label" data-i18n="editor.duracion">Duración (segundos)</label>
|
||
<input type="number" id="duracionFormacion" class="form-control" min="1" placeholder="Ej: 5" data-i18n-placeholder="editor.duracionEj">
|
||
</div>
|
||
|
||
<div class="col-md-4">
|
||
<label for="notasFormacion" class="form-label" data-i18n="editor.notas">Notas tácticas</label>
|
||
<textarea id="notasFormacion" class="form-control" rows="1" placeholder="Instrucciones, marcajes, etc." data-i18n-placeholder="editor.notasEj"></textarea>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="text-end mt-4">
|
||
<button id="btnGuardarFormacion" class="btn btn-primary" data-i18n="editor.guardar">Guardar Formación</button>
|
||
</div>
|
||
</div>
|
||
</main>
|
||
|
||
<audio id="audioPlayer" class="d-none" controls></audio>
|
||
|
||
<script src="https://cdn.jsdelivr.net/npm/sortablejs@1.15.0/Sortable.min.js"></script>
|
||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
|
||
<script src="js/traduccionPiscina.js"></script>
|
||
<script type="module" src="js/piscina.js"></script>
|
||
</body>
|
||
</html>
|