From 6f8223270aa8e73888d64ac247e564936037cefb Mon Sep 17 00:00:00 2001 From: Tatiana Villa Date: Tue, 7 Apr 2026 12:25:25 +0200 Subject: [PATCH] Mejoras en la visualizacion de los cuestionarios --- oposiciones/css/estilos.css | 5 ++ oposiciones/cuestionarios/css/estilos.css | 64 +++++++++++++++++++++++ oposiciones/cuestionarios/js/app.js | 46 +++++++++------- oposiciones/markdown/index2.html | 11 ---- 4 files changed, 97 insertions(+), 29 deletions(-) delete mode 100644 oposiciones/markdown/index2.html diff --git a/oposiciones/css/estilos.css b/oposiciones/css/estilos.css index 2610c70..f0c4ef8 100644 --- a/oposiciones/css/estilos.css +++ b/oposiciones/css/estilos.css @@ -245,4 +245,9 @@ a:focus-visible { ol li { margin-bottom: 1rem; /* Más separación entre temas para poder pulsar bien */ } + a { + text-decoration: none; + color: var(--color-texto); + transition: color 0.25s ease; + } } diff --git a/oposiciones/cuestionarios/css/estilos.css b/oposiciones/cuestionarios/css/estilos.css index b4843b3..19a7727 100644 --- a/oposiciones/cuestionarios/css/estilos.css +++ b/oposiciones/cuestionarios/css/estilos.css @@ -157,6 +157,59 @@ button#aleatoria { margin-left: 5px; } +.supuesto-container { + max-height: 200px; /* Para que no ocupe toda la pantalla */ + overflow-y: auto; /* Si es muy largo, sale scroll */ + border-radius: 4px; + line-height: 1.4; +} + +/* Contenedor de la pregunta */ +.pregunta { + position: relative; + display: flex; + flex-direction: column; + min-height: 400px; /* Tamaño mínimo para que no salte el contenido */ + padding-bottom: 80px; /* Espacio para que los botones no tapen el texto */ +} + +/* Contenedor de los botones */ +.acciones-quiz { + position: absolute; + bottom: 20px; + left: 20px; + right: 20px; /* Al darle left y right, el contenedor ocupa todo el ancho de la tarjeta */ + display: flex; + justify-content: space-between; /* ¡ESTA ES LA MAGIA! Uno a cada punta */ + align-items: center; + gap: 0; /* Ya no necesitamos gap fijo */ +} + +/* Estilo de los botones (limpiamos el left/right manual que tenías) */ +.btn-principal { + background-color: var(--titulos-color); + color: white; + padding: 12px 25px; + font-weight: bold; + border: none; +} + +.btn-principal:hover { + background-color: var(--hover-bg); +} + +.btn-secundario { + background-color: transparent; + border: 1px solid var(--border-color); + color: var(--text-color); + padding: 12px 20px; +} + +.btn-secundario:hover { + background-color: var(--hover-bg); +} + + /* --- AJUSTES PARA MÓVIL --- */ @media (max-width: 600px) { body { @@ -192,4 +245,15 @@ button#aleatoria { .nota-actual strong { font-size: 1.4rem; } + + .acciones-quiz { + width: calc(100% - 40px); /* Ocupa todo el ancho menos el padding */ + left: 20px; + justify-content: space-between; /* Uno a cada lado */ + bottop: 10px; /* Para que no se quede pegado al fondo */ + } + + .pregunta { + min-height: 450px; + } } \ No newline at end of file diff --git a/oposiciones/cuestionarios/js/app.js b/oposiciones/cuestionarios/js/app.js index e64533f..ead8af6 100644 --- a/oposiciones/cuestionarios/js/app.js +++ b/oposiciones/cuestionarios/js/app.js @@ -44,22 +44,42 @@ function mostrarSiguientePregunta() { const p = preguntasCargadas[estado.indiceActual]; actualizarMarcador(); + // Lógica para mostrar el supuesto si existe + let htmlContexto = ""; + if (p.contexto) { + htmlContexto = ` +
+

📋 ${p.contexto.supuesto}

+

${p.contexto.descripcion}

+
+ `; + } + preguntaActualContenedor.innerHTML = `
+ ${htmlContexto}

Pregunta ${estado.indiceActual + 1} de ${preguntasCargadas.length}

${p.pregunta}

${Object.entries(p.opciones).map(([letra, texto]) => ` `).join("")}
- +
+ + +
`; document.getElementById("comprobar").onclick = () => validarRespuesta(p); + document.getElementById("saltar").onclick = () => saltarPregunta(); +} +function saltarPregunta() { + estado.indiceActual++; + mostrarSiguientePregunta(); } function validarRespuesta(p) { @@ -84,28 +104,18 @@ function validarRespuesta(p) { } function actualizarMarcador() { - const contestadas = estado.indiceActual; // Preguntas que ya pasaron + // Fórmula oficial TAI: (Aciertos - (Fallos / 3)) / TotalPreguntas * 10 + const puntosNetos = estado.aciertos - (estado.fallos / 3); + let notaSobreDiez = (puntosNetos / preguntasCargadas.length) * 10; - // Si aún no hemos contestado ninguna, la nota es 0.00 - let notaSobreDiez = 0; - - if (contestadas > 0) { - // Fórmula de puntos netos (AGE): Aciertos - (Fallos / 3) - const puntosNetos = estado.aciertos - (estado.fallos / 3); - - // Calculamos la nota sobre 10 basada SOLO en las contestadas hasta ahora - notaSobreDiez = (puntosNetos / contestadas) * 10; - - // Evitamos notas negativas si hay muchísimos fallos - if (notaSobreDiez < 0) notaSobreDiez = 0; - } + if (notaSobreDiez < 0) notaSobreDiez = 0; resultado.innerHTML = `
Aciertos: ${estado.aciertos}
Fallos: ${estado.fallos}
-
Progreso: ${contestadas} / ${preguntasCargadas.length}
-
Nota actual: ${notaSobreDiez.toFixed(2)}
+
En blanco: ${estado.indiceActual - (estado.aciertos + estado.fallos)}
+
Nota proyectada: ${notaSobreDiez.toFixed(2)}
`; } diff --git a/oposiciones/markdown/index2.html b/oposiciones/markdown/index2.html deleted file mode 100644 index d01f779..0000000 --- a/oposiciones/markdown/index2.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - Document - - - - - \ No newline at end of file