diff --git a/javascript/chronometer.js b/javascript/chronometer.js index 7a13496..2c87d0e 100644 --- a/javascript/chronometer.js +++ b/javascript/chronometer.js @@ -1,34 +1,44 @@ class Chronometer { constructor() { - // ... your code goes here + this.currentTime = 0; + this.intervalId = null; } start(callback) { - // ... your code goes here + this.intervalId = setInterval(() => { + this.currentTime++; // Increment by 1 each second + }, 1000); } getMinutes() { - // ... your code goes here + return Math.floor(this.currentTime / 60); } getSeconds() { - // ... your code goes here + return this.currentTime % 60; + } + + getMilliseconds() { + return Math.floor((this.currentTime % 1000) / 10); // Convert to two-digit milliseconds } computeTwoDigitNumber(value) { - // ... your code goes here + return value.toString().padStart(2, '0'); } stop() { - // ... your code goes here + clearInterval(this.intervalId); } reset() { - // ... your code goes here + this.currentTime = 0; } split() { - // ... your code goes here + const minutes = this.computeTwoDigitNumber(this.getMinutes()); + const seconds = this.computeTwoDigitNumber(this.getSeconds()); + const milliseconds = this.computeTwoDigitNumber(this.getMilliseconds()); + return `${minutes}:${seconds}`; } } diff --git a/javascript/index.js b/javascript/index.js index fb3a43a..dbed2fc 100644 --- a/javascript/index.js +++ b/javascript/index.js @@ -15,51 +15,94 @@ const splitsElement = document.getElementById('splits'); function printTime() { // ... your code goes here + printMinutes(); + printSeconds(); + printMilliseconds(); } function printMinutes() { // ... your code goes here + const minutes = chronometer.computeTwoDigitNumber(chronometer.getMinutes()); + minDec.innerHTML = minutes[0]; + minUni.innerHTML = minutes[1]; } function printSeconds() { // ... your code goes here + const seconds = chronometer.computeTwoDigitNumber(chronometer.getSeconds()); + secDec.innerHTML = seconds[0]; + secUni.innerHTML = seconds[1]; } // ==> BONUS function printMilliseconds() { // ... your code goes here + const milliseconds = chronometer.computeTwoDigitNumber(chronometer.getMilliseconds()); + milDec.innerHTML = milliseconds[0]; + milUni.innerHTML = milliseconds[1]; } function printSplit() { // ... your code goes here + const splitTime = chronometer.split(); + const li = document.createElement('li'); + li.innerHTML = splitTime; + splits.appendChild(li); } function clearSplits() { // ... your code goes here + splits.innerHTML = ''; } function setStopBtn() { // ... your code goes here + btnLeft.classList.replace('start', 'stop'); + btnLeft.innerHTML = 'STOP'; } function setSplitBtn() { // ... your code goes here + btnRight.classList.replace('reset', 'split'); + btnRight.innerHTML = 'SPLIT'; } function setStartBtn() { // ... your code goes here + btnLeft.classList.replace('stop', 'start'); + btnLeft.innerHTML = 'START'; } function setResetBtn() { // ... your code goes here + btnRight.classList.replace('split', 'reset'); + btnRight.innerHTML = 'RESET'; } // Start/Stop Button btnLeftElement.addEventListener('click', () => { // ... your code goes here + if (btnLeft.classList.contains('start')) { + chronometer.start(printTime); + setStopBtn(); + setSplitBtn(); + } else { + chronometer.stop(); + setStartBtn(); + setResetBtn(); + } }); // Reset/Split Button btnRightElement.addEventListener('click', () => { // ... your code goes here + if (btnRight.classList.contains('reset')) { + chronometer.reset(); + clearSplits(); + printTime(); + } else { + printSplit(); + } + + });