¡Querrás insertar el JS en Head en lugar de hacerlo funcionar!
Además, ten cuidado con el CSS del button, deberías crear un selector específico para evitar sobrescribir el CSS predeterminado.
Idealmente, querrás crear un componente temático y usar un outlet para manejar HTML/lógica. ¡Te lo mostraré más tarde!
Intenté eso. Creé un nuevo componente de tema y luego, usando la opción de editar CSS/HTML, inserté ese código en la sección común > encabezado. Puedo ver el temporizador en el sitio web, pero el problema es que el temporizador no se reproduce. Tiene botones de reproducción y parada, localmente funciona bien, pero en el sitio web solo muestra el temporizador pero no funciona.
Sí, tu código está siendo bloqueado por CSP. (ver configuración de seguridad)
Podrías agregar unsafe-inline a la lista blanca en la configuración, pero eso no parece una buena idea.
En tu caso, para que tu código funcione con CSP habilitado, creo que necesitas manejar el clic de manera diferente.
Por cierto, aquí tienes un componente de tema que utiliza tu código: https://github.com/Arkshine/discourse-timer-component.
Siéntete libre de hacer un fork e instalarlo en tu Discourse.
Espero que mi código no sea demasiado horrible, pero esta sería la forma preferida en lugar de agregar JavaScript plano en este contexto.
Debería funcionar igual con reactividad adicional, configuraciones y localización.
Puede ser abrumador, ¡pero es una excelente oportunidad para profundizar en el desarrollo de componentes de temas! No dudes en preguntar si no entiendes algo.
Recomiendo encarecidamente usar la Discourse Theme CLI si quieres trabajar con ella localmente. ¡Es muy útil!
Es un temporizador continuo, primero comienza con 1:30 segundos, luego cambia a 8:00 minutos, luego cambia a 1:30 y así sucesivamente, nunca termina.
Cuando el temporizador se está ejecutando, los usuarios deben tener la capacidad de omitir directamente a los 8:00 minutos haciendo clic en el botón “entrar a la sala” o cambiar al temporizador de 1:30 minutos haciendo clic en el temporizador de lectura de tareas. por lo tanto, deshabilitar el botón de pausa y detener cuando el temporizador no se está ejecutando tiene sentido, pero cuando el temporizador se está ejecutando y deshabilitar el botón de lectura de tareas y entrar a la sala impedirá a los usuarios omitir el temporizador.
Cambios futuros:
Añadir una nota de voz al inicio del temporizador de 1:30 segundos, al inicio del temporizador de 8:00 minutos, a los 2:00 minutos restantes del temporizador de 8:00 minutos y finalmente al final del temporizador de 8:00 minutos, que es básicamente el inicio del temporizador de 1:30 segundos. Así que en total tres notas de voz.
Añadir una alerta emergente para cada nota de voz, que aparece y desaparece, no debe ocupar toda la pantalla, sino el área donde se encuentra el temporizador.
Definitivamente no entendí todo en tu código; parecería
No tiene sentido poder hacer clic en esos botones de pausa/parada si no ha comenzado un temporizador. Lo mismo que mostrar “pausa” o “reanudar”, por lo que es como si en espera tuvieras un temporizador activo. De hecho, ocultaría el botón en su lugar. Pero supongo que está bien usar la etiqueta “pausa” por defecto.
Alterna entre ambos, de acuerdo. Pensé que era un bucle con uno de esos temporizadores.
No estoy seguro de entender el contexto, me parece bastante extraño, puedo cambiarlo.
Ya veo.
Déjame arreglar eso antes de hacer cualquier otra cosa.
Me parece increíble ver este temporizador cobrar vida. Eres increíble e inspirador.
Este es un temporizador para un examen administrado por médicos, yo también soy médico y trato de ayudar a otros médicos.
El examen consta de 16 salas, que contienen 16 pacientes diferentes que debemos diagnosticar y tratar. Antes de entrar en cualquier sala, hay una tarea que puedes leer en 1 minuto y 30 segundos y luego entras en la sala, tienes 8 minutos para realizar la tarea y tratar a los pacientes, el ciclo continúa para otras 16 salas. eso lleva un total de 3 horas para completarlo.
Desafortunadamente, reprobé este examen, debido a información errónea y desinformación relacionada con esto, lo que me inspiró a crear este foro para ayudar a guiar a otros médicos.
He lanzado una actualización. Debería repetir el temporizador corto/largo, y ahora puedes cambiar a cualquier temporizador. También he eliminado el uso de “esperando…”. Hazme saber si funciona mejor.
¡Gracias por explicar el contexto, ahora lo entiendo!
Encontré un error, si hago clic en el botón “read task” el temporizador pasa de 1:30 min a 8:00 min y luego sigue en bucle en 1:30 min. Si hago clic en el botón “enter room”, el temporizador pasa de 8:00 a 1:30 y luego sigue en bucle en el temporizador de 8:00 min.
Ahora, el problema es que al hacer clic en el botón “Read Task”, el temporizador comienza en 1:30 y se repite en 8:00.
1:30 > 8:00 > 8:00 > 8:00…
Si haces clic en el botón “Enter Room”, el temporizador comienza en 8:00 y se repite en 1:30.
8:00 > 1:30 > 1:30 > 1:30…
Idealmente, debería haber un bucle continuo y fluido que alterne entre 1:30 y 8:00, con el punto de partida determinado por el botón que se haga clic primero.
Por ejemplo, si haces clic en el botón “Read Task”, el temporizador debería comenzar en 1:30 y luego continuar en un bucle alterno entre 8:00 y 1:30:
1:30 > 8:00 > 1:30 > 8:00…
Si haces clic en el botón “Enter Room”, el temporizador debería comenzar en 8:00 y seguir un bucle alterno entre 1:30 y 8:00:
¿Estás seguro de que actualizaste y refrescaste la página? Describes el error antes de la corrección, y ahora no puedo reproducirlo. Volví a probar y funciona como se esperaba.