Skip to content

Bugfix/mathilde - #24

Open
Clouddy23 wants to merge 31 commits into
mainfrom
bugfix/mathilde
Open

Bugfix/mathilde#24
Clouddy23 wants to merge 31 commits into
mainfrom
bugfix/mathilde

Conversation

@Clouddy23

Copy link
Copy Markdown
Collaborator

Cette pull request propose une correction générale des erreurs HTML, CSS et JS du Timer. Les corrections et les améliorations du code rendent le code fonctionnel et plus lisible.

index.html :

  • Indentation du code
  • Correction de l'extension du fichier index.php -> index.html
  • Correction de la balise <title> -> </title>
  • Correction du lien Google Fonts .comm -> .com
  • Correction de la balise <body>-> </body>
  • Suppression du doublon id="wrapper"
  • Déclaration de la langue -> Ajout de lang="fr"
  • Ajout de l'attribut defer pour chargement du JS après le HTML
  • Correction du chemin vers Google Fonts asset -> assets

style.css :

  • Correction fonctionnelle de la classe .inside
  • Correction de l'ID #wrappr -> #wrapper
  • Correction du background-color transpent -> transparent

script.js :

  • Correction de la valeur de let is_run = true en boléen
  • Correction des fautes de frappe dcument -> document et clic -> click
  • Remplacement de setTimeInterval par setInterval et fermeture de la fonction
  • Ajout de return dans la fonction adjustTimer
  • Ajout du paramètre secondes (z) dans la fonction randomHexColor
  • Ajout de points-virgule manquants

Commentaires :

  • Ajout d'un commentaire relatif au stockage du bouton dans une variable
  • Ajout d'un commentaire relatif au remplacement de innerHTML par textContent
  • Ajout d'un commentaire relatif à la conversion des chaînes de caractères
  • Ajout d'un commentaire relatif à l'arrêt de la fonction setInterval quand le Timer est sur pause
  • Ajout d'un commentaire relatif à l'évènement event

Tests réalisés :

  • Vérification de l’affichage de l’heure correcte
  • Pause et reprise du Timer fonctionnelles
  • Changement dynamique de couleur de fond
  • Vérification du rendu visuel correspondant au screenshot fourni

Objectifs réalisés :

  • Rendre le code fonctionnel
  • Améliorer la lisibilité et la structure du code
  • Assurer la cohérence visuelle et fonctionnelle
  • Émettre des recommandations d'optimisation du JavaScript

@Clouddy23 Clouddy23 self-assigned this Oct 14, 2025
@Clouddy23 Clouddy23 added the bug Something isn't working label Oct 14, 2025
@filkat34
filkat34 requested a review from Copilot October 15, 2025 07:00

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR implements comprehensive bug fixes for a Timer application, correcting critical HTML, CSS, and JavaScript errors to make the code functional and improve readability.

  • Fixed HTML structure and syntax errors including file extension, malformed tags, and duplicate IDs
  • Corrected CSS selector typos and property values that prevented proper styling
  • Resolved JavaScript functionality issues including incorrect API usage, missing parameters, and logical errors

Reviewed Changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 5 comments.

File Description
index.php Removed original malformed HTML file
index.html Created properly structured HTML with corrected syntax and file paths
assets/js/script.js Fixed JavaScript errors including API names, missing parameters, and logical issues
assets/css/style.css Corrected CSS selectors, property values, and improved code formatting

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Comment thread assets/js/script.js
@@ -1,32 +1,32 @@
window.addEventListener("DOMContentLoaded", (event) => {
let is_run = "true";
window.addEventListener("DOMContentLoaded", (event) => { //event ?

Copilot AI Oct 15, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Corrected spelling of 'évènement' to 'événement' in the French comment.

Copilot uses AI. Check for mistakes.
Comment thread assets/js/script.js
Comment on lines +15 to +17
document.querySelector('#hours').innerHTML = adjustTimer(oDate.getHours());
document.querySelector('#minutes').innerHTML = adjustTimer(oDate.getMinutes());
document.querySelector('#seconds').innerHTML = adjustTimer(oDate.getSeconds());

Copilot AI Oct 15, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using innerHTML for plain text content is unnecessary and potentially unsafe. Use textContent instead since no HTML markup is being inserted.

Suggested change
document.querySelector('#hours').innerHTML = adjustTimer(oDate.getHours());
document.querySelector('#minutes').innerHTML = adjustTimer(oDate.getMinutes());
document.querySelector('#seconds').innerHTML = adjustTimer(oDate.getSeconds());
document.querySelector('#hours').textContent = adjustTimer(oDate.getHours());
document.querySelector('#minutes').textContent = adjustTimer(oDate.getMinutes());
document.querySelector('#seconds').textContent = adjustTimer(oDate.getSeconds());

Copilot uses AI. Check for mistakes.

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C'est juste. Cela permet les injections de code.

Comment thread assets/js/script.js
function randomHexColor(x, y){
return "rgb(" + Math.floor(x/100 * 256) + "," + Math.floor(y/100 * 256) + "," + Math.floor(z/100 * 256) + ")";
function randomHexColor(x, y, z) {
return "rgb(" + Math.floor(x / 100 * 256) + "," + Math.floor(y / 100 * 256) + "," + Math.floor(z / 100 * 256) + ")"; // pourquoi ne pas convertir en nombre les chaines de caractères x, y et z ?

Copilot AI Oct 15, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The parameters x, y, z are strings from innerHTML but are used in mathematical operations without conversion. Use parseInt() or Number() to convert them to numbers first.

Suggested change
return "rgb(" + Math.floor(x / 100 * 256) + "," + Math.floor(y / 100 * 256) + "," + Math.floor(z / 100 * 256) + ")"; // pourquoi ne pas convertir en nombre les chaines de caractères x, y et z ?
x = Number(x);
y = Number(y);
z = Number(z);
return "rgb(" + Math.floor(x / 100 * 256) + "," + Math.floor(y / 100 * 256) + "," + Math.floor(z / 100 * 256) + ")";

Copilot uses AI. Check for mistakes.

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Il a raison aussi. Javascript type dynamiquement les variables mais on sait jamais... Il vaut mieux être certain de ce qu'on lui donne en paramètre

Comment thread assets/js/script.js
Comment on lines 3 to +21

init();

function init(){
document.querySelector('.button').addEventListener('clic', (event) =>
is_run = !is_run
((' ' + document.querySelector('.button').className + ' ').indexOf('pause') > -1) ? dcument.querySelector('.button').setAttribute('class', document.querySelector('.button').getAttribute('class').replace(' pause', '')) : document.querySelector('.button').setAttribute('class', document.querySelector('.button').getAttribute('class')+' pause');
})
function init() {
document.querySelector('.button').addEventListener('click', (event) => {
is_run = !is_run;
((' ' + document.querySelector('.button').className + ' ').indexOf('pause') > -1) ? document.querySelector('.button').setAttribute('class', document.querySelector('.button').getAttribute('class').replace(' pause', '')) : document.querySelector('.button').setAttribute('class', document.querySelector('.button').getAttribute('class') + ' pause'); // pas mieux de stocker bouton dans une variable ?
});

setTimeInterval(function(){
if(is_run){
setInterval(function () {
if (is_run) {
let oDate = new Date();
document.querySelector('#hours').innerHTML = adjustTimer(oDate.getHours());
document.querySelector('#minutes').innerHTML = adjustTimer(oDate.getMinutes());
document.querySelector('#seconds').innerHTML = adjustTimer( oDate.getSeconds());
document.querySelector('#hours').innerHTML = adjustTimer(oDate.getHours());
document.querySelector('#minutes').innerHTML = adjustTimer(oDate.getMinutes());
document.querySelector('#seconds').innerHTML = adjustTimer(oDate.getSeconds());

document.querySelector('body').style.background = randomHexColor(document.querySelector('#hours').innerHTML, document.querySelector('#minutes').innerHTML, document.querySelector('#seconds').innerHTML);
}
}, 1000;
document.querySelector('body').style.background = randomHexColor(document.querySelector('#hours').innerHTML, document.querySelector('#minutes').innerHTML, document.querySelector('#seconds').innerHTML); // innerHTML ne devrait pas être remplacé par textContent vu que ce n'est pas du HTML ?

} // pourquoi ne pas arrêter la fonction setInterval quand sur pause ?

Copilot AI Oct 15, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The setInterval continues running even when paused, performing unnecessary DOM queries and date operations. Consider clearing the interval when paused and restarting it when resumed.

Copilot uses AI. Check for mistakes.

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bon ça. Laisse tomber vu la légèreté du code, inutile de faire du zèle dans l'optimisation

Comment thread assets/js/script.js
Comment on lines +7 to +9
document.querySelector('.button').addEventListener('click', (event) => {
is_run = !is_run;
((' ' + document.querySelector('.button').className + ' ').indexOf('pause') > -1) ? document.querySelector('.button').setAttribute('class', document.querySelector('.button').getAttribute('class').replace(' pause', '')) : document.querySelector('.button').setAttribute('class', document.querySelector('.button').getAttribute('class') + ' pause'); // pas mieux de stocker bouton dans une variable ?

Copilot AI Oct 15, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Multiple calls to document.querySelector('.button') are inefficient. Store the button element in a variable to avoid repeated DOM queries.

Suggested change
document.querySelector('.button').addEventListener('click', (event) => {
is_run = !is_run;
((' ' + document.querySelector('.button').className + ' ').indexOf('pause') > -1) ? document.querySelector('.button').setAttribute('class', document.querySelector('.button').getAttribute('class').replace(' pause', '')) : document.querySelector('.button').setAttribute('class', document.querySelector('.button').getAttribute('class') + ' pause'); // pas mieux de stocker bouton dans une variable ?
const button = document.querySelector('.button');
button.addEventListener('click', (event) => {
((' ' + button.className + ' ').indexOf('pause') > -1) ? button.setAttribute('class', button.getAttribute('class').replace(' pause', '')) : button.setAttribute('class', button.getAttribute('class') + ' pause'); // pas mieux de stocker bouton dans une variable ?
is_run = !is_run;

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants