Dovresti inserire il JS nell’Head per farlo funzionare!
Inoltre, fai attenzione al CSS del button: dovresti creare un selettore specifico per evitare di sovrascrivere il CSS predefinito.
Idealmente, dovresti creare un componente tema e utilizzare un outlet per gestire HTML/logica. Posso mostrartelo più tardi!
Ci ho provato. Ho creato un nuovo componente tema e poi, utilizzando l’opzione Modifica CSS/HTML, ho inserito quel codice nella sezione comune > header. Riesco a vedere il timer sul sito web, ma il problema è che il timer non funziona. Ha un pulsante play e stop, localmente funziona bene ma sul sito web mostra solo il timer ma non funziona.
Sì, il tuo codice è bloccato da CSP. (vedi impostazioni di sicurezza)
Potresti aggiungere unsafe-inline alle impostazioni, ma non sembra una buona idea.
Nel tuo caso, per far funzionare il tuo codice con CSP abilitato, credo che tu debba gestire il click in modo diverso.
A parte questo, ecco un componente tema che utilizza il tuo codice: https://github.com/Arkshine/discourse-timer-component.
Sentiti libero di effettuare un fork e installarlo sul tuo Discourse.
Spero che il mio codice non sia troppo terribile, ma questo sarebbe il modo preferito rispetto all’aggiunta di JavaScript semplice in questo contesto.
Dovrebbe funzionare allo stesso modo con funzionalità reattive aggiuntive, impostazioni e localizzazione.
Potrebbe essere travolgente, ma è un’ottima opportunità per approfondire lo sviluppo di componenti tema! Non esitare a chiedere se non capisci qualcosa.
Consiglio vivamente di utilizzare la Discourse Theme CLI se vuoi lavorarci localmente. È molto utile!
Non posso ringraziarti abbastanza per il tuo aiuto. È fantastico!! Mi hai ispirato ad imparare questo. Ho alcune modifiche e domande riguardo al timer. Posso condividerle con te?
Query:\n1. Qual è lo scopo del pulsante di attesa?\n\nModifiche critiche immediate:\n1. È un timer continuo, prima inizia con 1:30 secondi poi passa a 8:00 minuti poi passa a 1:30 e così via, non finisce mai.\n\n2. Quando il timer è in riproduzione, gli utenti devono avere la possibilità di passare direttamente a 8:00 minuti cliccando sul pulsante “entra nella stanza” o passare al timer di 1:30 minuti cliccando sul timer di lettura del compito. Pertanto, disabilitare i pulsanti di pausa e arresto quando il timer non è in riproduzione ha senso, ma quando il timer è in riproduzione e disabilitare il pulsante di lettura del compito e di entrata nella stanza impedirà agli utenti di aggirare il timer.\n\nModifiche future:\n1. Aggiunta di una nota vocale all’inizio del timer di 1:30 minuti, all’inizio del timer di 8:00 minuti, a 2:00 minuti rimanenti del timer di 8:00 minuti e infine alla fine del timer di 8:00 minuti, che è fondamentalmente l’inizio del timer di 1:30 minuti. Quindi in totale tre note vocali,\n2. Aggiunta di un avviso pop-up per ogni nota vocale, che appare e scompare, non dovrebbe occupare l’intero schermo, bensì l’area in cui si trova il timer.
Non ha senso poter fare clic su quei pulsanti di pausa/arresto se un timer non è iniziato. Lo stesso vale per la visualizzazione di “pausa” o “riprendi”, quindi è come se in attesa avessi un timer attivo. In realtà, nasconderei il pulsante. Ma immagino che vada bene usare l’etichetta “pausa” come predefinita.
Alterna tra entrambi, va bene. Pensavo fosse un ciclo con uno di quei timer.
Non sono sicuro di capire il contesto, mi sembra piuttosto strano, posso cambiarlo.
Capisco.
Lascia che lo corregga prima di fare qualsiasi altra cosa.
Per me è incredibile vedere questo timer prendere vita. Sei fantastico e d’ispirazione.
Questo è un timer per un esame tenuto da medici, anch’io sono un medico e cerco di aiutare altri medici.
L’esame consiste in 16 stanze, contenenti 16 pazienti diversi che dobbiamo diagnosticare e gestire. Prima di entrare in qualsiasi stanza, c’è un compito all’esterno che puoi leggere in 1 minuto e 30 secondi, poi entri nella stanza, hai 8 minuti per svolgere il compito e gestire i pazienti, il ciclo continua per altre 16 stanze. Questo richiede in totale 3 ore per essere completato.
Purtroppo ho fallito questo esame, a causa di disinformazione e cattiva guida ad esso correlate, il che mi ha ispirato a creare questo forum per aiutare a guidare altri medici.
Ho rilasciato un aggiornamento. Dovrebbe ciclare il timer breve/lungo e ora puoi passare a qualsiasi timer. Ho anche rimosso l’uso di “in attesa…”. Fammi sapere se funziona meglio.
Grazie per aver spiegato il contesto, ora capisco!
Ho trovato un bug, se clicco sul pulsante “leggi attività” il timer passa da 1:30 min a 8:00 min e poi continua a ciclare su 1:30 min. Se clicco sul pulsante “entra nella stanza”, il timer passa da 8:00 a 1:30 e poi continua a ciclare sul timer da 8:00 min.
Ora, il problema è che quando si fa clic sul pulsante “Read Task”, il timer parte da 1:30 e si ripete su 8:00.
1:30 > 8:00 > 8:00 > 8:00…
Se si fa clic sul pulsante “Enter Room”, il timer parte da 8:00 e si ripete su 1:30.
8:00 > 1:30 > 1:30 > 1:30…
Idealmente, dovrebbe esserci un ciclo continuo e fluido che alterna tra 1:30 e 8:00, con il punto di partenza determinato dal pulsante cliccato per primo.
Ad esempio, se si fa clic sul pulsante “Read Task”, il timer dovrebbe partire da 1:30 e poi procedere in un ciclo alternato tra 8:00 e 1:30:
1:30 > 8:00 > 1:30 > 8:00…
Se si fa clic sul pulsante “Enter Room”, il timer dovrebbe partire da 8:00 e seguire un ciclo alternato tra 1:30 e 8:00:
Sei sicuro di aver aggiornato e aggiornato la pagina? Descrivi il bug prima della correzione e ora non riesco a riprodurlo. Ho testato di nuovo e funziona come previsto.