diff --git a/javascript/chronometer.js b/javascript/chronometer.js index 7a13496..538649c 100644 --- a/javascript/chronometer.js +++ b/javascript/chronometer.js @@ -1,34 +1,50 @@ class Chronometer { constructor() { // ... your code goes here + this.currentTime = 0; + this.intervalId = null; } start(callback) { // ... your code goes here + this.intervalId = setInterval(() => { + this.currentTime += 1; + if (callback) { + callback(); + } + }, 1000); } getMinutes() { // ... your code goes here + return Math.floor(this.currentTime / 60); } getSeconds() { // ... your code goes here + return this.currentTime % 60; } computeTwoDigitNumber(value) { // ... your code goes here + return value < 10 ? `0${value}` : `${value}`; } 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()); + return `${minutes}:${seconds}`; } } diff --git a/javascript/index.js b/javascript/index.js index fb3a43a..cc54622 100644 --- a/javascript/index.js +++ b/javascript/index.js @@ -15,51 +15,96 @@ const splitsElement = document.getElementById('splits'); function printTime() { // ... your code goes here + printMinutes(); + printSeconds(); + printMilliseconds(); } function printMinutes() { // ... your code goes here + const minutes = chronometer.getMinutes(); + const minutesString = chronometer.computeTwoDigitNumber(minutes); + minDecElement.textContent = minutesString[0]; + minUniElement.textContent = minutesString[1]; + } function printSeconds() { // ... your code goes here + const seconds = chronometer.getSeconds(); + const secondsString = chronometer.computeTwoDigitNumber(seconds); + secDecElement.textContent = secondsString[0]; + secUniElement.textContent = secondsString[1]; } // ==> BONUS function printMilliseconds() { // ... your code goes here + const milliseconds = chronometer.getMilliseconds(); + const millisecondsString = chronometer.computeTwoDigitNumber(milliseconds); + milDecElement.textContent = millisecondsString[0]; + milUniElement.textContent = millisecondsString[1]; } function printSplit() { // ... your code goes here + const li = document.createElement('li'); + li.className = 'split-item'; + li.textContent = chronometer.split(); + splitsElement.appendChild(li); } function clearSplits() { // ... your code goes here + splitsElement.innerHTML = ''; } function setStopBtn() { // ... your code goes here + btnLeftElement.textContent = 'STOP'; + btnLeftElement.className = 'btn stop'; } function setSplitBtn() { // ... your code goes here + btnRightElement.textContent = 'SPLIT'; + btnRightElement.className = 'btn split'; } function setStartBtn() { // ... your code goes here + btnLeftElement.textContent = 'START'; + btnLeftElement.className = 'btn start'; } function setResetBtn() { // ... your code goes here + btnRightElement.textContent = 'RESET'; + btnRightElement.className = 'btn reset'; } // Start/Stop Button btnLeftElement.addEventListener('click', () => { // ... your code goes here + if(btnLeftElement.classList.contains('start')){ + chronometer.start(printTime); + setStopBtn(); + setSplitBtn(); + } else { + chronometer.stop(); + setStartBtn(); + setResetBtn(); + } }); // Reset/Split Button btnRightElement.addEventListener('click', () => { // ... your code goes here + if(btnRightElement.classList.contains('reset')){ + chronometer.reset(); + clearSplits(); + printTime(); + } else { + printSplit(); + } });