From 805e821c053e0fac1254fcd01f4de6dcd7f8eaf1 Mon Sep 17 00:00:00 2001 From: Diana Fisher Date: Fri, 9 Dec 2016 21:35:40 -0800 Subject: [PATCH 01/31] Implement simple drum kit --- 01 - JavaScript Drum Kit/.jshintrc | 1 + 01 - JavaScript Drum Kit/index-org.html | 83 +++++++++++++++++++++++++ 01 - JavaScript Drum Kit/index.html | 66 +++++++++++++++----- 3 files changed, 136 insertions(+), 14 deletions(-) create mode 100644 01 - JavaScript Drum Kit/.jshintrc create mode 100644 01 - JavaScript Drum Kit/index-org.html diff --git a/01 - JavaScript Drum Kit/.jshintrc b/01 - JavaScript Drum Kit/.jshintrc new file mode 100644 index 0000000000..d428cf9f80 --- /dev/null +++ b/01 - JavaScript Drum Kit/.jshintrc @@ -0,0 +1 @@ +{ "esnext": true } \ No newline at end of file diff --git a/01 - JavaScript Drum Kit/index-org.html b/01 - JavaScript Drum Kit/index-org.html new file mode 100644 index 0000000000..246639f990 --- /dev/null +++ b/01 - JavaScript Drum Kit/index-org.html @@ -0,0 +1,83 @@ + + + + + JS Drum Kit + + + + + +
+
+ A + clap +
+
+ S + hihat +
+
+ D + kick +
+
+ F + openhat +
+
+ G + boom +
+
+ H + ride +
+
+ J + snare +
+
+ K + tom +
+
+ L + tink +
+
+ + + + + + + + + + + + + + + diff --git a/01 - JavaScript Drum Kit/index.html b/01 - JavaScript Drum Kit/index.html index 246639f990..a1def2334e 100644 --- a/01 - JavaScript Drum Kit/index.html +++ b/01 - JavaScript Drum Kit/index.html @@ -59,25 +59,63 @@ + From da07818bc422d262537572c85333f64aa2435999 Mon Sep 17 00:00:00 2001 From: Diana Fisher Date: Mon, 12 Dec 2016 09:01:05 -0800 Subject: [PATCH 02/31] Implement clock face. --- 02 - JS + CSS Clock/.jshintrc | 1 + 02 - JS + CSS Clock/index-org.html | 96 ++++++++++++++++++++++++++++++ 02 - JS + CSS Clock/index.html | 40 ++++++++----- 3 files changed, 121 insertions(+), 16 deletions(-) create mode 100644 02 - JS + CSS Clock/.jshintrc create mode 100644 02 - JS + CSS Clock/index-org.html diff --git a/02 - JS + CSS Clock/.jshintrc b/02 - JS + CSS Clock/.jshintrc new file mode 100644 index 0000000000..d428cf9f80 --- /dev/null +++ b/02 - JS + CSS Clock/.jshintrc @@ -0,0 +1 @@ +{ "esnext": true } \ No newline at end of file diff --git a/02 - JS + CSS Clock/index-org.html b/02 - JS + CSS Clock/index-org.html new file mode 100644 index 0000000000..1c777557da --- /dev/null +++ b/02 - JS + CSS Clock/index-org.html @@ -0,0 +1,96 @@ + + + + + JS + CSS Clock + + + + +
+
+
+
+
+
+
+ + + + + + + diff --git a/02 - JS + CSS Clock/index.html b/02 - JS + CSS Clock/index.html index 1c777557da..599ab636ca 100644 --- a/02 - JS + CSS Clock/index.html +++ b/02 - JS + CSS Clock/index.html @@ -61,36 +61,44 @@ background:black; position: absolute; top:50%; - transform-origin: 100%; + transform-origin: 100%; /* transform about the x-axis. default is 50% */ transform: rotate(90deg); - transition: all 0.05s; - transition-timing-function: cubic-bezier(0.1, 2.7, 0.58, 1); + transition: all 0.05s; + transition-timing-function: ease-in-out; /*cubic-bezier(0.1, 2.7, 0.58, 1);*/ } - - + From 49c95ff1f1ff099266b6a999eac979c04dbc52fb Mon Sep 17 00:00:00 2001 From: Diana Fisher Date: Mon, 12 Dec 2016 10:13:26 -0800 Subject: [PATCH 03/31] Modify elements using CSS variables. --- 03 - CSS Variables/.jshintrc | 1 + 03 - CSS Variables/index.html | 93 +++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 03 - CSS Variables/.jshintrc create mode 100644 03 - CSS Variables/index.html diff --git a/03 - CSS Variables/.jshintrc b/03 - CSS Variables/.jshintrc new file mode 100644 index 0000000000..d428cf9f80 --- /dev/null +++ b/03 - CSS Variables/.jshintrc @@ -0,0 +1 @@ +{ "esnext": true } \ No newline at end of file diff --git a/03 - CSS Variables/index.html b/03 - CSS Variables/index.html new file mode 100644 index 0000000000..e1a0e947e5 --- /dev/null +++ b/03 - CSS Variables/index.html @@ -0,0 +1,93 @@ + + + + + Scoped CSS Variables and JS + + +

Update CSS Variables with JS

+ +
+ + + + + + + + +
+ + + + + + + + + From 267c1910e7490b61eb1501521ba1d8d62df8165d Mon Sep 17 00:00:00 2001 From: Diana Fisher Date: Mon, 12 Dec 2016 17:13:06 -0800 Subject: [PATCH 04/31] Practice using Array methods. --- 04 - Array Cardio Day 1/.jshintrc | 1 + 04 - Array Cardio Day 1/index.html | 135 +++++++++++++++++++++++++++++ 2 files changed, 136 insertions(+) create mode 100644 04 - Array Cardio Day 1/.jshintrc create mode 100644 04 - Array Cardio Day 1/index.html diff --git a/04 - Array Cardio Day 1/.jshintrc b/04 - Array Cardio Day 1/.jshintrc new file mode 100644 index 0000000000..d428cf9f80 --- /dev/null +++ b/04 - Array Cardio Day 1/.jshintrc @@ -0,0 +1 @@ +{ "esnext": true } \ No newline at end of file diff --git a/04 - Array Cardio Day 1/index.html b/04 - Array Cardio Day 1/index.html new file mode 100644 index 0000000000..76c11e75b0 --- /dev/null +++ b/04 - Array Cardio Day 1/index.html @@ -0,0 +1,135 @@ + + + + + Array Cardio πŸ’ͺ + + + + + From ca8cb25ddc376debe23a6f66cebff9948f4cd1b6 Mon Sep 17 00:00:00 2001 From: Diana Fisher Date: Tue, 13 Dec 2016 16:15:16 -0800 Subject: [PATCH 05/31] Animate panels with flex --- 05 - Flex Panel Gallery/.jshintrc | 1 + 05 - Flex Panel Gallery/index.html | 150 +++++++++++++++++++++++++++++ 2 files changed, 151 insertions(+) create mode 100644 05 - Flex Panel Gallery/.jshintrc create mode 100644 05 - Flex Panel Gallery/index.html diff --git a/05 - Flex Panel Gallery/.jshintrc b/05 - Flex Panel Gallery/.jshintrc new file mode 100644 index 0000000000..d428cf9f80 --- /dev/null +++ b/05 - Flex Panel Gallery/.jshintrc @@ -0,0 +1 @@ +{ "esnext": true } \ No newline at end of file diff --git a/05 - Flex Panel Gallery/index.html b/05 - Flex Panel Gallery/index.html new file mode 100644 index 0000000000..0e64bdfa44 --- /dev/null +++ b/05 - Flex Panel Gallery/index.html @@ -0,0 +1,150 @@ + + + + + Flex Panels πŸ’ͺ + + + + + + +
+
+

Hey

+

Let's

+

Dance

+
+
+

Give

+

Take

+

Receive

+
+
+

Experience

+

It

+

Today

+
+
+

Give

+

All

+

You can

+
+
+

Life

+

In

+

Motion

+
+
+ + + + + + + From 75b5b7843872c9b21dc6e38ea65d920cf00f7720 Mon Sep 17 00:00:00 2001 From: Diana Fisher Date: Fri, 16 Dec 2016 16:08:15 -0800 Subject: [PATCH 06/31] Implement type ahead functionality --- 06 - Type Ahead/.jshintrc | 1 + 06 - Type Ahead/index.html | 70 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 06 - Type Ahead/.jshintrc create mode 100644 06 - Type Ahead/index.html diff --git a/06 - Type Ahead/.jshintrc b/06 - Type Ahead/.jshintrc new file mode 100644 index 0000000000..d428cf9f80 --- /dev/null +++ b/06 - Type Ahead/.jshintrc @@ -0,0 +1 @@ +{ "esnext": true } \ No newline at end of file diff --git a/06 - Type Ahead/index.html b/06 - Type Ahead/index.html new file mode 100644 index 0000000000..f0766a8ad0 --- /dev/null +++ b/06 - Type Ahead/index.html @@ -0,0 +1,70 @@ + + + + + Type Ahead πŸ‘€ + + + + +
+ +
    +
  • Filter for a city
  • +
  • or a state
  • +
+
+ + + From e85e9b24765654d996cfff961a6eac27a18ba8ac Mon Sep 17 00:00:00 2001 From: Diana Fisher Date: Fri, 16 Dec 2016 18:50:50 -0800 Subject: [PATCH 07/31] More fun with Array --- 07 - Array Cardio Day 2/.jshintrc | 1 + 07 - Array Cardio Day 2/index.html | 83 ++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 07 - Array Cardio Day 2/.jshintrc create mode 100644 07 - Array Cardio Day 2/index.html diff --git a/07 - Array Cardio Day 2/.jshintrc b/07 - Array Cardio Day 2/.jshintrc new file mode 100644 index 0000000000..d428cf9f80 --- /dev/null +++ b/07 - Array Cardio Day 2/.jshintrc @@ -0,0 +1 @@ +{ "esnext": true } \ No newline at end of file diff --git a/07 - Array Cardio Day 2/index.html b/07 - Array Cardio Day 2/index.html new file mode 100644 index 0000000000..4fbf539239 --- /dev/null +++ b/07 - Array Cardio Day 2/index.html @@ -0,0 +1,83 @@ + + + + + Document + + + + + From d2b90e1811c5443aa772072cc405c2c3096d3638 Mon Sep 17 00:00:00 2001 From: Diana Fisher Date: Fri, 16 Dec 2016 18:51:21 -0800 Subject: [PATCH 08/31] Implement drawing on HTML5 Canvas --- 08 - Fun with HTML5 Canvas/.jshintrc | 1 + 08 - Fun with HTML5 Canvas/index.html | 91 +++++++++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 08 - Fun with HTML5 Canvas/.jshintrc create mode 100644 08 - Fun with HTML5 Canvas/index.html diff --git a/08 - Fun with HTML5 Canvas/.jshintrc b/08 - Fun with HTML5 Canvas/.jshintrc new file mode 100644 index 0000000000..d428cf9f80 --- /dev/null +++ b/08 - Fun with HTML5 Canvas/.jshintrc @@ -0,0 +1 @@ +{ "esnext": true } \ No newline at end of file diff --git a/08 - Fun with HTML5 Canvas/index.html b/08 - Fun with HTML5 Canvas/index.html new file mode 100644 index 0000000000..5272af0087 --- /dev/null +++ b/08 - Fun with HTML5 Canvas/index.html @@ -0,0 +1,91 @@ + + + + + HTML5 Canvas + + + + + + + + + From 79dc5a6180c85f715db7e1dae245f5b586dfe95b Mon Sep 17 00:00:00 2001 From: Diana Fisher Date: Tue, 20 Dec 2016 16:05:15 -0800 Subject: [PATCH 09/31] Try out console methods. --- 09 - Dev Tools Domination/.jshintrc | 1 + 09 - Dev Tools Domination/index.html | 87 ++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 09 - Dev Tools Domination/.jshintrc create mode 100644 09 - Dev Tools Domination/index.html diff --git a/09 - Dev Tools Domination/.jshintrc b/09 - Dev Tools Domination/.jshintrc new file mode 100644 index 0000000000..d428cf9f80 --- /dev/null +++ b/09 - Dev Tools Domination/.jshintrc @@ -0,0 +1 @@ +{ "esnext": true } \ No newline at end of file diff --git a/09 - Dev Tools Domination/index.html b/09 - Dev Tools Domination/index.html new file mode 100644 index 0000000000..83f175e7a4 --- /dev/null +++ b/09 - Dev Tools Domination/index.html @@ -0,0 +1,87 @@ + + + + + Console Tricks! + + + +

Γ—BREAKΓ—DOWNΓ—

+ + + + From c562c6137481dd7124d737574cf12b64151ed654 Mon Sep 17 00:00:00 2001 From: Diana Fisher Date: Tue, 20 Dec 2016 22:39:08 -0800 Subject: [PATCH 10/31] Implement multiple checking of checkboxes. --- .../.jshintrc | 1 + .../index.html | 142 ++++++++++++++++++ 2 files changed, 143 insertions(+) create mode 100644 10 - Hold Shift and Check Checkboxes/.jshintrc create mode 100644 10 - Hold Shift and Check Checkboxes/index.html diff --git a/10 - Hold Shift and Check Checkboxes/.jshintrc b/10 - Hold Shift and Check Checkboxes/.jshintrc new file mode 100644 index 0000000000..d428cf9f80 --- /dev/null +++ b/10 - Hold Shift and Check Checkboxes/.jshintrc @@ -0,0 +1 @@ +{ "esnext": true } \ No newline at end of file diff --git a/10 - Hold Shift and Check Checkboxes/index.html b/10 - Hold Shift and Check Checkboxes/index.html new file mode 100644 index 0000000000..33b68f3cbf --- /dev/null +++ b/10 - Hold Shift and Check Checkboxes/index.html @@ -0,0 +1,142 @@ + + + + + Document + + + + +
+
+ +

This is an inbox layout.

+
+
+ +

Check one item

+
+
+ +

Hold down your Shift key

+
+
+ +

Check a lower item

+
+
+ +

Everything inbetween should also be set to checked

+
+
+ +

Try do it with out any libraries

+
+
+ +

Just regular JavaScript

+
+
+ +

Good Luck!

+
+
+ +

Don't forget to tweet your result!

+
+
+ + + + From 09f21dbe844afaa945b0d3cba5e1adb6526ea7ca Mon Sep 17 00:00:00 2001 From: Diana Fisher Date: Wed, 21 Dec 2016 18:46:00 -0800 Subject: [PATCH 11/31] Implement custom video player --- 11 - Custom Video Player/.jshintrc | 1 + 11 - Custom Video Player/scripts.js | 88 +++++++++++++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 11 - Custom Video Player/.jshintrc diff --git a/11 - Custom Video Player/.jshintrc b/11 - Custom Video Player/.jshintrc new file mode 100644 index 0000000000..d428cf9f80 --- /dev/null +++ b/11 - Custom Video Player/.jshintrc @@ -0,0 +1 @@ +{ "esnext": true } \ No newline at end of file diff --git a/11 - Custom Video Player/scripts.js b/11 - Custom Video Player/scripts.js index e69de29bb2..fa8dcf803f 100644 --- a/11 - Custom Video Player/scripts.js +++ b/11 - Custom Video Player/scripts.js @@ -0,0 +1,88 @@ +/* 1. Get our elements */ + +const player = document.querySelector('.player'); +const video = document.querySelector('.viewer'); +const progress = document.querySelector('.progress'); +const progressBar = document.querySelector('.progress__filled'); +const toggle = document.querySelector('.toggle'); +const skipButtons = document.querySelectorAll('[data-skip]'); // attribute selector. +const ranges = document.querySelectorAll('.player__slider'); + +/* 2. Build our functions. */ + +function togglePlay() { + + // if (video.paused) { + // video.play(); + // } else { + // video.pause(); + // } + + // Same thing, but different syntax.. + const method = video.paused ? 'play' : 'pause'; + video[method](); + + +} + +function updateButton() { + // 'this' is bound to the video itself. + console.log(this); + const icon = this.paused ? 'β–Ί' : '❚ ❚'; + toggle.textContent = icon; + console.log(icon); + console.log('update the button'); +} + +function skip() { + console.log(this.dataset); + video.currentTime += parseFloat(this.dataset.skip); +} + +function handleRangeUpdate() { + console.log(this.value); + console.log(this.name); + + video[this.name] = this.value; +} + +function handleProgress() { + const percent = (video.currentTime / video.duration) * 100; + progressBar.style.flexBasis = `${percent}%`; +} + +function scrub(e) { + const scrubTime = (e.offsetX / progress.offsetWidth) * video.duration; //offsetWidth will give us the entire width of the bar. + video.currentTime = scrubTime; + console.log(e); +} + +/* 3. Hook up event listeners */ + +video.addEventListener('click', togglePlay); +video.addEventListener('play', updateButton); +video.addEventListener('pause', updateButton); +video.addEventListener('timeupdate', handleProgress); + +toggle.addEventListener('click', togglePlay); + +skipButtons.forEach(button => button.addEventListener('click', skip)); + +ranges.forEach(range => range.addEventListener('change', handleRangeUpdate)); +ranges.forEach(range => range.addEventListener('mousemove', handleRangeUpdate)); + +let mousedown = false; + +progress.addEventListener('click', scrub); +// progress.addEventListener('mousemove', scrub); + +// progress.addEventListener('mousemove', () => { +// if(mousedown) { +// scrub(); +// } +// }); + +progress.addEventListener('mousemove', (e) => mousedown && scrub(e)); +progress.addEventListener('mousedown', () => mousedown = true); +progress.addEventListener('mouseup', () => mousedown = false); + From 88bf01950a43391fed710834d8281edbd554efe5 Mon Sep 17 00:00:00 2001 From: Diana Fisher Date: Thu, 22 Dec 2016 15:52:56 -0800 Subject: [PATCH 12/31] Add support for fullscreen mode --- 11 - Custom Video Player/index.html | 1 + 11 - Custom Video Player/scripts.js | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/11 - Custom Video Player/index.html b/11 - Custom Video Player/index.html index fe2b55b394..ff84de7417 100644 --- a/11 - Custom Video Player/index.html +++ b/11 - Custom Video Player/index.html @@ -19,6 +19,7 @@ + diff --git a/11 - Custom Video Player/scripts.js b/11 - Custom Video Player/scripts.js index fa8dcf803f..daa043e45f 100644 --- a/11 - Custom Video Player/scripts.js +++ b/11 - Custom Video Player/scripts.js @@ -7,6 +7,7 @@ const progressBar = document.querySelector('.progress__filled'); const toggle = document.querySelector('.toggle'); const skipButtons = document.querySelectorAll('[data-skip]'); // attribute selector. const ranges = document.querySelectorAll('.player__slider'); +const fullscreen = document.querySelector('.fullscreen'); /* 2. Build our functions. */ @@ -57,6 +58,17 @@ function scrub(e) { console.log(e); } +function handleFullscreen(e) { + console.log(e); + if (video.requestFullscreen) { + video.requestFullscreen(); + } else if (video.webkitRequestFullscreen) { + video.webkitRequestFullscreen(); + } + + +} + /* 3. Hook up event listeners */ video.addEventListener('click', togglePlay); @@ -86,3 +98,5 @@ progress.addEventListener('mousemove', (e) => mousedown && scrub(e)); progress.addEventListener('mousedown', () => mousedown = true); progress.addEventListener('mouseup', () => mousedown = false); +fullscreen.addEventListener('click', handleFullscreen); + From eccd3bfaf0da60ac77d833a86b83201cbad87a7e Mon Sep 17 00:00:00 2001 From: Diana Fisher Date: Thu, 22 Dec 2016 16:31:19 -0800 Subject: [PATCH 13/31] Implement Konami code support --- 12 - Key Sequence Detection/.jshintrc | 1 + 12 - Key Sequence Detection/index.html | 32 ++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 12 - Key Sequence Detection/.jshintrc create mode 100644 12 - Key Sequence Detection/index.html diff --git a/12 - Key Sequence Detection/.jshintrc b/12 - Key Sequence Detection/.jshintrc new file mode 100644 index 0000000000..d428cf9f80 --- /dev/null +++ b/12 - Key Sequence Detection/.jshintrc @@ -0,0 +1 @@ +{ "esnext": true } \ No newline at end of file diff --git a/12 - Key Sequence Detection/index.html b/12 - Key Sequence Detection/index.html new file mode 100644 index 0000000000..3ecb87d763 --- /dev/null +++ b/12 - Key Sequence Detection/index.html @@ -0,0 +1,32 @@ + + + + + Key Detection + + + + + + From abde51d1499dfb3386208a8f9697cdc5470ffb3f Mon Sep 17 00:00:00 2001 From: Diana Fisher Date: Fri, 23 Dec 2016 13:11:47 -0800 Subject: [PATCH 14/31] Implement slide in on scroll --- 13 - Slide in on Scroll/.jshintrc | 1 + 13 - Slide in on Scroll/index.html | 155 +++++++++++++++++++++++++++++ 2 files changed, 156 insertions(+) create mode 100644 13 - Slide in on Scroll/.jshintrc create mode 100644 13 - Slide in on Scroll/index.html diff --git a/13 - Slide in on Scroll/.jshintrc b/13 - Slide in on Scroll/.jshintrc new file mode 100644 index 0000000000..d428cf9f80 --- /dev/null +++ b/13 - Slide in on Scroll/.jshintrc @@ -0,0 +1 @@ +{ "esnext": true } \ No newline at end of file diff --git a/13 - Slide in on Scroll/index.html b/13 - Slide in on Scroll/index.html new file mode 100644 index 0000000000..965033764b --- /dev/null +++ b/13 - Slide in on Scroll/index.html @@ -0,0 +1,155 @@ + + + + + Document + + + +
+ +

Slide in on Scroll

+ +

Consectetur adipisicing elit. Tempore tempora rerum, est autem cupiditate, corporis a qui libero ipsum delectus quidem dolor at nulla, adipisci veniam in reiciendis aut asperiores omnis blanditiis quod quas laborum nam! Fuga ad tempora in aspernatur pariaturlores sunt esse magni, ut, dignissimos.

+

Lorem ipsum cupiditate, corporis a qui libero ipsum delectus quidem dolor at nulla, adipisci veniam in reiciendis aut asperiores omnis blanditiis quod quas laborum nam! Fuga ad tempora in aspernatur pariatur fugit quibusdam dolores sunt esse magni, ut, dignissimos.

+

Adipisicing elit. Tempore tempora rerum..

+

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tempore tempora rerum, est autem cupiditate, corporis a qui libero ipsum delectus quidem dolor at nulla, adipisci veniam in reiciendis aut asperiores omnis blanditiis quod quas laborum nam! Fuga ad tempora in aspernatur pariatur fugit quibusdam dolores sunt esse magni, ut, dignissimos.

+

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tempore tempora rerum, est autem cupiditate, corporis a qui libero ipsum delectus quidem dolor at nulla, adipisci veniam in reiciendis aut asperiores omnis blanditiis quod quas laborum nam! Fuga ad tempora in aspernatur pariatur fugit quibusdam dolores sunt esse magni, ut, dignissimos.

+

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tempore tempora rerum, est autem cupiditate, corporis a qui libero ipsum delectus quidem dolor at nulla, adipisci veniam in reiciendis aut asperiores omnis blanditiis quod quas laborum nam! Fuga ad tempora in aspernatur pariatur fugit quibusdam dolores sunt esse magni, ut, dignissimos.

+ + + +

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptates, deserunt facilis et iste corrupti omnis tenetur est. Iste ut est dicta dolor itaque adipisci, dolorum minima, veritatis earum provident error molestias. Ratione magni illo sint vel velit ut excepturi consectetur suscipit, earum modi accusamus voluptatem nostrum, praesentium numquam, reiciendis voluptas sit id quisquam. Consequatur in quis reprehenderit modi perspiciatis necessitatibus saepe, quidem, suscipit iure natus dignissimos ipsam, eligendi deleniti accusantium, rerum quibusdam fugit perferendis et optio recusandae sed ratione. Culpa, dolorum reprehenderit harum ab voluptas fuga, nisi eligendi natus maiores illum quas quos et aperiam aut doloremque optio maxime fugiat doloribus. Eum dolorum expedita quam, nesciunt

+ + + +

at provident praesentium atque quas rerum optio dignissimos repudiandae ullam illum quibusdam. Vel ad error quibusdam, illo ex totam placeat. Quos excepturi fuga, molestiae ea quisquam minus, ratione dicta consectetur officia omnis, doloribus voluptatibus? Veniam ipsum veritatis architecto, provident quas consequatur doloremque quam quidem earum expedita, ad delectus voluptatum, omnis praesentium nostrum qui aspernatur ea eaque adipisci et cumque ab? Ea voluptatum dolore itaque odio. Eius minima distinctio harum, officia ab nihil exercitationem. Tempora rem nemo nam temporibus molestias facilis minus ipsam quam doloribus consequatur debitis nesciunt tempore officiis aperiam quisquam, molestiae voluptates cum, fuga culpa. Distinctio accusamus quibusdam, tempore perspiciatis dolorum optio facere consequatur quidem ullam beatae architecto, ipsam sequi officiis dignissimos amet impedit natus necessitatibus tenetur repellendus dolor rem! Dicta dolorem, iure, facilis illo ex nihil ipsa amet officia, optio temporibus eum autem odit repellendus nisi. Possimus modi, corrupti error debitis doloribus dicta libero earum, sequi porro ut excepturi nostrum ea voluptatem nihil culpa? Ullam expedita eligendi obcaecati reiciendis velit provident omnis quas qui in corrupti est dolore facere ad hic, animi soluta assumenda consequuntur reprehenderit! Voluptate dolor nihil veniam laborum voluptas nisi pariatur sed optio accusantium quam consectetur, corrupti, sequi et consequuntur, excepturi doloremque. Tempore quis velit corporis neque fugit non sequi eaque rem hic. Facere, inventore, aspernatur. Accusantium modi atque, asperiores qui nobis soluta cumque suscipit excepturi possimus doloremque odit saepe perferendis temporibus molestiae nostrum voluptatum quis id sint quidem nesciunt culpa. Rerum labore dolor beatae blanditiis praesentium explicabo velit optio esse aperiam similique, voluptatem cum, maiores ipsa tempore. Reiciendis sed culpa atque inventore, nam ullam enim expedita consectetur id velit iusto alias vitae explicabo nemo neque odio reprehenderit soluta sint eaque. Aperiam, qui ut tenetur, voluptate doloremque officiis dicta quaerat voluptatem rerum natus magni. Eum amet autem dolor ullam.

+ + + +

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio maiores adipisci quibusdam repudiandae dolor vero placeat esse sit! Quibusdam saepe aperiam explicabo placeat optio, consequuntur nihil voluptatibus expedita quia vero perferendis, deserunt et incidunt eveniet temporibus doloremque possimus facilis. Possimus labore, officia dolore! Eaque ratione saepe, alias harum laboriosam deserunt laudantium blanditiis eum explicabo placeat reiciendis labore iste sint. Consectetur expedita dignissimos, non quos distinctio, eos rerum facilis eligendi. Asperiores laudantium, rerum ratione consequatur, culpa consectetur possimus atque ab tempore illum non dolor nesciunt. Neque, rerum. A vel non incidunt, quod doloremque dignissimos necessitatibus aliquid laboriosam architecto at cupiditate commodi expedita in, quae blanditiis. Deserunt labore sequi, repellat laboriosam est, doloremque culpa reiciendis tempore excepturi. Enim nostrum fugit itaque vel corporis ullam sed tenetur ipsa qui rem quam error sint, libero. Laboriosam rem, ratione. Autem blanditiis

+ + +

laborum neque repudiandae quam, cumque, voluptate veritatis itaque, placeat veniam ad nisi. Expedita, laborum reprehenderit ratione soluta velit natus, odit mollitia. Corporis rerum minima fugiat in nostrum. Assumenda natus cupiditate hic quidem ex, quas, amet ipsum esse dolore facilis beatae maxime qui inventore, iste? Maiores dignissimos dolore culpa debitis voluptatem harum, excepturi enim reiciendis, tempora ab ipsam illum aspernatur quasi qui porro saepe iure sunt eligendi tenetur quaerat ducimus quas sequi omnis aperiam suscipit! Molestiae obcaecati officiis quo, ratione eveniet, provident pariatur. Veniam quasi expedita distinctio, itaque molestiae sequi, dolorum nisi repellendus quia facilis iusto dignissimos nam? Tenetur fugit quos autem nihil, perspiciatis expedita enim tempore, alias ab maiores quis necessitatibus distinctio molestias eum, quidem. Delectus impedit quidem laborum, fugit vel neque quo, ipsam, quasi aspernatur quas odio nihil? Veniam amet reiciendis blanditiis quis reprehenderit repudiandae neque, ab ducimus, odit excepturi voluptate saepe ipsam. Voluptatem eum error voluptas porro officiis, amet! Molestias, fugit, ut! Tempore non magnam, amet, facere ducimus accusantium eos veritatis neque.

+ + + +

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio maiores adipisci quibusdam repudiandae dolor vero placeat esse sit! Quibusdam saepe aperiam explicabo placeat optio, consequuntur nihil voluptatibus expedita quia vero perferendis, deserunt et incidunt eveniet temporibus doloremque possimus facilis. Possimus labore, officia dolore! Eaque ratione saepe, alias harum laboriosam deserunt laudantium blanditiis eum explicabo placeat reiciendis labore iste sint. Consectetur expedita dignissimos, non quos distinctio, eos rerum facilis eligendi. Asperiores laudantium, rerum ratione consequatur, culpa consectetur possimus atque ab tempore illum non dolor nesciunt. Neque, rerum. A vel non incidunt, quod doloremque dignissimos necessitatibus aliquid laboriosam architecto at cupiditate commodi expedita in, quae blanditiis. Deserunt labore sequi, repellat laboriosam est, doloremque culpa reiciendis tempore excepturi. Enim nostrum fugit itaque vel corporis ullam sed tenetur ipsa qui rem quam error sint, libero. Laboriosam rem, ratione. Autem blanditiis laborum neque repudiandae quam, cumque, voluptate veritatis itaque, placeat veniam ad nisi. Expedita, laborum reprehenderit ratione soluta velit natus, odit mollitia. Corporis rerum minima fugiat in nostrum. Assumenda natus cupiditate hic quidem ex, quas, amet ipsum esse dolore facilis beatae maxime qui inventore, iste? Maiores dignissimos dolore culpa debitis voluptatem harum, excepturi enim reiciendis, tempora ab ipsam illum aspernatur quasi qui porro saepe iure sunt eligendi tenetur quaerat ducimus quas sequi omnis aperiam suscipit! Molestiae obcaecati officiis quo, ratione eveniet, provident pariatur. Veniam quasi expedita distinctio, itaque molestiae sequi, dolorum nisi repellendus quia facilis iusto dignissimos nam? Tenetur fugit quos autem nihil, perspiciatis expedita enim tempore, alias ab maiores quis necessitatibus distinctio molestias eum, quidem. Delectus impedit quidem laborum, fugit vel neque quo, ipsam, quasi aspernatur quas odio nihil? Veniam amet reiciendis blanditiis quis reprehenderit repudiandae neque, ab ducimus, odit excepturi voluptate saepe ipsam. Voluptatem eum error voluptas porro officiis, amet! Molestias, fugit, ut! Tempore non magnam, amet, facere ducimus accusantium eos veritatis neque.

+

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio maiores adipisci quibusdam repudiandae dolor vero placeat esse sit! Quibusdam saepe aperiam explicabo placeat optio, consequuntur nihil voluptatibus expedita quia vero perferendis, deserunt et incidunt eveniet temporibus doloremque possimus facilis. Possimus labore, officia dolore! Eaque ratione saepe, alias harum laboriosam deserunt laudantium blanditiis eum explicabo placeat reiciendis labore iste sint. Consectetur expedita dignissimos, non quos distinctio, eos rerum facilis eligendi. Asperiores laudantium, rerum ratione consequatur, culpa consectetur possimus atque ab tempore illum non dolor nesciunt. Neque, rerum. A vel non incidunt, quod doloremque dignissimos necessitatibus aliquid laboriosam architecto at cupiditate commodi expedita in, quae blanditiis. Deserunt labore sequi, repellat laboriosam est, doloremque culpa reiciendis tempore excepturi. Enim nostrum fugit itaque vel corporis ullam sed tenetur ipsa qui rem quam error sint, libero. Laboriosam rem, ratione. Autem blanditiis laborum neque repudiandae quam, cumque, voluptate veritatis itaque, placeat veniam ad nisi. Expedita, laborum reprehenderit ratione soluta velit natus, odit mollitia. Corporis rerum minima fugiat in nostrum. Assumenda natus cupiditate hic quidem ex, quas, amet ipsum esse dolore facilis beatae maxime qui inventore, iste? Maiores dignissimos dolore culpa debitis voluptatem harum, excepturi enim reiciendis, tempora ab ipsam illum aspernatur quasi qui porro saepe iure sunt eligendi tenetur quaerat ducimus quas sequi omnis aperiam suscipit! Molestiae obcaecati officiis quo, ratione eveniet, provident pariatur. Veniam quasi expedita distinctio, itaque molestiae sequi, dolorum nisi repellendus quia facilis iusto dignissimos nam? Tenetur fugit quos autem nihil, perspiciatis expedita enim tempore, alias ab maiores quis necessitatibus distinctio molestias eum, quidem. Delectus impedit quidem laborum, fugit vel neque quo, ipsam, quasi aspernatur quas odio nihil? Veniam amet reiciendis blanditiis quis reprehenderit repudiandae neque, ab ducimus, odit excepturi voluptate saepe ipsam. Voluptatem eum error voluptas porro officiis, amet! Molestias, fugit, ut! Tempore non magnam, amet, facere ducimus accusantium eos veritatis neque.

+ + + + +
+ + + + + + + From 0cf6e4fe0e2c24e179cdfa75a35f15c5cd7b573a Mon Sep 17 00:00:00 2001 From: Diana Fisher Date: Sat, 24 Dec 2016 20:26:32 -0800 Subject: [PATCH 15/31] Testing differences between reference vs. copy --- .../.jshintrc | 1 + .../index.html | 115 ++++++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 14 - JavaScript References VS Copying/.jshintrc create mode 100644 14 - JavaScript References VS Copying/index.html diff --git a/14 - JavaScript References VS Copying/.jshintrc b/14 - JavaScript References VS Copying/.jshintrc new file mode 100644 index 0000000000..d428cf9f80 --- /dev/null +++ b/14 - JavaScript References VS Copying/.jshintrc @@ -0,0 +1 @@ +{ "esnext": true } \ No newline at end of file diff --git a/14 - JavaScript References VS Copying/index.html b/14 - JavaScript References VS Copying/index.html new file mode 100644 index 0000000000..31b60b6f37 --- /dev/null +++ b/14 - JavaScript References VS Copying/index.html @@ -0,0 +1,115 @@ + + + + + JS Reference VS Copy + + + + + + + From 23325bde8650d1663a68631bb9e2c3348af8d68f Mon Sep 17 00:00:00 2001 From: Diana Fisher Date: Mon, 2 Jan 2017 11:20:47 -0800 Subject: [PATCH 16/31] Implement list using even delegation and local storage --- 15 - LocalStorage/.jshintrc | 1 + 15 - LocalStorage/index.html | 101 +++++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 15 - LocalStorage/.jshintrc create mode 100644 15 - LocalStorage/index.html diff --git a/15 - LocalStorage/.jshintrc b/15 - LocalStorage/.jshintrc new file mode 100644 index 0000000000..d428cf9f80 --- /dev/null +++ b/15 - LocalStorage/.jshintrc @@ -0,0 +1 @@ +{ "esnext": true } \ No newline at end of file diff --git a/15 - LocalStorage/index.html b/15 - LocalStorage/index.html new file mode 100644 index 0000000000..bd5242d01f --- /dev/null +++ b/15 - LocalStorage/index.html @@ -0,0 +1,101 @@ + + + + + LocalStorage + + + + + + + +
+

LOCAL TAPAS

+

+
    +
  • Loading Tapas...
  • +
+
+ + +
+
+ + + + + + + From 090c418711b68b1480693de47577a68c2768ec71 Mon Sep 17 00:00:00 2001 From: Diana Fisher Date: Mon, 2 Jan 2017 13:58:16 -0800 Subject: [PATCH 17/31] Add Check All and Clear All functionality --- 15 - LocalStorage/index.html | 39 ++++++++++++++++++++++++++++++++---- 15 - LocalStorage/style.css | 10 +++++++++ 2 files changed, 45 insertions(+), 4 deletions(-) diff --git a/15 - LocalStorage/index.html b/15 - LocalStorage/index.html index bd5242d01f..30832b12e7 100644 --- a/15 - LocalStorage/index.html +++ b/15 - LocalStorage/index.html @@ -21,8 +21,12 @@

LOCAL TAPAS

- -
+ + +

+ + +

+ + From b94fc9e609435a315401f431c654a8bc465064db Mon Sep 17 00:00:00 2001 From: Diana Fisher Date: Mon, 2 Jan 2017 15:48:05 -0800 Subject: [PATCH 20/31] Sort names ignoring articles --- 17 - Sort Without Articles/.jshintrc | 1 + 17 - Sort Without Articles/index.html | 72 +++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 17 - Sort Without Articles/.jshintrc create mode 100644 17 - Sort Without Articles/index.html diff --git a/17 - Sort Without Articles/.jshintrc b/17 - Sort Without Articles/.jshintrc new file mode 100644 index 0000000000..d428cf9f80 --- /dev/null +++ b/17 - Sort Without Articles/.jshintrc @@ -0,0 +1 @@ +{ "esnext": true } \ No newline at end of file diff --git a/17 - Sort Without Articles/index.html b/17 - Sort Without Articles/index.html new file mode 100644 index 0000000000..57d5e23cb2 --- /dev/null +++ b/17 - Sort Without Articles/index.html @@ -0,0 +1,72 @@ + + + + + Sort Without Articles + + + + + +
    + + + + + From 90525ac2a31ebee1d3992f4ad279724845578451 Mon Sep 17 00:00:00 2001 From: Diana Fisher Date: Mon, 2 Jan 2017 16:22:55 -0800 Subject: [PATCH 21/31] Use map and reduce to compute the total run time of a list of videos --- 18 - Adding Up Times with Reduce/.jshintrc | 1 + 18 - Adding Up Times with Reduce/index.html | 219 ++++++++++++++++++++ 2 files changed, 220 insertions(+) create mode 100644 18 - Adding Up Times with Reduce/.jshintrc create mode 100644 18 - Adding Up Times with Reduce/index.html diff --git a/18 - Adding Up Times with Reduce/.jshintrc b/18 - Adding Up Times with Reduce/.jshintrc new file mode 100644 index 0000000000..d428cf9f80 --- /dev/null +++ b/18 - Adding Up Times with Reduce/.jshintrc @@ -0,0 +1 @@ +{ "esnext": true } \ No newline at end of file diff --git a/18 - Adding Up Times with Reduce/index.html b/18 - Adding Up Times with Reduce/index.html new file mode 100644 index 0000000000..fd76773e16 --- /dev/null +++ b/18 - Adding Up Times with Reduce/index.html @@ -0,0 +1,219 @@ + + + + + Videos + + +
      +
    • + Video 1 +
    • +
    • + Video 2 +
    • +
    • + Video 3 +
    • +
    • + Video 4 +
    • +
    • + Video 5 +
    • +
    • + Video 6 +
    • +
    • + Video 7 +
    • +
    • + Video 8 +
    • +
    • + Video 9 +
    • +
    • + Video 10 +
    • +
    • + Video 11 +
    • +
    • + Video 12 +
    • +
    • + Video 13 +
    • +
    • + Video 14 +
    • +
    • + Video 15 +
    • +
    • + Video 16 +
    • +
    • + Video 17 +
    • +
    • + Video 18 +
    • +
    • + Video 19 +
    • +
    • + Video 20 +
    • +
    • + Video 21 +
    • +
    • + Video 22 +
    • +
    • + Video 23 +
    • +
    • + Video 24 +
    • +
    • + Video 25 +
    • +
    • + Video 26 +
    • +
    • + Video 27 +
    • +
    • + Video 28 +
    • +
    • + Video 29 +
    • +
    • + Video 30 +
    • +
    • + Video 31 +
    • +
    • + Video 32 +
    • +
    • + Video 33 +
    • +
    • + Video 34 +
    • +
    • + Video 35 +
    • +
    • + Video 36 +
    • +
    • + Video 37 +
    • +
    • + Video 38 +
    • +
    • + Video 39 +
    • +
    • + Video 40 +
    • +
    • + Video 41 +
    • +
    • + Video 42 +
    • +
    • + Video 43 +
    • +
    • + Video 44 +
    • +
    • + Video 45 +
    • +
    • + Video 46 +
    • +
    • + Video 47 +
    • +
    • + Video 48 +
    • +
    • + Video 49 +
    • +
    • + Video 50 +
    • +
    • + Video 51 +
    • +
    • + Video 52 +
    • +
    • + Video 53 +
    • +
    • + Video 54 +
    • +
    • + Video 55 +
    • +
    • + Video 56 +
    • +
    • + Video 57 +
    • +
    • + Video 58 +
    • + + + + From 2a7f6be0702d5d2f46949e579acae66fb0ae715b Mon Sep 17 00:00:00 2001 From: Diana Fisher Date: Mon, 2 Jan 2017 17:40:46 -0800 Subject: [PATCH 22/31] Implement video recording via the web cam --- 19 - Webcam Fun/.jshintrc | 1 + 19 - Webcam Fun/scripts.js | 83 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 19 - Webcam Fun/.jshintrc diff --git a/19 - Webcam Fun/.jshintrc b/19 - Webcam Fun/.jshintrc new file mode 100644 index 0000000000..d428cf9f80 --- /dev/null +++ b/19 - Webcam Fun/.jshintrc @@ -0,0 +1 @@ +{ "esnext": true } \ No newline at end of file diff --git a/19 - Webcam Fun/scripts.js b/19 - Webcam Fun/scripts.js index 00355f5a9c..2e255e8c4c 100644 --- a/19 - Webcam Fun/scripts.js +++ b/19 - Webcam Fun/scripts.js @@ -3,3 +3,86 @@ const canvas = document.querySelector('.photo'); const ctx = canvas.getContext('2d'); const strip = document.querySelector('.strip'); const snap = document.querySelector('.snap'); + +// get the video +function getVideo() { + navigator.mediaDevices.getUserMedia({ video: true, audio: false }) + .then(localMediaStream => { + console.log(localMediaStream); + video.src = window.URL.createObjectURL(localMediaStream); + video.play(); + }) + .catch(err => { + console.error('Oh NO!!', err); + }); +} + +// paint video to the canvas +function paintToCanvas() { + const width = video.videoWidth; + const height = video.videoHeight; + console.log(width, height); + canvas.width = width; + canvas.height = height; + + // take an image from the web cam + return setInterval(() => { + ctx.drawImage(video, 0, 0, width, height); + + // get the pixel data + let pixels = ctx.getImageData(0, 0, width, height); + // apply effects.. + // pixels = redEffect(pixels); + pixels = rgbSplit(pixels); + + // apply a ghosting effect + // ctx.globalAlpha = 0.1; + + // put pixels back + ctx.putImageData(pixels, 0, 0); + }, 16); +} + +// take a photo +function takePhoto() { + // play the sound + snap.currentTime = 0; + snap.play(); + + // take the data out of the canvas + const data = canvas.toDataURL('image/jpeg'); + // console.log(data); + const link = document.createElement('a'); + link.href = data; + link.setAttribute('download', 'handsome'); + // link.textContent = 'Download Image'; + link.innerHTML = `Handsome Photo`; + + strip.insertBefore(link, strip.firstChild); +} + +function redEffect(pixels) { + for (let i = 0; i < pixels.data.length; i+=4) { + pixels.data[i+0] = pixels.data[i+0] + 100; // red + pixels.data[i+1] = pixels.data[i+1] - 50;// green + pixels.data[i+2] = pixels.data[i+2] * 0.5;// blue + } + return pixels; +} + +function rgbSplit(pixels) { + for (let i = 0; i < pixels.data.length; i+=4) { + pixels.data[i - 150] = pixels.data[i+0]; // red + pixels.data[i + 500] = pixels.data[i+1];// green + pixels.data[i - 550] = pixels.data[i+2];// blue + } + return pixels; +} + +function greenScreen(pixels) { + +} + +getVideo(); + +video.addEventListener('canplay', paintToCanvas); \ No newline at end of file From f6b3a29d2ac77abe990416468de76bff915a966c Mon Sep 17 00:00:00 2001 From: Diana Fisher Date: Tue, 3 Jan 2017 12:50:02 -0800 Subject: [PATCH 23/31] Implement speech detection --- 20 - Speech Detection/.jshintrc | 1 + 20 - Speech Detection/index.html | 101 +++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 20 - Speech Detection/.jshintrc create mode 100644 20 - Speech Detection/index.html diff --git a/20 - Speech Detection/.jshintrc b/20 - Speech Detection/.jshintrc new file mode 100644 index 0000000000..d428cf9f80 --- /dev/null +++ b/20 - Speech Detection/.jshintrc @@ -0,0 +1 @@ +{ "esnext": true } \ No newline at end of file diff --git a/20 - Speech Detection/index.html b/20 - Speech Detection/index.html new file mode 100644 index 0000000000..9dd0f4b49f --- /dev/null +++ b/20 - Speech Detection/index.html @@ -0,0 +1,101 @@ + + + + + Speech Detection + + + +
      +
      + + + + + + + + From 56e5aeb1d4d0b4b4e1a3859e742b99ef78eac347 Mon Sep 17 00:00:00 2001 From: Diana Fisher Date: Tue, 3 Jan 2017 13:17:03 -0800 Subject: [PATCH 24/31] Play with geolocation stuff --- 21 - Geolocation/.jshintrc | 1 + 21 - Geolocation/index.html | 74 +++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 21 - Geolocation/.jshintrc create mode 100644 21 - Geolocation/index.html diff --git a/21 - Geolocation/.jshintrc b/21 - Geolocation/.jshintrc new file mode 100644 index 0000000000..d428cf9f80 --- /dev/null +++ b/21 - Geolocation/.jshintrc @@ -0,0 +1 @@ +{ "esnext": true } \ No newline at end of file diff --git a/21 - Geolocation/index.html b/21 - Geolocation/index.html new file mode 100644 index 0000000000..d794c144ba --- /dev/null +++ b/21 - Geolocation/index.html @@ -0,0 +1,74 @@ + + + + + Document + + + + + + +

      + 0 + KM/H +

      + + + + + From a81cb2ef5610a93944b7fb478d23c1215c82ccd8 Mon Sep 17 00:00:00 2001 From: Diana Fisher Date: Tue, 3 Jan 2017 13:42:47 -0800 Subject: [PATCH 25/31] Implement follow along link highlighter --- 22 - Follow Along Link Highlighter/.jshintrc | 1 + 22 - Follow Along Link Highlighter/index.html | 68 +++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 22 - Follow Along Link Highlighter/.jshintrc create mode 100644 22 - Follow Along Link Highlighter/index.html diff --git a/22 - Follow Along Link Highlighter/.jshintrc b/22 - Follow Along Link Highlighter/.jshintrc new file mode 100644 index 0000000000..d428cf9f80 --- /dev/null +++ b/22 - Follow Along Link Highlighter/.jshintrc @@ -0,0 +1 @@ +{ "esnext": true } \ No newline at end of file diff --git a/22 - Follow Along Link Highlighter/index.html b/22 - Follow Along Link Highlighter/index.html new file mode 100644 index 0000000000..b628208748 --- /dev/null +++ b/22 - Follow Along Link Highlighter/index.html @@ -0,0 +1,68 @@ + + + + + πŸ‘€πŸ‘€πŸ‘€Follow Along Nav + + + + + + +
      +

      Lorem ipsum dolor sit amet, consectetur adipisicing elit. Est explicabo unde natus necessitatibus esse obcaecati distinctio, aut itaque, qui vitae!

      +

      Aspernatur sapiente quae sint soluta modi, atque praesentium laborum pariatur earum quaerat cupiditate consequuntur facilis ullam dignissimos, aperiam quam veniam.

      +

      Cum ipsam quod, incidunt sit ex tempore placeat maxime corrupti possimus veritatis ipsum fugit recusandae est doloremque? Hic, quibusdam, nulla.

      +

      Esse quibusdam, ad, ducimus cupiditate nulla, quae magni odit totam ut consequatur eveniet sunt quam provident sapiente dicta neque quod.

      +

      Aliquam dicta sequi culpa fugiat consequuntur pariatur optio ad minima, maxime odio, distinctio magni impedit tempore enim repellendus repudiandae quas!

      +
      + + + + + From ec32e0f40eda113c0c815c43fbf9ee1437913258 Mon Sep 17 00:00:00 2001 From: Diana Fisher Date: Tue, 3 Jan 2017 15:20:00 -0800 Subject: [PATCH 26/31] Implement speech recognition support --- 23 - Speech Synthesis/.jshintrc | 1 + 23 - Speech Synthesis/index.html | 97 ++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 23 - Speech Synthesis/.jshintrc create mode 100644 23 - Speech Synthesis/index.html diff --git a/23 - Speech Synthesis/.jshintrc b/23 - Speech Synthesis/.jshintrc new file mode 100644 index 0000000000..d428cf9f80 --- /dev/null +++ b/23 - Speech Synthesis/.jshintrc @@ -0,0 +1 @@ +{ "esnext": true } \ No newline at end of file diff --git a/23 - Speech Synthesis/index.html b/23 - Speech Synthesis/index.html new file mode 100644 index 0000000000..55054ea03b --- /dev/null +++ b/23 - Speech Synthesis/index.html @@ -0,0 +1,97 @@ + + + + + Speech Synthesis + + + + + +
      + +

      The Voiceinator 5000

      + + + + + + + + + + + + + +
      + + + + + From c67a6a58706fbc371ae06de6b7d16e5d8cecb07a Mon Sep 17 00:00:00 2001 From: Diana Fisher Date: Tue, 3 Jan 2017 15:37:29 -0800 Subject: [PATCH 27/31] Implement sticky nav --- 24 - Sticky Nav/.jshintrc | 1 + 24 - Sticky Nav/index.html | 76 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 24 - Sticky Nav/.jshintrc create mode 100644 24 - Sticky Nav/index.html diff --git a/24 - Sticky Nav/.jshintrc b/24 - Sticky Nav/.jshintrc new file mode 100644 index 0000000000..d428cf9f80 --- /dev/null +++ b/24 - Sticky Nav/.jshintrc @@ -0,0 +1 @@ +{ "esnext": true } \ No newline at end of file diff --git a/24 - Sticky Nav/index.html b/24 - Sticky Nav/index.html new file mode 100644 index 0000000000..9e6e93da4f --- /dev/null +++ b/24 - Sticky Nav/index.html @@ -0,0 +1,76 @@ + + + + + Sticky Nav + + + + +
      +

      A story about getting lost.

      +
      + + + +
      + +

      Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tempore tempora rerum, est autem cupiditate, corporis a qui libero ipsum delectus quidem dolor at nulla, adipisci veniam in reiciendis aut asperiores omnis blanditiis quod quas laborum nam! Fuga ad tempora in aspernatur pariatur fugit quibusdam dolores sunt esse magni, ut, dignissimos.

      +

      Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tempore tempora rerum, est autem cupiditate, corporis a qui libero ipsum delectus quidem dolor at nulla, adipisci veniam in reiciendis aut asperiores omnis blanditiis quod quas laborum nam! Fuga ad tempora in aspernatur pariatur fugit quibusdam dolores sunt esse magni, ut, dignissimos.

      +

      Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tempore tempora rerum, est autem cupiditate, corporis a qui libero ipsum delectus quidem dolor at nulla, adipisci veniam in reiciendis aut asperiores omnis blanditiis quod quas laborum nam! Fuga ad tempora in aspernatur pariatur fugit quibusdam dolores sunt esse magni, ut, dignissimos.

      +

      Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tempore tempora rerum, est autem cupiditate, corporis a qui libero ipsum delectus quidem dolor at nulla, adipisci veniam in reiciendis aut asperiores omnis blanditiis quod quas laborum nam! Fuga ad tempora in aspernatur pariatur fugit quibusdam dolores sunt esse magni, ut, dignissimos.

      +

      Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tempore tempora rerum, est autem cupiditate, corporis a qui libero ipsum delectus quidem dolor at nulla, adipisci veniam in reiciendis aut asperiores omnis blanditiis quod quas laborum nam! Fuga ad tempora in aspernatur pariatur fugit quibusdam dolores sunt esse magni, ut, dignissimos.

      +

      Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tempore tempora rerum, est autem cupiditate, corporis a qui libero ipsum delectus quidem dolor at nulla, adipisci veniam in reiciendis aut asperiores omnis blanditiis quod quas laborum nam! Fuga ad tempora in aspernatur pariatur fugit quibusdam dolores sunt esse magni, ut, dignissimos.

      +

      Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tempore tempora rerum, est autem cupiditate, corporis a qui libero ipsum delectus quidem dolor at nulla, adipisci veniam in reiciendis aut asperiores omnis blanditiis quod quas laborum nam! Fuga ad tempora in aspernatur pariatur fugit quibusdam dolores sunt esse magni, ut, dignissimos.

      +

      Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tempore tempora rerum, est autem cupiditate, corporis a qui libero ipsum delectus quidem dolor at nulla, adipisci veniam in reiciendis aut asperiores omnis blanditiis quod quas laborum nam! Fuga ad tempora in aspernatur pariatur fugit quibusdam dolores sunt esse magni, ut, dignissimos.

      +

      Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tempore tempora rerum, est autem cupiditate, corporis a qui libero ipsum delectus quidem dolor at nulla, adipisci veniam in reiciendis aut asperiores omnis blanditiis quod quas laborum nam! Fuga ad tempora in aspernatur pariatur fugit quibusdam dolores sunt esse magni, ut, dignissimos.

      +

      Lorem ipsum dolor sit amet, consectetur adipisicing elit. Tempore tempora rerum, est autem cupiditate, corporis a qui libero ipsum delectus quidem dolor at nulla, adipisci veniam in reiciendis aut asperiores omnis blanditiis quod quas laborum nam! Fuga ad tempora in aspernatur pariatur fugit quibusdam dolores sunt esse magni, ut, dignissimos.

      + + + +

      Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptates, deserunt facilis et iste corrupti omnis tenetur est. Iste ut est dicta dolor itaque adipisci, dolorum minima, veritatis earum provident error molestias. Ratione magni illo sint vel velit ut excepturi consectetur suscipit, earum modi accusamus voluptatem nostrum, praesentium numquam, reiciendis voluptas sit id quisquam. Consequatur in quis reprehenderit modi perspiciatis necessitatibus saepe, quidem, suscipit iure natus dignissimos ipsam, eligendi deleniti accusantium, rerum quibusdam fugit perferendis et optio recusandae sed ratione. Culpa, dolorum reprehenderit harum ab voluptas fuga, nisi eligendi natus maiores illum quas quos et aperiam aut doloremque optio maxime fugiat doloribus. Eum dolorum expedita quam, nesciunt

      + + + +

      at provident praesentium atque quas rerum optio dignissimos repudiandae ullam illum quibusdam. Vel ad error quibusdam, illo ex totam placeat. Quos excepturi fuga, molestiae ea quisquam minus, ratione dicta consectetur officia omnis, doloribus voluptatibus? Veniam ipsum veritatis architecto, provident quas consequatur doloremque quam quidem earum expedita, ad delectus voluptatum, omnis praesentium nostrum qui aspernatur ea eaque adipisci et cumque ab? Ea voluptatum dolore itaque odio. Eius minima distinctio harum, officia ab nihil exercitationem. Tempora rem nemo nam temporibus molestias facilis minus ipsam quam doloribus consequatur debitis nesciunt tempore officiis aperiam quisquam, molestiae voluptates cum, fuga culpa. Distinctio accusamus quibusdam, tempore perspiciatis dolorum optio facere consequatur quidem ullam beatae architecto, ipsam sequi officiis dignissimos amet impedit natus necessitatibus tenetur repellendus dolor rem! Dicta dolorem, iure, facilis illo ex nihil ipsa amet officia, optio temporibus eum autem odit repellendus nisi. Possimus modi, corrupti error debitis doloribus dicta libero earum, sequi porro ut excepturi nostrum ea voluptatem nihil culpa? Ullam expedita eligendi obcaecati reiciendis velit provident omnis quas qui in corrupti est dolore facere ad hic, animi soluta assumenda consequuntur reprehenderit! Voluptate dolor nihil veniam laborum voluptas nisi pariatur sed optio accusantium quam consectetur, corrupti, sequi et consequuntur, excepturi doloremque. Tempore quis velit corporis neque fugit non sequi eaque rem hic. Facere, inventore, aspernatur. Accusantium modi atque, asperiores qui nobis soluta cumque suscipit excepturi possimus doloremque odit saepe perferendis temporibus molestiae nostrum voluptatum quis id sint quidem nesciunt culpa. Rerum labore dolor beatae blanditiis praesentium explicabo velit optio esse aperiam similique, voluptatem cum, maiores ipsa tempore. Reiciendis sed culpa atque inventore, nam ullam enim expedita consectetur id velit iusto alias vitae explicabo nemo neque odio reprehenderit soluta sint eaque. Aperiam, qui ut tenetur, voluptate doloremque officiis dicta quaerat voluptatem rerum natus magni. Eum amet autem dolor ullam.

      + + + +

      Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio maiores adipisci quibusdam repudiandae dolor vero placeat esse sit! Quibusdam saepe aperiam explicabo placeat optio, consequuntur nihil voluptatibus expedita quia vero perferendis, deserunt et incidunt eveniet temporibus doloremque possimus facilis. Possimus labore, officia dolore! Eaque ratione saepe, alias harum laboriosam deserunt laudantium blanditiis eum explicabo placeat reiciendis labore iste sint. Consectetur expedita dignissimos, non quos distinctio, eos rerum facilis eligendi. Asperiores laudantium, rerum ratione consequatur, culpa consectetur possimus atque ab tempore illum non dolor nesciunt. Neque, rerum. A vel non incidunt, quod doloremque dignissimos necessitatibus aliquid laboriosam architecto at cupiditate commodi expedita in, quae blanditiis. Deserunt labore sequi, repellat laboriosam est, doloremque culpa reiciendis tempore excepturi. Enim nostrum fugit itaque vel corporis ullam sed tenetur ipsa qui rem quam error sint, libero. Laboriosam rem, ratione. Autem blanditiis laborum neque repudiandae quam, cumque, voluptate veritatis itaque, placeat veniam ad nisi. Expedita, laborum reprehenderit ratione soluta velit natus, odit mollitia. Corporis rerum minima fugiat in nostrum. Assumenda natus cupiditate hic quidem ex, quas, amet ipsum esse dolore facilis beatae maxime qui inventore, iste? Maiores dignissimos dolore culpa debitis voluptatem harum, excepturi enim reiciendis, tempora ab ipsam illum aspernatur quasi qui porro saepe iure sunt eligendi tenetur quaerat ducimus quas sequi omnis aperiam suscipit! Molestiae obcaecati officiis quo, ratione eveniet, provident pariatur. Veniam quasi expedita distinctio, itaque molestiae sequi, dolorum nisi repellendus quia facilis iusto dignissimos nam? Tenetur fugit quos autem nihil, perspiciatis expedita enim tempore, alias ab maiores quis necessitatibus distinctio molestias eum, quidem. Delectus impedit quidem laborum, fugit vel neque quo, ipsam, quasi aspernatur quas odio nihil? Veniam amet reiciendis blanditiis quis reprehenderit repudiandae neque, ab ducimus, odit excepturi voluptate saepe ipsam. Voluptatem eum error voluptas porro officiis, amet! Molestias, fugit, ut! Tempore non magnam, amet, facere ducimus accusantium eos veritatis neque.

      + + + +

      Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio maiores adipisci quibusdam repudiandae dolor vero placeat esse sit! Quibusdam saepe aperiam explicabo placeat optio, consequuntur nihil voluptatibus expedita quia vero perferendis, deserunt et incidunt eveniet temporibus doloremque possimus facilis. Possimus labore, officia dolore! Eaque ratione saepe, alias harum laboriosam deserunt laudantium blanditiis eum explicabo placeat reiciendis labore iste sint. Consectetur expedita dignissimos, non quos distinctio, eos rerum facilis eligendi. Asperiores laudantium, rerum ratione consequatur, culpa consectetur possimus atque ab tempore illum non dolor nesciunt. Neque, rerum. A vel non incidunt, quod doloremque dignissimos necessitatibus aliquid laboriosam architecto at cupiditate commodi expedita in, quae blanditiis. Deserunt labore sequi, repellat laboriosam est, doloremque culpa reiciendis tempore excepturi. Enim nostrum fugit itaque vel corporis ullam sed tenetur ipsa qui rem quam error sint, libero. Laboriosam rem, ratione. Autem blanditiis laborum neque repudiandae quam, cumque, voluptate veritatis itaque, placeat veniam ad nisi. Expedita, laborum reprehenderit ratione soluta velit natus, odit mollitia. Corporis rerum minima fugiat in nostrum. Assumenda natus cupiditate hic quidem ex, quas, amet ipsum esse dolore facilis beatae maxime qui inventore, iste? Maiores dignissimos dolore culpa debitis voluptatem harum, excepturi enim reiciendis, tempora ab ipsam illum aspernatur quasi qui porro saepe iure sunt eligendi tenetur quaerat ducimus quas sequi omnis aperiam suscipit! Molestiae obcaecati officiis quo, ratione eveniet, provident pariatur. Veniam quasi expedita distinctio, itaque molestiae sequi, dolorum nisi repellendus quia facilis iusto dignissimos nam? Tenetur fugit quos autem nihil, perspiciatis expedita enim tempore, alias ab maiores quis necessitatibus distinctio molestias eum, quidem. Delectus impedit quidem laborum, fugit vel neque quo, ipsam, quasi aspernatur quas odio nihil? Veniam amet reiciendis blanditiis quis reprehenderit repudiandae neque, ab ducimus, odit excepturi voluptate saepe ipsam. Voluptatem eum error voluptas porro officiis, amet! Molestias, fugit, ut! Tempore non magnam, amet, facere ducimus accusantium eos veritatis neque.

      +

      Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio maiores adipisci quibusdam repudiandae dolor vero placeat esse sit! Quibusdam saepe aperiam explicabo placeat optio, consequuntur nihil voluptatibus expedita quia vero perferendis, deserunt et incidunt eveniet temporibus doloremque possimus facilis. Possimus labore, officia dolore! Eaque ratione saepe, alias harum laboriosam deserunt laudantium blanditiis eum explicabo placeat reiciendis labore iste sint. Consectetur expedita dignissimos, non quos distinctio, eos rerum facilis eligendi. Asperiores laudantium, rerum ratione consequatur, culpa consectetur possimus atque ab tempore illum non dolor nesciunt. Neque, rerum. A vel non incidunt, quod doloremque dignissimos necessitatibus aliquid laboriosam architecto at cupiditate commodi expedita in, quae blanditiis. Deserunt labore sequi, repellat laboriosam est, doloremque culpa reiciendis tempore excepturi. Enim nostrum fugit itaque vel corporis ullam sed tenetur ipsa qui rem quam error sint, libero. Laboriosam rem, ratione. Autem blanditiis laborum neque repudiandae quam, cumque, voluptate veritatis itaque, placeat veniam ad nisi. Expedita, laborum reprehenderit ratione soluta velit natus, odit mollitia. Corporis rerum minima fugiat in nostrum. Assumenda natus cupiditate hic quidem ex, quas, amet ipsum esse dolore facilis beatae maxime qui inventore, iste? Maiores dignissimos dolore culpa debitis voluptatem harum, excepturi enim reiciendis, tempora ab ipsam illum aspernatur quasi qui porro saepe iure sunt eligendi tenetur quaerat ducimus quas sequi omnis aperiam suscipit! Molestiae obcaecati officiis quo, ratione eveniet, provident pariatur. Veniam quasi expedita distinctio, itaque molestiae sequi, dolorum nisi repellendus quia facilis iusto dignissimos nam? Tenetur fugit quos autem nihil, perspiciatis expedita enim tempore, alias ab maiores quis necessitatibus distinctio molestias eum, quidem. Delectus impedit quidem laborum, fugit vel neque quo, ipsam, quasi aspernatur quas odio nihil? Veniam amet reiciendis blanditiis quis reprehenderit repudiandae neque, ab ducimus, odit excepturi voluptate saepe ipsam. Voluptatem eum error voluptas porro officiis, amet! Molestias, fugit, ut! Tempore non magnam, amet, facere ducimus accusantium eos veritatis neque.

      +
      + + + + + From 46d6a4846c56c1fc51fd1b580c70d483497f0edf Mon Sep 17 00:00:00 2001 From: Diana Fisher Date: Tue, 3 Jan 2017 16:14:08 -0800 Subject: [PATCH 28/31] Test event capture, propagation, and bubbling --- .../.jshintrc | 1 + .../index.html | 59 +++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 25 - Event Capture, Propagation, Bubbling and Once/.jshintrc create mode 100644 25 - Event Capture, Propagation, Bubbling and Once/index.html diff --git a/25 - Event Capture, Propagation, Bubbling and Once/.jshintrc b/25 - Event Capture, Propagation, Bubbling and Once/.jshintrc new file mode 100644 index 0000000000..d428cf9f80 --- /dev/null +++ b/25 - Event Capture, Propagation, Bubbling and Once/.jshintrc @@ -0,0 +1 @@ +{ "esnext": true } \ No newline at end of file diff --git a/25 - Event Capture, Propagation, Bubbling and Once/index.html b/25 - Event Capture, Propagation, Bubbling and Once/index.html new file mode 100644 index 0000000000..55400e5adc --- /dev/null +++ b/25 - Event Capture, Propagation, Bubbling and Once/index.html @@ -0,0 +1,59 @@ + + + + + Understanding JavaScript's Capture + + + +
      +
      +
      +
      +
      +
      + + + + + + + From d36b56c88ee1f439a22e98d57d7e8b6e4b38cfff Mon Sep 17 00:00:00 2001 From: Diana Fisher Date: Tue, 3 Jan 2017 16:56:07 -0800 Subject: [PATCH 29/31] Implement drop down navigation --- 26 - Stripe Follow Along Nav/.jshintrc | 1 + 26 - Stripe Follow Along Nav/index.html | 270 ++++++++++++++++++++++++ 2 files changed, 271 insertions(+) create mode 100644 26 - Stripe Follow Along Nav/.jshintrc create mode 100644 26 - Stripe Follow Along Nav/index.html diff --git a/26 - Stripe Follow Along Nav/.jshintrc b/26 - Stripe Follow Along Nav/.jshintrc new file mode 100644 index 0000000000..d428cf9f80 --- /dev/null +++ b/26 - Stripe Follow Along Nav/.jshintrc @@ -0,0 +1 @@ +{ "esnext": true } \ No newline at end of file diff --git a/26 - Stripe Follow Along Nav/index.html b/26 - Stripe Follow Along Nav/index.html new file mode 100644 index 0000000000..4e0c6f8e93 --- /dev/null +++ b/26 - Stripe Follow Along Nav/index.html @@ -0,0 +1,270 @@ + + + + + Follow Along Nav + + +

      Cool

      + + + + + + + + From a216fdfbaa391b197ce1233c76d78b9b0e0d5a67 Mon Sep 17 00:00:00 2001 From: Diana Fisher Date: Wed, 4 Jan 2017 15:41:37 -0800 Subject: [PATCH 30/31] Implment click and drag functionality --- 27 - Click and Drag/.jshintrc | 1 + 27 - Click and Drag/index.html | 73 ++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 27 - Click and Drag/.jshintrc create mode 100644 27 - Click and Drag/index.html diff --git a/27 - Click and Drag/.jshintrc b/27 - Click and Drag/.jshintrc new file mode 100644 index 0000000000..d428cf9f80 --- /dev/null +++ b/27 - Click and Drag/.jshintrc @@ -0,0 +1 @@ +{ "esnext": true } \ No newline at end of file diff --git a/27 - Click and Drag/index.html b/27 - Click and Drag/index.html new file mode 100644 index 0000000000..ff0151420a --- /dev/null +++ b/27 - Click and Drag/index.html @@ -0,0 +1,73 @@ + + + + + Click and Drag + + + +
      +
      01
      +
      02
      +
      03
      +
      04
      +
      05
      +
      06
      +
      07
      +
      08
      +
      09
      +
      10
      +
      11
      +
      12
      +
      13
      +
      14
      +
      15
      +
      16
      +
      17
      +
      18
      +
      19
      +
      20
      +
      21
      +
      22
      +
      23
      +
      24
      +
      25
      +
      + + + + + From 83fdb8c25b2343e52de6df8a27dd323462e7973d Mon Sep 17 00:00:00 2001 From: Diana Fisher Date: Wed, 11 Jan 2017 17:45:41 -0800 Subject: [PATCH 31/31] Implement video speed controller, countdown timer, and Whack A Mole --- 28 - Video Speed Controller/.jshintrc | 1 + 28 - Video Speed Controller/index.html | 41 +++++++++++ 29 - Countown Timer/.jshintrc | 1 + 29 - Countown Timer/scripts-START.js | 77 ++++++++++++++++++++ 30 - Whack A Mole/.jshintrc | 1 + 30 - Whack A Mole/index.html | 97 ++++++++++++++++++++++++++ 6 files changed, 218 insertions(+) create mode 100644 28 - Video Speed Controller/.jshintrc create mode 100644 28 - Video Speed Controller/index.html create mode 100644 29 - Countown Timer/.jshintrc create mode 100644 30 - Whack A Mole/.jshintrc create mode 100644 30 - Whack A Mole/index.html diff --git a/28 - Video Speed Controller/.jshintrc b/28 - Video Speed Controller/.jshintrc new file mode 100644 index 0000000000..d428cf9f80 --- /dev/null +++ b/28 - Video Speed Controller/.jshintrc @@ -0,0 +1 @@ +{ "esnext": true } \ No newline at end of file diff --git a/28 - Video Speed Controller/index.html b/28 - Video Speed Controller/index.html new file mode 100644 index 0000000000..ec238e9321 --- /dev/null +++ b/28 - Video Speed Controller/index.html @@ -0,0 +1,41 @@ + + + + + Video Speed Scrubber + + + + +
      + +
      +
      1Γ—
      +
      +
      + + + + diff --git a/29 - Countown Timer/.jshintrc b/29 - Countown Timer/.jshintrc new file mode 100644 index 0000000000..d428cf9f80 --- /dev/null +++ b/29 - Countown Timer/.jshintrc @@ -0,0 +1 @@ +{ "esnext": true } \ No newline at end of file diff --git a/29 - Countown Timer/scripts-START.js b/29 - Countown Timer/scripts-START.js index e69de29bb2..e75c2443be 100644 --- a/29 - Countown Timer/scripts-START.js +++ b/29 - Countown Timer/scripts-START.js @@ -0,0 +1,77 @@ +let countdown; +const timerDisplay = document.querySelector('.display__time-left'); +const endTime = document.querySelector('.display__end-time'); +const buttons = document.querySelectorAll('[data-time]'); // select all with a 'data-time' attribute + +function timer(seconds){ + // on iOS, when you scroll all of your setInterval() functions will pause + // setInterval(function() { + // seconds--; + // }, 1000); + + // clear any existing timers + clearInterval(countdown); + + // get the current timestamp in milliseconds + const now = Date.now(); + const then = now + seconds * 1000; + console.log({now, then}); + + displayTimeLeft(seconds); + displayEndTime(then); + + // Display the amount of time left every second. + countdown = setInterval(() => { + const secondsLeft = Math.round((then - Date.now()) / 1000); + + // check if we need to stop.. + if (secondsLeft < 0) { + clearInterval(countdown); + return; + } + + // display it + displayTimeLeft(secondsLeft); + + }, 1000); +} + +function displayTimeLeft(seconds) { + // convert seconds to minutes and seconds + const minutes = Math.floor(seconds / 60); + const remainingSeconds = seconds % 60; + + console.log({minutes, remainingSeconds}); + + const display = `${minutes}:${remainingSeconds < 10 ? '0': ''}${remainingSeconds}`; + timerDisplay.textContent = display; + + document.title = display; +} + +function displayEndTime(timestamp) { + // convert timestamp to a Date + const end = new Date(timestamp); + const hour = end.getHours(); + const minutes = end.getMinutes(); + // endTime.textContent = `Be Back At ${hour}:${minutes}`; + endTime.textContent = `Be Back At ${hour > 12 ? hour-12 : hour}:${minutes < 10 ? '0' : ''}${minutes}`; +} + +function startTimer() { + console.log(this.dataset.time); + const seconds = parseInt(this.dataset.time); + console.log(seconds); + timer(seconds); +} + +buttons.forEach(button => button.addEventListener('click', startTimer)); +document.customForm.addEventListener('submit', function(e) { + e.preventDefault(); + // get the value entered + const mins = this.minutes.value; + console.log(mins); + timer(mins * 60); + // clear the value out of the form. + this.reset(); +}); \ No newline at end of file diff --git a/30 - Whack A Mole/.jshintrc b/30 - Whack A Mole/.jshintrc new file mode 100644 index 0000000000..d428cf9f80 --- /dev/null +++ b/30 - Whack A Mole/.jshintrc @@ -0,0 +1 @@ +{ "esnext": true } \ No newline at end of file diff --git a/30 - Whack A Mole/index.html b/30 - Whack A Mole/index.html new file mode 100644 index 0000000000..e1f6fecd58 --- /dev/null +++ b/30 - Whack A Mole/index.html @@ -0,0 +1,97 @@ + + + + + Whack A Mole! + + + + + +

      Whack-a-mole! 0

      + + +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      + + + +