From 215c676ef913f29a363de601658756a8c0cd962f Mon Sep 17 00:00:00 2001 From: Amirhossein Date: Sun, 22 Nov 2020 11:16:29 +0330 Subject: [PATCH 01/27] ex1 added --- Week2/js-exercises/ex1-oddOnesOut.js | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/Week2/js-exercises/ex1-oddOnesOut.js b/Week2/js-exercises/ex1-oddOnesOut.js index 4f42050ac..1d238d7ca 100644 --- a/Week2/js-exercises/ex1-oddOnesOut.js +++ b/Week2/js-exercises/ex1-oddOnesOut.js @@ -18,4 +18,23 @@ function doubleEvenNumbers(numbers) { } const myNumbers = [1, 2, 3, 4]; -console.log(doubleEvenNumbers(myNumbers)); // Logs "[4, 8]" to the console \ No newline at end of file +// console.log(doubleEvenNumbers(myNumbers)); // Logs "[4, 8]" to the console + + +//Filter MEthod: +const evenDouble = myNumbers.filter(number => { + if(number % 2 === 0){ + let even = number * 2; //This gives me the answer but when it return the even, answers will got back to normal! Why it's like this? + return even; + } + +}); +console.log(evenDouble); + +//Map Method: +const evenNum = myNumbers.map(number => { + if(number % 2 === 0) { + return number *2; + }; +}); +console.log(evenNum); \ No newline at end of file From e6bc6d49a9ba1e8d8575bfec070556dcbd698bdc Mon Sep 17 00:00:00 2001 From: Amirhossein Date: Mon, 23 Nov 2020 09:34:36 +0330 Subject: [PATCH 02/27] ex1 modified --- Week2/js-exercises/ex1-oddOnesOut.js | 17 ++++------------- Week2/js-exercises/ex2-whatsYourMondayWorth.js | 1 + 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/Week2/js-exercises/ex1-oddOnesOut.js b/Week2/js-exercises/ex1-oddOnesOut.js index 1d238d7ca..170f9d64b 100644 --- a/Week2/js-exercises/ex1-oddOnesOut.js +++ b/Week2/js-exercises/ex1-oddOnesOut.js @@ -22,19 +22,10 @@ const myNumbers = [1, 2, 3, 4]; //Filter MEthod: -const evenDouble = myNumbers.filter(number => { - if(number % 2 === 0){ - let even = number * 2; //This gives me the answer but when it return the even, answers will got back to normal! Why it's like this? - return even; - } +const evenDouble = myNumbers + .filter(number => (number % 2 === 0)) + .map(number => number *2 ) + // let even = number * 2; //This gives me the answer but when it return the even, answers will got back to normal! Why it's like this? -}); console.log(evenDouble); -//Map Method: -const evenNum = myNumbers.map(number => { - if(number % 2 === 0) { - return number *2; - }; -}); -console.log(evenNum); \ No newline at end of file diff --git a/Week2/js-exercises/ex2-whatsYourMondayWorth.js b/Week2/js-exercises/ex2-whatsYourMondayWorth.js index 47cea70ba..d594ca3fa 100644 --- a/Week2/js-exercises/ex2-whatsYourMondayWorth.js +++ b/Week2/js-exercises/ex2-whatsYourMondayWorth.js @@ -14,6 +14,7 @@ function dayWorth(tasks, hourlyRate) { // put your code in here, the function does returns a euro formatted string + } const mondayTasks = [{ From d0d5f99508599681f960fa904d471e928574762d Mon Sep 17 00:00:00 2001 From: Amirhossein Date: Mon, 23 Nov 2020 09:40:42 +0330 Subject: [PATCH 03/27] ex1 modified --- Week2/js-exercises/ex1-oddOnesOut.js | 2 +- Week2/js-exercises/ex2-whatsYourMondayWorth.js | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Week2/js-exercises/ex1-oddOnesOut.js b/Week2/js-exercises/ex1-oddOnesOut.js index 170f9d64b..e216705c3 100644 --- a/Week2/js-exercises/ex1-oddOnesOut.js +++ b/Week2/js-exercises/ex1-oddOnesOut.js @@ -25,7 +25,7 @@ const myNumbers = [1, 2, 3, 4]; const evenDouble = myNumbers .filter(number => (number % 2 === 0)) .map(number => number *2 ) - // let even = number * 2; //This gives me the answer but when it return the even, answers will got back to normal! Why it's like this? + console.log(evenDouble); diff --git a/Week2/js-exercises/ex2-whatsYourMondayWorth.js b/Week2/js-exercises/ex2-whatsYourMondayWorth.js index d594ca3fa..14733ed94 100644 --- a/Week2/js-exercises/ex2-whatsYourMondayWorth.js +++ b/Week2/js-exercises/ex2-whatsYourMondayWorth.js @@ -14,7 +14,8 @@ function dayWorth(tasks, hourlyRate) { // put your code in here, the function does returns a euro formatted string - + const TDur = mondayTasks.map(duration); + console.log(TDur) } const mondayTasks = [{ From 433e60e8faa69f551c44a8365b144d68e1b83311 Mon Sep 17 00:00:00 2001 From: Amirhossein Date: Mon, 23 Nov 2020 10:06:59 +0330 Subject: [PATCH 04/27] ex2 is added --- Week2/js-exercises/ex2-whatsYourMondayWorth.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Week2/js-exercises/ex2-whatsYourMondayWorth.js b/Week2/js-exercises/ex2-whatsYourMondayWorth.js index 14733ed94..9a4268a12 100644 --- a/Week2/js-exercises/ex2-whatsYourMondayWorth.js +++ b/Week2/js-exercises/ex2-whatsYourMondayWorth.js @@ -14,8 +14,14 @@ function dayWorth(tasks, hourlyRate) { // put your code in here, the function does returns a euro formatted string - const TDur = mondayTasks.map(duration); - console.log(TDur) + const totalTime = tasks + .map(item => item.duration) + .map(item => item/60) + .map(item => item * hourlyRate) + .reduce((a,b) => a + b,0) + return totalTime; + + } const mondayTasks = [{ From 553fc62b83b3884dec5b17802f748402d7a2cd5e Mon Sep 17 00:00:00 2001 From: Amirhossein Date: Mon, 23 Nov 2020 10:18:36 +0330 Subject: [PATCH 05/27] ex3 is added --- Week2/js-exercises/ex3-lemonAllergy.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Week2/js-exercises/ex3-lemonAllergy.js b/Week2/js-exercises/ex3-lemonAllergy.js index 54ac8da04..e8ac7c392 100644 --- a/Week2/js-exercises/ex3-lemonAllergy.js +++ b/Week2/js-exercises/ex3-lemonAllergy.js @@ -14,6 +14,8 @@ function takeOutLemons(basket) { // your code goes in here. The output is a string + const allergicFruits = basket.filter(item => item !== "Lemon") + return `My mom bought me a fruit basket, containing ${allergicFruits}!`; } const fruitBasket = ['Apple', 'Lemon', 'Grapefruit', 'Lemon', 'Banana', 'Watermelon', 'Lemon']; From f68507eb413644a31e8f016c69183ce1ecaaf978 Mon Sep 17 00:00:00 2001 From: Amirhossein Date: Mon, 23 Nov 2020 10:27:17 +0330 Subject: [PATCH 06/27] ex4 is added --- Week2/js-exercises/ex4-collectiveAge.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Week2/js-exercises/ex4-collectiveAge.js b/Week2/js-exercises/ex4-collectiveAge.js index 1ab2bd1f5..3279752ed 100644 --- a/Week2/js-exercises/ex4-collectiveAge.js +++ b/Week2/js-exercises/ex4-collectiveAge.js @@ -10,6 +10,9 @@ function collectiveAge(people) { // return the sum of age for all the people + const ages = people.map(item => item.age) + const sumAges = ages.reduce((a,b) => a + b ,0) + return sumAges; } const hackYourFutureMembers = [{ From 46c3901e347ee3de832b719209c64d293750eb5e Mon Sep 17 00:00:00 2001 From: Amirhossein Date: Mon, 23 Nov 2020 11:49:55 +0330 Subject: [PATCH 07/27] ex5 is added --- Week2/js-exercises/ex5-myFavoriteHobbies.html | 16 ++++++++++++---- Week2/js-exercises/ex5-myFavoriteHobbies.js | 18 ++++++++++++++++-- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/Week2/js-exercises/ex5-myFavoriteHobbies.html b/Week2/js-exercises/ex5-myFavoriteHobbies.html index 06ab17d45..66d5a2ecf 100644 --- a/Week2/js-exercises/ex5-myFavoriteHobbies.html +++ b/Week2/js-exercises/ex5-myFavoriteHobbies.html @@ -1,5 +1,13 @@ - + + + + + + Document + + + - - - \ No newline at end of file + + + diff --git a/Week2/js-exercises/ex5-myFavoriteHobbies.js b/Week2/js-exercises/ex5-myFavoriteHobbies.js index 289c68380..9ddce830f 100644 --- a/Week2/js-exercises/ex5-myFavoriteHobbies.js +++ b/Week2/js-exercises/ex5-myFavoriteHobbies.js @@ -10,12 +10,26 @@ function createHTMLList(arr) { // your code goes in here -} + + const ulEl = document.createElement('ul'); + document.body.appendChild(ulEl); + const listItem = arr.forEach(element => { + const liEl = document.createElement('li'); + ulEl.appendChild(liEl); + liEl.innerHTML = element; + + + + }); +} const myHobbies = [ 'Meditation', 'Reading', 'Programming', 'Hanging out with friends', 'Going to the gym', -]; \ No newline at end of file + +]; + +createHTMLList(myHobbies); \ No newline at end of file From dde1798a0c40b5056ab1147be401689da0e4ce98 Mon Sep 17 00:00:00 2001 From: Amirhossein Date: Wed, 25 Nov 2020 23:02:49 +0330 Subject: [PATCH 08/27] counter is fixed - timer is added --- Week2/project/index.html | 24 +++++++++ Week2/project/index.js | 111 ++++++++++++++++++++++++++++++++++++++- Week2/project/index2.js | 84 +++++++++++++++++++++++++++++ Week2/project/style.css | 77 +++++++++++++++++++++++++++ 4 files changed, 295 insertions(+), 1 deletion(-) create mode 100644 Week2/project/index2.js create mode 100644 Week2/project/style.css diff --git a/Week2/project/index.html b/Week2/project/index.html index 664b242d3..f4fadb50f 100644 --- a/Week2/project/index.html +++ b/Week2/project/index.html @@ -4,14 +4,38 @@ + + + Pomodoro Clock
+

Pomodoro Clock

+

Session Length

+
+ + + +

25

+ +
+
+

Session

+ +
25:00
+
+
+ + + +
+
+ \ No newline at end of file diff --git a/Week2/project/index.js b/Week2/project/index.js index 5b306f0f2..8faf4d4e4 100644 --- a/Week2/project/index.js +++ b/Week2/project/index.js @@ -7,4 +7,113 @@ Display minutes and seconds If the timer finishes the timer should be replaced by the message: Time 's up! * - */ \ No newline at end of file + */ + +const arrowUp = document.querySelector('.fa-arrow-up'); +const arrowDown = document.querySelector('.fa-arrow-down'); +const startTime = document.querySelector('.start-time'); +const playBtn = document.querySelector('.fa-play'); +const pauseBtn = document.querySelector('.fa-pause'); +const minutesTimer = document.querySelector('.minutes'); +const secondsTimer = document.querySelector('.seconds'); + +let intialTime = 25; +function addMinute() { + intialTime++; + startTime.innerHTML = intialTime; + minutesTimer.innerHTML = intialTime; + if(intialTime == 60) { + intialTime = 0; + }; + + +}; + +function minusMinute() { + intialTime--; + startTime.innerHTML = intialTime; + minutesTimer.innerHTML = intialTime; + if(intialTime == 0){ + intialTime = 1; + }; + +}; + + + +let seconds = 60; +function countDownSeconds() { + seconds--; + secondsTimer.innerHTML = seconds; + if (seconds == 0) { + seconds = 60; + + } +}; + + +// let countDown = setInterval(countDownSeconds, 1000) + + +let minutes = intialTime +function countDownMinutes() { + minutes-- + minutesTimer.innerHTML = minutes; + if (minutes === 0){ + clearInterval(counterRun) + + }; +}; +// let clockTimer = setInterval(countDownMinutes, 60000) +let isClockRunning = false; + +function counterRun() { + setInterval(countDownSeconds, 1000); + setInterval(countDownMinutes, 60000); + + }; + + +// START +playBtn.addEventListener('click', () => { + counterRun(); + +}) + +// PAUSE +// pauseBtn.addEventListener('click', () => { +// toggleClock(); +// }) + +// // STOP +// stopBtn.addEventListener('click', () => { +// toggleClock(true); +// }) + + + + + +// const toggleClock = (reset) => { +// if (reset) { +// // STOP THE TIMER +// } else { +// if (isClockRunning === true) { +// // PAUSE THE TIMER +// isClockRunning = false; +// } else { +// // START THE TIMER +// isClockRunning = true; +// clockTimer = setInterval(countDownMinutes, 60000) + +// } +// } +// } + +//Event Listener +arrowUp.addEventListener('click', addMinute); +arrowDown.addEventListener('click', minusMinute); +// playBtn.addEventListener('click', countDown); + + + \ No newline at end of file diff --git a/Week2/project/index2.js b/Week2/project/index2.js new file mode 100644 index 000000000..86f829b26 --- /dev/null +++ b/Week2/project/index2.js @@ -0,0 +1,84 @@ +const arrowUp = document.querySelector('.fa-arrow-up'); +const arrowDown = document.querySelector('.fa-arrow-down'); +const pomodoroTimer = document.querySelector('.timer') +const startTime = document.querySelector('.start-time'); +const playBtn = document.querySelector('.fa-play'); +const pauseBtn = document.querySelector('.fa-pause'); +const stopBtn = document.querySelector('.fa-stop'); +const minutesTimer = document.querySelector('.minutes'); +const secondsTimer = document.querySelector('.seconds'); + + +// START +playBtn.addEventListener('click', () => { + toggleClock(); + }) + + // PAUSE + pauseBtn.addEventListener('click', () => { + toggleClock(); + }) + + // STOP + stopBtn.addEventListener('click', () => { + toggleClock(true); + }) + + let isClockRunning = false; + + // in seconds = 25 mins +let workSessionDuration = 1500; +let currentTimeLeftInSession = 1500; + +// in seconds = 5 mins; +let breakSessionDuration = 300; + + +const toggleClock = reset => { + if (reset) { + // STOP THE TIMER + stopClock() + } else { + if (isClockRunning === true) { + // PAUSE THE TIMER + clearInterval(clockTimer); + isClockRunning = false; + } else { + // START THE TIMER + + isClockRunning = true; + clockTimer = setInterval(() => { + currentTimeLeftInSession-- + displayCurrentTimeLeftInSession(); + }, 1000); + } + } + } + + + const displayCurrentTimeLeftInSession = () => { + const secondsLeft = currentTimeLeftInSession + let result = '' + const seconds = secondsLeft % 60 + const minutes = parseInt(secondsLeft / 60) % 60 + let hours = parseInt(secondsLeft / 3600) + // add leading zeroes if it's less than 10 + function addLeadingZeroes(time) { + return time < 10 ? `0${time}` : time + } + if (hours > 0) result += `${hours}:` + result += `${addLeadingZeroes(minutes)}:${addLeadingZeroes(seconds)}` + pomodoroTimer.innerText = result.toString() + } + + const stopClock = () => { + // 1) reset the timer we set + clearInterval(clockTimer) + // 2) update our variable to know that the timer is stopped + isClockRunning = false + // reset the time left in the session to its original state + currentTimeLeftInSession = workSessionDuration + // update the timer displayed + displayCurrentTimeLeftInSession() + } + \ No newline at end of file diff --git a/Week2/project/style.css b/Week2/project/style.css new file mode 100644 index 000000000..0b4f9791a --- /dev/null +++ b/Week2/project/style.css @@ -0,0 +1,77 @@ +* { + padding: 0; + margin: 0; + box-sizing: border-box; + font-family: 'Titillium Web', sans-serif; +} + +body { + background-color: #1e555c; + +} + +#app { + display: flex; + flex-direction: column; + text-align: center; + margin-top: 40px; + color: white; +} +h1 { + + font-size: 100px; + + +} +h2 { + font-size: 50px; + margin-bottom: 5px; + +} + + +.time-length { + margin-bottom: 10px; + font-size: 40px; + display: flex; + justify-content: center; + flex-direction: row; + /* margin-left: 700px; */ + +} +h3 { + margin: 0 10px 0 10px; +} + +.arrow-btn { + padding-top: 20px; +} + + +.timer-box { + width: 30%; + margin: auto; + margin-bottom: 30px; + padding: 1.5rem; + + border: 10px solid black; + border-radius: 50px; +} + +.session-text { + margin-bottom: 0; +} + + +.timer { + + font-size: 65px; +} + +.function-btn { + font-size: 40px; +} + +.fa-play { + margin-right: 30px; +} From 6c75d23173ca6cee6398951359de356fdcdd67f6 Mon Sep 17 00:00:00 2001 From: Amirhossein Date: Sat, 28 Nov 2020 00:17:19 +0330 Subject: [PATCH 09/27] Pomodoro project added - some bugs need to fix --- Week2/project/index.js | 124 +++++++++++++++++----------------------- Week2/project/index2.js | 84 --------------------------- 2 files changed, 54 insertions(+), 154 deletions(-) delete mode 100644 Week2/project/index2.js diff --git a/Week2/project/index.js b/Week2/project/index.js index 8faf4d4e4..63ee8144d 100644 --- a/Week2/project/index.js +++ b/Week2/project/index.js @@ -12,12 +12,48 @@ const arrowUp = document.querySelector('.fa-arrow-up'); const arrowDown = document.querySelector('.fa-arrow-down'); const startTime = document.querySelector('.start-time'); +const timerText = document.querySelector('.timer'); const playBtn = document.querySelector('.fa-play'); +const stopBtn = document.querySelector('.fa-stop') const pauseBtn = document.querySelector('.fa-pause'); -const minutesTimer = document.querySelector('.minutes'); -const secondsTimer = document.querySelector('.seconds'); +let minutesTimer = document.querySelector('.minutes'); +let secondsTimer = document.querySelector('.seconds'); + let intialTime = 25; + +arrowUp.addEventListener('click', addMinute); +arrowDown.addEventListener('click', minusMinute); +playBtn.addEventListener('click', counterRun); +stopBtn.addEventListener('click', stopTimer) + + +function counterRun() { + pauseBtn.addEventListener('click', counterPause); + stopBtn.removeEventListener('click', stopTimer); + playBtn.removeEventListener('click', counterRun) + const counterStart = setInterval(timer, 10); + + function counterPause() { + clearInterval(counterStart); + playBtn.addEventListener('click', counterRun); + stopBtn.addEventListener('click', stopTimer) + + } + + }; + + + function stopTimer(){ + + minutesTimer.textContent = 25; + secondsTimer.textContent = '00'; + startTime.textContent = 25; + + + } + + function addMinute() { intialTime++; startTime.innerHTML = intialTime; @@ -26,7 +62,7 @@ function addMinute() { intialTime = 0; }; - + }; function minusMinute() { @@ -34,86 +70,34 @@ function minusMinute() { startTime.innerHTML = intialTime; minutesTimer.innerHTML = intialTime; if(intialTime == 0){ - intialTime = 1; + intialTime = 60; }; }; - - -let seconds = 60; -function countDownSeconds() { - seconds--; - secondsTimer.innerHTML = seconds; - if (seconds == 0) { - seconds = 60; +function timer() { + arrowUp.removeEventListener('click', addMinute); + arrowDown.removeEventListener('click', minusMinute); + if (secondsTimer.textContent != 0){ + secondsTimer.textContent--; + } else if (minutesTimer.textContent != 0 && secondsTimer.textContent == 0){ + secondsTimer.textContent = 59; + minutesTimer.textContent--; - } -}; - - -// let countDown = setInterval(countDownSeconds, 1000) - - -let minutes = intialTime -function countDownMinutes() { - minutes-- - minutesTimer.innerHTML = minutes; - if (minutes === 0){ - clearInterval(counterRun) + } else if (minutesTimer.textContent == 0 && secondsTimer.textContent == 0){ + timerText.textContent = "Time's Up!"; - }; -}; -// let clockTimer = setInterval(countDownMinutes, 60000) -let isClockRunning = false; - -function counterRun() { - setInterval(countDownSeconds, 1000); - setInterval(countDownMinutes, 60000); - - }; - - -// START -playBtn.addEventListener('click', () => { - counterRun(); - -}) - -// PAUSE -// pauseBtn.addEventListener('click', () => { -// toggleClock(); -// }) - -// // STOP -// stopBtn.addEventListener('click', () => { -// toggleClock(true); -// }) + } + stopBtn.addEventListener('click', stopTimer); + +} -// const toggleClock = (reset) => { -// if (reset) { -// // STOP THE TIMER -// } else { -// if (isClockRunning === true) { -// // PAUSE THE TIMER -// isClockRunning = false; -// } else { -// // START THE TIMER -// isClockRunning = true; -// clockTimer = setInterval(countDownMinutes, 60000) -// } -// } -// } -//Event Listener -arrowUp.addEventListener('click', addMinute); -arrowDown.addEventListener('click', minusMinute); -// playBtn.addEventListener('click', countDown); \ No newline at end of file diff --git a/Week2/project/index2.js b/Week2/project/index2.js deleted file mode 100644 index 86f829b26..000000000 --- a/Week2/project/index2.js +++ /dev/null @@ -1,84 +0,0 @@ -const arrowUp = document.querySelector('.fa-arrow-up'); -const arrowDown = document.querySelector('.fa-arrow-down'); -const pomodoroTimer = document.querySelector('.timer') -const startTime = document.querySelector('.start-time'); -const playBtn = document.querySelector('.fa-play'); -const pauseBtn = document.querySelector('.fa-pause'); -const stopBtn = document.querySelector('.fa-stop'); -const minutesTimer = document.querySelector('.minutes'); -const secondsTimer = document.querySelector('.seconds'); - - -// START -playBtn.addEventListener('click', () => { - toggleClock(); - }) - - // PAUSE - pauseBtn.addEventListener('click', () => { - toggleClock(); - }) - - // STOP - stopBtn.addEventListener('click', () => { - toggleClock(true); - }) - - let isClockRunning = false; - - // in seconds = 25 mins -let workSessionDuration = 1500; -let currentTimeLeftInSession = 1500; - -// in seconds = 5 mins; -let breakSessionDuration = 300; - - -const toggleClock = reset => { - if (reset) { - // STOP THE TIMER - stopClock() - } else { - if (isClockRunning === true) { - // PAUSE THE TIMER - clearInterval(clockTimer); - isClockRunning = false; - } else { - // START THE TIMER - - isClockRunning = true; - clockTimer = setInterval(() => { - currentTimeLeftInSession-- - displayCurrentTimeLeftInSession(); - }, 1000); - } - } - } - - - const displayCurrentTimeLeftInSession = () => { - const secondsLeft = currentTimeLeftInSession - let result = '' - const seconds = secondsLeft % 60 - const minutes = parseInt(secondsLeft / 60) % 60 - let hours = parseInt(secondsLeft / 3600) - // add leading zeroes if it's less than 10 - function addLeadingZeroes(time) { - return time < 10 ? `0${time}` : time - } - if (hours > 0) result += `${hours}:` - result += `${addLeadingZeroes(minutes)}:${addLeadingZeroes(seconds)}` - pomodoroTimer.innerText = result.toString() - } - - const stopClock = () => { - // 1) reset the timer we set - clearInterval(clockTimer) - // 2) update our variable to know that the timer is stopped - isClockRunning = false - // reset the time left in the session to its original state - currentTimeLeftInSession = workSessionDuration - // update the timer displayed - displayCurrentTimeLeftInSession() - } - \ No newline at end of file From 6ba80333a360145dffeaa65e6268a0cc9c9eb706 Mon Sep 17 00:00:00 2001 From: Amirhossein Date: Sat, 28 Nov 2020 00:18:28 +0330 Subject: [PATCH 10/27] Timer time is fixed --- Week2/project/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Week2/project/index.js b/Week2/project/index.js index 63ee8144d..336d329be 100644 --- a/Week2/project/index.js +++ b/Week2/project/index.js @@ -32,7 +32,7 @@ function counterRun() { pauseBtn.addEventListener('click', counterPause); stopBtn.removeEventListener('click', stopTimer); playBtn.removeEventListener('click', counterRun) - const counterStart = setInterval(timer, 10); + const counterStart = setInterval(timer, 1000); function counterPause() { clearInterval(counterStart); @@ -89,7 +89,7 @@ function timer() { } - stopBtn.addEventListener('click', stopTimer); + } From 0152fa7e91bf5d9ec8b30caa17ae68b317a0d9f0 Mon Sep 17 00:00:00 2001 From: Amirhossein Date: Sat, 28 Nov 2020 16:39:15 +0330 Subject: [PATCH 11/27] Pomodoro project is finished and added --- Week2/project/index.html | 2 +- Week2/project/index.js | 28 +++++++++++++++++++++------- Week2/project/style.css | 3 +++ 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/Week2/project/index.html b/Week2/project/index.html index f4fadb50f..c5bc84959 100644 --- a/Week2/project/index.html +++ b/Week2/project/index.html @@ -24,7 +24,7 @@

25

Session

-
25:00
+
25:00
diff --git a/Week2/project/index.js b/Week2/project/index.js index 336d329be..ccfc6173d 100644 --- a/Week2/project/index.js +++ b/Week2/project/index.js @@ -18,6 +18,7 @@ const stopBtn = document.querySelector('.fa-stop') const pauseBtn = document.querySelector('.fa-pause'); let minutesTimer = document.querySelector('.minutes'); let secondsTimer = document.querySelector('.seconds'); +const dots = document.querySelector('.dots') let intialTime = 25; @@ -27,12 +28,12 @@ arrowDown.addEventListener('click', minusMinute); playBtn.addEventListener('click', counterRun); stopBtn.addEventListener('click', stopTimer) - +let counterStart; function counterRun() { pauseBtn.addEventListener('click', counterPause); stopBtn.removeEventListener('click', stopTimer); playBtn.removeEventListener('click', counterRun) - const counterStart = setInterval(timer, 1000); + counterStart = setInterval(timer, 1); function counterPause() { clearInterval(counterStart); @@ -44,12 +45,19 @@ function counterRun() { }; + + function stopTimer(){ - minutesTimer.textContent = 25; - secondsTimer.textContent = '00'; + minutesTimer.innerHTML = "25"; + dots.textContent = ":"; + secondsTimer.innerHTML = '00'; startTime.textContent = 25; - + intialTime = 25 + clearInterval(counterStart); + playBtn.addEventListener('click', counterRun); + arrowUp.addEventListener('click', addMinute); + arrowDown.addEventListener('click', minusMinute); } @@ -84,8 +92,14 @@ function timer() { secondsTimer.textContent = 59; minutesTimer.textContent--; - } else if (minutesTimer.textContent == 0 && secondsTimer.textContent == 0){ - timerText.textContent = "Time's Up!"; + } else { + minutesTimer.textContent = "Time's Up!"; + secondsTimer.textContent = ""; + dots.textContent = ""; + + // playBtn.removeEventListener('click', counterRun) + stopBtn.addEventListener('click', stopTimer); + clearInterval(counterStart); } diff --git a/Week2/project/style.css b/Week2/project/style.css index 0b4f9791a..a71a871bf 100644 --- a/Week2/project/style.css +++ b/Week2/project/style.css @@ -75,3 +75,6 @@ h3 { .fa-play { margin-right: 30px; } +.fa-pause { + margin-right: 30px; +} From 8d97c0f4804cd1d870758a488ee7351809883e60 Mon Sep 17 00:00:00 2001 From: Amirhossein Date: Mon, 30 Nov 2020 13:52:40 +0330 Subject: [PATCH 12/27] index.js modified --- Week2/project/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Week2/project/index.js b/Week2/project/index.js index ccfc6173d..2e759b864 100644 --- a/Week2/project/index.js +++ b/Week2/project/index.js @@ -33,7 +33,7 @@ function counterRun() { pauseBtn.addEventListener('click', counterPause); stopBtn.removeEventListener('click', stopTimer); playBtn.removeEventListener('click', counterRun) - counterStart = setInterval(timer, 1); + counterStart = setInterval(timer, 1000); function counterPause() { clearInterval(counterStart); @@ -97,7 +97,7 @@ function timer() { secondsTimer.textContent = ""; dots.textContent = ""; - // playBtn.removeEventListener('click', counterRun) + stopBtn.addEventListener('click', stopTimer); clearInterval(counterStart); From 00996d8c5a2c8a6da49eed569940acf35c213b96 Mon Sep 17 00:00:00 2001 From: Amirhossein Date: Tue, 1 Dec 2020 18:20:16 +0330 Subject: [PATCH 13/27] ex1 added --- Week3/js-exercises/ex1-AddSix.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Week3/js-exercises/ex1-AddSix.js b/Week3/js-exercises/ex1-AddSix.js index 67e8bb63f..8e1f67777 100644 --- a/Week3/js-exercises/ex1-AddSix.js +++ b/Week3/js-exercises/ex1-AddSix.js @@ -1,7 +1,7 @@ /** - + ** Exercise 1: Add Six ** - + Declare a function called `createBase`.The function takes a number as a parameter and return a closure, that adds a number to the base number argument. @@ -10,10 +10,18 @@ Call the function three times. The return values should be: */ -function createBase( /* ???? */ ) { +function createBase(a) { // Put here your logic... + return function(b){ + + return console.log(a+b); + } } const addSix = createBase(6); // Put here your function calls... + +addSix(9); +addSix(18); +addSix(27); From a151c8fff1fd6dbd9fc031135cd6044bf188bcc8 Mon Sep 17 00:00:00 2001 From: Amirhossein Date: Wed, 2 Dec 2020 16:47:23 +0330 Subject: [PATCH 14/27] ex2 is added --- Week3/js-exercises/ex2-RemoveDuplicates.js | 25 ++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/Week3/js-exercises/ex2-RemoveDuplicates.js b/Week3/js-exercises/ex2-RemoveDuplicates.js index f1eea3b8c..2ee7aec1c 100644 --- a/Week3/js-exercises/ex2-RemoveDuplicates.js +++ b/Week3/js-exercises/ex2-RemoveDuplicates.js @@ -1,6 +1,6 @@ /** - - ** Exercise 2: The lottery machine ** + + ** Exercise 2: Take out the duplicates ** Write a function called removeDuplicates. This function accept an array as an argument does not return anything but removes any duplicate elements from the array. @@ -27,9 +27,22 @@ function checkSolution(array) { // WRITE YOUR FUNCTION HERE -const letters = ['a', 'b', 'c', 'd', 'a', 'e', 'f', 'c', 'b']; -removeDuplicates(letters); +const letters = ['a', 'b', 'b', 'c', 'd', 'a', 'e', 'f', 'f', 'c', 'b']; + +console.log(removeDuplicates(letters)); + +// Method Set +// function removeDuplicates(x) { +// const uniqeLetters = [...new Set(x)]; +// return uniqeLetters; +// } + +// IndexOf and filter + +function removeDuplicates() { + return letters.filter((c, index) => letters.indexOf(c) === index); +} if (checkSolution(letters)) { - console.log("Hooray!"); -} \ No newline at end of file + console.log('Hooray!'); +} From 20268d458180f8f59b3a3b9a31bb00ea02941fea Mon Sep 17 00:00:00 2001 From: Amirhossein Date: Wed, 2 Dec 2020 17:00:06 +0330 Subject: [PATCH 15/27] ex3 is added --- Week3/js-exercises/ex3-GuessTheOutput.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Week3/js-exercises/ex3-GuessTheOutput.js b/Week3/js-exercises/ex3-GuessTheOutput.js index 7d783ceef..986b7ad5f 100644 --- a/Week3/js-exercises/ex3-GuessTheOutput.js +++ b/Week3/js-exercises/ex3-GuessTheOutput.js @@ -3,11 +3,11 @@ ** Exercise 3: Guess the output ** Look at the bellow code snippet. -Can you guess the output? +Can you guess the output? Write out your reasoning in 50 words or less. */ - +// At first it gave a the amount of 10 but in the x variable again it gave a the amount of 12. So the alert function is looking for the first amount of a and that would be 12. Also when we used let to identify the a variable 12 will replace 10. let a = 10; From 0e708e21af0c6be9e2d46ab1412e13cd79beb71e Mon Sep 17 00:00:00 2001 From: Amirhossein Date: Sat, 5 Dec 2020 10:32:41 +0330 Subject: [PATCH 16/27] New folder as AmirHossein added --- Week3/{ => AmirHossein}/LESSONPLAN.md | 0 Week3/{ => AmirHossein}/MAKEME.md | 0 Week3/{ => AmirHossein}/README.md | 0 Week3/{ => AmirHossein}/js-exercises/ex1-AddSix.js | 0 Week3/{ => AmirHossein}/js-exercises/ex2-RemoveDuplicates.js | 0 Week3/{ => AmirHossein}/js-exercises/ex3-GuessTheOutput.js | 0 Week3/{ => AmirHossein}/js-exercises/ex4-GuessMore.js | 0 Week3/{ => AmirHossein}/js-exercises/ex5-LotteryMachine.js | 0 Week3/{ => AmirHossein}/old-homework/step2-1.js | 0 Week3/{ => AmirHossein}/old-homework/step2-2.js | 0 Week3/{ => AmirHossein}/old-homework/step2-3.js | 0 Week3/{ => AmirHossein}/old-homework/step2-4.js | 0 Week3/{ => AmirHossein}/old-homework/step2-5.js | 0 Week3/{ => AmirHossein}/old-homework/step2-6.js | 0 Week3/{ => AmirHossein}/old-homework/step2-7.js | 0 Week3/{ => AmirHossein}/old-homework/step3-bonus.js | 0 Week3/{ => AmirHossein}/old-homework/step3.js | 0 Week3/{ => AmirHossein}/project/index.html | 0 Week3/{ => AmirHossein}/project/index.js | 0 Week3/{ => AmirHossein}/test/console-test.js | 0 Week3/{ => AmirHossein}/test/step2-1.test.js | 0 Week3/{ => AmirHossein}/test/step2-2.test.js | 0 Week3/{ => AmirHossein}/test/step2-3.test.js | 0 Week3/{ => AmirHossein}/test/step2-4.test.js | 0 Week3/{ => AmirHossein}/test/step2-5.test.js | 0 Week3/{ => AmirHossein}/test/step2-6.test.js | 0 Week3/{ => AmirHossein}/test/step3-bonus.test.js | 0 Week3/{ => AmirHossein}/test/step3.test.js | 0 28 files changed, 0 insertions(+), 0 deletions(-) rename Week3/{ => AmirHossein}/LESSONPLAN.md (100%) rename Week3/{ => AmirHossein}/MAKEME.md (100%) rename Week3/{ => AmirHossein}/README.md (100%) rename Week3/{ => AmirHossein}/js-exercises/ex1-AddSix.js (100%) rename Week3/{ => AmirHossein}/js-exercises/ex2-RemoveDuplicates.js (100%) rename Week3/{ => AmirHossein}/js-exercises/ex3-GuessTheOutput.js (100%) rename Week3/{ => AmirHossein}/js-exercises/ex4-GuessMore.js (100%) rename Week3/{ => AmirHossein}/js-exercises/ex5-LotteryMachine.js (100%) rename Week3/{ => AmirHossein}/old-homework/step2-1.js (100%) rename Week3/{ => AmirHossein}/old-homework/step2-2.js (100%) rename Week3/{ => AmirHossein}/old-homework/step2-3.js (100%) rename Week3/{ => AmirHossein}/old-homework/step2-4.js (100%) rename Week3/{ => AmirHossein}/old-homework/step2-5.js (100%) rename Week3/{ => AmirHossein}/old-homework/step2-6.js (100%) rename Week3/{ => AmirHossein}/old-homework/step2-7.js (100%) rename Week3/{ => AmirHossein}/old-homework/step3-bonus.js (100%) rename Week3/{ => AmirHossein}/old-homework/step3.js (100%) rename Week3/{ => AmirHossein}/project/index.html (100%) rename Week3/{ => AmirHossein}/project/index.js (100%) rename Week3/{ => AmirHossein}/test/console-test.js (100%) rename Week3/{ => AmirHossein}/test/step2-1.test.js (100%) rename Week3/{ => AmirHossein}/test/step2-2.test.js (100%) rename Week3/{ => AmirHossein}/test/step2-3.test.js (100%) rename Week3/{ => AmirHossein}/test/step2-4.test.js (100%) rename Week3/{ => AmirHossein}/test/step2-5.test.js (100%) rename Week3/{ => AmirHossein}/test/step2-6.test.js (100%) rename Week3/{ => AmirHossein}/test/step3-bonus.test.js (100%) rename Week3/{ => AmirHossein}/test/step3.test.js (100%) diff --git a/Week3/LESSONPLAN.md b/Week3/AmirHossein/LESSONPLAN.md similarity index 100% rename from Week3/LESSONPLAN.md rename to Week3/AmirHossein/LESSONPLAN.md diff --git a/Week3/MAKEME.md b/Week3/AmirHossein/MAKEME.md similarity index 100% rename from Week3/MAKEME.md rename to Week3/AmirHossein/MAKEME.md diff --git a/Week3/README.md b/Week3/AmirHossein/README.md similarity index 100% rename from Week3/README.md rename to Week3/AmirHossein/README.md diff --git a/Week3/js-exercises/ex1-AddSix.js b/Week3/AmirHossein/js-exercises/ex1-AddSix.js similarity index 100% rename from Week3/js-exercises/ex1-AddSix.js rename to Week3/AmirHossein/js-exercises/ex1-AddSix.js diff --git a/Week3/js-exercises/ex2-RemoveDuplicates.js b/Week3/AmirHossein/js-exercises/ex2-RemoveDuplicates.js similarity index 100% rename from Week3/js-exercises/ex2-RemoveDuplicates.js rename to Week3/AmirHossein/js-exercises/ex2-RemoveDuplicates.js diff --git a/Week3/js-exercises/ex3-GuessTheOutput.js b/Week3/AmirHossein/js-exercises/ex3-GuessTheOutput.js similarity index 100% rename from Week3/js-exercises/ex3-GuessTheOutput.js rename to Week3/AmirHossein/js-exercises/ex3-GuessTheOutput.js diff --git a/Week3/js-exercises/ex4-GuessMore.js b/Week3/AmirHossein/js-exercises/ex4-GuessMore.js similarity index 100% rename from Week3/js-exercises/ex4-GuessMore.js rename to Week3/AmirHossein/js-exercises/ex4-GuessMore.js diff --git a/Week3/js-exercises/ex5-LotteryMachine.js b/Week3/AmirHossein/js-exercises/ex5-LotteryMachine.js similarity index 100% rename from Week3/js-exercises/ex5-LotteryMachine.js rename to Week3/AmirHossein/js-exercises/ex5-LotteryMachine.js diff --git a/Week3/old-homework/step2-1.js b/Week3/AmirHossein/old-homework/step2-1.js similarity index 100% rename from Week3/old-homework/step2-1.js rename to Week3/AmirHossein/old-homework/step2-1.js diff --git a/Week3/old-homework/step2-2.js b/Week3/AmirHossein/old-homework/step2-2.js similarity index 100% rename from Week3/old-homework/step2-2.js rename to Week3/AmirHossein/old-homework/step2-2.js diff --git a/Week3/old-homework/step2-3.js b/Week3/AmirHossein/old-homework/step2-3.js similarity index 100% rename from Week3/old-homework/step2-3.js rename to Week3/AmirHossein/old-homework/step2-3.js diff --git a/Week3/old-homework/step2-4.js b/Week3/AmirHossein/old-homework/step2-4.js similarity index 100% rename from Week3/old-homework/step2-4.js rename to Week3/AmirHossein/old-homework/step2-4.js diff --git a/Week3/old-homework/step2-5.js b/Week3/AmirHossein/old-homework/step2-5.js similarity index 100% rename from Week3/old-homework/step2-5.js rename to Week3/AmirHossein/old-homework/step2-5.js diff --git a/Week3/old-homework/step2-6.js b/Week3/AmirHossein/old-homework/step2-6.js similarity index 100% rename from Week3/old-homework/step2-6.js rename to Week3/AmirHossein/old-homework/step2-6.js diff --git a/Week3/old-homework/step2-7.js b/Week3/AmirHossein/old-homework/step2-7.js similarity index 100% rename from Week3/old-homework/step2-7.js rename to Week3/AmirHossein/old-homework/step2-7.js diff --git a/Week3/old-homework/step3-bonus.js b/Week3/AmirHossein/old-homework/step3-bonus.js similarity index 100% rename from Week3/old-homework/step3-bonus.js rename to Week3/AmirHossein/old-homework/step3-bonus.js diff --git a/Week3/old-homework/step3.js b/Week3/AmirHossein/old-homework/step3.js similarity index 100% rename from Week3/old-homework/step3.js rename to Week3/AmirHossein/old-homework/step3.js diff --git a/Week3/project/index.html b/Week3/AmirHossein/project/index.html similarity index 100% rename from Week3/project/index.html rename to Week3/AmirHossein/project/index.html diff --git a/Week3/project/index.js b/Week3/AmirHossein/project/index.js similarity index 100% rename from Week3/project/index.js rename to Week3/AmirHossein/project/index.js diff --git a/Week3/test/console-test.js b/Week3/AmirHossein/test/console-test.js similarity index 100% rename from Week3/test/console-test.js rename to Week3/AmirHossein/test/console-test.js diff --git a/Week3/test/step2-1.test.js b/Week3/AmirHossein/test/step2-1.test.js similarity index 100% rename from Week3/test/step2-1.test.js rename to Week3/AmirHossein/test/step2-1.test.js diff --git a/Week3/test/step2-2.test.js b/Week3/AmirHossein/test/step2-2.test.js similarity index 100% rename from Week3/test/step2-2.test.js rename to Week3/AmirHossein/test/step2-2.test.js diff --git a/Week3/test/step2-3.test.js b/Week3/AmirHossein/test/step2-3.test.js similarity index 100% rename from Week3/test/step2-3.test.js rename to Week3/AmirHossein/test/step2-3.test.js diff --git a/Week3/test/step2-4.test.js b/Week3/AmirHossein/test/step2-4.test.js similarity index 100% rename from Week3/test/step2-4.test.js rename to Week3/AmirHossein/test/step2-4.test.js diff --git a/Week3/test/step2-5.test.js b/Week3/AmirHossein/test/step2-5.test.js similarity index 100% rename from Week3/test/step2-5.test.js rename to Week3/AmirHossein/test/step2-5.test.js diff --git a/Week3/test/step2-6.test.js b/Week3/AmirHossein/test/step2-6.test.js similarity index 100% rename from Week3/test/step2-6.test.js rename to Week3/AmirHossein/test/step2-6.test.js diff --git a/Week3/test/step3-bonus.test.js b/Week3/AmirHossein/test/step3-bonus.test.js similarity index 100% rename from Week3/test/step3-bonus.test.js rename to Week3/AmirHossein/test/step3-bonus.test.js diff --git a/Week3/test/step3.test.js b/Week3/AmirHossein/test/step3.test.js similarity index 100% rename from Week3/test/step3.test.js rename to Week3/AmirHossein/test/step3.test.js From ee9a57b9c3c69f67d432ea1cf71aaadaefd844f3 Mon Sep 17 00:00:00 2001 From: Amirhossein Date: Sat, 5 Dec 2020 14:12:44 +0330 Subject: [PATCH 17/27] Ex5 added - some bugs need to be solve --- .../AmirHossein/js-exercises/ex4-GuessMore.js | 4 ++- .../js-exercises/ex5-LotteryMachine.js | 26 +++++++++++++++++-- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/Week3/AmirHossein/js-exercises/ex4-GuessMore.js b/Week3/AmirHossein/js-exercises/ex4-GuessMore.js index 81a4ec273..5ac3ad8fb 100644 --- a/Week3/AmirHossein/js-exercises/ex4-GuessMore.js +++ b/Week3/AmirHossein/js-exercises/ex4-GuessMore.js @@ -3,10 +3,12 @@ ** Exercise 4: Guess more ** Look at the bellow code snippet. -Can you guess the output? +Can you guess the output? Write out your reasoning in 50 words or less. */ +// The first answer will be 10. Beacuse we gave variable the amount of 9 and we will recive 10. +// The second answer is also 10, because here we are adding 1 to the value of X. const x = 9; diff --git a/Week3/AmirHossein/js-exercises/ex5-LotteryMachine.js b/Week3/AmirHossein/js-exercises/ex5-LotteryMachine.js index ad09b963c..c8241b284 100644 --- a/Week3/AmirHossein/js-exercises/ex5-LotteryMachine.js +++ b/Week3/AmirHossein/js-exercises/ex5-LotteryMachine.js @@ -1,7 +1,7 @@ /** - + ** Exercise 5: The lottery machine ** - + Don't you just love the thrill of the lottery? What if I told you we can make our own lottery machine? Let' s get started! @@ -28,6 +28,28 @@ Don't you just love the thrill of the lottery? What if I told you we can make ou function threeFive(startIndex, stopIndex, threeCallback, fiveCallback) { const numbers = []; + for (let i = startIndex; i <= stopIndex; i++) { + numbers.push(i); + } // It adds numbers between startIndex and stopIndext to the array. + + function threeCallback() { + for (let i = 0; i <= numbers.length; i++) { + if (numbers[i] % 3 === 0) { + return console.log('sayThree'); + } + } + threeCallback(); + } + + function fiveCallback() { + for (let i = 0; i <= numbers.length; i++) { + if (numbers[i] % 5 === 0) { + return console.log('sayFive'); + } + } + fiveCallback(); + } + // make array // start at beginning of array and check if you should call threeCallback or fiveCallback or go on to next } From 0dcf91821282137bee322db3173deec97353acf5 Mon Sep 17 00:00:00 2001 From: Amirhossein Date: Sat, 5 Dec 2020 14:15:02 +0330 Subject: [PATCH 18/27] AmirHossein folder added --- Week2/{ => AmirHossein}/LESSONPLAN.md | 0 Week2/{ => AmirHossein}/MAKEME.md | 0 Week2/{ => AmirHossein}/README.md | 0 Week2/{ => AmirHossein}/homework/maartjes-work.js | 0 Week2/{ => AmirHossein}/homework/map-filter.js | 0 Week2/{ => AmirHossein}/js-exercises/ex1-oddOnesOut.js | 0 Week2/{ => AmirHossein}/js-exercises/ex2-whatsYourMondayWorth.js | 0 Week2/{ => AmirHossein}/js-exercises/ex3-lemonAllergy.js | 0 Week2/{ => AmirHossein}/js-exercises/ex4-collectiveAge.js | 0 Week2/{ => AmirHossein}/js-exercises/ex5-myFavoriteHobbies.html | 0 Week2/{ => AmirHossein}/js-exercises/ex5-myFavoriteHobbies.js | 0 Week2/{ => AmirHossein}/project/index.html | 0 Week2/{ => AmirHossein}/project/index.js | 0 Week2/{ => AmirHossein}/project/style.css | 0 Week2/{ => AmirHossein}/test/maartjes-work.test.js | 0 Week2/{ => AmirHossein}/test/map-filter.test.js | 0 16 files changed, 0 insertions(+), 0 deletions(-) rename Week2/{ => AmirHossein}/LESSONPLAN.md (100%) rename Week2/{ => AmirHossein}/MAKEME.md (100%) rename Week2/{ => AmirHossein}/README.md (100%) rename Week2/{ => AmirHossein}/homework/maartjes-work.js (100%) rename Week2/{ => AmirHossein}/homework/map-filter.js (100%) rename Week2/{ => AmirHossein}/js-exercises/ex1-oddOnesOut.js (100%) rename Week2/{ => AmirHossein}/js-exercises/ex2-whatsYourMondayWorth.js (100%) rename Week2/{ => AmirHossein}/js-exercises/ex3-lemonAllergy.js (100%) rename Week2/{ => AmirHossein}/js-exercises/ex4-collectiveAge.js (100%) rename Week2/{ => AmirHossein}/js-exercises/ex5-myFavoriteHobbies.html (100%) rename Week2/{ => AmirHossein}/js-exercises/ex5-myFavoriteHobbies.js (100%) rename Week2/{ => AmirHossein}/project/index.html (100%) rename Week2/{ => AmirHossein}/project/index.js (100%) rename Week2/{ => AmirHossein}/project/style.css (100%) rename Week2/{ => AmirHossein}/test/maartjes-work.test.js (100%) rename Week2/{ => AmirHossein}/test/map-filter.test.js (100%) diff --git a/Week2/LESSONPLAN.md b/Week2/AmirHossein/LESSONPLAN.md similarity index 100% rename from Week2/LESSONPLAN.md rename to Week2/AmirHossein/LESSONPLAN.md diff --git a/Week2/MAKEME.md b/Week2/AmirHossein/MAKEME.md similarity index 100% rename from Week2/MAKEME.md rename to Week2/AmirHossein/MAKEME.md diff --git a/Week2/README.md b/Week2/AmirHossein/README.md similarity index 100% rename from Week2/README.md rename to Week2/AmirHossein/README.md diff --git a/Week2/homework/maartjes-work.js b/Week2/AmirHossein/homework/maartjes-work.js similarity index 100% rename from Week2/homework/maartjes-work.js rename to Week2/AmirHossein/homework/maartjes-work.js diff --git a/Week2/homework/map-filter.js b/Week2/AmirHossein/homework/map-filter.js similarity index 100% rename from Week2/homework/map-filter.js rename to Week2/AmirHossein/homework/map-filter.js diff --git a/Week2/js-exercises/ex1-oddOnesOut.js b/Week2/AmirHossein/js-exercises/ex1-oddOnesOut.js similarity index 100% rename from Week2/js-exercises/ex1-oddOnesOut.js rename to Week2/AmirHossein/js-exercises/ex1-oddOnesOut.js diff --git a/Week2/js-exercises/ex2-whatsYourMondayWorth.js b/Week2/AmirHossein/js-exercises/ex2-whatsYourMondayWorth.js similarity index 100% rename from Week2/js-exercises/ex2-whatsYourMondayWorth.js rename to Week2/AmirHossein/js-exercises/ex2-whatsYourMondayWorth.js diff --git a/Week2/js-exercises/ex3-lemonAllergy.js b/Week2/AmirHossein/js-exercises/ex3-lemonAllergy.js similarity index 100% rename from Week2/js-exercises/ex3-lemonAllergy.js rename to Week2/AmirHossein/js-exercises/ex3-lemonAllergy.js diff --git a/Week2/js-exercises/ex4-collectiveAge.js b/Week2/AmirHossein/js-exercises/ex4-collectiveAge.js similarity index 100% rename from Week2/js-exercises/ex4-collectiveAge.js rename to Week2/AmirHossein/js-exercises/ex4-collectiveAge.js diff --git a/Week2/js-exercises/ex5-myFavoriteHobbies.html b/Week2/AmirHossein/js-exercises/ex5-myFavoriteHobbies.html similarity index 100% rename from Week2/js-exercises/ex5-myFavoriteHobbies.html rename to Week2/AmirHossein/js-exercises/ex5-myFavoriteHobbies.html diff --git a/Week2/js-exercises/ex5-myFavoriteHobbies.js b/Week2/AmirHossein/js-exercises/ex5-myFavoriteHobbies.js similarity index 100% rename from Week2/js-exercises/ex5-myFavoriteHobbies.js rename to Week2/AmirHossein/js-exercises/ex5-myFavoriteHobbies.js diff --git a/Week2/project/index.html b/Week2/AmirHossein/project/index.html similarity index 100% rename from Week2/project/index.html rename to Week2/AmirHossein/project/index.html diff --git a/Week2/project/index.js b/Week2/AmirHossein/project/index.js similarity index 100% rename from Week2/project/index.js rename to Week2/AmirHossein/project/index.js diff --git a/Week2/project/style.css b/Week2/AmirHossein/project/style.css similarity index 100% rename from Week2/project/style.css rename to Week2/AmirHossein/project/style.css diff --git a/Week2/test/maartjes-work.test.js b/Week2/AmirHossein/test/maartjes-work.test.js similarity index 100% rename from Week2/test/maartjes-work.test.js rename to Week2/AmirHossein/test/maartjes-work.test.js diff --git a/Week2/test/map-filter.test.js b/Week2/AmirHossein/test/map-filter.test.js similarity index 100% rename from Week2/test/map-filter.test.js rename to Week2/AmirHossein/test/map-filter.test.js From dbb234ea713bca859509bb4f5a291afb68488702 Mon Sep 17 00:00:00 2001 From: Amirhossein Date: Sat, 5 Dec 2020 14:21:30 +0330 Subject: [PATCH 19/27] Ex2 euro sign in added --- .../AmirHossein/js-exercises/ex2-whatsYourMondayWorth.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Week2/AmirHossein/js-exercises/ex2-whatsYourMondayWorth.js b/Week2/AmirHossein/js-exercises/ex2-whatsYourMondayWorth.js index 9a4268a12..21ddb69c5 100644 --- a/Week2/AmirHossein/js-exercises/ex2-whatsYourMondayWorth.js +++ b/Week2/AmirHossein/js-exercises/ex2-whatsYourMondayWorth.js @@ -1,7 +1,7 @@ /** - + ** Exercise 2: What 's your Monday worth? ** - + Write a function that finds out what your hourly rate on a Monday would be Use the map array function to take out the duration time for each task. Avoid using for loop or forEach. @@ -19,8 +19,8 @@ function dayWorth(tasks, hourlyRate) { .map(item => item/60) .map(item => item * hourlyRate) .reduce((a,b) => a + b,0) - return totalTime; - + return `€${totalTime}`; + } From 5c80060c441449de13d2a0fb75a3541857ff253f Mon Sep 17 00:00:00 2001 From: Amirhossein Date: Sat, 5 Dec 2020 14:28:11 +0330 Subject: [PATCH 20/27] Bugs fixed --- Week2/AmirHossein/js-exercises/ex1-oddOnesOut.js | 8 ++++---- .../js-exercises/ex2-whatsYourMondayWorth.js | 14 ++++++-------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/Week2/AmirHossein/js-exercises/ex1-oddOnesOut.js b/Week2/AmirHossein/js-exercises/ex1-oddOnesOut.js index e216705c3..70e5f64b7 100644 --- a/Week2/AmirHossein/js-exercises/ex1-oddOnesOut.js +++ b/Week2/AmirHossein/js-exercises/ex1-oddOnesOut.js @@ -2,7 +2,7 @@ ** Exercise 1: The odd ones out ** - Rewrite the following function using map and filter. + Rewrite the following function using map and filter. Avoid using for loop or forEach. The function should still behave the same. @@ -22,10 +22,10 @@ const myNumbers = [1, 2, 3, 4]; //Filter MEthod: -const evenDouble = myNumbers +const evenDouble = myNumbers; .filter(number => (number % 2 === 0)) .map(number => number *2 ) - - + + console.log(evenDouble); diff --git a/Week2/AmirHossein/js-exercises/ex2-whatsYourMondayWorth.js b/Week2/AmirHossein/js-exercises/ex2-whatsYourMondayWorth.js index 21ddb69c5..cc14d0575 100644 --- a/Week2/AmirHossein/js-exercises/ex2-whatsYourMondayWorth.js +++ b/Week2/AmirHossein/js-exercises/ex2-whatsYourMondayWorth.js @@ -15,13 +15,11 @@ function dayWorth(tasks, hourlyRate) { // put your code in here, the function does returns a euro formatted string const totalTime = tasks - .map(item => item.duration) - .map(item => item/60) - .map(item => item * hourlyRate) - .reduce((a,b) => a + b,0) + .map(item => item.duration) + .map(item => item / 60) + .map(item => item * hourlyRate) + .reduce((a, b) => a + b, 0); return `€${totalTime}`; - - } const mondayTasks = [{ @@ -42,5 +40,5 @@ const mondayTasks = [{ }, ]; -console.log(dayWorth(mondayTasks, 25)) -console.log(dayWorth(mondayTasks, 13.37)) \ No newline at end of file +console.log(dayWorth(mondayTasks, 25)); +console.log(dayWorth(mondayTasks, 13.37)); From 4de194d656f5ec1119e1099abee8804541625e48 Mon Sep 17 00:00:00 2001 From: Amirhossein Date: Sat, 5 Dec 2020 21:10:25 +0330 Subject: [PATCH 21/27] Html of project added --- .../js-exercises/ex5-LotteryMachine.js | 38 ++++++++++--------- Week3/AmirHossein/project/index.html | 23 +++++++++++ 2 files changed, 44 insertions(+), 17 deletions(-) diff --git a/Week3/AmirHossein/js-exercises/ex5-LotteryMachine.js b/Week3/AmirHossein/js-exercises/ex5-LotteryMachine.js index c8241b284..1e5a26797 100644 --- a/Week3/AmirHossein/js-exercises/ex5-LotteryMachine.js +++ b/Week3/AmirHossein/js-exercises/ex5-LotteryMachine.js @@ -25,33 +25,37 @@ Don't you just love the thrill of the lottery? What if I told you we can make ou if the array value is divisible by both 3 and 5. */ - +let numbers; function threeFive(startIndex, stopIndex, threeCallback, fiveCallback) { - const numbers = []; + numbers = []; for (let i = startIndex; i <= stopIndex; i++) { numbers.push(i); } // It adds numbers between startIndex and stopIndext to the array. - function threeCallback() { - for (let i = 0; i <= numbers.length; i++) { - if (numbers[i] % 3 === 0) { - return console.log('sayThree'); - } + + sayThree(); + + fiveCallback(); + + // make array + // start at beginning of array and check if you should call threeCallback or fiveCallback or go on to next +} + +function sayThree() { + for (let i = 0; i <= numbers.length; i++) { + if (numbers[i] % 3 === 0) { + return console.log('sayThree'); } - threeCallback(); } +} + - function fiveCallback() { - for (let i = 0; i <= numbers.length; i++) { - if (numbers[i] % 5 === 0) { - return console.log('sayFive'); - } +function sayFive() { + for (let i = 0; i <= numbers.length; i++) { + if (numbers[i] % 5 === 0) { + return console.log('sayFive'); } - fiveCallback(); } - - // make array - // start at beginning of array and check if you should call threeCallback or fiveCallback or go on to next } threeFive(10, 15, sayThree, sayFive); diff --git a/Week3/AmirHossein/project/index.html b/Week3/AmirHossein/project/index.html index fac819b21..5562cebb5 100644 --- a/Week3/AmirHossein/project/index.html +++ b/Week3/AmirHossein/project/index.html @@ -6,7 +6,30 @@ Tip Calculator + +
+

TIP Calculator

+

How much was your bill?

+ $ +
+

How was your service?

+ + + +

How many people are shareing the bill?

+people + +
From 3aea9f2ebdafc5d253c01935ba3bca9ba2fa873f Mon Sep 17 00:00:00 2001 From: Amirhossein Date: Mon, 7 Dec 2020 16:40:40 +0330 Subject: [PATCH 22/27] Project added --- .../js-exercises/ex5-LotteryMachine.js | 4 +- Week3/AmirHossein/project/index.html | 48 +++++---- Week3/AmirHossein/project/index.js | 32 +++++- Week3/AmirHossein/project/styles.css | 98 +++++++++++++++++++ 4 files changed, 158 insertions(+), 24 deletions(-) create mode 100644 Week3/AmirHossein/project/styles.css diff --git a/Week3/AmirHossein/js-exercises/ex5-LotteryMachine.js b/Week3/AmirHossein/js-exercises/ex5-LotteryMachine.js index 1e5a26797..1be5554ca 100644 --- a/Week3/AmirHossein/js-exercises/ex5-LotteryMachine.js +++ b/Week3/AmirHossein/js-exercises/ex5-LotteryMachine.js @@ -25,9 +25,9 @@ Don't you just love the thrill of the lottery? What if I told you we can make ou if the array value is divisible by both 3 and 5. */ -let numbers; + function threeFive(startIndex, stopIndex, threeCallback, fiveCallback) { - numbers = []; + const numbers = []; for (let i = startIndex; i <= stopIndex; i++) { numbers.push(i); } // It adds numbers between startIndex and stopIndext to the array. diff --git a/Week3/AmirHossein/project/index.html b/Week3/AmirHossein/project/index.html index 5562cebb5..089b66156 100644 --- a/Week3/AmirHossein/project/index.html +++ b/Week3/AmirHossein/project/index.html @@ -4,34 +4,40 @@ + + + Tip Calculator - -
-

TIP Calculator

-

How much was your bill?

- $ -
-

How was your service?

- - - -

How many people are shareing the bill?

-people - - -
+
+ $0.00 + each +
+
diff --git a/Week3/AmirHossein/project/index.js b/Week3/AmirHossein/project/index.js index e12fb76ed..23f361a69 100644 --- a/Week3/AmirHossein/project/index.js +++ b/Week3/AmirHossein/project/index.js @@ -1,3 +1,33 @@ // Your code goes in here +function calculateTip() { + const billPrice = document.getElementById('billPrice').value; + const servicQual = document.getElementById('serviceQual').value; + let peopleNum = document.getElementById('peopleNum').value; -document.querySelector("#app").innerText = "Tip Calculator"; \ No newline at end of file + if (billPrice === '' || serviceQual == 0) { + alert('Please enter values'); + return; + } + + if (peopleNum === '' || peopleNum <= 1) { + peopleNum = 1; + document.getElementById('each').style.display = 'none'; + } else { + document.getElementById('each').style.display = 'block'; + } + + let total = (billPrice * servicQual) / peopleNum; + total = Math.round(total * 100) / 100; + total = total.toFixed(2); + document.getElementById('totalTip').style.display = 'block'; + document.getElementById('tip').innerHTML = total; + +} + +document.getElementById('totalTip').style.display = 'none'; +document.getElementById('each').style.display = 'none'; + +document.getElementById("calculate-btn").onclick = function() { + calculateTip(); + + }; diff --git a/Week3/AmirHossein/project/styles.css b/Week3/AmirHossein/project/styles.css new file mode 100644 index 000000000..43f6323d5 --- /dev/null +++ b/Week3/AmirHossein/project/styles.css @@ -0,0 +1,98 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; + font-family: 'Roboto Mono', monospace; + } + +body { + background: linear-gradient(0.25turn, #3f87a6, #ebf8e1, #f69d3c); + } + +.container { + height: 525px; + width: 360px; + margin: 100px auto; + background: #f7f7f7; + padding: 10px; + border-radius: 20px; + + + } +h1 { + margin-bottom: 20px; + color: white; + background-color: black; + padding: 10px; + } +h4 { + margin-bottom: 10px; + margin-bottom: 20px; + } + +#currencyinput { + margin-right: 10px; + } + +#billPrice { + padding-left: 5px; + } + select { + font-size: 15px; + margin-bottom: 10px; + } + #peopleNum { + padding: 5px; + } +#people { + margin-left: 10px; + } +button { + text-transform: uppercase; + font-weight: bold; + display: block; + margin: 30px auto; + background: #AD133A; + border-radius: 5px; + width: 200px; + height: 50px; + font-size: 17px; + color: white; + +} + +button:hover { + background: #4c2827; + border-bottom-color: #111; + } + + button:active { + position: relative; + top: 1px; + } + #totalTip { + font-size: 30px; + margin-top: 5px; + text-align: center; + } + + #totalTip:before { + content: "Tip amount"; + font-size: 20px; + font-weight: bold; + display: block; + text-transform: uppercase; + margin: auto; +} + +#totalTip sup { + font-size: 20px; + top: -15px; +} + +#totalTip small { + font-size: 20px; + font-weight: bold; + display: block; +} + From 01eeccdf0e4ae3843860edea43a9fa4ca8f69076 Mon Sep 17 00:00:00 2001 From: Amirhossein Date: Sun, 4 Jul 2021 13:51:27 +0430 Subject: [PATCH 23/27] comit 1 --- Week1/.vscode/settings.json | 3 +++ Week1/js-exercises/ex4-whatsTheTime.html | 3 ++- Week1/js-exercises/ex4-whatsTheTime.js | 4 ++-- 3 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 Week1/.vscode/settings.json diff --git a/Week1/.vscode/settings.json b/Week1/.vscode/settings.json new file mode 100644 index 000000000..6f3a2913e --- /dev/null +++ b/Week1/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "liveServer.settings.port": 5501 +} \ No newline at end of file diff --git a/Week1/js-exercises/ex4-whatsTheTime.html b/Week1/js-exercises/ex4-whatsTheTime.html index 2c357e7cd..568ed0a45 100644 --- a/Week1/js-exercises/ex4-whatsTheTime.html +++ b/Week1/js-exercises/ex4-whatsTheTime.html @@ -1,4 +1,5 @@ \ No newline at end of file +--> + diff --git a/Week1/js-exercises/ex4-whatsTheTime.js b/Week1/js-exercises/ex4-whatsTheTime.js index 4024c1016..a6a378f05 100644 --- a/Week1/js-exercises/ex4-whatsTheTime.js +++ b/Week1/js-exercises/ex4-whatsTheTime.js @@ -1,7 +1,7 @@ /** - + ** Exercise 4: What 's the time? ** - + Why wear a watch when you can check the time, live in your webpage ? 1. Create a basic HTML file From d79242580ea83946217ef8872f82b22d698c6dc5 Mon Sep 17 00:00:00 2001 From: Amirhossein Date: Sun, 4 Jul 2021 13:58:44 +0430 Subject: [PATCH 24/27] Where are my codes! --- Week1/js-exercises/cat-walk.gif | Bin 0 -> 47233 bytes Week1/js-exercises/ex1-bookList.js | 47 ++++++++++++++++++----- Week1/js-exercises/ex4-whatsTheTime.html | 13 +++++++ Week1/js-exercises/ex4-whatsTheTime.js | 22 +++++++---- Week1/js-exercises/ex5-catWalk.html | 2 +- Week1/js-exercises/ex5-catWalk.js | 30 +++++++++++++-- Week1/js-exercises/tenor.gif | Bin 0 -> 635777 bytes 7 files changed, 92 insertions(+), 22 deletions(-) create mode 100644 Week1/js-exercises/cat-walk.gif create mode 100644 Week1/js-exercises/tenor.gif diff --git a/Week1/js-exercises/cat-walk.gif b/Week1/js-exercises/cat-walk.gif new file mode 100644 index 0000000000000000000000000000000000000000..65e1d59dd05422375c6088cd2bef082d20069d7f GIT binary patch literal 47233 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 DezAeQ literal 0 HcmV?d00001 diff --git a/Week1/js-exercises/ex1-bookList.js b/Week1/js-exercises/ex1-bookList.js index 2db54ba5e..09452ceb8 100644 --- a/Week1/js-exercises/ex1-bookList.js +++ b/Week1/js-exercises/ex1-bookList.js @@ -1,26 +1,53 @@ -/** - - ** Exercise 1: The book list ** + /** + ** Exercise 1: The book list ** I 'd like to display my three favorite books inside a nice webpage! - 1. Iterate through the array of books. 2. For each book, create a `

` element with the book title and author and append it to the page. 3. Use a `