├── .DS_Store ├── .gitignore ├── .nojekyll ├── .vscode └── settings.json ├── Assignments ├── Assignment-1-Break-Out.md ├── Assignment-2-EsLint.md ├── Assignment-3-OOP.md ├── Assignment-4-Inheritance.md ├── Assignment-5-bundling.md ├── Assignment-6-react-fundamentals.md ├── Assignment-7-fina-project.md ├── Sample_Rubric.md └── images │ ├── Break-Bricks-More.png │ ├── Break-Out-Bricks-Colors-Alternate.png │ ├── Break-Out-Bricks-Colors-Columns.png │ ├── Break-Out-Bricks-Colors-Rows.png │ ├── Break-Out-Bricks-Random.png │ ├── Break-Out-Bricks-sizes-2.png │ ├── Break-Out-Bricks-sizes-3.png │ ├── Break-Out-Bricks-sizes.png │ └── Break-Out-Bricks.png ├── LICENSE ├── Lessons ├── Images │ └── header.svg ├── Lesson-01.md ├── Lesson-02.md ├── Lesson-03.md ├── Lesson-04.md ├── Lesson-05.md ├── Lesson-06.md ├── Lesson-07.md ├── Lesson-08.md ├── Lesson-09-sketch.md ├── Lesson-09.md ├── Lesson-10.md ├── Lesson-11.md ├── Lesson-12.md ├── Lesson-13.md ├── lesson-01-example.html └── lesson-01.html ├── README.md ├── Reveal ├── README.md ├── favicon.ico └── makeschool.css ├── Slides ├── Images │ └── header.svg ├── Lesson-01.html ├── Lesson-02.html ├── Lesson-03.html ├── Lesson-04.html ├── Lesson-05.html ├── Lesson-06.html ├── Lesson-07.html ├── Lesson-08.html ├── Lesson-09.html ├── Lesson-10.html ├── Lesson-11.html ├── Lesson-12.html ├── Lesson-13.html ├── Lesson-14.html ├── Lesson1.html ├── Lesson2.html ├── Lessons │ └── Images │ │ └── header.svg ├── Reveal │ └── makeschool.css ├── assets │ └── Reveal │ │ └── makeschool.css ├── css │ ├── highlight │ │ ├── atom-one-light.css │ │ └── zenburn.css │ ├── print │ │ ├── paper.css │ │ └── pdf.css │ ├── reset.css │ ├── reveal.css │ ├── reveal.scss │ └── theme │ │ ├── README.md │ │ ├── beige.css │ │ ├── black.css │ │ ├── blood.css │ │ ├── league.css │ │ ├── moon.css │ │ ├── night.css │ │ ├── serif.css │ │ ├── simple.css │ │ ├── sky.css │ │ ├── solarized.css │ │ ├── source │ │ ├── beige.scss │ │ ├── black.scss │ │ ├── blood.scss │ │ ├── league.scss │ │ ├── moon.scss │ │ ├── night.scss │ │ ├── serif.scss │ │ ├── simple.scss │ │ ├── sky.scss │ │ ├── solarized.scss │ │ └── white.scss │ │ ├── template │ │ ├── mixins.scss │ │ ├── settings.scss │ │ └── theme.scss │ │ └── white.css ├── index.html ├── js │ └── reveal.js ├── lib │ ├── css │ │ ├── monokai.css │ │ └── zenburn.css │ ├── font │ │ ├── league-gothic │ │ │ ├── LICENSE │ │ │ ├── league-gothic.css │ │ │ ├── league-gothic.eot │ │ │ ├── league-gothic.ttf │ │ │ └── league-gothic.woff │ │ └── source-sans-pro │ │ │ ├── LICENSE │ │ │ ├── source-sans-pro-italic.eot │ │ │ ├── source-sans-pro-italic.ttf │ │ │ ├── source-sans-pro-italic.woff │ │ │ ├── source-sans-pro-regular.eot │ │ │ ├── source-sans-pro-regular.ttf │ │ │ ├── source-sans-pro-regular.woff │ │ │ ├── source-sans-pro-semibold.eot │ │ │ ├── source-sans-pro-semibold.ttf │ │ │ ├── source-sans-pro-semibold.woff │ │ │ ├── source-sans-pro-semibolditalic.eot │ │ │ ├── source-sans-pro-semibolditalic.ttf │ │ │ ├── source-sans-pro-semibolditalic.woff │ │ │ └── source-sans-pro.css │ └── js │ │ ├── html5shiv.js │ │ └── promise.js └── plugin │ ├── highlight │ └── highlight.js │ ├── markdown │ ├── example.html │ ├── example.md │ ├── markdown.js │ └── marked.js │ ├── math │ └── math.js │ ├── multiplex │ ├── client.js │ ├── index.js │ ├── master.js │ └── package.json │ ├── notes-server │ ├── client.js │ ├── index.js │ └── notes.html │ ├── notes │ ├── notes.html │ └── notes.js │ ├── print-pdf │ └── print-pdf.js │ ├── search │ └── search.js │ └── zoom-js │ └── zoom.js ├── Web ├── .nojekyll ├── logo-icononly.svg ├── style.css └── sw.js ├── _navbar.md ├── _sidebar.md ├── assessment ├── README.md ├── Screen-Shot.png └── metal.json ├── final-assessment-guide.md ├── index.html ├── notes ├── array-loops-praxctice-problems.md ├── assessment.md └── old │ ├── LICENSE │ ├── README.md │ ├── class-01 │ ├── README.md │ └── assignment.md │ ├── class-02 │ ├── README.md │ └── images │ │ ├── Break-Bricks-More.png │ │ ├── Break-Out-Bricks-Colors-Alternate.png │ │ ├── Break-Out-Bricks-Colors-Columns.png │ │ ├── Break-Out-Bricks-Colors-Rows.png │ │ ├── Break-Out-Bricks-Random.png │ │ ├── Break-Out-Bricks-sizes-2.png │ │ ├── Break-Out-Bricks-sizes-3.png │ │ ├── Break-Out-Bricks-sizes.png │ │ └── Break-Out-Bricks.png │ ├── class-03 │ └── README.md │ ├── class-04 │ ├── README.md │ └── images │ │ ├── Trees.png │ │ └── wagon.png │ ├── class-05 │ └── README.md │ ├── class-06 │ ├── README.md │ └── notes │ │ └── minute-by-minute.md │ ├── class-07 │ ├── README.md │ ├── event-listeners-2.html │ ├── event-listeners.html │ └── example-01.html │ ├── class-08 │ └── README.md │ ├── class-09 │ └── README.md │ ├── class-10 │ └── README.md │ ├── class-11 │ └── README.md │ ├── class-12 │ └── README.md │ ├── class-13 │ └── README.md │ ├── class-14 │ └── README.md │ └── notes │ ├── activity-1.js │ ├── activity-1.md │ ├── assignment-template.md │ ├── boxes │ └── index.html │ ├── class-03-old │ ├── README.md │ └── images │ │ ├── Break-Bricks-Gradient-Bricks.png │ │ ├── Break-Bricks-Target.png │ │ ├── Break-Bricks-circle.png │ │ ├── Break-Bricks-gradient-back.png │ │ ├── Break-Bricks-gradient.png │ │ ├── Break-Bricks-rainbow-1.png │ │ ├── Break-Bricks-rainbow-2.png │ │ └── Break-Bricks-rainbow.png │ ├── final-assessment-2.md │ ├── final-assessment.js │ ├── final-assessment.md │ ├── notes.md │ ├── project-phaser-rubric.md │ ├── shopping-cart-data.js │ ├── solutions │ ├── README.md │ ├── breakout │ │ └── index.html │ ├── oregon-trail │ │ ├── css │ │ │ └── style.css │ │ ├── images │ │ │ ├── Planets.png │ │ │ ├── Ship.png │ │ │ ├── Trees.png │ │ │ ├── stars-2.png │ │ │ ├── stars.jpg │ │ │ └── wagon.png │ │ ├── index.html │ │ └── js │ │ │ ├── Caravan.js │ │ │ ├── Config.js │ │ │ ├── Event.js │ │ │ ├── Game.js │ │ │ ├── UI.js │ │ │ └── main.js │ ├── shopping-cart-data.html │ └── shopping-cart-data.js │ ├── study-guide.html │ ├── study-guide.md │ └── what-you-need-know.md ├── reveal-md.json ├── reveal.json └── syllabus-guide.md /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/.DS_Store -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | -------------------------------------------------------------------------------- /.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/.nojekyll -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "liveServer.settings.port": 5501 3 | } -------------------------------------------------------------------------------- /Assignments/Assignment-1-Break-Out.md: -------------------------------------------------------------------------------- 1 | # Class - Breakout 2 | 3 | ## Description 4 | 5 | Learn JavaScript by building the classic arcade Break Out. You will use vanilla JS writing all of the code yourself. 6 | 7 | ### Why this assignment? 8 | 9 | This assignment includes a wide range of all features of the JavaScript language. Including functions, variables, arrays, objects, and if-else, and loops. 10 | 11 | **Understanding the concepts used in this project will take you a long way to being able to understand and answer technical questions at interviews.** 12 | 13 | Besides basic JS included in the tutorial, you will update everything to modern JavaScript syntax and restructure the code using OOP techniques. 14 | 15 | Last you'll implement a build system and apply modern coding best practice to the project. 16 | 17 | ## Project requirements 18 | 19 | The start of this project is to complete the tutorial here: 20 | 21 | https://developer.mozilla.org/en-US/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript 22 | 23 | Follow these steps: 24 | 25 | - Create a new GitHub repo 26 | - Follow the tutorial here: https://developer.mozilla.org/en-US/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript 27 | - Create a commit at the end of each step of the tutorial 28 | - There are 10 steps to the tutorial you should have a commit for each step. 29 | - After completing the tutorial try the stretch challenges below. 30 | 31 | ### Deliverable 32 | 33 | Submit your work on [GradeScope](https://www.gradescope.com/courses/202953). 34 | 35 | ## Assessing the assignment 36 | 37 | Use this rubric to measure the success of your work against the expectations of the assignment. You should be striving for an average score of 1 or greater. 38 | 39 | | Aspect | Does not meet (0) | Meets (1) | Exceeds (2) | 40 | |:-------------|:--------------|:-----|:---------| 41 | | **Completion** | The tutorial is not been completed | Tutorial completed (all 10 steps) | You have tried the stretch challenges | 42 | | **Functionality** | The game is not functioning or partially functional | The game is functional | You have successfully implemented some or all of the stretch challenges | 43 | | **Work Ethic** | < 3 commits. | Commits show consistent work| commits show full 3 hours of work | 44 | 45 | ## Assessing your knowledge 46 | 47 | Use this rubric to assess how your understanding of the learning objectives. You should be striving for an average score of 1 or greater 48 | 49 | | Expectations | Does not meet (0) | Meets (1) | Exceeds (2) | 50 | |:-------------|:--------------|:-----|:---------| 51 | | **Writing JS** | Can not write simple programs with JS without a tutorial | Can write simple programs in JS without tutorial | Could write a JS tutorial that teaches simple programming concepts | 52 | | **Code Flow** | Can not evaluate and explain the flow of code in the tutorial | Can explain and follow the flow of code in the tutorial program | Could make improvements, evaluate, and optimize the flow of code in the tutorial program | 53 | | **Variables** | Could not define variables without reference | Can define and use variables without a reference | Could easily define variables of any type without reference | 54 | | **Functions** | Could not write a function without reference | Can write functions from memory | Could use functions to organize code in any new program | 55 | | **Loops** | Could not write a loop without reference | Can write a for loop without reference | Could write a loop that iterates from any starting value to any ending value without reference | 56 | |**Arrays** | Could not define and use an array without reference | Can define and use arrays without a reference | Could plan new programs that work with arrays | 57 | |**Objects** | Could not define and use objects without reference | Can define and use objects without a reference | Could plan new programs that work with objects | 58 | 59 | ### Stretch Challenges 60 | 61 | **Change the colors** 62 | 63 | Everything is currently blue and gray. Choose some new colors to customize the game. Change the colors of these elements: 64 | 65 | - Bricks 66 | - Ball 67 | - Paddle 68 | - Background 69 | 70 | **Make each row a different color** 71 | 72 | A single color is not very interesting. Make each row a different color. Bricks are managed with a two-dimensional array. 73 | 74 | The code draws all of the bricks with each call to `draw()`, this method calls the `drawBricks()`. You'll need to solve this here. In this method, the variables `c` and `r` hold the number of the column and row for each brick. Change the color by changing the `cxt.fillStyle`. 75 | 76 | See the image below: 77 | 78 | ![Colored Rows](images/Break-Out-Bricks-Colors-Rows.png) 79 | 80 | **Make each column a different color** 81 | 82 | You changed the rows try changing the columns to different colors. 83 | 84 | ![Colored Columns](images/Break-Out-Bricks-Colors-Columns.png) 85 | 86 | **Alternate colors of bricks** 87 | 88 | Alternate the colors of the bricks. 89 | 90 | ![Break-Out-Bricks-Colors-Alternate.png](images/Break-Out-Bricks-Colors-Alternate.png) 91 | 92 | **Make more rows** 93 | 94 | The game might be more fun if there were more bricks. Add more bricks in each row. To do this you'll need to change the number of bricks along with the width of each brick. 95 | 96 | Make sure the space between the bricks stays the same. 97 | 98 | ![More bricks](images/Break-Out-Bricks-sizes.png) 99 | 100 | **Make more rows and columns** 101 | 102 | ![Break-Bricks-More.png](images/Break-Bricks-More.png) 103 | 104 | **Offset rows** 105 | 106 | ![Offset rows](images/Break-Out-Bricks-sizes-2.png) 107 | 108 | **Different sized bricks** 109 | 110 | ![Differnt sizes](images/Break-Out-Bricks-sizes-3.png) 111 | 112 | **Make colored bricks worth points** 113 | 114 | Make each row of bricks worth a different number of points. The first row is worth 10. The second row is worth 100 and the top row is worth 100 for each brick. 115 | 116 | **Custom Background** Write a function to draw the background for the game. Currently the `draw()` function clears the canvas on it's first line with: 117 | 118 | `ctx.clearRect(0, 0, canvas.width, canvas.height);`JS 119 | 120 | Add a function called `drawBackground()`. Call this on the first line of `draw()`. 121 | 122 | Try these challenges: 123 | 124 | - Fill the background with a color other than the default color. Do this by drawing a rectangle that starts at x 0, y 0 with a width and height that match your canvas. Do all of this in the `drawBackground()` function. 125 | 126 | 127 | -------------------------------------------------------------------------------- /Assignments/Assignment-2-EsLint.md: -------------------------------------------------------------------------------- 1 | # Class - Breakout - Code Quality 2 | 3 | ## Description 4 | 5 | Improve your code quality by updating your code. 6 | 7 | Try to solve the stretch challenges. 8 | 9 | ### Why this assignment? 10 | 11 | Writing quality code up to professional standards is important. It's hard to know at professional standards are without a guide. The linter will help you write code that meets industry best practices. 12 | 13 | Trying the stretch challenges is an opportunity to stretch your abilities by solving problems. 14 | 15 | ## Project requirements 16 | 17 | Create a new branch for your Break Out Repo. You'll place the work for this assignment there. 18 | 19 | Try all of the challenges below. 20 | 21 | ### Challenges 22 | 23 | **Challenge 1** Install the Linter. Follow the instructions from the class. 24 | 25 | Create an npm project in your project directory and install eslint. 26 | 27 | You'll need to install the linter plugin/extension for your code editor also. 28 | 29 | You'll also need to use a style guide. For this assignment, you should be using the Airbnb JavaScript style guide. 30 | 31 | **Challenge 2** Solve the errors the linter identifies in your code. The linter will identify the errors with a red underline and provide some hints as to what the problems are. 32 | 33 | With each change ask yourself why the style guide is asking for that change. Discuss this with other students, TA, or instructor. 34 | 35 | This process should cover the following areas: 36 | 37 | - const, let, and var 38 | - arrow functions 39 | - template string literals 40 | 41 | Pay close attention to these. They are effected by hoisting. A function or var declare lower in code may need to be declared earlier to work properly. 42 | 43 | ### Deliverable 44 | 45 | ### Deliverable 46 | 47 | Submit your work on [GradeScope](https://www.gradescope.com/courses/202953). 48 | 49 | ## Assessing the assignment 50 | 51 | Use this rubric to measure the success of your work against the expectations of the assignment. You should be striving for an average score of 1 or greater. 52 | 53 | | Aspect | Does not meet (0) | Meets (1) | Exceeds (2) | 54 | |:-------------|:--------------|:-----|:---------| 55 | | **Linter** | Linter and or style guide not installed | Linter and style guide installed | Style guide customized or adjusted for your preferences | 56 | | **Completion** | Linter errors not addressed | Linter errors addressed | Code is well-formatted and includes comments | 57 | | **Work Ethic** | < 3 commits. | Commits show consistent work| commits show full 3 hours of work | 58 | 59 | ## Assessing your knowledge 60 | 61 | Use this rubric to assess how your understanding of the learning objectives. You should be striving for an average score of 1 or greater 62 | 63 | | Expectations | Does not meet (0) | Meets (1) | Exceeds (2) | 64 | |:-------------|:--------------|:-----|:---------| 65 | | **const, let, and var** | Can not describe the difference between const, let, and var | Can describe the difference between const, let, and var | Can provide use case examples for const, let, and var | 66 | | **Arrow functions** | Could not write an arrow function without reference | Can write arrow functions without a reference | Can write arrow functions in various syntaxes | 67 | | **Linting and style** | Can't explain why using a linter with a style guide is a best practice | Can explain why using the linter with a style guide is best practice | Can contrast situations where the linter might not be useful against cases where it would be useful | -------------------------------------------------------------------------------- /Assignments/Assignment-5-bundling.md: -------------------------------------------------------------------------------- 1 | # Class - Breakout - Bundling 2 | 3 | ## Description 4 | 5 | Modern professional JavaScript it processed and prepared for distribution. The files you create are not distributed directly. Instead these working/developer files are processed first. 6 | 7 | In this assignment you will set up a build system that will process the files from the Breal Out project and create files for distribution. 8 | 9 | ### Why this assignment? 10 | 11 | This is common process used in industry you should know how this works and whgy it's used. The best way to do that is to implement the process yourself. 12 | 13 | ## Project requirements 14 | 15 | Follow the instructions from class and create a bundle JS. 16 | 17 | Commit and push your changes to GitHub. 18 | 19 | ### Challenges 20 | 21 | **Challenege 1** Bundle your code 22 | 23 | Follow the tutorial to bundle your code with Webpack. Push your bundled code to GitHub. 24 | 25 | 26 | **Challenge 2** Document your work 27 | 28 | Create a Readme that documents your work process from start to finish. Describe where you started, and the changes that you made to come up with the completed game. Include the following sections in your Readme. 29 | 30 | - What is your project 31 | - Why you made it 32 | - Image or screen shot 33 | - Getting started - how to run the project 34 | - Tools and technologies used 35 | 36 | ### Deliverable 37 | 38 | Submit your work on [GradeScope](https://www.gradescope.com/courses/202953). 39 | 40 | ## Assessing the assignment 41 | 42 | Use this rubric to measure the success of your work against the expectations of the assignment. You should be striving for an average score of 1 or greater. 43 | 44 | | Aspect | Does not meet (0) | Meets (1) | Exceeds (2) | 45 | |:-------------|:--------------|:-----|:---------| 46 | | **Bundling** | Code has not been bundled | Code was successfully bundled and functions correctly | - | 47 | | **ReadMe** | Readme not written or incomplete | ReadMe includes all of the sections listed above | You're read me looks total pro, it includes pictures and badges | 48 | 49 | ## Assessing your knowledge 50 | 51 | Use this rubric to assess how your understanding of the learning objectives. You should be striving for an average score of 1 or greater 52 | 53 | | Expectations | Does not meet (0) | Meets (1) | Exceeds (2) | 54 | |:-------------|:--------------|:-----|:---------| 55 | | **Bundling** | Can't describe the uses for bundling | Can describe the uses for bundling | Can describe other uses for bundling and situations where bundling might not be beneficial | 56 | | **Webpack** | Couldn't apply webpack to another project | Could use Webpack to another project | Could modify the options to customize webpack for use with other projects | -------------------------------------------------------------------------------- /Assignments/Assignment-6-react-fundamentals.md: -------------------------------------------------------------------------------- 1 | # Class - React Fundamentals Tutorial 2 | 3 | ## Description 4 | 5 | Complete the React fundamentals tutorial. This tutorial provides an introduction to concepts that will get you started making projects with React. 6 | 7 | ### Why this assignment? 8 | 9 | React is one of the most popular libraries used today. It's hugely popular expect to use React or a similar library at a job. 10 | 11 | ## Project requirements 12 | 13 | Follow this tutorial and complete it. 14 | 15 | You can follow it on the Make School website or on github from either of the links below. 16 | 17 | https://www.makeschool.com/academy/track/react-fundamentals-vm0 18 | 19 | https://github.com/MakeSchool-Tutorials/React-Fundamentals 20 | 21 | ### Deliverable 22 | 23 | Submit your work on [GradeScope](https://www.gradescope.com/courses/202953). 24 | 25 | ## Assess your work 26 | 27 | | expectations | Does not meet (0) | Meets (1) | Exceeds (2) | 28 | |:--------------|:---------------------------|:-------------------------|:---------------------| 29 | | **Completed** | Did not complete the challenges | Completed all challenges | Completed stretch challenges | 30 | | **Functionality** | Does not function or throws errors | Game functions as it did before the refactor | New features improve functionality of the game | 31 | | **Code quality** | Does not meet industry best practices | Meets industry best practice (confirmed by the linter) | Code is well organized and well commented | 32 | | **Work Ethic** | less than 3 commits | New changes are in a branch, and more than 3 commits | Commits are descriptive and well documented | 33 | 34 | ## Assessing your knowledge 35 | 36 | Use this rubric to assess how your understanding of the learning objectives. You should striving for an average score of 1 or greater 37 | 38 | | Expectations | Does not meet (0) | Meets (1) | Exceeds (2) | 39 | |:-------------|:-----|:-----|:-----| 40 | | **OOP** | Can not describe OOP | Can describe OOP | can provide use cases for OOP | 41 | | **Class** | Can not define a class without the documentation | Can define a class without the documentation | Can create classes with ease and plan for their use | 42 | | **Instances** | Can't make an instacne from a class without the docs | Can make an instacne of a class with referencing the documention | - | 43 | | **Properties** | Can't describe what a property is | Can describe what a property is | Could define new classes with properties of any type | 44 | | **Methods** | Can't describe what a method is | Can describe what a property is | Could define new classes with properties of any type | 45 | | **dependency injection** | Can't describe dependency injection | Can describe dependency injection | Can identify dependency injection in the examples | 46 | -------------------------------------------------------------------------------- /Assignments/Assignment-7-fina-project.md: -------------------------------------------------------------------------------- 1 | # Class - Final Project 2 | 3 | ## Description 4 | 5 | The goal of the next few assignments is to create a final project of your own design. 6 | 7 | ### Why this assignment? 8 | 9 | This will give you the opportunity to express your own ideas and create something that will build your portfolio. 10 | 11 | ## Project requirements 12 | 13 | The final project should include the following: 14 | 15 | - Built with React 16 | - Published to GitHub Pages 17 | 18 | The first stage is to define the project. Then create a wireframe. 19 | 20 | ### Deliverable 21 | 22 | Submit your work on [GradeScope](https://www.gradescope.com/courses/202953). 23 | 24 | ## Stretch Challenges 25 | 26 | Include the visual desing in your wireframe. Style the elements as you envision the final project to look. 27 | 28 | ## Assess your work 29 | 30 | | expectations | Does not meet (0) | Meets (1) | Exceeds (2) | 31 | |:-------------|:------------------|:----------|:------------| 32 | | **Completed** | Your project is not defined | You have a good idea of what it is you will create. | Your project is clearly defined and you have thought about all possible edge cases. | 33 | | **Wireframes** | Have not created wireframes | Created wireframes | Also created a visual design for the project | 34 | | **Read and repo** | Did not create a read and or repo | Cretaed a Read me and repo for the project. The readme describes the project and it's goals and uses. | The readme includes a clear road map of what needs to be done and extra features and expansions that might be included | 35 | -------------------------------------------------------------------------------- /Assignments/Sample_Rubric.md: -------------------------------------------------------------------------------- 1 | # Class - Assignment - Rubric 2 | 3 | | Expectations | Does not meet | Meets | Exceeds | 4 | |:-------------|:--------------|:----------------------------|:----------------------------------| 5 | | Aspect | Description | Description | Description | 6 | | Work Ethic. | < 3 comits. | Commits show consistent work| commits show full 3 hours of work | 7 | -------------------------------------------------------------------------------- /Assignments/images/Break-Bricks-More.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/Assignments/images/Break-Bricks-More.png -------------------------------------------------------------------------------- /Assignments/images/Break-Out-Bricks-Colors-Alternate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/Assignments/images/Break-Out-Bricks-Colors-Alternate.png -------------------------------------------------------------------------------- /Assignments/images/Break-Out-Bricks-Colors-Columns.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/Assignments/images/Break-Out-Bricks-Colors-Columns.png -------------------------------------------------------------------------------- /Assignments/images/Break-Out-Bricks-Colors-Rows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/Assignments/images/Break-Out-Bricks-Colors-Rows.png -------------------------------------------------------------------------------- /Assignments/images/Break-Out-Bricks-Random.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/Assignments/images/Break-Out-Bricks-Random.png -------------------------------------------------------------------------------- /Assignments/images/Break-Out-Bricks-sizes-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/Assignments/images/Break-Out-Bricks-sizes-2.png -------------------------------------------------------------------------------- /Assignments/images/Break-Out-Bricks-sizes-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/Assignments/images/Break-Out-Bricks-sizes-3.png -------------------------------------------------------------------------------- /Assignments/images/Break-Out-Bricks-sizes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/Assignments/images/Break-Out-Bricks-sizes.png -------------------------------------------------------------------------------- /Assignments/images/Break-Out-Bricks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/Assignments/images/Break-Out-Bricks.png -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Make School 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Lessons/Lesson-12.md: -------------------------------------------------------------------------------- 1 | 2 | # FEW 1.2 - Lesson 13 - Present your Work! 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | ## Why should present your work? 11 | 12 | In a job environment you will be expected to show what you are working on. Your team needs to know, they want to know, and they want to support your work. Your work also supports their work! 13 | 14 | 15 | 16 | ## Learning Objectives 17 | 18 | 1. Describe your work 19 | 1. Use techniques to give valuable feedback 20 | 21 | 22 | 23 | ## Term feedback survey 24 | 25 | https://www.surveymonkey.com/r/term2coursefeedback 26 | 27 | 28 | 29 | ## Giving Feedback 30 | 31 | The best way to improve your work is through feedback from your peers. We all want to be the best we can be. One way to move above and beyond where you are currently is to advice from outside. 32 | 33 | After you've made the first presentation of your work. The best way to find new areas where you can improve that work is ask the people around you what they think. 34 | 35 | To be useful feedback needs to useful and actionable. If you have ideas but they won't be useful you might not need to mention them at all. 36 | 37 | An easy what to format your feedback is in the form of: 38 | 39 | - Good - Say what you liked in the work 40 | - Better - Say what you think could be working better 41 | - Best - Mention what you liked best about the work 42 | 43 | 44 | 45 | ## Review work 46 | 47 | Review your work with your peers. Each of you will present your work. Give yourself up to 5 minutes to show your work. Take a few minutes to provide feedback. 48 | 49 | In groups of 4 take 3 to 5 minutes to show your work. Take a couple more minutes to provide feedback. 50 | 51 | Choose one person from your group to show their work to the whole class. 52 | 53 | ## Final Assessment Study Guide 54 | 55 | The final assessment is used to measure your skills and check your fit for the next classes that come in the track. 56 | 57 | The final assessment will be conducted in class and will require you to build a small software project. The assessment will consist of set of challenges. A passing score is completing 70% or more of these challenges. 58 | 59 | Expect to see some or all of the items listed in the guide below. Use the guide to check your skills and study for the final. 60 | 61 | - [Final Assessment Guide](../final-assessment-guide.md) 62 | 63 | 64 | ## [**10m**] BREAK 65 | 66 | Take a 10 minute break 67 | 68 | # Lab time 69 | 70 | Continue working on your final project. 71 | 72 | ## Overview/TT II (optional) (20 min) 73 | 74 | 75 | 76 | ## In Class Activity II (optional) (30 min) 77 | 78 | 79 | 80 | ## Wrap Up (5 min) 81 | 82 | - 83 | 84 | 85 | 86 | ## Additional Resources 87 | 88 | 89 | 90 | 104 | -------------------------------------------------------------------------------- /Lessons/Lesson-13.md: -------------------------------------------------------------------------------- 1 | 2 | # FEW 1.2 - Lesson 14 - Present your work 3 | 4 | 5 | 6 | ➡️ [**Slides**](/Syllabus-Template/Slides/Lesson1.html ':ignore') 7 | 8 | 9 | 10 | ## Minute-by-Minute 11 | 12 | | **Elapsed** | **Time** | **Activity** | 13 | | ----------- | -------- | ------------ | 14 | | 0:00 | 0:05 | [Why you should know this](#why-you-should-know-this) | 15 | | 0:05 | 0:15 | [Learning Objectives](#learning-objectives) | 16 | | 0:20 | 0:30 | In Class Activity I | 17 | | 0:50 | 0:10 | BREAK | 18 | | 1:00 | 0:45 | In Class Activity II | 19 | | 1:45 | 0:05 | Wrap up review objectives | 20 | 21 | 22 | 23 | ## Why you should know this or industry application (optional) (5 min) 24 | 25 | Explain why students should care to learn the material presented in this class. 26 | 27 | 28 | 29 | ## Learning Objectives (5 min) 30 | 31 | 1. Identify and describe 32 | 1. Define 33 | 1. Design 34 | 1. Implement 35 | 36 | 37 | 38 | ## Initial Exercise (15 min) 39 | 40 | - Funny comic 41 | - Prime the Pump (e.g. think and jot, think pair share, etc) 42 | - Productivity Tip/Tool 43 | - Review of current event (e.g. tech news relevant to your track/topic) 44 | - Quiz on homework or topic(s) of past class 45 | - Concept Test 46 | 47 | 48 | 49 | # Topic 1 50 | 51 | 52 | 53 | ## Overview/TT I (20 min) 54 | 55 | - Why learn this? 56 | - Industry examples of usage 57 | - Best practices 58 | - Personal anecdote 59 | 60 | 63 | 64 | 65 | 66 | ## In Class Activity I (30 min) 67 | 68 | - I do, We do, You do 69 | - Reading & Discussion Questions in small groups 70 | - Draw a picture/diagram 71 | - Complete Challenges solo or in pair 72 | - Q&A about tutorials 73 | - Pair up and code review 74 | - Pair program 75 | - Formative assessment 76 | - Form into groups 77 | - etc (get creative :D) 78 | 79 | 80 | 81 | 82 | ## [**10m**] BREAK 83 | 84 | 85 | 86 | # Topic 2 87 | 88 | 89 | 90 | ## Overview/TT II (optional) (20 min) 91 | 92 | 93 | 94 | ## In Class Activity II (optional) (30 min) 95 | 96 | 97 | 98 | ## Wrap Up (5 min) 99 | 100 | - Continue working on your current tutorial 101 | - Complete reading 102 | - Complete challenges 103 | 104 | 105 | 106 | ## Additional Resources 107 | 108 | 1. Links to additional readings and videos 109 | 110 | -------------------------------------------------------------------------------- /Lessons/lesson-01-example.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 12 | 13 | 14 | 15 | 78 | 79 | -------------------------------------------------------------------------------- /Lessons/lesson-01.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 12 | 13 | 14 | 55 | 56 | -------------------------------------------------------------------------------- /Reveal/README.md: -------------------------------------------------------------------------------- 1 | # reveal-md 2 | 3 | ## Installation: 4 | 5 | ```bash 6 | npm install -g reveal-md 7 | ``` 8 | 9 | ## Usage: 10 | 11 | ### Syntax 12 | 13 | **Slide styling:** 14 | 15 | ``` 16 | 17 | ``` 18 | 19 | **Change background color:** 20 | 21 | ``` 22 | 23 | ``` 24 | 25 | **Signal a horizontal slide transition** 26 | 27 | ``` 28 | 29 | ``` 30 | 31 | **Signal a vertical slide transition** 32 | 33 | ``` 34 | 35 | ``` 36 | 37 | ### Local Presentation 38 | 39 | This starts a local server and opens any Markdown file as a reveal.js presentation in the default browser. 40 | 41 | ```bash 42 | $ reveal-md Lessons/ 43 | ``` 44 | 45 | ### Generate Slides 46 | 47 | Generate static HTML (for GitHub Pages) 48 | 49 | ```bash 50 | $ reveal-md Lessons/ --static Slides 51 | ``` 52 | 53 | ## Resources 54 | For more information, check out the [reveal-md documentation](https://github.com/webpro/reveal-md). -------------------------------------------------------------------------------- /Reveal/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/Reveal/favicon.ico -------------------------------------------------------------------------------- /Slides/Lesson-13.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Syllabus Template Slides 8 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 18 | 19 |
20 |
104 |
105 | 106 | 107 | 108 | 147 | 148 | 149 | 152 | 153 | 154 | -------------------------------------------------------------------------------- /Slides/Lesson-14.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Syllabus Template Slides 8 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 18 | 19 |
20 |
104 |
105 | 106 | 107 | 108 | 147 | 148 | 149 | 152 | 153 | 154 | -------------------------------------------------------------------------------- /Slides/Lesson2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | BEW 1.1 Slides 8 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 18 | 19 |
20 |
22 |
23 | 24 | 25 | 26 | 65 | 66 | 67 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /Slides/css/highlight/atom-one-light.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Atom One Light by Daniel Gamage 4 | Original One Light Syntax theme from https://github.com/atom/one-light-syntax 5 | 6 | base: #fafafa 7 | mono-1: #383a42 8 | mono-2: #686b77 9 | mono-3: #a0a1a7 10 | hue-1: #0184bb 11 | hue-2: #4078f2 12 | hue-3: #a626a4 13 | hue-4: #50a14f 14 | hue-5: #e45649 15 | hue-5-2: #c91243 16 | hue-6: #986801 17 | hue-6-2: #c18401 18 | 19 | */ 20 | 21 | .hljs { 22 | display: block; 23 | overflow-x: auto; 24 | padding: 0.5em; 25 | color: #383a42; 26 | background: #fafafa; 27 | } 28 | 29 | .hljs-comment, 30 | .hljs-quote { 31 | color: #a0a1a7; 32 | font-style: italic; 33 | } 34 | 35 | .hljs-doctag, 36 | .hljs-keyword, 37 | .hljs-formula { 38 | color: #a626a4; 39 | } 40 | 41 | .hljs-section, 42 | .hljs-name, 43 | .hljs-selector-tag, 44 | .hljs-deletion, 45 | .hljs-subst { 46 | color: #e45649; 47 | } 48 | 49 | .hljs-literal { 50 | color: #0184bb; 51 | } 52 | 53 | .hljs-string, 54 | .hljs-regexp, 55 | .hljs-addition, 56 | .hljs-attribute, 57 | .hljs-meta-string { 58 | color: #50a14f; 59 | } 60 | 61 | .hljs-built_in, 62 | .hljs-class .hljs-title { 63 | color: #c18401; 64 | } 65 | 66 | .hljs-attr, 67 | .hljs-variable, 68 | .hljs-template-variable, 69 | .hljs-type, 70 | .hljs-selector-class, 71 | .hljs-selector-attr, 72 | .hljs-selector-pseudo, 73 | .hljs-number { 74 | color: #986801; 75 | } 76 | 77 | .hljs-symbol, 78 | .hljs-bullet, 79 | .hljs-link, 80 | .hljs-meta, 81 | .hljs-selector-id, 82 | .hljs-title { 83 | color: #4078f2; 84 | } 85 | 86 | .hljs-emphasis { 87 | font-style: italic; 88 | } 89 | 90 | .hljs-strong { 91 | font-weight: bold; 92 | } 93 | 94 | .hljs-link { 95 | text-decoration: underline; 96 | } 97 | -------------------------------------------------------------------------------- /Slides/css/highlight/zenburn.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Zenburn style from voldmar.ru (c) Vladimir Epifanov 4 | based on dark.css by Ivan Sagalaev 5 | 6 | */ 7 | 8 | .hljs { 9 | display: block; 10 | overflow-x: auto; 11 | padding: 0.5em; 12 | background: #3f3f3f; 13 | color: #dcdcdc; 14 | } 15 | 16 | .hljs-keyword, 17 | .hljs-selector-tag, 18 | .hljs-tag { 19 | color: #e3ceab; 20 | } 21 | 22 | .hljs-template-tag { 23 | color: #dcdcdc; 24 | } 25 | 26 | .hljs-number { 27 | color: #8cd0d3; 28 | } 29 | 30 | .hljs-variable, 31 | .hljs-template-variable, 32 | .hljs-attribute { 33 | color: #efdcbc; 34 | } 35 | 36 | .hljs-literal { 37 | color: #efefaf; 38 | } 39 | 40 | .hljs-subst { 41 | color: #8f8f8f; 42 | } 43 | 44 | .hljs-title, 45 | .hljs-name, 46 | .hljs-selector-id, 47 | .hljs-selector-class, 48 | .hljs-section, 49 | .hljs-type { 50 | color: #efef8f; 51 | } 52 | 53 | .hljs-symbol, 54 | .hljs-bullet, 55 | .hljs-link { 56 | color: #dca3a3; 57 | } 58 | 59 | .hljs-deletion, 60 | .hljs-string, 61 | .hljs-built_in, 62 | .hljs-builtin-name { 63 | color: #cc9393; 64 | } 65 | 66 | .hljs-addition, 67 | .hljs-comment, 68 | .hljs-quote, 69 | .hljs-meta { 70 | color: #7f9f7f; 71 | } 72 | 73 | 74 | .hljs-emphasis { 75 | font-style: italic; 76 | } 77 | 78 | .hljs-strong { 79 | font-weight: bold; 80 | } 81 | -------------------------------------------------------------------------------- /Slides/css/print/paper.css: -------------------------------------------------------------------------------- 1 | /* Default Print Stylesheet Template 2 | by Rob Glazebrook of CSSnewbie.com 3 | Last Updated: June 4, 2008 4 | 5 | Feel free (nay, compelled) to edit, append, and 6 | manipulate this file as you see fit. */ 7 | 8 | 9 | @media print { 10 | 11 | /* SECTION 1: Set default width, margin, float, and 12 | background. This prevents elements from extending 13 | beyond the edge of the printed page, and prevents 14 | unnecessary background images from printing */ 15 | html { 16 | background: #fff; 17 | width: auto; 18 | height: auto; 19 | overflow: visible; 20 | } 21 | body { 22 | background: #fff; 23 | font-size: 20pt; 24 | width: auto; 25 | height: auto; 26 | border: 0; 27 | margin: 0 5%; 28 | padding: 0; 29 | overflow: visible; 30 | float: none !important; 31 | } 32 | 33 | /* SECTION 2: Remove any elements not needed in print. 34 | This would include navigation, ads, sidebars, etc. */ 35 | .nestedarrow, 36 | .controls, 37 | .fork-reveal, 38 | .share-reveal, 39 | .state-background, 40 | .reveal .progress, 41 | .reveal .backgrounds, 42 | .reveal .slide-number { 43 | display: none !important; 44 | } 45 | 46 | /* SECTION 3: Set body font face, size, and color. 47 | Consider using a serif font for readability. */ 48 | body, p, td, li, div { 49 | font-size: 20pt!important; 50 | font-family: Georgia, "Times New Roman", Times, serif !important; 51 | color: #000; 52 | } 53 | 54 | /* SECTION 4: Set heading font face, sizes, and color. 55 | Differentiate your headings from your body text. 56 | Perhaps use a large sans-serif for distinction. */ 57 | h1,h2,h3,h4,h5,h6 { 58 | color: #000!important; 59 | height: auto; 60 | line-height: normal; 61 | font-family: Georgia, "Times New Roman", Times, serif !important; 62 | text-shadow: 0 0 0 #000 !important; 63 | text-align: left; 64 | letter-spacing: normal; 65 | } 66 | /* Need to reduce the size of the fonts for printing */ 67 | h1 { font-size: 28pt !important; } 68 | h2 { font-size: 24pt !important; } 69 | h3 { font-size: 22pt !important; } 70 | h4 { font-size: 22pt !important; font-variant: small-caps; } 71 | h5 { font-size: 21pt !important; } 72 | h6 { font-size: 20pt !important; font-style: italic; } 73 | 74 | /* SECTION 5: Make hyperlinks more usable. 75 | Ensure links are underlined, and consider appending 76 | the URL to the end of the link for usability. */ 77 | a:link, 78 | a:visited { 79 | color: #000 !important; 80 | font-weight: bold; 81 | text-decoration: underline; 82 | } 83 | /* 84 | .reveal a:link:after, 85 | .reveal a:visited:after { 86 | content: " (" attr(href) ") "; 87 | color: #222 !important; 88 | font-size: 90%; 89 | } 90 | */ 91 | 92 | 93 | /* SECTION 6: more reveal.js specific additions by @skypanther */ 94 | ul, ol, div, p { 95 | visibility: visible; 96 | position: static; 97 | width: auto; 98 | height: auto; 99 | display: block; 100 | overflow: visible; 101 | margin: 0; 102 | text-align: left !important; 103 | } 104 | .reveal pre, 105 | .reveal table { 106 | margin-left: 0; 107 | margin-right: 0; 108 | } 109 | .reveal pre code { 110 | padding: 20px; 111 | border: 1px solid #ddd; 112 | } 113 | .reveal blockquote { 114 | margin: 20px 0; 115 | } 116 | .reveal .slides { 117 | position: static !important; 118 | width: auto !important; 119 | height: auto !important; 120 | 121 | left: 0 !important; 122 | top: 0 !important; 123 | margin-left: 0 !important; 124 | margin-top: 0 !important; 125 | padding: 0 !important; 126 | zoom: 1 !important; 127 | 128 | overflow: visible !important; 129 | display: block !important; 130 | 131 | text-align: left !important; 132 | -webkit-perspective: none; 133 | -moz-perspective: none; 134 | -ms-perspective: none; 135 | perspective: none; 136 | 137 | -webkit-perspective-origin: 50% 50%; 138 | -moz-perspective-origin: 50% 50%; 139 | -ms-perspective-origin: 50% 50%; 140 | perspective-origin: 50% 50%; 141 | } 142 | .reveal .slides section { 143 | visibility: visible !important; 144 | position: static !important; 145 | width: auto !important; 146 | height: auto !important; 147 | display: block !important; 148 | overflow: visible !important; 149 | 150 | left: 0 !important; 151 | top: 0 !important; 152 | margin-left: 0 !important; 153 | margin-top: 0 !important; 154 | padding: 60px 20px !important; 155 | z-index: auto !important; 156 | 157 | opacity: 1 !important; 158 | 159 | page-break-after: always !important; 160 | 161 | -webkit-transform-style: flat !important; 162 | -moz-transform-style: flat !important; 163 | -ms-transform-style: flat !important; 164 | transform-style: flat !important; 165 | 166 | -webkit-transform: none !important; 167 | -moz-transform: none !important; 168 | -ms-transform: none !important; 169 | transform: none !important; 170 | 171 | -webkit-transition: none !important; 172 | -moz-transition: none !important; 173 | -ms-transition: none !important; 174 | transition: none !important; 175 | } 176 | .reveal .slides section.stack { 177 | padding: 0 !important; 178 | } 179 | .reveal section:last-of-type { 180 | page-break-after: avoid !important; 181 | } 182 | .reveal section .fragment { 183 | opacity: 1 !important; 184 | visibility: visible !important; 185 | 186 | -webkit-transform: none !important; 187 | -moz-transform: none !important; 188 | -ms-transform: none !important; 189 | transform: none !important; 190 | } 191 | .reveal section img { 192 | display: block; 193 | margin: 15px 0px; 194 | background: rgba(255,255,255,1); 195 | border: 1px solid #666; 196 | box-shadow: none; 197 | } 198 | 199 | .reveal section small { 200 | font-size: 0.8em; 201 | } 202 | 203 | } 204 | -------------------------------------------------------------------------------- /Slides/css/print/pdf.css: -------------------------------------------------------------------------------- 1 | /** 2 | * This stylesheet is used to print reveal.js 3 | * presentations to PDF. 4 | * 5 | * https://github.com/hakimel/reveal.js#pdf-export 6 | */ 7 | 8 | * { 9 | -webkit-print-color-adjust: exact; 10 | } 11 | 12 | body { 13 | margin: 0 auto !important; 14 | border: 0; 15 | padding: 0; 16 | float: none !important; 17 | overflow: visible; 18 | } 19 | 20 | html { 21 | width: 100%; 22 | height: 100%; 23 | overflow: visible; 24 | } 25 | 26 | /* Remove any elements not needed in print. */ 27 | .nestedarrow, 28 | .reveal .controls, 29 | .reveal .progress, 30 | .reveal .playback, 31 | .reveal.overview, 32 | .fork-reveal, 33 | .share-reveal, 34 | .state-background { 35 | display: none !important; 36 | } 37 | 38 | h1, h2, h3, h4, h5, h6 { 39 | text-shadow: 0 0 0 #000 !important; 40 | } 41 | 42 | .reveal pre code { 43 | overflow: hidden !important; 44 | font-family: Courier, 'Courier New', monospace !important; 45 | } 46 | 47 | ul, ol, div, p { 48 | visibility: visible; 49 | position: static; 50 | width: auto; 51 | height: auto; 52 | display: block; 53 | overflow: visible; 54 | margin: auto; 55 | } 56 | .reveal { 57 | width: auto !important; 58 | height: auto !important; 59 | overflow: hidden !important; 60 | } 61 | .reveal .slides { 62 | position: static; 63 | width: 100% !important; 64 | height: auto !important; 65 | zoom: 1 !important; 66 | 67 | left: auto; 68 | top: auto; 69 | margin: 0 !important; 70 | padding: 0 !important; 71 | 72 | overflow: visible; 73 | display: block; 74 | 75 | perspective: none; 76 | perspective-origin: 50% 50%; 77 | } 78 | 79 | .reveal .slides .pdf-page { 80 | position: relative; 81 | overflow: hidden; 82 | z-index: 1; 83 | 84 | page-break-after: always; 85 | } 86 | 87 | .reveal .slides section { 88 | visibility: visible !important; 89 | display: block !important; 90 | position: absolute !important; 91 | 92 | margin: 0 !important; 93 | padding: 0 !important; 94 | box-sizing: border-box !important; 95 | min-height: 1px; 96 | 97 | opacity: 1 !important; 98 | 99 | transform-style: flat !important; 100 | transform: none !important; 101 | } 102 | 103 | .reveal section.stack { 104 | position: relative !important; 105 | margin: 0 !important; 106 | padding: 0 !important; 107 | page-break-after: avoid !important; 108 | height: auto !important; 109 | min-height: auto !important; 110 | } 111 | 112 | .reveal img { 113 | box-shadow: none; 114 | } 115 | 116 | .reveal .roll { 117 | overflow: visible; 118 | line-height: 1em; 119 | } 120 | 121 | /* Slide backgrounds are placed inside of their slide when exporting to PDF */ 122 | .reveal .slide-background { 123 | display: block !important; 124 | position: absolute; 125 | top: 0; 126 | left: 0; 127 | width: 100%; 128 | height: 100%; 129 | z-index: auto !important; 130 | } 131 | 132 | /* Display slide speaker notes when 'showNotes' is enabled */ 133 | .reveal.show-notes { 134 | max-width: none; 135 | max-height: none; 136 | } 137 | .reveal .speaker-notes-pdf { 138 | display: block; 139 | width: 100%; 140 | height: auto; 141 | max-height: none; 142 | top: auto; 143 | right: auto; 144 | bottom: auto; 145 | left: auto; 146 | z-index: 100; 147 | } 148 | 149 | /* Layout option which makes notes appear on a separate page */ 150 | .reveal .speaker-notes-pdf[data-layout="separate-page"] { 151 | position: relative; 152 | color: inherit; 153 | background-color: transparent; 154 | padding: 20px; 155 | page-break-after: always; 156 | border: 0; 157 | } 158 | 159 | /* Display slide numbers when 'slideNumber' is enabled */ 160 | .reveal .slide-number-pdf { 161 | display: block; 162 | position: absolute; 163 | font-size: 14px; 164 | } 165 | -------------------------------------------------------------------------------- /Slides/css/reset.css: -------------------------------------------------------------------------------- 1 | /* http://meyerweb.com/eric/tools/css/reset/ 2 | v4.0 | 20180602 3 | License: none (public domain) 4 | */ 5 | 6 | html, body, div, span, applet, object, iframe, 7 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 8 | a, abbr, acronym, address, big, cite, code, 9 | del, dfn, em, img, ins, kbd, q, s, samp, 10 | small, strike, strong, sub, sup, tt, var, 11 | b, u, i, center, 12 | dl, dt, dd, ol, ul, li, 13 | fieldset, form, label, legend, 14 | table, caption, tbody, tfoot, thead, tr, th, td, 15 | article, aside, canvas, details, embed, 16 | figure, figcaption, footer, header, hgroup, 17 | main, menu, nav, output, ruby, section, summary, 18 | time, mark, audio, video { 19 | margin: 0; 20 | padding: 0; 21 | border: 0; 22 | font-size: 100%; 23 | font: inherit; 24 | vertical-align: baseline; 25 | } 26 | /* HTML5 display-role reset for older browsers */ 27 | article, aside, details, figcaption, figure, 28 | footer, header, hgroup, main, menu, nav, section { 29 | display: block; 30 | } -------------------------------------------------------------------------------- /Slides/css/theme/README.md: -------------------------------------------------------------------------------- 1 | ## Dependencies 2 | 3 | Themes are written using Sass to keep things modular and reduce the need for repeated selectors across files. Make sure that you have the reveal.js development environment including the Grunt dependencies installed before proceeding: https://github.com/hakimel/reveal.js#full-setup 4 | 5 | ## Creating a Theme 6 | 7 | To create your own theme, start by duplicating a ```.scss``` file in [/css/theme/source](https://github.com/hakimel/reveal.js/blob/master/css/theme/source). It will be automatically compiled by Grunt from Sass to CSS (see the [Gruntfile](https://github.com/hakimel/reveal.js/blob/master/Gruntfile.js)) when you run `npm run build -- css-themes`. 8 | 9 | Each theme file does four things in the following order: 10 | 11 | 1. **Include [/css/theme/template/mixins.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/mixins.scss)** 12 | Shared utility functions. 13 | 14 | 2. **Include [/css/theme/template/settings.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/settings.scss)** 15 | Declares a set of custom variables that the template file (step 4) expects. Can be overridden in step 3. 16 | 17 | 3. **Override** 18 | This is where you override the default theme. Either by specifying variables (see [settings.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/settings.scss) for reference) or by adding any selectors and styles you please. 19 | 20 | 4. **Include [/css/theme/template/theme.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/theme.scss)** 21 | The template theme file which will generate final CSS output based on the currently defined variables. 22 | -------------------------------------------------------------------------------- /Slides/css/theme/source/beige.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Beige theme for reveal.js. 3 | * 4 | * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se 5 | */ 6 | 7 | 8 | // Default mixins and settings ----------------- 9 | @import "../template/mixins"; 10 | @import "../template/settings"; 11 | // --------------------------------------------- 12 | 13 | 14 | 15 | // Include theme-specific fonts 16 | @import url(../../lib/font/league-gothic/league-gothic.css); 17 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); 18 | 19 | 20 | // Override theme settings (see ../template/settings.scss) 21 | $mainColor: #333; 22 | $headingColor: #333; 23 | $headingTextShadow: none; 24 | $backgroundColor: #f7f3de; 25 | $linkColor: #8b743d; 26 | $linkColorHover: lighten( $linkColor, 20% ); 27 | $selectionBackgroundColor: rgba(79, 64, 28, 0.99); 28 | $heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15); 29 | 30 | // Background generator 31 | @mixin bodyBackground() { 32 | @include radial-gradient( rgba(247,242,211,1), rgba(255,255,255,1) ); 33 | } 34 | 35 | 36 | 37 | // Theme template ------------------------------ 38 | @import "../template/theme"; 39 | // --------------------------------------------- -------------------------------------------------------------------------------- /Slides/css/theme/source/black.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Black theme for reveal.js. This is the opposite of the 'white' theme. 3 | * 4 | * By Hakim El Hattab, http://hakim.se 5 | */ 6 | 7 | 8 | // Default mixins and settings ----------------- 9 | @import "../template/mixins"; 10 | @import "../template/settings"; 11 | // --------------------------------------------- 12 | 13 | 14 | // Include theme-specific fonts 15 | @import url(../../lib/font/source-sans-pro/source-sans-pro.css); 16 | 17 | 18 | // Override theme settings (see ../template/settings.scss) 19 | $backgroundColor: #191919; 20 | 21 | $mainColor: #fff; 22 | $headingColor: #fff; 23 | 24 | $mainFontSize: 42px; 25 | $mainFont: 'Source Sans Pro', Helvetica, sans-serif; 26 | $headingFont: 'Source Sans Pro', Helvetica, sans-serif; 27 | $headingTextShadow: none; 28 | $headingLetterSpacing: normal; 29 | $headingTextTransform: uppercase; 30 | $headingFontWeight: 600; 31 | $linkColor: #42affa; 32 | $linkColorHover: lighten( $linkColor, 15% ); 33 | $selectionBackgroundColor: lighten( $linkColor, 25% ); 34 | 35 | $heading1Size: 2.5em; 36 | $heading2Size: 1.6em; 37 | $heading3Size: 1.3em; 38 | $heading4Size: 1.0em; 39 | 40 | section.has-light-background { 41 | &, h1, h2, h3, h4, h5, h6 { 42 | color: #222; 43 | } 44 | } 45 | 46 | 47 | // Theme template ------------------------------ 48 | @import "../template/theme"; 49 | // --------------------------------------------- -------------------------------------------------------------------------------- /Slides/css/theme/source/blood.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Blood theme for reveal.js 3 | * Author: Walther http://github.com/Walther 4 | * 5 | * Designed to be used with highlight.js theme 6 | * "monokai_sublime.css" available from 7 | * https://github.com/isagalaev/highlight.js/ 8 | * 9 | * For other themes, change $codeBackground accordingly. 10 | * 11 | */ 12 | 13 | // Default mixins and settings ----------------- 14 | @import "../template/mixins"; 15 | @import "../template/settings"; 16 | // --------------------------------------------- 17 | 18 | // Include theme-specific fonts 19 | 20 | @import url(https://fonts.googleapis.com/css?family=Ubuntu:300,700,300italic,700italic); 21 | 22 | // Colors used in the theme 23 | $blood: #a23; 24 | $coal: #222; 25 | $codeBackground: #23241f; 26 | 27 | $backgroundColor: $coal; 28 | 29 | // Main text 30 | $mainFont: Ubuntu, 'sans-serif'; 31 | $mainColor: #eee; 32 | 33 | // Headings 34 | $headingFont: Ubuntu, 'sans-serif'; 35 | $headingTextShadow: 2px 2px 2px $coal; 36 | 37 | // h1 shadow, borrowed humbly from 38 | // (c) Default theme by Hakim El Hattab 39 | $heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15); 40 | 41 | // Links 42 | $linkColor: $blood; 43 | $linkColorHover: lighten( $linkColor, 20% ); 44 | 45 | // Text selection 46 | $selectionBackgroundColor: $blood; 47 | $selectionColor: #fff; 48 | 49 | 50 | // Theme template ------------------------------ 51 | @import "../template/theme"; 52 | // --------------------------------------------- 53 | 54 | // some overrides after theme template import 55 | 56 | .reveal p { 57 | font-weight: 300; 58 | text-shadow: 1px 1px $coal; 59 | } 60 | 61 | .reveal h1, 62 | .reveal h2, 63 | .reveal h3, 64 | .reveal h4, 65 | .reveal h5, 66 | .reveal h6 { 67 | font-weight: 700; 68 | } 69 | 70 | .reveal p code { 71 | background-color: $codeBackground; 72 | display: inline-block; 73 | border-radius: 7px; 74 | } 75 | 76 | .reveal small code { 77 | vertical-align: baseline; 78 | } -------------------------------------------------------------------------------- /Slides/css/theme/source/league.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * League theme for reveal.js. 3 | * 4 | * This was the default theme pre-3.0.0. 5 | * 6 | * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se 7 | */ 8 | 9 | 10 | // Default mixins and settings ----------------- 11 | @import "../template/mixins"; 12 | @import "../template/settings"; 13 | // --------------------------------------------- 14 | 15 | 16 | 17 | // Include theme-specific fonts 18 | @import url(../../lib/font/league-gothic/league-gothic.css); 19 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); 20 | 21 | // Override theme settings (see ../template/settings.scss) 22 | $headingTextShadow: 0px 0px 6px rgba(0,0,0,0.2); 23 | $heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15); 24 | 25 | // Background generator 26 | @mixin bodyBackground() { 27 | @include radial-gradient( rgba(28,30,32,1), rgba(85,90,95,1) ); 28 | } 29 | 30 | 31 | 32 | // Theme template ------------------------------ 33 | @import "../template/theme"; 34 | // --------------------------------------------- -------------------------------------------------------------------------------- /Slides/css/theme/source/moon.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Solarized Dark theme for reveal.js. 3 | * Author: Achim Staebler 4 | */ 5 | 6 | 7 | // Default mixins and settings ----------------- 8 | @import "../template/mixins"; 9 | @import "../template/settings"; 10 | // --------------------------------------------- 11 | 12 | 13 | 14 | // Include theme-specific fonts 15 | @import url(../../lib/font/league-gothic/league-gothic.css); 16 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); 17 | 18 | /** 19 | * Solarized colors by Ethan Schoonover 20 | */ 21 | html * { 22 | color-profile: sRGB; 23 | rendering-intent: auto; 24 | } 25 | 26 | // Solarized colors 27 | $base03: #002b36; 28 | $base02: #073642; 29 | $base01: #586e75; 30 | $base00: #657b83; 31 | $base0: #839496; 32 | $base1: #93a1a1; 33 | $base2: #eee8d5; 34 | $base3: #fdf6e3; 35 | $yellow: #b58900; 36 | $orange: #cb4b16; 37 | $red: #dc322f; 38 | $magenta: #d33682; 39 | $violet: #6c71c4; 40 | $blue: #268bd2; 41 | $cyan: #2aa198; 42 | $green: #859900; 43 | 44 | // Override theme settings (see ../template/settings.scss) 45 | $mainColor: $base1; 46 | $headingColor: $base2; 47 | $headingTextShadow: none; 48 | $backgroundColor: $base03; 49 | $linkColor: $blue; 50 | $linkColorHover: lighten( $linkColor, 20% ); 51 | $selectionBackgroundColor: $magenta; 52 | 53 | 54 | 55 | // Theme template ------------------------------ 56 | @import "../template/theme"; 57 | // --------------------------------------------- 58 | -------------------------------------------------------------------------------- /Slides/css/theme/source/night.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Black theme for reveal.js. 3 | * 4 | * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se 5 | */ 6 | 7 | 8 | // Default mixins and settings ----------------- 9 | @import "../template/mixins"; 10 | @import "../template/settings"; 11 | // --------------------------------------------- 12 | 13 | 14 | // Include theme-specific fonts 15 | @import url(https://fonts.googleapis.com/css?family=Montserrat:700); 16 | @import url(https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic,700italic); 17 | 18 | 19 | // Override theme settings (see ../template/settings.scss) 20 | $backgroundColor: #111; 21 | 22 | $mainFont: 'Open Sans', sans-serif; 23 | $linkColor: #e7ad52; 24 | $linkColorHover: lighten( $linkColor, 20% ); 25 | $headingFont: 'Montserrat', Impact, sans-serif; 26 | $headingTextShadow: none; 27 | $headingLetterSpacing: -0.03em; 28 | $headingTextTransform: none; 29 | $selectionBackgroundColor: #e7ad52; 30 | 31 | 32 | // Theme template ------------------------------ 33 | @import "../template/theme"; 34 | // --------------------------------------------- -------------------------------------------------------------------------------- /Slides/css/theme/source/serif.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * A simple theme for reveal.js presentations, similar 3 | * to the default theme. The accent color is brown. 4 | * 5 | * This theme is Copyright (C) 2012-2013 Owen Versteeg, http://owenversteeg.com - it is MIT licensed. 6 | */ 7 | 8 | 9 | // Default mixins and settings ----------------- 10 | @import "../template/mixins"; 11 | @import "../template/settings"; 12 | // --------------------------------------------- 13 | 14 | 15 | 16 | // Override theme settings (see ../template/settings.scss) 17 | $mainFont: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif; 18 | $mainColor: #000; 19 | $headingFont: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif; 20 | $headingColor: #383D3D; 21 | $headingTextShadow: none; 22 | $headingTextTransform: none; 23 | $backgroundColor: #F0F1EB; 24 | $linkColor: #51483D; 25 | $linkColorHover: lighten( $linkColor, 20% ); 26 | $selectionBackgroundColor: #26351C; 27 | 28 | .reveal a { 29 | line-height: 1.3em; 30 | } 31 | 32 | 33 | // Theme template ------------------------------ 34 | @import "../template/theme"; 35 | // --------------------------------------------- 36 | -------------------------------------------------------------------------------- /Slides/css/theme/source/simple.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * A simple theme for reveal.js presentations, similar 3 | * to the default theme. The accent color is darkblue. 4 | * 5 | * This theme is Copyright (C) 2012 Owen Versteeg, https://github.com/StereotypicalApps. It is MIT licensed. 6 | * reveal.js is Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se 7 | */ 8 | 9 | 10 | // Default mixins and settings ----------------- 11 | @import "../template/mixins"; 12 | @import "../template/settings"; 13 | // --------------------------------------------- 14 | 15 | 16 | 17 | // Include theme-specific fonts 18 | @import url(https://fonts.googleapis.com/css?family=News+Cycle:400,700); 19 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); 20 | 21 | 22 | // Override theme settings (see ../template/settings.scss) 23 | $mainFont: 'Lato', sans-serif; 24 | $mainColor: #000; 25 | $headingFont: 'News Cycle', Impact, sans-serif; 26 | $headingColor: #000; 27 | $headingTextShadow: none; 28 | $headingTextTransform: none; 29 | $backgroundColor: #fff; 30 | $linkColor: #00008B; 31 | $linkColorHover: lighten( $linkColor, 20% ); 32 | $selectionBackgroundColor: rgba(0, 0, 0, 0.99); 33 | 34 | section.has-dark-background { 35 | &, h1, h2, h3, h4, h5, h6 { 36 | color: #fff; 37 | } 38 | } 39 | 40 | 41 | // Theme template ------------------------------ 42 | @import "../template/theme"; 43 | // --------------------------------------------- -------------------------------------------------------------------------------- /Slides/css/theme/source/sky.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Sky theme for reveal.js. 3 | * 4 | * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se 5 | */ 6 | 7 | 8 | // Default mixins and settings ----------------- 9 | @import "../template/mixins"; 10 | @import "../template/settings"; 11 | // --------------------------------------------- 12 | 13 | 14 | 15 | // Include theme-specific fonts 16 | @import url(https://fonts.googleapis.com/css?family=Quicksand:400,700,400italic,700italic); 17 | @import url(https://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700); 18 | 19 | 20 | // Override theme settings (see ../template/settings.scss) 21 | $mainFont: 'Open Sans', sans-serif; 22 | $mainColor: #333; 23 | $headingFont: 'Quicksand', sans-serif; 24 | $headingColor: #333; 25 | $headingLetterSpacing: -0.08em; 26 | $headingTextShadow: none; 27 | $backgroundColor: #f7fbfc; 28 | $linkColor: #3b759e; 29 | $linkColorHover: lighten( $linkColor, 20% ); 30 | $selectionBackgroundColor: #134674; 31 | 32 | // Fix links so they are not cut off 33 | .reveal a { 34 | line-height: 1.3em; 35 | } 36 | 37 | // Background generator 38 | @mixin bodyBackground() { 39 | @include radial-gradient( #add9e4, #f7fbfc ); 40 | } 41 | 42 | 43 | 44 | // Theme template ------------------------------ 45 | @import "../template/theme"; 46 | // --------------------------------------------- 47 | -------------------------------------------------------------------------------- /Slides/css/theme/source/solarized.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Solarized Light theme for reveal.js. 3 | * Author: Achim Staebler 4 | */ 5 | 6 | 7 | // Default mixins and settings ----------------- 8 | @import "../template/mixins"; 9 | @import "../template/settings"; 10 | // --------------------------------------------- 11 | 12 | 13 | 14 | // Include theme-specific fonts 15 | @import url(../../lib/font/league-gothic/league-gothic.css); 16 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); 17 | 18 | 19 | /** 20 | * Solarized colors by Ethan Schoonover 21 | */ 22 | html * { 23 | color-profile: sRGB; 24 | rendering-intent: auto; 25 | } 26 | 27 | // Solarized colors 28 | $base03: #002b36; 29 | $base02: #073642; 30 | $base01: #586e75; 31 | $base00: #657b83; 32 | $base0: #839496; 33 | $base1: #93a1a1; 34 | $base2: #eee8d5; 35 | $base3: #fdf6e3; 36 | $yellow: #b58900; 37 | $orange: #cb4b16; 38 | $red: #dc322f; 39 | $magenta: #d33682; 40 | $violet: #6c71c4; 41 | $blue: #268bd2; 42 | $cyan: #2aa198; 43 | $green: #859900; 44 | 45 | // Override theme settings (see ../template/settings.scss) 46 | $mainColor: $base00; 47 | $headingColor: $base01; 48 | $headingTextShadow: none; 49 | $backgroundColor: $base3; 50 | $linkColor: $blue; 51 | $linkColorHover: lighten( $linkColor, 20% ); 52 | $selectionBackgroundColor: $magenta; 53 | 54 | // Background generator 55 | // @mixin bodyBackground() { 56 | // @include radial-gradient( rgba($base3,1), rgba(lighten($base3, 20%),1) ); 57 | // } 58 | 59 | 60 | 61 | // Theme template ------------------------------ 62 | @import "../template/theme"; 63 | // --------------------------------------------- 64 | -------------------------------------------------------------------------------- /Slides/css/theme/source/white.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * White theme for reveal.js. This is the opposite of the 'black' theme. 3 | * 4 | * By Hakim El Hattab, http://hakim.se 5 | */ 6 | 7 | 8 | // Default mixins and settings ----------------- 9 | @import "../template/mixins"; 10 | @import "../template/settings"; 11 | // --------------------------------------------- 12 | 13 | 14 | // Include theme-specific fonts 15 | @import url(../../lib/font/source-sans-pro/source-sans-pro.css); 16 | 17 | 18 | // Override theme settings (see ../template/settings.scss) 19 | $backgroundColor: #fff; 20 | 21 | $mainColor: #222; 22 | $headingColor: #222; 23 | 24 | $mainFontSize: 42px; 25 | $mainFont: 'Source Sans Pro', Helvetica, sans-serif; 26 | $headingFont: 'Source Sans Pro', Helvetica, sans-serif; 27 | $headingTextShadow: none; 28 | $headingLetterSpacing: normal; 29 | $headingTextTransform: uppercase; 30 | $headingFontWeight: 600; 31 | $linkColor: #2a76dd; 32 | $linkColorHover: lighten( $linkColor, 15% ); 33 | $selectionBackgroundColor: lighten( $linkColor, 25% ); 34 | 35 | $heading1Size: 2.5em; 36 | $heading2Size: 1.6em; 37 | $heading3Size: 1.3em; 38 | $heading4Size: 1.0em; 39 | 40 | section.has-dark-background { 41 | &, h1, h2, h3, h4, h5, h6 { 42 | color: #fff; 43 | } 44 | } 45 | 46 | 47 | // Theme template ------------------------------ 48 | @import "../template/theme"; 49 | // --------------------------------------------- -------------------------------------------------------------------------------- /Slides/css/theme/template/mixins.scss: -------------------------------------------------------------------------------- 1 | @mixin vertical-gradient( $top, $bottom ) { 2 | background: $top; 3 | background: -moz-linear-gradient( top, $top 0%, $bottom 100% ); 4 | background: -webkit-gradient( linear, left top, left bottom, color-stop(0%,$top), color-stop(100%,$bottom) ); 5 | background: -webkit-linear-gradient( top, $top 0%, $bottom 100% ); 6 | background: -o-linear-gradient( top, $top 0%, $bottom 100% ); 7 | background: -ms-linear-gradient( top, $top 0%, $bottom 100% ); 8 | background: linear-gradient( top, $top 0%, $bottom 100% ); 9 | } 10 | 11 | @mixin horizontal-gradient( $top, $bottom ) { 12 | background: $top; 13 | background: -moz-linear-gradient( left, $top 0%, $bottom 100% ); 14 | background: -webkit-gradient( linear, left top, right top, color-stop(0%,$top), color-stop(100%,$bottom) ); 15 | background: -webkit-linear-gradient( left, $top 0%, $bottom 100% ); 16 | background: -o-linear-gradient( left, $top 0%, $bottom 100% ); 17 | background: -ms-linear-gradient( left, $top 0%, $bottom 100% ); 18 | background: linear-gradient( left, $top 0%, $bottom 100% ); 19 | } 20 | 21 | @mixin radial-gradient( $outer, $inner, $type: circle ) { 22 | background: $outer; 23 | background: -moz-radial-gradient( center, $type cover, $inner 0%, $outer 100% ); 24 | background: -webkit-gradient( radial, center center, 0px, center center, 100%, color-stop(0%,$inner), color-stop(100%,$outer) ); 25 | background: -webkit-radial-gradient( center, $type cover, $inner 0%, $outer 100% ); 26 | background: -o-radial-gradient( center, $type cover, $inner 0%, $outer 100% ); 27 | background: -ms-radial-gradient( center, $type cover, $inner 0%, $outer 100% ); 28 | background: radial-gradient( center, $type cover, $inner 0%, $outer 100% ); 29 | } -------------------------------------------------------------------------------- /Slides/css/theme/template/settings.scss: -------------------------------------------------------------------------------- 1 | // Base settings for all themes that can optionally be 2 | // overridden by the super-theme 3 | 4 | // Background of the presentation 5 | $backgroundColor: #2b2b2b; 6 | 7 | // Primary/body text 8 | $mainFont: 'Lato', sans-serif; 9 | $mainFontSize: 40px; 10 | $mainColor: #eee; 11 | 12 | // Vertical spacing between blocks of text 13 | $blockMargin: 20px; 14 | 15 | // Headings 16 | $headingMargin: 0 0 $blockMargin 0; 17 | $headingFont: 'League Gothic', Impact, sans-serif; 18 | $headingColor: #eee; 19 | $headingLineHeight: 1.2; 20 | $headingLetterSpacing: normal; 21 | $headingTextTransform: uppercase; 22 | $headingTextShadow: none; 23 | $headingFontWeight: normal; 24 | $heading1TextShadow: $headingTextShadow; 25 | 26 | $heading1Size: 3.77em; 27 | $heading2Size: 2.11em; 28 | $heading3Size: 1.55em; 29 | $heading4Size: 1.00em; 30 | 31 | $codeFont: monospace; 32 | 33 | // Links and actions 34 | $linkColor: #13DAEC; 35 | $linkColorHover: lighten( $linkColor, 20% ); 36 | 37 | // Text selection 38 | $selectionBackgroundColor: #FF5E99; 39 | $selectionColor: #fff; 40 | 41 | // Generates the presentation background, can be overridden 42 | // to return a background image or gradient 43 | @mixin bodyBackground() { 44 | background: $backgroundColor; 45 | } 46 | -------------------------------------------------------------------------------- /Slides/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Directory Listing 6 | 7 | 16 | 17 | 18 | 19 | Lesson-01.html
Lesson-02.html
Lesson-03.html
Lesson-04.html
Lesson-05.html
Lesson-06.html
Lesson-07.html
Lesson-08.html
Lesson-09.html
Lesson-10.html
Lesson-11.html
Lesson-12.html
Lesson-13.html
Lesson-14.html 20 | 21 | 22 | -------------------------------------------------------------------------------- /Slides/lib/css/monokai.css: -------------------------------------------------------------------------------- 1 | /* 2 | Monokai style - ported by Luigi Maselli - http://grigio.org 3 | */ 4 | 5 | .hljs { 6 | display: block; 7 | overflow-x: auto; 8 | padding: 0.5em; 9 | background: #272822; 10 | color: #ddd; 11 | } 12 | 13 | .hljs-tag, 14 | .hljs-keyword, 15 | .hljs-selector-tag, 16 | .hljs-literal, 17 | .hljs-strong, 18 | .hljs-name { 19 | color: #f92672; 20 | } 21 | 22 | .hljs-code { 23 | color: #66d9ef; 24 | } 25 | 26 | .hljs-class .hljs-title { 27 | color: white; 28 | } 29 | 30 | .hljs-attribute, 31 | .hljs-symbol, 32 | .hljs-regexp, 33 | .hljs-link { 34 | color: #bf79db; 35 | } 36 | 37 | .hljs-string, 38 | .hljs-bullet, 39 | .hljs-subst, 40 | .hljs-title, 41 | .hljs-section, 42 | .hljs-emphasis, 43 | .hljs-type, 44 | .hljs-built_in, 45 | .hljs-builtin-name, 46 | .hljs-selector-attr, 47 | .hljs-selector-pseudo, 48 | .hljs-addition, 49 | .hljs-variable, 50 | .hljs-template-tag, 51 | .hljs-template-variable { 52 | color: #a6e22e; 53 | } 54 | 55 | .hljs-comment, 56 | .hljs-quote, 57 | .hljs-deletion, 58 | .hljs-meta { 59 | color: #75715e; 60 | } 61 | 62 | .hljs-keyword, 63 | .hljs-selector-tag, 64 | .hljs-literal, 65 | .hljs-doctag, 66 | .hljs-title, 67 | .hljs-section, 68 | .hljs-type, 69 | .hljs-selector-id { 70 | font-weight: bold; 71 | } 72 | -------------------------------------------------------------------------------- /Slides/lib/css/zenburn.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Zenburn style from voldmar.ru (c) Vladimir Epifanov 4 | based on dark.css by Ivan Sagalaev 5 | 6 | */ 7 | 8 | .hljs { 9 | display: block; 10 | overflow-x: auto; 11 | padding: 0.5em; 12 | background: #3f3f3f; 13 | color: #dcdcdc; 14 | } 15 | 16 | .hljs-keyword, 17 | .hljs-selector-tag, 18 | .hljs-tag { 19 | color: #e3ceab; 20 | } 21 | 22 | .hljs-template-tag { 23 | color: #dcdcdc; 24 | } 25 | 26 | .hljs-number { 27 | color: #8cd0d3; 28 | } 29 | 30 | .hljs-variable, 31 | .hljs-template-variable, 32 | .hljs-attribute { 33 | color: #efdcbc; 34 | } 35 | 36 | .hljs-literal { 37 | color: #efefaf; 38 | } 39 | 40 | .hljs-subst { 41 | color: #8f8f8f; 42 | } 43 | 44 | .hljs-title, 45 | .hljs-name, 46 | .hljs-selector-id, 47 | .hljs-selector-class, 48 | .hljs-section, 49 | .hljs-type { 50 | color: #efef8f; 51 | } 52 | 53 | .hljs-symbol, 54 | .hljs-bullet, 55 | .hljs-link { 56 | color: #dca3a3; 57 | } 58 | 59 | .hljs-deletion, 60 | .hljs-string, 61 | .hljs-built_in, 62 | .hljs-builtin-name { 63 | color: #cc9393; 64 | } 65 | 66 | .hljs-addition, 67 | .hljs-comment, 68 | .hljs-quote, 69 | .hljs-meta { 70 | color: #7f9f7f; 71 | } 72 | 73 | 74 | .hljs-emphasis { 75 | font-style: italic; 76 | } 77 | 78 | .hljs-strong { 79 | font-weight: bold; 80 | } 81 | -------------------------------------------------------------------------------- /Slides/lib/font/league-gothic/LICENSE: -------------------------------------------------------------------------------- 1 | SIL Open Font License (OFL) 2 | http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL 3 | -------------------------------------------------------------------------------- /Slides/lib/font/league-gothic/league-gothic.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'League Gothic'; 3 | src: url('league-gothic.eot'); 4 | src: url('league-gothic.eot?#iefix') format('embedded-opentype'), 5 | url('league-gothic.woff') format('woff'), 6 | url('league-gothic.ttf') format('truetype'); 7 | 8 | font-weight: normal; 9 | font-style: normal; 10 | } -------------------------------------------------------------------------------- /Slides/lib/font/league-gothic/league-gothic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/Slides/lib/font/league-gothic/league-gothic.eot -------------------------------------------------------------------------------- /Slides/lib/font/league-gothic/league-gothic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/Slides/lib/font/league-gothic/league-gothic.ttf -------------------------------------------------------------------------------- /Slides/lib/font/league-gothic/league-gothic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/Slides/lib/font/league-gothic/league-gothic.woff -------------------------------------------------------------------------------- /Slides/lib/font/source-sans-pro/LICENSE: -------------------------------------------------------------------------------- 1 | SIL Open Font License 2 | 3 | Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name ‘Source’. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. 4 | 5 | This Font Software is licensed under the SIL Open Font License, Version 1.1. 6 | This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL 7 | 8 | —————————————————————————————- 9 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 10 | —————————————————————————————- 11 | 12 | PREAMBLE 13 | The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. 14 | 15 | The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. 16 | 17 | DEFINITIONS 18 | “Font Software” refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. 19 | 20 | “Reserved Font Name” refers to any names specified as such after the copyright statement(s). 21 | 22 | “Original Version” refers to the collection of Font Software components as distributed by the Copyright Holder(s). 23 | 24 | “Modified Version” refers to any derivative made by adding to, deleting, or substituting—in part or in whole—any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. 25 | 26 | “Author” refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. 27 | 28 | PERMISSION & CONDITIONS 29 | Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: 30 | 31 | 1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. 32 | 33 | 2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. 34 | 35 | 3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. 36 | 37 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. 38 | 39 | 5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. 40 | 41 | TERMINATION 42 | This license becomes null and void if any of the above conditions are not met. 43 | 44 | DISCLAIMER 45 | THE FONT SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. -------------------------------------------------------------------------------- /Slides/lib/font/source-sans-pro/source-sans-pro-italic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/Slides/lib/font/source-sans-pro/source-sans-pro-italic.eot -------------------------------------------------------------------------------- /Slides/lib/font/source-sans-pro/source-sans-pro-italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/Slides/lib/font/source-sans-pro/source-sans-pro-italic.ttf -------------------------------------------------------------------------------- /Slides/lib/font/source-sans-pro/source-sans-pro-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/Slides/lib/font/source-sans-pro/source-sans-pro-italic.woff -------------------------------------------------------------------------------- /Slides/lib/font/source-sans-pro/source-sans-pro-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/Slides/lib/font/source-sans-pro/source-sans-pro-regular.eot -------------------------------------------------------------------------------- /Slides/lib/font/source-sans-pro/source-sans-pro-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/Slides/lib/font/source-sans-pro/source-sans-pro-regular.ttf -------------------------------------------------------------------------------- /Slides/lib/font/source-sans-pro/source-sans-pro-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/Slides/lib/font/source-sans-pro/source-sans-pro-regular.woff -------------------------------------------------------------------------------- /Slides/lib/font/source-sans-pro/source-sans-pro-semibold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/Slides/lib/font/source-sans-pro/source-sans-pro-semibold.eot -------------------------------------------------------------------------------- /Slides/lib/font/source-sans-pro/source-sans-pro-semibold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/Slides/lib/font/source-sans-pro/source-sans-pro-semibold.ttf -------------------------------------------------------------------------------- /Slides/lib/font/source-sans-pro/source-sans-pro-semibold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/Slides/lib/font/source-sans-pro/source-sans-pro-semibold.woff -------------------------------------------------------------------------------- /Slides/lib/font/source-sans-pro/source-sans-pro-semibolditalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/Slides/lib/font/source-sans-pro/source-sans-pro-semibolditalic.eot -------------------------------------------------------------------------------- /Slides/lib/font/source-sans-pro/source-sans-pro-semibolditalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/Slides/lib/font/source-sans-pro/source-sans-pro-semibolditalic.ttf -------------------------------------------------------------------------------- /Slides/lib/font/source-sans-pro/source-sans-pro-semibolditalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/Slides/lib/font/source-sans-pro/source-sans-pro-semibolditalic.woff -------------------------------------------------------------------------------- /Slides/lib/font/source-sans-pro/source-sans-pro.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Source Sans Pro'; 3 | src: url('source-sans-pro-regular.eot'); 4 | src: url('source-sans-pro-regular.eot?#iefix') format('embedded-opentype'), 5 | url('source-sans-pro-regular.woff') format('woff'), 6 | url('source-sans-pro-regular.ttf') format('truetype'); 7 | font-weight: normal; 8 | font-style: normal; 9 | } 10 | 11 | @font-face { 12 | font-family: 'Source Sans Pro'; 13 | src: url('source-sans-pro-italic.eot'); 14 | src: url('source-sans-pro-italic.eot?#iefix') format('embedded-opentype'), 15 | url('source-sans-pro-italic.woff') format('woff'), 16 | url('source-sans-pro-italic.ttf') format('truetype'); 17 | font-weight: normal; 18 | font-style: italic; 19 | } 20 | 21 | @font-face { 22 | font-family: 'Source Sans Pro'; 23 | src: url('source-sans-pro-semibold.eot'); 24 | src: url('source-sans-pro-semibold.eot?#iefix') format('embedded-opentype'), 25 | url('source-sans-pro-semibold.woff') format('woff'), 26 | url('source-sans-pro-semibold.ttf') format('truetype'); 27 | font-weight: 600; 28 | font-style: normal; 29 | } 30 | 31 | @font-face { 32 | font-family: 'Source Sans Pro'; 33 | src: url('source-sans-pro-semibolditalic.eot'); 34 | src: url('source-sans-pro-semibolditalic.eot?#iefix') format('embedded-opentype'), 35 | url('source-sans-pro-semibolditalic.woff') format('woff'), 36 | url('source-sans-pro-semibolditalic.ttf') format('truetype'); 37 | font-weight: 600; 38 | font-style: italic; 39 | } -------------------------------------------------------------------------------- /Slides/lib/js/html5shiv.js: -------------------------------------------------------------------------------- 1 | document.createElement('header'); 2 | document.createElement('nav'); 3 | document.createElement('section'); 4 | document.createElement('article'); 5 | document.createElement('aside'); 6 | document.createElement('footer'); 7 | document.createElement('hgroup'); -------------------------------------------------------------------------------- /Slides/lib/js/promise.js: -------------------------------------------------------------------------------- 1 | /* MIT | https://github.com/taylorhakes/promise-polyfill */ 2 | !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n():"function"==typeof define&&define.amd?define(n):n()}(0,function(){"use strict";function e(e){var n=this.constructor;return this.then(function(t){return n.resolve(e()).then(function(){return t})},function(t){return n.resolve(e()).then(function(){return n.reject(t)})})}function n(){}function t(e){if(!(this instanceof t))throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],u(e,this)}function o(e,n){for(;3===e._state;)e=e._value;0!==e._state?(e._handled=!0,t._immediateFn(function(){var t=1===e._state?n.onFulfilled:n.onRejected;if(null!==t){var o;try{o=t(e._value)}catch(f){return void i(n.promise,f)}r(n.promise,o)}else(1===e._state?r:i)(n.promise,e._value)})):e._deferreds.push(n)}function r(e,n){try{if(n===e)throw new TypeError("A promise cannot be resolved with itself.");if(n&&("object"==typeof n||"function"==typeof n)){var o=n.then;if(n instanceof t)return e._state=3,e._value=n,void f(e);if("function"==typeof o)return void u(function(e,n){return function(){e.apply(n,arguments)}}(o,n),e)}e._state=1,e._value=n,f(e)}catch(r){i(e,r)}}function i(e,n){e._state=2,e._value=n,f(e)}function f(e){2===e._state&&0===e._deferreds.length&&t._immediateFn(function(){e._handled||t._unhandledRejectionFn(e._value)});for(var n=0,r=e._deferreds.length;r>n;n++)o(e,e._deferreds[n]);e._deferreds=null}function u(e,n){var t=!1;try{e(function(e){t||(t=!0,r(n,e))},function(e){t||(t=!0,i(n,e))})}catch(o){if(t)return;t=!0,i(n,o)}}var c=setTimeout;t.prototype["catch"]=function(e){return this.then(null,e)},t.prototype.then=function(e,t){var r=new this.constructor(n);return o(this,new function(e,n,t){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof n?n:null,this.promise=t}(e,t,r)),r},t.prototype["finally"]=e,t.all=function(e){return new t(function(n,t){function o(e,f){try{if(f&&("object"==typeof f||"function"==typeof f)){var u=f.then;if("function"==typeof u)return void u.call(f,function(n){o(e,n)},t)}r[e]=f,0==--i&&n(r)}catch(c){t(c)}}if(!e||"undefined"==typeof e.length)throw new TypeError("Promise.all accepts an array");var r=Array.prototype.slice.call(e);if(0===r.length)return n([]);for(var i=r.length,f=0;r.length>f;f++)o(f,r[f])})},t.resolve=function(e){return e&&"object"==typeof e&&e.constructor===t?e:new t(function(n){n(e)})},t.reject=function(e){return new t(function(n,t){t(e)})},t.race=function(e){return new t(function(n,t){for(var o=0,r=e.length;r>o;o++)e[o].then(n,t)})},t._immediateFn="function"==typeof setImmediate&&function(e){setImmediate(e)}||function(e){c(e,0)},t._unhandledRejectionFn=function(e){void 0!==console&&console&&console.warn("Possible Unhandled Promise Rejection:",e)};var l=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw Error("unable to locate global object")}();"Promise"in l?l.Promise.prototype["finally"]||(l.Promise.prototype["finally"]=e):l.Promise=t}); -------------------------------------------------------------------------------- /Slides/plugin/markdown/example.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | reveal.js - Markdown Demo 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 |
20 | 21 | 22 |
23 | 24 | 25 |
26 | 36 |
37 | 38 | 39 |
40 | 54 |
55 | 56 | 57 |
58 | 69 |
70 | 71 | 72 |
73 | 77 |
78 | 79 | 80 |
81 | 86 |
87 | 88 | 89 |
90 | 100 |
101 | 102 | 103 |
104 | 107 |
108 | 109 |
110 |
111 | 112 | 113 | 114 | 132 | 133 | 134 | 135 | -------------------------------------------------------------------------------- /Slides/plugin/markdown/example.md: -------------------------------------------------------------------------------- 1 | # Markdown Demo 2 | 3 | 4 | 5 | ## External 1.1 6 | 7 | Content 1.1 8 | 9 | Note: This will only appear in the speaker notes window. 10 | 11 | 12 | ## External 1.2 13 | 14 | Content 1.2 15 | 16 | 17 | 18 | ## External 2 19 | 20 | Content 2.1 21 | 22 | 23 | 24 | ## External 3.1 25 | 26 | Content 3.1 27 | 28 | 29 | ## External 3.2 30 | 31 | Content 3.2 32 | 33 | 34 | ## External 3.3 35 | 36 | ![External Image](https://s3.amazonaws.com/static.slid.es/logo/v2/slides-symbol-512x512.png) 37 | -------------------------------------------------------------------------------- /Slides/plugin/math/math.js: -------------------------------------------------------------------------------- 1 | /** 2 | * A plugin which enables rendering of math equations inside 3 | * of reveal.js slides. Essentially a thin wrapper for MathJax. 4 | * 5 | * @author Hakim El Hattab 6 | */ 7 | var RevealMath = window.RevealMath || (function(){ 8 | 9 | var options = Reveal.getConfig().math || {}; 10 | var mathjax = options.mathjax || 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js'; 11 | var config = options.config || 'TeX-AMS_HTML-full'; 12 | var url = mathjax + '?config=' + config; 13 | 14 | var defaultOptions = { 15 | messageStyle: 'none', 16 | tex2jax: { 17 | inlineMath: [ [ '$', '$' ], [ '\\(', '\\)' ] ], 18 | skipTags: [ 'script', 'noscript', 'style', 'textarea', 'pre' ] 19 | }, 20 | skipStartupTypeset: true 21 | }; 22 | 23 | function defaults( options, defaultOptions ) { 24 | 25 | for ( var i in defaultOptions ) { 26 | if ( !options.hasOwnProperty( i ) ) { 27 | options[i] = defaultOptions[i]; 28 | } 29 | } 30 | 31 | } 32 | 33 | function loadScript( url, callback ) { 34 | 35 | var head = document.querySelector( 'head' ); 36 | var script = document.createElement( 'script' ); 37 | script.type = 'text/javascript'; 38 | script.src = url; 39 | 40 | // Wrapper for callback to make sure it only fires once 41 | var finish = function() { 42 | if( typeof callback === 'function' ) { 43 | callback.call(); 44 | callback = null; 45 | } 46 | } 47 | 48 | script.onload = finish; 49 | 50 | // IE 51 | script.onreadystatechange = function() { 52 | if ( this.readyState === 'loaded' ) { 53 | finish(); 54 | } 55 | } 56 | 57 | // Normal browsers 58 | head.appendChild( script ); 59 | 60 | } 61 | 62 | return { 63 | init: function() { 64 | 65 | defaults( options, defaultOptions ); 66 | defaults( options.tex2jax, defaultOptions.tex2jax ); 67 | options.mathjax = options.config = null; 68 | 69 | loadScript( url, function() { 70 | 71 | MathJax.Hub.Config( options ); 72 | 73 | // Typeset followed by an immediate reveal.js layout since 74 | // the typesetting process could affect slide height 75 | MathJax.Hub.Queue( [ 'Typeset', MathJax.Hub ] ); 76 | MathJax.Hub.Queue( Reveal.layout ); 77 | 78 | // Reprocess equations in slides when they turn visible 79 | Reveal.addEventListener( 'slidechanged', function( event ) { 80 | 81 | MathJax.Hub.Queue( [ 'Typeset', MathJax.Hub, event.currentSlide ] ); 82 | 83 | } ); 84 | 85 | } ); 86 | 87 | } 88 | } 89 | 90 | })(); 91 | 92 | Reveal.registerPlugin( 'math', RevealMath ); 93 | -------------------------------------------------------------------------------- /Slides/plugin/multiplex/client.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | var multiplex = Reveal.getConfig().multiplex; 3 | var socketId = multiplex.id; 4 | var socket = io.connect(multiplex.url); 5 | 6 | socket.on(multiplex.id, function(data) { 7 | // ignore data from sockets that aren't ours 8 | if (data.socketId !== socketId) { return; } 9 | if( window.location.host === 'localhost:1947' ) return; 10 | 11 | Reveal.setState(data.state); 12 | }); 13 | }()); 14 | -------------------------------------------------------------------------------- /Slides/plugin/multiplex/index.js: -------------------------------------------------------------------------------- 1 | var http = require('http'); 2 | var express = require('express'); 3 | var fs = require('fs'); 4 | var io = require('socket.io'); 5 | var crypto = require('crypto'); 6 | 7 | var app = express(); 8 | var staticDir = express.static; 9 | var server = http.createServer(app); 10 | 11 | io = io(server); 12 | 13 | var opts = { 14 | port: process.env.PORT || 1948, 15 | baseDir : __dirname + '/../../' 16 | }; 17 | 18 | io.on( 'connection', function( socket ) { 19 | socket.on('multiplex-statechanged', function(data) { 20 | if (typeof data.secret == 'undefined' || data.secret == null || data.secret === '') return; 21 | if (createHash(data.secret) === data.socketId) { 22 | data.secret = null; 23 | socket.broadcast.emit(data.socketId, data); 24 | }; 25 | }); 26 | }); 27 | 28 | [ 'css', 'js', 'plugin', 'lib' ].forEach(function(dir) { 29 | app.use('/' + dir, staticDir(opts.baseDir + dir)); 30 | }); 31 | 32 | app.get("/", function(req, res) { 33 | res.writeHead(200, {'Content-Type': 'text/html'}); 34 | 35 | var stream = fs.createReadStream(opts.baseDir + '/index.html'); 36 | stream.on('error', function( error ) { 37 | res.write('

reveal.js multiplex server.

Generate token'); 38 | res.end(); 39 | }); 40 | stream.on('readable', function() { 41 | stream.pipe(res); 42 | }); 43 | }); 44 | 45 | app.get("/token", function(req,res) { 46 | var ts = new Date().getTime(); 47 | var rand = Math.floor(Math.random()*9999999); 48 | var secret = ts.toString() + rand.toString(); 49 | res.send({secret: secret, socketId: createHash(secret)}); 50 | }); 51 | 52 | var createHash = function(secret) { 53 | var cipher = crypto.createCipher('blowfish', secret); 54 | return(cipher.final('hex')); 55 | }; 56 | 57 | // Actually listen 58 | server.listen( opts.port || null ); 59 | 60 | var brown = '\033[33m', 61 | green = '\033[32m', 62 | reset = '\033[0m'; 63 | 64 | console.log( brown + "reveal.js:" + reset + " Multiplex running on port " + green + opts.port + reset ); -------------------------------------------------------------------------------- /Slides/plugin/multiplex/master.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | 3 | // Don't emit events from inside of notes windows 4 | if ( window.location.search.match( /receiver/gi ) ) { return; } 5 | 6 | var multiplex = Reveal.getConfig().multiplex; 7 | 8 | var socket = io.connect( multiplex.url ); 9 | 10 | function post() { 11 | 12 | var messageData = { 13 | state: Reveal.getState(), 14 | secret: multiplex.secret, 15 | socketId: multiplex.id 16 | }; 17 | 18 | socket.emit( 'multiplex-statechanged', messageData ); 19 | 20 | }; 21 | 22 | // post once the page is loaded, so the client follows also on "open URL". 23 | window.addEventListener( 'load', post ); 24 | 25 | // Monitor events that trigger a change in state 26 | Reveal.addEventListener( 'slidechanged', post ); 27 | Reveal.addEventListener( 'fragmentshown', post ); 28 | Reveal.addEventListener( 'fragmenthidden', post ); 29 | Reveal.addEventListener( 'overviewhidden', post ); 30 | Reveal.addEventListener( 'overviewshown', post ); 31 | Reveal.addEventListener( 'paused', post ); 32 | Reveal.addEventListener( 'resumed', post ); 33 | 34 | }()); 35 | -------------------------------------------------------------------------------- /Slides/plugin/multiplex/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "reveal-js-multiplex", 3 | "version": "1.0.0", 4 | "description": "reveal.js multiplex server", 5 | "homepage": "http://revealjs.com", 6 | "scripts": { 7 | "start": "node index.js" 8 | }, 9 | "engines": { 10 | "node": "~4.1.1" 11 | }, 12 | "dependencies": { 13 | "express": "~4.13.3", 14 | "grunt-cli": "~0.1.13", 15 | "mustache": "~2.2.1", 16 | "socket.io": "~1.3.7" 17 | }, 18 | "license": "MIT" 19 | } 20 | -------------------------------------------------------------------------------- /Slides/plugin/notes-server/client.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | 3 | // don't emit events from inside the previews themselves 4 | if( window.location.search.match( /receiver/gi ) ) { return; } 5 | 6 | var socket = io.connect( window.location.origin ), 7 | socketId = Math.random().toString().slice( 2 ); 8 | 9 | console.log( 'View slide notes at ' + window.location.origin + '/notes/' + socketId ); 10 | 11 | window.open( window.location.origin + '/notes/' + socketId, 'notes-' + socketId ); 12 | 13 | /** 14 | * Posts the current slide data to the notes window 15 | */ 16 | function post() { 17 | 18 | var slideElement = Reveal.getCurrentSlide(), 19 | notesElement = slideElement.querySelector( 'aside.notes' ); 20 | 21 | var messageData = { 22 | notes: '', 23 | markdown: false, 24 | socketId: socketId, 25 | state: Reveal.getState() 26 | }; 27 | 28 | // Look for notes defined in a slide attribute 29 | if( slideElement.hasAttribute( 'data-notes' ) ) { 30 | messageData.notes = slideElement.getAttribute( 'data-notes' ); 31 | } 32 | 33 | // Look for notes defined in an aside element 34 | if( notesElement ) { 35 | messageData.notes = notesElement.innerHTML; 36 | messageData.markdown = typeof notesElement.getAttribute( 'data-markdown' ) === 'string'; 37 | } 38 | 39 | socket.emit( 'statechanged', messageData ); 40 | 41 | } 42 | 43 | // When a new notes window connects, post our current state 44 | socket.on( 'new-subscriber', function( data ) { 45 | post(); 46 | } ); 47 | 48 | // When the state changes from inside of the speaker view 49 | socket.on( 'statechanged-speaker', function( data ) { 50 | Reveal.setState( data.state ); 51 | } ); 52 | 53 | // Monitor events that trigger a change in state 54 | Reveal.addEventListener( 'slidechanged', post ); 55 | Reveal.addEventListener( 'fragmentshown', post ); 56 | Reveal.addEventListener( 'fragmenthidden', post ); 57 | Reveal.addEventListener( 'overviewhidden', post ); 58 | Reveal.addEventListener( 'overviewshown', post ); 59 | Reveal.addEventListener( 'paused', post ); 60 | Reveal.addEventListener( 'resumed', post ); 61 | 62 | // Post the initial state 63 | post(); 64 | 65 | }()); 66 | -------------------------------------------------------------------------------- /Slides/plugin/notes-server/index.js: -------------------------------------------------------------------------------- 1 | var http = require('http'); 2 | var express = require('express'); 3 | var fs = require('fs'); 4 | var io = require('socket.io'); 5 | var Mustache = require('mustache'); 6 | 7 | var app = express(); 8 | var staticDir = express.static; 9 | var server = http.createServer(app); 10 | 11 | io = io(server); 12 | 13 | var opts = { 14 | port : 1947, 15 | baseDir : __dirname + '/../../' 16 | }; 17 | 18 | io.on( 'connection', function( socket ) { 19 | 20 | socket.on( 'new-subscriber', function( data ) { 21 | socket.broadcast.emit( 'new-subscriber', data ); 22 | }); 23 | 24 | socket.on( 'statechanged', function( data ) { 25 | delete data.state.overview; 26 | socket.broadcast.emit( 'statechanged', data ); 27 | }); 28 | 29 | socket.on( 'statechanged-speaker', function( data ) { 30 | delete data.state.overview; 31 | socket.broadcast.emit( 'statechanged-speaker', data ); 32 | }); 33 | 34 | }); 35 | 36 | [ 'css', 'js', 'images', 'plugin', 'lib' ].forEach( function( dir ) { 37 | app.use( '/' + dir, staticDir( opts.baseDir + dir ) ); 38 | }); 39 | 40 | app.get('/', function( req, res ) { 41 | 42 | res.writeHead( 200, { 'Content-Type': 'text/html' } ); 43 | fs.createReadStream( opts.baseDir + '/index.html' ).pipe( res ); 44 | 45 | }); 46 | 47 | app.get( '/notes/:socketId', function( req, res ) { 48 | 49 | fs.readFile( opts.baseDir + 'plugin/notes-server/notes.html', function( err, data ) { 50 | res.send( Mustache.to_html( data.toString(), { 51 | socketId : req.params.socketId 52 | })); 53 | }); 54 | 55 | }); 56 | 57 | // Actually listen 58 | server.listen( opts.port || null ); 59 | 60 | var brown = '\033[33m', 61 | green = '\033[32m', 62 | reset = '\033[0m'; 63 | 64 | var slidesLocation = 'http://localhost' + ( opts.port ? ( ':' + opts.port ) : '' ); 65 | 66 | console.log( brown + 'reveal.js - Speaker Notes' + reset ); 67 | console.log( '1. Open the slides at ' + green + slidesLocation + reset ); 68 | console.log( '2. Click on the link in your JS console to go to the notes page' ); 69 | console.log( '3. Advance through your slides and your notes will advance automatically' ); 70 | -------------------------------------------------------------------------------- /Slides/plugin/notes/notes.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Handles opening of and synchronization with the reveal.js 3 | * notes window. 4 | * 5 | * Handshake process: 6 | * 1. This window posts 'connect' to notes window 7 | * - Includes URL of presentation to show 8 | * 2. Notes window responds with 'connected' when it is available 9 | * 3. This window proceeds to send the current presentation state 10 | * to the notes window 11 | */ 12 | var RevealNotes = (function() { 13 | 14 | var notesPopup = null; 15 | 16 | function openNotes( notesFilePath ) { 17 | 18 | if (notesPopup && !notesPopup.closed) { 19 | notesPopup.focus(); 20 | return; 21 | } 22 | 23 | if( !notesFilePath ) { 24 | var jsFileLocation = document.querySelector('script[src$="notes.js"]').src; // this js file path 25 | jsFileLocation = jsFileLocation.replace(/notes\.js(\?.*)?$/, ''); // the js folder path 26 | notesFilePath = jsFileLocation + 'notes.html'; 27 | } 28 | 29 | notesPopup = window.open( notesFilePath, 'reveal.js - Notes', 'width=1100,height=700' ); 30 | 31 | if( !notesPopup ) { 32 | alert( 'Speaker view popup failed to open. Please make sure popups are allowed and reopen the speaker view.' ); 33 | return; 34 | } 35 | 36 | /** 37 | * Connect to the notes window through a postmessage handshake. 38 | * Using postmessage enables us to work in situations where the 39 | * origins differ, such as a presentation being opened from the 40 | * file system. 41 | */ 42 | function connect() { 43 | // Keep trying to connect until we get a 'connected' message back 44 | var connectInterval = setInterval( function() { 45 | notesPopup.postMessage( JSON.stringify( { 46 | namespace: 'reveal-notes', 47 | type: 'connect', 48 | url: window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search, 49 | state: Reveal.getState() 50 | } ), '*' ); 51 | }, 500 ); 52 | 53 | window.addEventListener( 'message', function( event ) { 54 | var data = JSON.parse( event.data ); 55 | if( data && data.namespace === 'reveal-notes' && data.type === 'connected' ) { 56 | clearInterval( connectInterval ); 57 | onConnected(); 58 | } 59 | if( data && data.namespace === 'reveal-notes' && data.type === 'call' ) { 60 | callRevealApi( data.methodName, data.arguments, data.callId ); 61 | } 62 | } ); 63 | } 64 | 65 | /** 66 | * Calls the specified Reveal.js method with the provided argument 67 | * and then pushes the result to the notes frame. 68 | */ 69 | function callRevealApi( methodName, methodArguments, callId ) { 70 | 71 | var result = Reveal[methodName].apply( Reveal, methodArguments ); 72 | notesPopup.postMessage( JSON.stringify( { 73 | namespace: 'reveal-notes', 74 | type: 'return', 75 | result: result, 76 | callId: callId 77 | } ), '*' ); 78 | 79 | } 80 | 81 | /** 82 | * Posts the current slide data to the notes window 83 | */ 84 | function post( event ) { 85 | 86 | var slideElement = Reveal.getCurrentSlide(), 87 | notesElement = slideElement.querySelector( 'aside.notes' ), 88 | fragmentElement = slideElement.querySelector( '.current-fragment' ); 89 | 90 | var messageData = { 91 | namespace: 'reveal-notes', 92 | type: 'state', 93 | notes: '', 94 | markdown: false, 95 | whitespace: 'normal', 96 | state: Reveal.getState() 97 | }; 98 | 99 | // Look for notes defined in a slide attribute 100 | if( slideElement.hasAttribute( 'data-notes' ) ) { 101 | messageData.notes = slideElement.getAttribute( 'data-notes' ); 102 | messageData.whitespace = 'pre-wrap'; 103 | } 104 | 105 | // Look for notes defined in a fragment 106 | if( fragmentElement ) { 107 | var fragmentNotes = fragmentElement.querySelector( 'aside.notes' ); 108 | if( fragmentNotes ) { 109 | notesElement = fragmentNotes; 110 | } 111 | else if( fragmentElement.hasAttribute( 'data-notes' ) ) { 112 | messageData.notes = fragmentElement.getAttribute( 'data-notes' ); 113 | messageData.whitespace = 'pre-wrap'; 114 | 115 | // In case there are slide notes 116 | notesElement = null; 117 | } 118 | } 119 | 120 | // Look for notes defined in an aside element 121 | if( notesElement ) { 122 | messageData.notes = notesElement.innerHTML; 123 | messageData.markdown = typeof notesElement.getAttribute( 'data-markdown' ) === 'string'; 124 | } 125 | 126 | notesPopup.postMessage( JSON.stringify( messageData ), '*' ); 127 | 128 | } 129 | 130 | /** 131 | * Called once we have established a connection to the notes 132 | * window. 133 | */ 134 | function onConnected() { 135 | 136 | // Monitor events that trigger a change in state 137 | Reveal.addEventListener( 'slidechanged', post ); 138 | Reveal.addEventListener( 'fragmentshown', post ); 139 | Reveal.addEventListener( 'fragmenthidden', post ); 140 | Reveal.addEventListener( 'overviewhidden', post ); 141 | Reveal.addEventListener( 'overviewshown', post ); 142 | Reveal.addEventListener( 'paused', post ); 143 | Reveal.addEventListener( 'resumed', post ); 144 | 145 | // Post the initial state 146 | post(); 147 | 148 | } 149 | 150 | connect(); 151 | 152 | } 153 | 154 | return { 155 | init: function() { 156 | 157 | if( !/receiver/i.test( window.location.search ) ) { 158 | 159 | // If the there's a 'notes' query set, open directly 160 | if( window.location.search.match( /(\?|\&)notes/gi ) !== null ) { 161 | openNotes(); 162 | } 163 | 164 | // Open the notes when the 's' key is hit 165 | Reveal.addKeyBinding({keyCode: 83, key: 'S', description: 'Speaker notes view'}, function() { 166 | openNotes(); 167 | } ); 168 | 169 | } 170 | 171 | }, 172 | 173 | open: openNotes 174 | }; 175 | 176 | })(); 177 | 178 | Reveal.registerPlugin( 'notes', RevealNotes ); 179 | -------------------------------------------------------------------------------- /Slides/plugin/print-pdf/print-pdf.js: -------------------------------------------------------------------------------- 1 | /** 2 | * phantomjs script for printing presentations to PDF. 3 | * 4 | * Example: 5 | * phantomjs print-pdf.js "http://revealjs.com?print-pdf" reveal-demo.pdf 6 | * 7 | * @author Manuel Bieh (https://github.com/manuelbieh) 8 | * @author Hakim El Hattab (https://github.com/hakimel) 9 | * @author Manuel Riezebosch (https://github.com/riezebosch) 10 | */ 11 | 12 | // html2pdf.js 13 | var system = require( 'system' ); 14 | 15 | var probePage = new WebPage(); 16 | var printPage = new WebPage(); 17 | 18 | var inputFile = system.args[1] || 'index.html?print-pdf'; 19 | var outputFile = system.args[2] || 'slides.pdf'; 20 | 21 | if( outputFile.match( /\.pdf$/gi ) === null ) { 22 | outputFile += '.pdf'; 23 | } 24 | 25 | console.log( 'Export PDF: Reading reveal.js config [1/4]' ); 26 | 27 | probePage.open( inputFile, function( status ) { 28 | 29 | console.log( 'Export PDF: Preparing print layout [2/4]' ); 30 | 31 | var config = probePage.evaluate( function() { 32 | return Reveal.getConfig(); 33 | } ); 34 | 35 | if( config ) { 36 | 37 | printPage.paperSize = { 38 | width: Math.floor( config.width * ( 1 + config.margin ) ), 39 | height: Math.floor( config.height * ( 1 + config.margin ) ), 40 | border: 0 41 | }; 42 | 43 | printPage.open( inputFile, function( status ) { 44 | console.log( 'Export PDF: Preparing pdf [3/4]') 45 | printPage.evaluate( function() { 46 | Reveal.isReady() ? window.callPhantom() : Reveal.addEventListener( 'pdf-ready', window.callPhantom ); 47 | } ); 48 | } ); 49 | 50 | printPage.onCallback = function( data ) { 51 | // For some reason we need to "jump the queue" for syntax highlighting to work. 52 | // See: http://stackoverflow.com/a/3580132/129269 53 | setTimeout( function() { 54 | console.log( 'Export PDF: Writing file [4/4]' ); 55 | printPage.render( outputFile ); 56 | console.log( 'Export PDF: Finished successfully!' ); 57 | phantom.exit(); 58 | }, 0 ); 59 | }; 60 | } 61 | else { 62 | 63 | console.log( 'Export PDF: Unable to read reveal.js config. Make sure the input address points to a reveal.js page.' ); 64 | phantom.exit( 1 ); 65 | 66 | } 67 | } ); 68 | -------------------------------------------------------------------------------- /Web/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/Web/.nojekyll -------------------------------------------------------------------------------- /Web/logo-icononly.svg: -------------------------------------------------------------------------------- 1 | logo-icononly -------------------------------------------------------------------------------- /Web/style.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --base-font-weight: 400; 3 | --base-color: white; 4 | --base-font-size: 14px; 5 | 6 | --sidebar-width: 22rem; 7 | --sidebar-nav-link-before-content: ""; 8 | --sidebar-nav-link-before-content-l3: ""; 9 | --sidebar-name-font-weight: 500; 10 | 11 | --search-result-heading-font-size: 1em; 12 | --search-result-item-font-size: 0.9em; 13 | --search-result-heading-font-weight: 400; 14 | --search-result-heading-margin: 0 0 0.1em; 15 | 16 | --heading-font-weight: 500; 17 | --heading-h1-font-weight: 700; 18 | --heading-h1-font-size: 2.5em; 19 | 20 | --notice-font-style: italic; 21 | --notice-font-weight: 500; 22 | 23 | --blockquote-em-font-style: normal; 24 | --blockquote-em-font-weight: 700; 25 | 26 | --blockquote-font-style: italic; 27 | --blockquote-font-weight: 500; 28 | 29 | --code-font-size: 1em; 30 | --code-font-weight: 500; 31 | --code-tab-size: 2; 32 | } 33 | 34 | .sidebar>h1 { 35 | margin: 2.3rem auto 1rem; 36 | } 37 | 38 | .sidebar>h1>a>img { 39 | height: auto; 40 | } 41 | 42 | .markdown-section { 43 | max-width: 840px; 44 | } 45 | 46 | .markdown-section a:hover { 47 | border-bottom: 1px dashed rgba(255, 255, 255, 0.5); 48 | padding-bottom: 3px; 49 | } 50 | 51 | .sidebar-nav>ul:nth-child(1)>li>a.section-link, 52 | .sidebar-nav>ul:nth-child(1)>li>ul.children>li>a.section-link { 53 | display: block; 54 | } 55 | 56 | #main>h1:nth-child(1) { 57 | display: none; 58 | } 59 | 60 | #main>h1:nth-child(1)[id] { 61 | display: block; 62 | } 63 | 64 | .sidebar ul li a { 65 | color: #333; 66 | font-size: 14px; 67 | font-weight: 400; 68 | overflow: hidden; 69 | text-decoration: none; 70 | text-overflow: ellipsis; 71 | white-space: nowrap; 72 | } 73 | 74 | .sidebar ul li strong a { 75 | font-weight: 700; 76 | } 77 | 78 | .sidebar ul li ul.app-sub-sidebar li a { 79 | font-weight: 400; 80 | } 81 | 82 | .sidebar ul li ul.app-sub-sidebar li a.active { 83 | font-weight: 700; 84 | } 85 | 86 | body .docsify-copy-code-button { 87 | background: none !important; 88 | line-height: 1.5rem; 89 | position: absolute; 90 | word-wrap: normal; 91 | color: #ccc; 92 | font-size: .7rem; 93 | font-weight: 700; 94 | left: 0; 95 | height: 25px; 96 | top: -4px; 97 | text-align: center; 98 | } 99 | 100 | body .docsify-copy-code-button.success { 101 | color: #11A31B; 102 | } 103 | 104 | body .docsify-copy-code-button::after {} 105 | 106 | .app-name-link img { 107 | height: 150px; 108 | width: 150px; 109 | } 110 | 111 | table>tbody>tr>td::before { 112 | display: none; 113 | } 114 | 115 | .btn-edit-on-github { 116 | transition: background-color 0.5s ease; 117 | border: none; 118 | border-radius: 3px; 119 | background-color: var(--theme-color); 120 | position: absolute; 121 | top: var(--sidebar-toggle-offset-top); 122 | right: 0; 123 | margin-right: 45px; 124 | padding: 6px 10px 6px 5px; 125 | height: var(--sidebar-toggle-height); 126 | } 127 | 128 | .btn-edit-on-github a, 129 | .btn-edit-on-github svg { 130 | transition: color 0.5s ease; 131 | color: white; 132 | } 133 | 134 | .btn-edit-on-github a { 135 | text-decoration: none; 136 | position: relative; 137 | font-weight: 700; 138 | top: -1px; 139 | padding-left: 5px; 140 | } 141 | 142 | .btn-edit-on-github:hover { 143 | cursor: pointer; 144 | background-color: var(--mono-tint2); 145 | } 146 | 147 | .btn-edit-on-github:hover svg, 148 | .btn-edit-on-github:hover a { 149 | text-decoration: none; 150 | color: white; 151 | } 152 | 153 | td::before { display: none } -------------------------------------------------------------------------------- /Web/sw.js: -------------------------------------------------------------------------------- 1 | /* =========================================================== 2 | * docsify sw.js 3 | * =========================================================== 4 | * Copyright 2016 @huxpro 5 | * Licensed under Apache 2.0 6 | * Register service worker. 7 | * ========================================================== */ 8 | 9 | const RUNTIME = 'docsify' 10 | const HOSTNAME_WHITELIST = [ 11 | self.location.hostname, 12 | 'fonts.gstatic.com', 13 | 'fonts.googleapis.com', 14 | 'unpkg.com', 15 | 'github.com', 16 | 'github.io', 17 | 'makeschool.com' 18 | ] 19 | 20 | // The Util Function to hack URLs of intercepted requests 21 | const getFixedUrl = (req) => { 22 | var now = Date.now() 23 | var url = new URL(req.url) 24 | 25 | // 1. fixed http URL 26 | // Just keep syncing with location.protocol 27 | // fetch(httpURL) belongs to active mixed content. 28 | // And fetch(httpRequest) is not supported yet. 29 | url.protocol = self.location.protocol 30 | 31 | // 2. add query for caching-busting. 32 | // Github Pages served with Cache-Control: max-age=600 33 | // max-age on mutable content is error-prone, with SW life of bugs can even extend. 34 | // Until cache mode of Fetch API landed, we have to workaround cache-busting with query string. 35 | // Cache-Control-Bug: https://bugs.chromium.org/p/chromium/issues/detail?id=453190 36 | if (url.hostname === self.location.hostname) { 37 | url.search += (url.search ? '&' : '?') + 'cache-bust=' + now 38 | } 39 | return url.href 40 | } 41 | 42 | /** 43 | * @Lifecycle Activate 44 | * New one activated when old isnt being used. 45 | * 46 | * waitUntil(): activating ====> activated 47 | */ 48 | self.addEventListener('activate', event => { 49 | event.waitUntil(self.clients.claim()) 50 | }) 51 | 52 | /** 53 | * @Functional Fetch 54 | * All network requests are being intercepted here. 55 | * 56 | * void respondWith(Promise r) 57 | */ 58 | self.addEventListener('fetch', event => { 59 | // Skip some of cross-origin requests, like those for Google Analytics. 60 | if (HOSTNAME_WHITELIST.indexOf(new URL(event.request.url).hostname) > -1) { 61 | // Stale-while-revalidate 62 | // similar to HTTP's stale-while-revalidate: https://www.mnot.net/blog/2007/12/12/stale 63 | // Upgrade from Jake's to Surma's: https://gist.github.com/surma/eb441223daaedf880801ad80006389f1 64 | const cached = caches.match(event.request) 65 | const fixedUrl = getFixedUrl(event.request) 66 | const fetched = fetch(fixedUrl, { 67 | cache: 'no-store' 68 | }) 69 | const fetchedCopy = fetched.then(resp => resp.clone()) 70 | 71 | // Call respondWith() with whatever we get first. 72 | // If the fetch fails (e.g disconnected), wait for the cache. 73 | // If there’s nothing in cache, wait for the fetch. 74 | // If neither yields a response, return offline pages. 75 | event.respondWith( 76 | Promise.race([fetched.catch(_ => cached), cached]) 77 | .then(resp => resp || fetched) 78 | .catch(_ => { 79 | /* eat any errors */ 80 | }) 81 | ) 82 | 83 | // Update the cache with the version we fetched (only for ok status) 84 | event.waitUntil( 85 | Promise.all([fetchedCopy, caches.open(RUNTIME)]) 86 | .then(([response, cache]) => response.ok && cache.put(event.request, response)) 87 | .catch(_ => { 88 | /* eat any errors */ 89 | }) 90 | ) 91 | } 92 | }) 93 | -------------------------------------------------------------------------------- /_navbar.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | * **[Syllabus](README.md)** 4 | * **[Tracker](https://docs.google.com/spreadsheets/d/1t88XMzn6LieVWLkR4KBi7_XHW-4-YxxxjviY16MJq1c/edit?usp=sharing)** 5 | * [Make School](https://www.makeschool.com) 6 | -------------------------------------------------------------------------------- /_sidebar.md: -------------------------------------------------------------------------------- 1 | - [Syllabus](README.md) 2 | -------------------------------------------------------------------------------- /assessment/Screen-Shot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/assessment/Screen-Shot.png -------------------------------------------------------------------------------- /final-assessment-guide.md: -------------------------------------------------------------------------------- 1 | # Final Assessment Guide 2 | 3 | For the final assessment you will need to create a project in class that shows you have mastered the course learning objectives. 4 | 5 | For the final assessment expect to do some or all of the things listed below. The final assessment will be open note. 6 | 7 | - Write JavaScript 8 | - Use CSS Styles 9 | - [Create a React Project using create react app](https://github.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/blob/master/Lessons/Lesson-07.md) 10 | - [Run your React project from the console](https://github.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/blob/master/Lessons/Lesson-07.md#getting-started) 11 | - [Create and display a React component](https://github.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/blob/master/Lessons/Lesson-07.md#defining-your-own-components) 12 | - [Pass props to a component](https://github.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/blob/master/Lessons/Lesson-07.md#props) 13 | - [Define a component that uses state](https://github.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/blob/master/Lessons/Lesson-09.md#react-component-state) 14 | - [Class Component](https://github.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/blob/master/Lessons/Lesson-09.md#class-based-components) 15 | - [Hooks Component](https://reactjs.org/docs/hooks-state.html) 16 | - [Use React Router](https://github.com/MakeSchool-Tutorials/React-Fundamentals/blob/master/P05-Adding-React-Router/content.md) 17 | - [Use a form input with React](https://github.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/blob/master/Lessons/Lesson-10.md#using-input-with-react) 18 | - [Using a form input with Hooks](https://github.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/blob/master/Lessons/Lesson-10.md#hooks) 19 | 20 | ## Rubric for the final 21 | 22 | Use this rubric to assess how your understanding of the learning objectives. You should be striving for an average score of 1 or greater in each row. 23 | 24 | | Expectations | Does not meet (0) | Meets (1) | Exceeds (2) | 25 | |:-------------|:--------------|:-----|:---------| 26 | | **Completion** | Less than 70% of the challenges completed. | Completed 70 to 100% of the challenges | Completed the stretch challenges. | 27 | | **Functionality** | Project does not function or throws errors. | Project runs without errors. | Project runs well without warnings in the console. | 28 | | **Code Quality** | Code editor shows warnings or linter errors. Formatting is inconsistent. | Code is well written and well formatted. | Code is well written and well organized. Careful attention has been paid to names for variables, functions, components. | -------------------------------------------------------------------------------- /notes/array-loops-praxctice-problems.md: -------------------------------------------------------------------------------- 1 | An array is a collection of things. When we write an array in code it looks like this: 2 | 3 | const myArray = ['a', 'b', 'c'] 4 | 5 | myArray is a list of strings. 6 | 7 | We will call the things in an array "elements". Each element is stored at an index. The index is it's position and the first position is 0. In myArray 'a' is at index 0 and 'c' is at index 2. 8 | 9 | To access elements in an array use the square brackets with the index. 10 | 11 | console.log( myArray[1] ) // 'b' 12 | 13 | 14 | const numbers = [7,11,23,1,13,17,2,19,3,5,1] 15 | 16 | 17 | Challenge 1 18 | 19 | In the code editor is n array of numbers your goal is to add all of the numbers together to find the total. Follow these steps: 20 | 21 | Define a variable to hold the total (outside the loop) 22 | Use a for loop to loop through each element in the array and add it to the total. 23 | Log the total to the console when the loop has finished. 24 | 25 | Challenge 2 26 | 27 | Find the average of all values in the array. Do this by dividing the total by the length of the array. 28 | 29 | Challenge 3 30 | 31 | Find the largest number in the array. Do this by 32 | 33 | Define a variable that will hold the largest number (outside the loop). Set the value to 0. 34 | Write a for loop that will loop once for each item in the array. 35 | Inside the loop, use an if statement to compare the current element in the array against your variable. If the value is larger set the value of the variable to the value from the array. 36 | Log the largest value to the console. 37 | 38 | Challenge 4 39 | 40 | Find the smallest value in the array. See if you can figure this out on your own. Use the steps from the previous challenge. The starting value of your variable will need to larger than the largest value in the array. 41 | 42 | Challenge 5 43 | 44 | Find the number that is not the same as the others. 45 | 46 | const test = [1,1,1,1,1,0,1,1,1,1] 47 | 48 | 49 | 05 - Array 50 | 51 | Here is another problem to solve with arrays and loops. 52 | 53 | Challenge 54 | 55 | Each of the test arrays contain some numbers. Each array has one number that is different from the others. You'r goal is to find the number that is different. 56 | 57 | I've written a function that takes an array. 58 | Then 59 | 60 | const test_1 = [1,1,1,1,1,0,1,1,1,1] 61 | const test_2 = [2,3,3,3,3,3,3,3,3,3] 62 | const test_3 = [5,6,5,5,5,5,5,5,5,5] 63 | 64 | function findUnique(array) { 65 | // find the unique number in array and return it 66 | 67 | return 68 | } 69 | 70 | console.log( findUnique(test_1) ) // 0 71 | console.log( findUnique(test_2) ) // 2 72 | console.log( findUnique(test_3) ) // 6 73 | 74 | 75 | --- 76 | 77 | 05 - Array 78 | 79 | Here is another problem to solve with arrays and loops. 80 | 81 | Challenge 82 | 83 | Each of the test arrays contain some numbers. Each array has one number that is different from the others. You'r goal is to find the number that is different. 84 | 85 | I've written a function that takes an array. Your' job is to find the unique element in the array. You write your code inside the function. 86 | 87 | Follow these steps or make up your own solution. 88 | 89 | This solution gets the first two numbers from the array then loops through the rest. Looking at the three numbers all three will be the same or one of them will be different. 90 | 91 | 1. Make a variable a and set it equal to the first element in array 92 | 2. Make a second variable b and set it equal to the second element in the array 93 | 3. Now define a loop that will start counting from 2 to the length of the array 94 | 4. Inside your loop define a new variable c and set it equal to the element at the index of the loop 95 | 5. Compare all three variables. If they are all equal don't do anything and let the loop continue. If they don't match find the one that doesn't match the other two and return it. 96 | 97 | Below this I've called the function with each of the test arrays defined above. When your code is working correctly the console should display: 98 | 99 | 0 100 | 2 101 | 6 102 | 8 103 | 104 | Solution 105 | ```JS 106 | function findUnique(array) { 107 | // find the unique number in array and return it 108 | let a = array[0] 109 | let b = array[1] 110 | for (let n = 2; n < array.length; n += 1) { 111 | let c = array[n] 112 | if (a !== b && a !== c) { 113 | return a 114 | } else if (b !== c) { 115 | if (a === b) { 116 | return c 117 | } 118 | return b 119 | } 120 | } 121 | } 122 | ``` -------------------------------------------------------------------------------- /notes/assessment.md: -------------------------------------------------------------------------------- 1 | # FEW 1.2 Assessment 2 | 3 | ## Challenge 1 4 | 5 | Make a new React project. 6 | 7 | ## Challenge 2 8 | 9 | Create a component that displays: 10 | 11 | - FEW 1.2 Final Assessment 12 | - Your name 13 | 14 | ## Challenge 3 15 | 16 | Use React Router to create two Routes in your project. These routes will be used to display the two components you'll create below. 17 | 18 | ## Challenge 4 19 | 20 | 21 | -------------------------------------------------------------------------------- /notes/old/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Product College Courses 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /notes/old/README.md: -------------------------------------------------------------------------------- 1 | # FEW 1.2 Foundation JavaScript 2 | 3 | ## Course Description 4 | 5 | Deepen your understanding of the JavaScript language by creating games. 6 | 7 | During this course you will build three games with the mindset of someone working on, maintaining, and updating a codebase that you are responsible for. Along the way, you will work with many core features of the JavaScript language. 8 | 9 | The course will cover foundational JavaScript, debugging JavaScript and working with various JavaScript Libraries to build applications and games. Classes and Object Oriented Programming (OOP) are introduced with a closer look at how OOP is uniquely implemented in JavaScript. 10 | 11 | ### Why you should take this class 12 | 13 | JavaScript is one of the most important languages in use today. You work with it daily in everything you interact with from web sites to mobile applications, to embedded IoT devices. Applications built with JavaScript have the highest potential impact and the lowest barrier to entry. If you want to create an application and put in front of the widest array of users you'll probably want to build it with JavaScript. 14 | 15 | ## Prerequisites: 16 | 17 | [FEW 1.1](https://github.com/Make-School-Courses/FEW-1.1-Web-Foundations) or equivalent 18 | 19 | ## Learning Outcomes 20 | 21 | Students by the end of the course will be able to ... 22 | 23 | 1. Write fundamental JavaScript including variables, loops, conditionals, and classes with professional syntax 24 | 1. Design & Implement web games with JS 25 | 1. Write functions and differentiate function types; closures, callbacks, and handlers 26 | 1. Modify the DOM with JavaScript 27 | 1. Define scope and differentiate between function and block scope 28 | 1. Use developer tools to debug projects 29 | 30 | ## Schedule 31 | 32 | **NOTE:** Due to the shorter summer sessions, for some class sessions you will see multiple topics covered. This schedule compression is to ensure that we cover the same material that we normally would in non-summer terms. 33 | 34 | **Course Dates:** Tuesday, July 9 – Thursday, August 15, 2019 (6 weeks) 35 | 36 | **Class Times:** Tuesday and Thursday at 3:30–5:20pm (12 class sessions) 37 | 38 | | Class | Date | Topics | 39 | |:-----:|---------------:|:--------------------------------| 40 | | 1 | Tue, July 9 | [JavaScript with Games intro](class-01) | 41 | | 2 | Thu, July 11 | [Loops and Conditionals](class-02) | 42 | | 3 | Tue, July 16 | [Class Objects & OOP](class-03) | 43 | | 4 | Thu, July 18 | [Oregon Trail](class-04) | 44 | | 5 | Tue, July 23 | [Updating and Refactoring](class-05) | 45 | | 6 | Thu, July 25 | [Working with Class Objects](class-06) | 46 | | 7 | Tue, July 30 | [Debugging and Code Review](class-07) | 47 | | 8 | Thu, August 1 | [Inheritance and Extend](class-09) | 48 | | 9 | Tue, August 6 | [Wrapping Up Oregon Trail](class-10) | 49 | | 10| Thu, August 8 | [Phaser](class-08)
**/**
[Phaser Tutorial](class-11) | 50 | | 11| Tue, August 13 | [Final Class presentation](class-13) | 51 | | 12| Thu, August 15 | [Final Assessment](class-14) | 52 | 53 | ## Class Assignments 54 | 55 | - Break Out 56 | - You make a repo for this and post it to the tracker 57 | - You will get the game working attempt challenges 58 | - Use the rubric to gauge your project 59 | - Oregon Trail 60 | - You will make a repo for this project and enter it in the tracker 61 | - Get the game working and attempt the challenges 62 | - Use the rubric to gauge your progress 63 | - Phaser JS game 64 | - You will make a repo for this and enter it in the tracker 65 | - You can make anything you like. Try your best to scope this to something you can complete by the end of the term. 66 | - Use the rubric to gauge your progress 67 | 68 | ### Book/Reading 69 | 70 | - https://eloquentjavascript.net/ 71 | 72 | ### Study Resources 73 | 74 | - https://repl.it/classroom/invite/ZLKqpSw 75 | - http://www.jshero.net/en/success.html 76 | - https://www.codecademy.com/learn/introduction-to-javascript 77 | 78 | ## Evaluation 79 | To pass this course you must meet the following requirements: 80 | 81 | - Complete all required tutorials 82 | - Pass all projects according to the associated project rubric 83 | - Pass the final summative assessment >=75% 84 | - Actively participate in class and abide by the attendance policy 85 | - Make up all classwork from all absences 86 | 87 | ## Make School Course Policies 88 | 89 | - [Program Learning Outcomes](https://make.sc/program-learning-outcomes) 90 | - [Grading System](https://make.sc/grading-system) 91 | - [Diversity and Inclusion Statement](https://make.sc/diversity-and-inclusion-statement) 92 | - [Academic Honesty](https://make.sc/academic-honesty-policy) 93 | - [Attendance Policy](https://make.sc/attendance-policy) 94 | - [Course Credit Policy](https://make.sc/course-credit-policy) 95 | - [Disability Services (Academic Accommodations)](https://make.sc/disability-services) 96 | - [Student Handbook](https://make.sc/student-handbook) 97 | -------------------------------------------------------------------------------- /notes/old/class-01/README.md: -------------------------------------------------------------------------------- 1 | # FEW 1.2 - Class 1 2 | 3 | ## Learn JavaScript 4 | 5 | You're hired! Consider this class your job for the next 7 weeks. You'll be responsible for making three games, maintaining and improving the code base for your games, keeping notes and documentation for the code that you produce. 6 | 7 | It's your job to put in regular hours working on the code you are responsible for. 8 | 9 | You will maintain a GitHub Repo for each project. **You need to commit each time you work on the project. For each session you work you should have at least one commit.** This is a requirement. 10 | 11 | ## Objectives 12 | 13 | - Use JavaScript to create applications of medium complexity 14 | - Implement arrays, including multi-dimensional arrays 15 | - Define objects with Object Literal notation 16 | - Implement control flow to solve problems 17 | 18 | ## Getting started 19 | 20 | The first game you're repsonsible for is Breakout! It's a classic arcade game. You need to make a web version written in JavaScript. 21 | 22 | Start with a new repo for the project. Create a repo and add the repo link to the class progress tracker. 23 | 24 | You'll be followinfg the tutorial here: 25 | 26 | https://developer.mozilla.org/en-US/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript 27 | 28 | There are 10 pages in the tutorial you should have at least one commit for each page/step of the tutorial. 29 | 30 | Q: Why so many commits? 31 | 32 | A: The whole purpose of making commits is to allow you and your team to revisit work prior to a change. Actually your commits should be more ganular than just the 10 steps here! Add a new file make a commit. Update a function make a commit. 33 | 34 | Q: Does this really serve a purpose? 35 | 36 | A: Often not, but in the few cases it's invaluable in helping track down an error. It's industry best practice. It's industry best practice that you should be familiar with. Might as well get in a good practice now. 37 | 38 | ### Why do this tutorial? 39 | 40 | This tutorial makes an application that has a majority of the JavaScript language features you will have to master to be an expert at JS! Might as well learn them by making a game! 41 | 42 | The tutorial contains: 43 | 44 | - functions 45 | - variables 46 | - Arrays 47 | - Objects 48 | - loops 49 | - if then statements 50 | 51 | Beyond these the game has gigher level concepts that are important to designing software applications. 52 | 53 | - code structure 54 | - order of operations 55 | - control flow 56 | - off by one errors... 57 | 58 | It is essential that you master these features to make a career in Software development. Using these features to solve problems and create solutions is an important skill. This tutorial solves some interesting problems using all of these tools. Trying your best to understand the problems that are being solved in the tutorial will help you at technical job interviews in the future! 59 | 60 | ## Starting the tutorial 61 | 62 | https://developer.mozilla.org/en-US/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript 63 | 64 | Read the introduction and move on to the first page of the tutorial: Create the Canvas and draw on it. 65 | 66 | The class will do this together then discuss it. 67 | 68 | ## Homework: Breakout with JS 69 | 70 | [Breakout](https://en.wikipedia.org/wiki/Breakout_(video_game)) is a classic arcade game. It's simple and has been ported to almost every platform. Your job is to make the JavaScript version. 71 | 72 | Your goal is to build the tutorial [here](https://developer.mozilla.org/en-US/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript) 73 | 74 | The tutorial is short and contains completed functional code sample at the end of each section, use this to check your work as you progress. 75 | 76 | Read the tutorial and complete the game. Your tutorial should be functional! The tutorial shows the complete sample code at the end of every section. You can test your process against this as you work. Test your work and play the game! 77 | 78 | Study the code and do your best to understand how the code functions and why the game behaves as it does. Look closely at the game, be sure to play. Change some of the values and see how they affect the game. 79 | 80 | ### Due: Class 2 81 | 82 | After completing the tutorial You will be working on challenges based on the tutorial. This is why it is essential that your tutorial is functioning when you come to class 2. 83 | 84 | ## Breakout Tutorial 85 | 86 | | - | Does not meet expectations | Meets expectations | Exceeds expectations | 87 | |:-------------|:------------------|:-------------------------|:---------------------| 88 | | **Completed** | Did **not complete** | **Completed** the tutorial | Modified the tutorial and **improved** on the existing code | 89 | | **Functional** | Is **not functional** | Base tutorial **functional** | Modified the existing code adding improvements, uses `const` and `let` over `var` where appropriate, **added new features** | 90 | | **Code quality** | Indentation is bad, white space is **inconsistent** | Uses consistent indentation and spacing, code is **well formatted** | Well written and **well commented**, code is well organized with variables at the top, and functions arranged logically | 91 | | **Work Ethic** | **Did not commit** when working on project | One commit for **each step**. | Commits **clearly documented** process | 92 | -------------------------------------------------------------------------------- /notes/old/class-01/assignment.md: -------------------------------------------------------------------------------- 1 | # FEW 1.2 - Foundation JavaScript - Assignment 2 | 3 | Learn JavaScript by making games! The first Game is Breakout! 4 | 5 | ## What you will learn 6 | 7 | The basic tutorial covers many of the core and important JS features that you need to be familiar with. This includes: 8 | 9 | - Arrays 10 | - Objects 11 | - Loops 12 | - If then else 13 | - functions 14 | - and more... 15 | 16 | The whole tutorial is vanilla JS and uses no libraries or other code. This is a good opportunity to learn the fundamentals of JS. 17 | 18 | ## Project Requirements 19 | 20 | Your goal is to complete the tutorial below. Read the tutorial, follow the instructions. The tutorial creates the classic arcade game Breaout! The end of easch section has the completed functional code, check your work against this or skip head if you are confused. 21 | 22 | https://developer.mozilla.org/en-US/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript 23 | 24 | ### Deliverables 25 | 26 | A link to your completed tutorial in a GitHub repo. Add the link to the progress tracker. 27 | 28 | ## Due Date 29 | 30 | Class 2 31 | 32 | ## Rubric 33 | 34 | -------------------------------------------------------------------------------- /notes/old/class-02/images/Break-Bricks-More.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/notes/old/class-02/images/Break-Bricks-More.png -------------------------------------------------------------------------------- /notes/old/class-02/images/Break-Out-Bricks-Colors-Alternate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/notes/old/class-02/images/Break-Out-Bricks-Colors-Alternate.png -------------------------------------------------------------------------------- /notes/old/class-02/images/Break-Out-Bricks-Colors-Columns.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/notes/old/class-02/images/Break-Out-Bricks-Colors-Columns.png -------------------------------------------------------------------------------- /notes/old/class-02/images/Break-Out-Bricks-Colors-Rows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/notes/old/class-02/images/Break-Out-Bricks-Colors-Rows.png -------------------------------------------------------------------------------- /notes/old/class-02/images/Break-Out-Bricks-Random.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/notes/old/class-02/images/Break-Out-Bricks-Random.png -------------------------------------------------------------------------------- /notes/old/class-02/images/Break-Out-Bricks-sizes-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/notes/old/class-02/images/Break-Out-Bricks-sizes-2.png -------------------------------------------------------------------------------- /notes/old/class-02/images/Break-Out-Bricks-sizes-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/notes/old/class-02/images/Break-Out-Bricks-sizes-3.png -------------------------------------------------------------------------------- /notes/old/class-02/images/Break-Out-Bricks-sizes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/notes/old/class-02/images/Break-Out-Bricks-sizes.png -------------------------------------------------------------------------------- /notes/old/class-02/images/Break-Out-Bricks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/notes/old/class-02/images/Break-Out-Bricks.png -------------------------------------------------------------------------------- /notes/old/class-04/images/Trees.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/notes/old/class-04/images/Trees.png -------------------------------------------------------------------------------- /notes/old/class-04/images/wagon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/notes/old/class-04/images/wagon.png -------------------------------------------------------------------------------- /notes/old/class-06/notes/minute-by-minute.md: -------------------------------------------------------------------------------- 1 | - Intro 2 | - Update the Tracker 3 | -- Attendance 4 | - Classes and Game Structure 5 | - Review the properties and methods of each class 6 | - _Optional_ Template Strings and Destructuring 7 | - Template Strings 8 | - Destructuring Objects 9 | - Work: Oregon Trail 10 | - Break 10min 11 | - Work: Oregon Trail 12 | - Code Review 13 | - Project One - Volunteer 14 | - Project two - Random 15 | 16 | Notes for Code Review 17 | 18 | A code review, at its core, is a conversation about a set of proposed changes. 19 | 20 | Opportunity to concurrently learn and teach while also strengthening relationship with peers. 21 | 22 | Authors should annotate source code before the review 23 | 24 | Understand the “Why” of changes 25 | 26 | Giving Positive Feedback 27 | 28 | Code Review Comment Explained Well -------------------------------------------------------------------------------- /notes/old/class-07/README.md: -------------------------------------------------------------------------------- 1 | # FEW 1.2 - Class 7 2 | 3 | ## Debugging and Code Review 4 | 5 | Debugging and code review should be a regular process in development. 6 | 7 | ## Objectives 8 | 9 | - Identify and use debugging tools 10 | - Develop debugging and problem solving strategies 11 | 12 | ## Debugging tools with JS 13 | 14 | ### Debugging in the Browser 15 | 16 | The more complex your code becomes the more tools you need to 17 | help you solve the problems that will eventually arise. 18 | 19 | Read this [article](https://developers.google.com/web/tools/chrome-devtools/javascript/) 20 | 21 | Follow the tutorial example then try these techniques on your project. 22 | 23 | ## After class 24 | 25 | Continue work on the Oregon Trail project. The goal is to have this finished the half of next week class 9. 26 | 27 | ## Resources 28 | 29 | - https://developers.google.com/web/tools/chrome-devtools/javascript/ 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /notes/old/class-07/event-listeners-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |

Key Code:

9 | 10 | 25 | 26 | -------------------------------------------------------------------------------- /notes/old/class-07/event-listeners.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |

Key Code:

9 | 10 | 61 | 62 | -------------------------------------------------------------------------------- /notes/old/class-07/example-01.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 21 | 22 | 23 | 24 |
25 |
26 |
27 |

000

28 |

000

29 |

30 | 31 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /notes/old/class-09/README.md: -------------------------------------------------------------------------------- 1 | # FEW 1.2 Class 9 2 | 3 | Solving problems and researching documentation. 4 | 5 | ## Intro 6 | 7 | Reading the documentation is key to working with any library. The only reason you understand the code you write is because you wrote it. 8 | No one expects you to understand what parameters are required for 9 | a method that you have never heard of. 10 | 11 | This is why documentation exists. 12 | 13 | ## Objectives 14 | 15 | - Use Inheritance with JS 16 | - Build Objects from other Objects with Extends 17 | 18 | ## OOP 19 | 20 | A class allows you to wrap all of the functions and variables, this the actions and data required by a system, into a single element called an object. 21 | 22 | Objects are great because they encapsulate, store methods and properties in one place. They are also reproducible, that is you can as many instances of an object from a class as you might need. 23 | 24 | Together these last two points are why it's worth learning Object 25 | Oriented Programming. 26 | 27 | ## Extending Classes === Inheritence 28 | 29 | A Class needs to be generic enough to use but this can also be frustrating when a class either doesn't do enough, it's too generic, or does too much and is so specific it can't be reused. 30 | 31 | Inheritance to the rescue! Any class can be extended. By extending a 32 | class you are making a new Class that gains all of the properties and methods from the other class. 33 | 34 | ### Why extend a class? 35 | 36 | When you find you are writing two or more classes that are not the same 37 | but share features you can write a base class they both share. This allows you to make changes to the base functionality of both classes in 38 | one place. 39 | 40 | In some cases, you may have a class that has basic features you need, 41 | but you want to add more features. This is a good time to extend that class. 42 | 43 | In the beginning, you may find it more complex to puzzle out which class 44 | is responsible for which piece of functionality. Later when you are more comfortable with inheritance you'll appreciate being able to make changes to a whole group of classes in a single location. 45 | 46 | ### Example 47 | 48 | For example, imagine the BreakOut game. You might have created classes 49 | for the Ball, Brick, and Paddle. These each need properties `x` and `y`. 50 | 51 | ```JavaScript 52 | class Ball { 53 | constructor() { 54 | this.x = 0 55 | this.y = 0 56 | } 57 | } 58 | 59 | class Brick { 60 | constructor() { 61 | this.x = 0 62 | this.y = 0 63 | } 64 | } 65 | 66 | class Paddle { 67 | constructor() { 68 | this.x = 0 69 | this.y = 0 70 | } 71 | } 72 | ``` 73 | 74 | These implementations have a lot of duplication. You can save yourself 75 | some trouble by adding a superclass lets call it Sprite, that Ball, 76 | Brick and Paddle inherit from. 77 | 78 | ```JavaScript 79 | class Sprite { 80 | constructor() { 81 | this.x = 0 82 | this.y = 0 83 | } 84 | } 85 | class Ball extends Sprite { 86 | constructor() { 87 | super() 88 | } 89 | } 90 | 91 | class Brick extends Sprite { 92 | constructor() { 93 | super() 94 | } 95 | } 96 | 97 | class Paddle extends Sprite { 98 | constructor() { 99 | super() 100 | } 101 | } 102 | ``` 103 | 104 | Here the `x` and `y` properties are defined in one place. The other classes 105 | declare that they `extend Sprite`. A class that extends another class must call `super()` in its constructor! Calling super is essentially 106 | calling the `constructor()` in the superclass, Sprite in this case. 107 | 108 | If the constructor requires parameters you'll have to include them in 109 | `super()`. For example, if out implementation wanted to include values 110 | for x and y when the class was initialized we might: 111 | 112 | ```JavaScript 113 | class Sprite { 114 | constructor(x = 0, y = 0) { 115 | this.x = 0 116 | this.y = 0 117 | } 118 | } 119 | class Ball extends Sprite { 120 | constructor(x, y) { 121 | super(x, y) 122 | } 123 | } 124 | 125 | class Brick extends Sprite { 126 | constructor(x, y) { 127 | super(x, y) 128 | } 129 | } 130 | 131 | class Paddle extends Sprite { 132 | constructor(x, y) { 133 | super(x, y) 134 | } 135 | } 136 | ``` 137 | 138 | Here every subclass takes `x` and `y` in the constructor and passes these on 139 | to the superclass. The superclass includes a default value in case these values are missing. 140 | 141 | ## Extending Phaser's classes 142 | 143 | Phaser's classes exist for you to use. You can use them as is. 144 | 145 | In some cases, they also may not have all of the functionality that you might need for your uses. In these cases, you can add new properties and methods by creating a new class that extends one of the Phaser classes. 146 | 147 | ### Extending Phaser.Scene 148 | 149 | Phaser games are made up of Scenes. A scene represents one view of a game. A game might have a scene for preloading, 150 | a scene that displays a menu, and a scene to play the game. 151 | 152 | Each of these scenes would need custom code that is unique to each. A good way to organize code around this is to create custom classes that extend Phaser.Scene. 153 | 154 | ## Challenges 155 | 156 | - Refactor the tutorial code to use inheritance 157 | - Move Scenes into their own file creating a class that extends Phaser.Scene. 158 | 159 | 160 | -------------------------------------------------------------------------------- /notes/old/class-10/README.md: -------------------------------------------------------------------------------- 1 | # FEW 1.2 Class 10 2 | 3 | ## Phaser Systems 4 | 5 | Libraries are built to solve problems by abstracting solutions into functions and objects that can be used to solve a wider variety of problems. This class will look at that in the context of Phaser 3. 6 | 7 | ## Objectives 8 | 9 | - Define what a spritesheet 10 | - Define what problem a spritesheet is trying to solve 11 | - Define use casecases for spritesheet 12 | - Use Spritesheets to create animation 13 | - Solving problems with libraries 14 | - Using the documentation 15 | 16 | ## Spritesheets 17 | 18 | Sprite sheets are used in games to create animated graphics. 19 | 20 | Animation can be created in two ways 21 | 22 | 1. Animation can be created by moving things on the screen. Imagine this as animating or changing the value of numeric properties over time. 23 | 2. Animation can also be created by showing a series of images sequentially. 24 | 25 | Games will use both solutions together! 26 | 27 | The first solution is good when things move, scale, and rotate on the screen. 28 | 29 | The second solution is good when you have an element that needs a very detailed motion. For example, a character talking would require a series of images of their mouth in different shapes, a character swinging a sword etc. 30 | 31 | This second example requires us to show a series of images in sequence quickly like what happens when you watch a film or video. With the difference that we are going to apply it to a small area of the screen rather than the whole screen. 32 | 33 | What's a Spritesheet? 34 | 35 | https://www.codeandweb.com/what-is-a-sprite-sheet 36 | 37 | Watch this and discuss 38 | 39 | ## Creating Sprite Sheets with Phaser 3 40 | 41 | Let's look at this section from the tutorial: 42 | 43 | - https://phaser.io/tutorials/making-your-first-phaser-3-game/part5 44 | 45 | Look at the art and look at the code. Discuss what is going on here with a partner. 46 | 47 | Class discussion about spritesheets. 48 | 49 | ## Challenge 50 | 51 | - Continue to work on the tutorial and final project. 52 | 53 | ## Resources 54 | 55 | - 56 | 57 | 58 | -------------------------------------------------------------------------------- /notes/old/class-11/README.md: -------------------------------------------------------------------------------- 1 | # FEW 1.2 Class 11 2 | 3 | ## Physics with Phaser 4 | 5 | This class will take a closer look at Phasers Physics system. 6 | 7 | ## Objectives 8 | 9 | - 10 | 11 | ## Physics 12 | 13 | 2d physics systems define objects with arbitray 2d geometry that move, collide and interact with other objects and gravity in a way that emulates object in the real world. 14 | 15 | The physics system works by defining an Object called a body. The physics simulation applies physical effects and interactions to all bodies in the simulation resolving collisions and gravity. 16 | 17 | Bodies are assigned to Sprites that represent objects on the screen. These sprites inherit x, y, and rotation values from their physics body. 18 | 19 | Discuss physics and bodies. 20 | 21 | - What objects are involved? 22 | - Why separate Sprites and Physics Bodies? 23 | 24 | ## Challenges 25 | 26 | - Edit physics properties of bodies 27 | - Refine physics interactions 28 | - Continue working on tutorial project 29 | 30 | ## Resources 31 | 32 | - -------------------------------------------------------------------------------- /notes/old/class-12/README.md: -------------------------------------------------------------------------------- 1 | # FEW 1.2 class 12 2 | 3 | ## Troubleshooting and Lab 4 | 5 | This class will be spent troubleshooting and working on solving problems with the Phaser project. 6 | 7 | ## Objectives 8 | 9 | - Identify problems 10 | - Identify the error type 11 | - Look for the line number 12 | - Read the stack trace 13 | 14 | ## Challenges 15 | 16 | - Identify problems and solutions 17 | - Identifying the problem 18 | - View the stack trace 19 | - Identify the line and column where the error occurred 20 | - Reading the error message 21 | - Develop a strategy to solve the problem 22 | - Use console.log() 23 | - Use Chrome debugging tools 24 | - View variables in scope 25 | - Divide and conquer 26 | - Searching for answers 27 | - Defining an effective searach query 28 | - Evaluating search results 29 | 30 | -------------------------------------------------------------------------------- /notes/old/class-13/README.md: -------------------------------------------------------------------------------- 1 | # FEW 1.2 - Class 13 2 | 3 | Present your projects 4 | 5 | ## Presenting your project 6 | 7 | Be prepared to show your work in class. You should be able to explain your solution to the best of your ability. 8 | 9 | If you have any problems or errors in your code you should be able to say what where and when the problem ocurred and what you have tried to solve it so far. 10 | 11 | Look at this as an opportunity to practice for a coding interview. 12 | 13 | ## Aside: Why? 14 | 15 | Why are we learning all of the Class syntax? React! 16 | 17 | React uses ES6 class syntax heavily. React is built from 18 | components, and components are based on and written using 19 | ther ES6 class syntax. 20 | 21 | While you may or may not consider games to be fun. All of 22 | the problems you solve in games are very similar to the 23 | problems you're solving elsewhere. A two dimensional array 24 | of bricks might really be a graph of productsm matched to 25 | users as recommendations. 26 | 27 | Solving problems is your job as a software developer. You 28 | should not limit yourself in the types of problems want 29 | to solve. Instead you should be willing and able to 30 | solve any problem that comes along. 31 | 32 | Here are a few of the bigger problems you are solving: 33 | 34 | - Managing data 35 | - Multidimensional arrays 36 | - complex objects 37 | - Organizing and structuring code 38 | - Using Classes 39 | - Handing events 40 | - Dependancy Injection 41 | 42 | These ideas apply to all software development. 43 | 44 | ## Lab and Review 45 | 46 | Students work in groups to solve problems. Students offer problems they are having, list these on board. 47 | 48 | **Discuss problems and solutions.** 49 | 50 | Group/pair students to work together for a 15 to 20 min block of time with the goal of solving one of the problems from the list. 51 | 52 | **Take a break** 53 | 54 | Repeat the process again mixing group/pairs. 55 | 56 | End class with a review of the problems and solutions that were developed during class. 57 | 58 | ## After class 59 | 60 | - Finish up the Oregon Trail Project 61 | - Code review your work with another student 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /notes/old/class-14/README.md: -------------------------------------------------------------------------------- 1 | # FEW 1.2 Class 14 2 | 3 | Final Assessment 4 | 5 | ## Final assessment 6 | 7 | The final assessment will be given in class on this day. 8 | 9 | Be sure to study the following topics any or all of these will can be in the assessment. 10 | 11 | - Arrays 12 | - Object Literal notation 13 | - Loops 14 | - Conditional statements and logic 15 | - Defining classes in JS 16 | - Properties 17 | - Methods 18 | - Constructor 19 | - Extends 20 | - Dependency Injection 21 | - Scope and variables 22 | - `const`, `let`, and `var` 23 | - Block vs function scope 24 | - Closure 25 | - Template Strings 26 | 27 | ## Resources 28 | 29 | - See the study guide -------------------------------------------------------------------------------- /notes/old/notes/activity-1.js: -------------------------------------------------------------------------------- 1 | 2 | // Knight rider/scrolling message 3 | 4 | // Split string into array 5 | const strArray = "Hello World".split() 6 | 7 | // make a function that makes an array of length n 8 | function makeArray(n, str) { 9 | const arr = [] 10 | for (let i = 0; i < n; i += 1) { 11 | arr.push(str) 12 | } 13 | return arr 14 | } 15 | 16 | const display = makeArray(12, '0') 17 | 18 | // Display your array in the 19 | 20 | // 21 | 22 | function mapArrayto(targetArray, sourceArray, startIndex) { 23 | for (let i = 0; i < targetArray.length; i += 1) { 24 | 25 | } 26 | } -------------------------------------------------------------------------------- /notes/old/notes/activity-1.md: -------------------------------------------------------------------------------- 1 | # Activity Make Grid 2 | 3 | ```JavaScript 4 | 5 | ``` -------------------------------------------------------------------------------- /notes/old/notes/assignment-template.md: -------------------------------------------------------------------------------- 1 | # FEW 1.2 - Foundation JavaScript - Assignment 2 | 3 | ## What you will learn 4 | 5 | ## Project Requirements 6 | 7 | ### Deliverables 8 | 9 | ## Due Date 10 | 11 | ## Assignment -------------------------------------------------------------------------------- /notes/old/notes/boxes/index.html: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | 20 | 21 |
22 | 23 | 69 | -------------------------------------------------------------------------------- /notes/old/notes/class-03-old/images/Break-Bricks-Gradient-Bricks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/notes/old/notes/class-03-old/images/Break-Bricks-Gradient-Bricks.png -------------------------------------------------------------------------------- /notes/old/notes/class-03-old/images/Break-Bricks-Target.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/notes/old/notes/class-03-old/images/Break-Bricks-Target.png -------------------------------------------------------------------------------- /notes/old/notes/class-03-old/images/Break-Bricks-circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/notes/old/notes/class-03-old/images/Break-Bricks-circle.png -------------------------------------------------------------------------------- /notes/old/notes/class-03-old/images/Break-Bricks-gradient-back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/notes/old/notes/class-03-old/images/Break-Bricks-gradient-back.png -------------------------------------------------------------------------------- /notes/old/notes/class-03-old/images/Break-Bricks-gradient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/notes/old/notes/class-03-old/images/Break-Bricks-gradient.png -------------------------------------------------------------------------------- /notes/old/notes/class-03-old/images/Break-Bricks-rainbow-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/notes/old/notes/class-03-old/images/Break-Bricks-rainbow-1.png -------------------------------------------------------------------------------- /notes/old/notes/class-03-old/images/Break-Bricks-rainbow-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/notes/old/notes/class-03-old/images/Break-Bricks-rainbow-2.png -------------------------------------------------------------------------------- /notes/old/notes/class-03-old/images/Break-Bricks-rainbow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/notes/old/notes/class-03-old/images/Break-Bricks-rainbow.png -------------------------------------------------------------------------------- /notes/old/notes/final-assessment-2.md: -------------------------------------------------------------------------------- 1 | # Final Assessment 2 | 3 | Make a React Project - use npx create-react-app final 4 | 5 | Make a Component with your name - This component should display your first and last name. Import and display your component at the top of your App component. 6 | 7 | Make a new Component that will display a Band. It will show the name, country of origin, and the number of fans. You'll be using the data from the Metal.json. 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /notes/old/notes/final-assessment.js: -------------------------------------------------------------------------------- 1 | // Use ESLint to lint all of your code. 2 | 3 | /* 4 | 5 | You need to build a project that keeps track of 6 | 7 | */ 8 | 9 | -------------------------------------------------------------------------------- /notes/old/notes/project-phaser-rubric.md: -------------------------------------------------------------------------------- 1 | # Phaser Project Rubric 2 | 3 | | - | Does not meet expectations | Meets expectations | Exceeds expectations | 4 | |:-------------|:---------------------------|:-------------------------|:---------------------| 5 | | Completion | Did not complete | Completed tutorial | Implemented new features not found in the tutorial | 6 | | Functional | Is not functional | Base tutorial functional | Built new functionality onto the base tutorial | 7 | | Code quality | Indentation is bad spacing is inconsistent | Solved all linter warnings | Code is well commented | 8 | | Work Ethic | Did not commit when working on project | Initial commit at class and commit while working | Commits show 3 hours and commit messages clearly document process | -------------------------------------------------------------------------------- /notes/old/notes/solutions/README.md: -------------------------------------------------------------------------------- 1 | # Solutions 2 | 3 | This folder contains solutions to the projects. 4 | 5 | - [Breakout](breakout) 6 | - [Oregon Trail](oregon-trail) 7 | - [Boom Dots Phaser 3](https://github.com/soggybag/doom-bots-webpack) 8 | - [Flappy Bird Phaser 3](https://github.com/soggybag/flappy-bird-webpack) -------------------------------------------------------------------------------- /notes/old/notes/solutions/oregon-trail/css/style.css: -------------------------------------------------------------------------------- 1 | html { 2 | height: 100%; 3 | } 4 | 5 | body { 6 | padding: 0; 7 | margin: 0; 8 | border: 0; 9 | height: 100%; 10 | overflow: hidden; 11 | font-family: 'Roboto', sans-serif; 12 | font-size: 18px; 13 | line-height: 1.5; 14 | /* background-color: rgb(167, 202, 255); */ 15 | background-image: url(../images/stars-2.png); 16 | background-size: cover; 17 | } 18 | 19 | h1, h2, h3, h4, h5, h6 { 20 | font-family: 'Bai Jamjuree', sans-serif; 21 | } 22 | 23 | h1 { 24 | margin: 0 0 0 0; 25 | } 26 | 27 | p { 28 | margin: 0; 29 | } 30 | 31 | button { 32 | border: 1px solid white; 33 | border-radius: 0.5em 0 0.5em 0; 34 | background-color: black; 35 | padding: 0.5em; 36 | color: white; 37 | } 38 | 39 | .hidden { 40 | display: none; 41 | } 42 | 43 | .title { 44 | grid-area: t; 45 | color: #fff; 46 | } 47 | 48 | #journey { 49 | height: 100%; 50 | width: 800px; 51 | margin: auto; 52 | display: grid; 53 | grid-template-columns: repeat(12, 1fr); 54 | grid-template-rows: 4.5em 14em 200px; 55 | grid-template-areas: 56 | "t t t t t t t t t t t t" 57 | "a a a a b b b b b c c c" 58 | "d d d d d d d d d d d d"; 59 | grid-gap: 1em; 60 | } 61 | 62 | #event { 63 | background-color: magenta; 64 | } 65 | 66 | #progress-area { 67 | position: relative; 68 | grid-area: d; 69 | } 70 | 71 | #trees { 72 | width: 100%; 73 | image-rendering: pixelated; 74 | } 75 | 76 | #caravan { 77 | position: absolute; 78 | top: 50%; 79 | transform: translate(-50%, -50%); 80 | left: 0; 81 | } 82 | 83 | .info-box { 84 | border-radius: 1em 0 1em 0; 85 | background-color: rgba(255, 255, 255, 0.152); 86 | padding: 1em; 87 | color: #fff; 88 | } 89 | 90 | #stats-area { 91 | grid-area: a; 92 | } 93 | 94 | .stat { 95 | color: #888; 96 | } 97 | 98 | .stat-value { 99 | color: rgb(216, 216, 216); 100 | float: right; 101 | font-weight: bold; 102 | } 103 | 104 | #updates-area { 105 | overflow-y: scroll; 106 | grid-area: b 107 | } 108 | 109 | .update-positive { 110 | color: #669966; 111 | } 112 | 113 | .update-negative { 114 | color: red; 115 | } 116 | 117 | .update-neutral { 118 | color: #90908F; 119 | } 120 | 121 | #shop { 122 | grid-area: c; 123 | } 124 | 125 | .product { 126 | float: left; 127 | margin: 5px; 128 | padding: 0.5em; 129 | border: 1px solid white; 130 | border-radius: 0.5em 0 0.5em 0; 131 | font-size: 12px; 132 | } 133 | 134 | #shop button { 135 | clear: both; 136 | float: left; 137 | margin: 5px; 138 | } 139 | 140 | #attack { 141 | grid-area: c; 142 | } -------------------------------------------------------------------------------- /notes/old/notes/solutions/oregon-trail/images/Planets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/notes/old/notes/solutions/oregon-trail/images/Planets.png -------------------------------------------------------------------------------- /notes/old/notes/solutions/oregon-trail/images/Ship.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/notes/old/notes/solutions/oregon-trail/images/Ship.png -------------------------------------------------------------------------------- /notes/old/notes/solutions/oregon-trail/images/Trees.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/notes/old/notes/solutions/oregon-trail/images/Trees.png -------------------------------------------------------------------------------- /notes/old/notes/solutions/oregon-trail/images/stars-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/notes/old/notes/solutions/oregon-trail/images/stars-2.png -------------------------------------------------------------------------------- /notes/old/notes/solutions/oregon-trail/images/stars.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/notes/old/notes/solutions/oregon-trail/images/stars.jpg -------------------------------------------------------------------------------- /notes/old/notes/solutions/oregon-trail/images/wagon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Make-School-Courses/FEW-1.2-JavaScript-Foundations/25a4ce46a7648f277ce536451550d9e6122a5a32/notes/old/notes/solutions/oregon-trail/images/wagon.png -------------------------------------------------------------------------------- /notes/old/notes/solutions/oregon-trail/index.html: -------------------------------------------------------------------------------- 1 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | Oregon Trail 115 | 116 | 117 | 118 | 119 |
120 |
121 |

Oregon Trail

122 |

A totally accurate historical simulation!

123 |
124 |
125 |
Day
126 |
Distance
127 |
Crew
128 |
Dilitheum Crystals
129 |
Supplies
130 |
Credits
131 |
Phasers
132 |
Tonnage
133 |
134 | 135 |
136 | 137 | 142 | 143 | 148 | 149 |
150 | Trees Image 151 | Caravan Image 152 |
153 |
154 | 155 |
156 | 157 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | -------------------------------------------------------------------------------- /notes/old/notes/solutions/oregon-trail/js/Caravan.js: -------------------------------------------------------------------------------- 1 | // Caravan.js 2 | // --------------------------------------------------------- 3 | // Caravan 4 | 5 | class Caravan { 6 | constructor(game) { 7 | this.game = game; 8 | // Initialize Caravan with a default Object and proeprties 9 | this.init({ 10 | day: 0, 11 | distance: 0, 12 | crew: 30, 13 | food: 80, 14 | oxen: 2, 15 | money: 300, 16 | firepower: 2 17 | }); 18 | } 19 | 20 | // Initializes the caravan 21 | init({ day, distance, crew, food, oxen, money, firepower }) { 22 | this.day = day; 23 | this.distance = distance; 24 | this.crew = crew; 25 | this.food = food; 26 | this.oxen = oxen; 27 | this.money = money; 28 | this.firepower = firepower; 29 | } 30 | 31 | // update weight and capacity 32 | updateWeight () { 33 | let droppedFood = 0; 34 | let droppedGuns = 0; 35 | 36 | // how much can the caravan carry 37 | this.capacity = this.oxen * Config.WEIGHT_PER_OX + this.crew * Config.WEIGHT_PER_PERSON; 38 | 39 | // how much weight do we currently have 40 | this.weight = this.food * Config.FOOD_WEIGHT + this.firepower * Config.FIREPOWER_WEIGHT; 41 | 42 | // drop things behind if it's too much weight 43 | // assume guns get dropped before food 44 | while (this.firepower && this.capacity <= this.weight) { 45 | this.firepower--; 46 | this.weight -= Config.FIREPOWER_WEIGHT; 47 | droppedGuns++; 48 | } 49 | 50 | if (droppedGuns) { 51 | this.game.ui.notify(`Left ${droppedGuns} guns behind`, 'negative'); 52 | } 53 | 54 | while (this.food && this.capacity <= this.weight) { 55 | this.food--; 56 | this.weight -= Config.FOOD_WEIGHT; 57 | droppedFood++; 58 | } 59 | 60 | if (droppedFood) { 61 | this.game.ui.notify(`Left ${droppedFood} food provisions behind`, 'negative'); 62 | } 63 | } 64 | 65 | 66 | // update covered distance 67 | updateDistance () { 68 | // the closer to capacity, the slower 69 | const diff = this.capacity - this.weight; 70 | const speed = Config.SLOW_SPEED + diff / this.capacity * Config.FULL_SPEED; 71 | this.distance += speed; 72 | } 73 | 74 | // food consumption 75 | consumeFood () { 76 | this.food -= this.crew * Config.FOOD_PER_PERSON; 77 | 78 | if (this.food < 0) { 79 | this.food = 0; 80 | } 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /notes/old/notes/solutions/oregon-trail/js/Config.js: -------------------------------------------------------------------------------- 1 | // Config.js 2 | // -------------------------------------------------------------- 3 | // Config - holds static properties that act as default 4 | // global constants used by the game. 5 | // Get these values with: Config.PROPERTY_NAME 6 | class Config { 7 | 8 | } 9 | 10 | // constants 11 | Config.WEIGHT_PER_OX = 20; 12 | Config.WEIGHT_PER_PERSON = 2; 13 | Config.FOOD_WEIGHT = 0.6; 14 | Config.FIREPOWER_WEIGHT = 5; 15 | Config.GAME_SPEED = 800; 16 | Config.DAY_PER_STEP = 0.2; 17 | Config.FOOD_PER_PERSON = 0.02; 18 | Config.FULL_SPEED = 5; 19 | Config.SLOW_SPEED = 3; 20 | Config.FINAL_DISTANCE = 1000; 21 | Config.EVENT_PROBABILITY = 0.15; 22 | Config.ENEMY_FIREPOWER_AVG = 5; 23 | Config.ENEMY_GOLD_AVG = 50; 24 | -------------------------------------------------------------------------------- /notes/old/notes/solutions/oregon-trail/js/Game.js: -------------------------------------------------------------------------------- 1 | // Game.js 2 | // --------------------------------------------------------- 3 | // Game - The Game class creates and manages all of the 4 | // objects that run the game. 5 | 6 | 7 | class Game { 8 | // Initialize the Game Object 9 | constructor() { 10 | // Create dependent Objects 11 | this.ui = new UI(this); 12 | this.eventManager = new EventManager(this); 13 | this.caravan = new Caravan(this); 14 | 15 | // pass references - set dependencies 16 | this.caravan.ui = this.ui; 17 | this.caravan.eventManager = this.eventManager; 18 | 19 | this.ui.caravan = this.caravan; 20 | this.ui.eventManager = this.eventManager; 21 | 22 | this.eventManager.caravan = this.caravan; 23 | this.eventManager.ui = this.ui; 24 | 25 | // begin adventure! 26 | this.startJourney(); 27 | } 28 | 29 | 30 | // start the journey and time starts running 31 | startJourney () { 32 | this.gameActive = true; 33 | this.previousTime = null; 34 | this.ui.notify('A great adventure begins', 'positive'); 35 | 36 | this.step(); 37 | } 38 | 39 | 40 | // game loop 41 | step(timestamp) { 42 | 43 | // starting, setup the previous time for the first time 44 | if(!this.previousTime){ 45 | this.previousTime = timestamp; 46 | this.updateGame(); 47 | } 48 | 49 | //time difference 50 | var progress = timestamp - this.previousTime; 51 | 52 | //game update 53 | if(progress >= Config.GAME_SPEED) { 54 | this.previousTime = timestamp; 55 | this.updateGame(); 56 | } 57 | 58 | //we use "bind" so that we can refer to the context "this" inside of the step method 59 | if(this.gameActive) window.requestAnimationFrame(this.step.bind(this)); 60 | } 61 | 62 | //update game stats 63 | updateGame() { 64 | //day update 65 | this.caravan.day += Config.DAY_PER_STEP; 66 | 67 | //food consumption 68 | this.caravan.consumeFood(); 69 | 70 | //game over no food 71 | if(this.caravan.food === 0) { 72 | this.ui.notify('Your caravan starved to death', 'negative'); 73 | this.gameActive = false; 74 | return; 75 | } 76 | 77 | //update weight 78 | this.caravan.updateWeight(); 79 | 80 | //update progress 81 | this.caravan.updateDistance(); 82 | 83 | //show stats 84 | this.ui.refreshStats(); 85 | 86 | //check if everyone died 87 | if(this.caravan.crew <= 0) { 88 | this.caravan.crew = 0; 89 | this.ui.notify('Everyone died', 'negative'); 90 | this.gameActive = false; 91 | return; 92 | } 93 | 94 | //check win game 95 | if(this.caravan.distance >= Config.FINAL_DISTANCE) { 96 | this.ui.notify('You have returned home!', 'positive'); 97 | this.gameActive = false; 98 | return; 99 | } 100 | 101 | //random events 102 | if(Math.random() <= Config.EVENT_PROBABILITY) { 103 | this.eventManager.generateEvent(); 104 | } 105 | 106 | } 107 | 108 | // pause the journey 109 | pauseJourney () { 110 | this.gameActive = false; 111 | } 112 | 113 | // resume the journey 114 | resumeJourney () { 115 | this.gameActive = true; 116 | this.step(); 117 | } 118 | } 119 | 120 | -------------------------------------------------------------------------------- /notes/old/notes/solutions/oregon-trail/js/UI.js: -------------------------------------------------------------------------------- 1 | // UI.js 2 | // -------------------------------------------------------- 3 | // UI - This class is responsible for managing User Interface 4 | // elements. It shows the Attack and Shop popups and displays 5 | // notificcations as they occur. 6 | 7 | class UI { 8 | constructor(game) { 9 | this.game = game; 10 | this.shopDiv = document.getElementById('shop'); 11 | this.prodsDiv = document.getElementById('prods'); 12 | 13 | this.shopDiv.addEventListener('click', (e) => { 14 | this.shopDivHandler(e); 15 | }); 16 | } 17 | 18 | // show a notification in the message area 19 | notify (message, type) { 20 | const { ceil } = Math; 21 | document.getElementById('updates-area').innerHTML = `
Day ${ceil(this.caravan.day)}: ${message}
${document.getElementById('updates-area').innerHTML}`; 22 | } 23 | 24 | // refresh visual caravan stats 25 | refreshStats () { 26 | // Destructure some objects for easy access 27 | const { day, distance, crew, oxen, food, money, firepower, weight, capacity } = this.caravan; 28 | const { ceil, floor } = Math; 29 | 30 | // modify the dom 31 | document.getElementById('stat-day').innerHTML = `${ceil(day)}`; 32 | document.getElementById('stat-distance').innerHTML = `${floor(distance)}`; 33 | document.getElementById('stat-crew').innerHTML = `${crew}`; 34 | document.getElementById('stat-oxen').innerHTML = `${oxen}`; 35 | document.getElementById('stat-food').innerHTML = `${ceil(food)}`; 36 | document.getElementById('stat-money').innerHTML = `${money}`; 37 | document.getElementById('stat-firepower').innerHTML = `${firepower}`; 38 | document.getElementById('stat-weight').innerHTML = `${ceil(weight)}/${capacity}`; 39 | 40 | // update caravan position 41 | document.getElementById('caravan').style.left = `${(380 * distance / Config.FINAL_DISTANCE)}px`; 42 | } 43 | 44 | // show attack 45 | showAttack (firepower, gold) { 46 | var attackDiv = document.getElementById('attack'); 47 | attackDiv.classList.remove('hidden'); 48 | 49 | // keep properties 50 | this.firepower = firepower; 51 | this.gold = gold; 52 | 53 | // show firepower 54 | document.getElementById('attack-description').innerHTML = `Firepower: ${firepower}`; 55 | 56 | // init once 57 | if(!this.attackInitiated) { 58 | 59 | // fight 60 | document.getElementById('fight').addEventListener('click', this.fight.bind(this)); 61 | 62 | // run away 63 | document.getElementById('runaway').addEventListener('click', this.runaway.bind(this)); 64 | 65 | this.attackInitiated = true; 66 | } 67 | } 68 | 69 | // fight 70 | fight () { 71 | console.log('Fight!'); 72 | 73 | var firepower = this.firepower; 74 | var gold = this.gold; 75 | 76 | // damage can be 0 to 2 * firepower 77 | var damage = Math.ceil(Math.max(0, firepower * 2 * Math.random() - this.caravan.firepower)); 78 | 79 | // check there are survivors 80 | if (damage < this.caravan.crew) { 81 | this.caravan.crew -= damage; 82 | this.caravan.money += gold; 83 | this.notify(`${damage} people were killed fighting`, 'negative'); 84 | this.notify('Found $' + gold, 'gold'); 85 | } else { 86 | this.game.caravan.crew = 0; 87 | this.notify('Everybody died in the fight', 'negative'); 88 | } 89 | 90 | // resume journey 91 | document.getElementById('attack').classList.add('hidden'); 92 | this.game.resumeJourney(); 93 | } 94 | 95 | // runing away from enemy 96 | runaway () { 97 | console.log('runway!') 98 | 99 | var firepower = this.firepower; 100 | 101 | // damage can be 0 to firepower / 2 102 | var damage = Math.ceil(Math.max(0, firepower * Math.random()/2)); 103 | 104 | // check there are survivors 105 | if(damage < this.caravan.crew) { 106 | this.game.caravan.crew -= damage; 107 | this.notify(`${damage} people were killed running`, 'negative'); 108 | } 109 | else { 110 | this.gamge.caravan.crew = 0; 111 | this.notify('Everybody died running away', 'negative'); 112 | } 113 | 114 | // remove event listener 115 | // document.getElementById('runaway').removeEventListener('click', this.runaway); 116 | 117 | // resume journey 118 | document.getElementById('attack').classList.add('hidden'); 119 | this.game.resumeJourney(); 120 | } 121 | 122 | // show shop 123 | showShop (products) { 124 | console.log('Show Shop!'); 125 | console.log(products) 126 | 127 | // show shop area 128 | this.shopDiv.classList.remove('hidden'); 129 | 130 | // clear existing content 131 | this.prodsDiv.innerHTML = ''; 132 | 133 | //show products 134 | let product; 135 | for(let i = 0; i < products.length; i++) { 136 | product = products[i]; 137 | this.prodsDiv.innerHTML += `
${product.qty} ${product.item} - $${product.price}
`; 138 | } 139 | } 140 | 141 | shopDivHandler (e) { 142 | // what was clicked 143 | var target = e.target || e.src; 144 | 145 | // exit button 146 | if (target.tagName == 'BUTTON') { 147 | //resume journey 148 | this.shopDiv.classList.add('hidden'); 149 | this.game.resumeJourney(); 150 | } else if (target.tagName == 'DIV' && target.className.match(/product/)) { 151 | // Buy a Product 152 | this.buyProduct({ 153 | item: target.getAttribute('data-item'), 154 | qty: Number(target.getAttribute('data-qty')), 155 | price: Number(target.getAttribute('data-price')) 156 | }); 157 | 158 | } 159 | } 160 | 161 | // ---------------------------------- 162 | //buy product 163 | buyProduct (product) { 164 | const { item, price, qty } = product 165 | //check we can afford it 166 | if (price > this.game.caravan.money) { 167 | this.notify('Not enough money', 'negative'); 168 | return false; 169 | } 170 | 171 | this.game.caravan.money -= price; 172 | 173 | this.game.caravan[item] += qty; 174 | 175 | this.notify(`Bought ${qty} x ${item}`, 'positive'); 176 | 177 | //update weight 178 | this.game.caravan.updateWeight(); 179 | 180 | //update visuals 181 | this.refreshStats(); 182 | } 183 | } 184 | -------------------------------------------------------------------------------- /notes/old/notes/solutions/oregon-trail/js/main.js: -------------------------------------------------------------------------------- 1 | { 2 | 3 | // This script creates an instance of game in a block 4 | // This is the entry point for the program. 5 | 6 | const game = new Game(); 7 | 8 | } 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /notes/old/notes/solutions/shopping-cart-data.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | -------------------------------------------------------------------------------- /notes/old/notes/study-guide.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /notes/old/notes/study-guide.md: -------------------------------------------------------------------------------- 1 | # Study Guide 2 | 3 | The notes here are to help you prepare for the final assessment. 4 | 5 | - Arrays 6 | - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array 7 | - Multi Dimensional Arrays 8 | - https://developer.mozilla.org/en-US/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript 9 | - Dependancy Injection 10 | - [Class 04](class-04) 11 | - https://dev.to/kayis/dependency-injection-in-javascript-4km 12 | - Refactoring 13 | - [Class 4](class-04) 14 | - https://en.wikipedia.org/wiki/Code_refactoring 15 | - ES6 Classes 16 | - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes 17 | - EventListeners 18 | - https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener 19 | - Template Strings 20 | - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals 21 | - Variables: const, let, and var 22 | - https://hackernoon.com/js-var-let-or-const-67e51dbb716f 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /reveal-md.json: -------------------------------------------------------------------------------- 1 | { 2 | "separator": "^\n\n", 3 | "verticalSeparator": "^\n\n", 4 | "theme": "black", 5 | "watch": true, 6 | "title": "Syllabus Template Slides", 7 | "static": "Slides", 8 | "scripts": [ 9 | ], 10 | "assetsDir": "assets", 11 | "staticDirs": "Lessons/Images", 12 | "css": [ 13 | "Reveal/makeschool.css" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /reveal.json: -------------------------------------------------------------------------------- 1 | { 2 | "controls": true, 3 | "progress": true, 4 | "autoPlayMedia": false, 5 | "slideNumber": "c/t", 6 | "showSlideNumber": "all", 7 | "controlsTutorial": true, 8 | "controlsLayout": "edges", 9 | "transition": "slide", 10 | "transitionSpeed": "medium", 11 | "minScale": 0.5, 12 | "maxScale": 3 13 | } 14 | -------------------------------------------------------------------------------- /syllabus-guide.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # Product College Course Template 4 | 5 | This guide applies to courses taught at the PC/Make School. Tutorials or other resources 6 | should either be created as tutorials (see below) or added to Product College labs. 7 | 8 | Courses are hosted at: [Product College Courses](https://github.com/Product-College-Courses) 9 | 10 | The course hosted on GitHub should be the source of information used by students 11 | during any term. Students can always refer to a course repo for the latest up to 12 | date information, links to resources, and other relevant information. 13 | 14 | The GitHub Repo will contain the syllabus and all of the course session outlines. It will 15 | also contain vocabulary, best practice, resources, and other information. 16 | 17 | Starter code, and resources that contain directories and files should be hosted at 18 | [Product College Labs](https://github.com/Product-College-Labs). 19 | 20 | ## Create a new Course 21 | 22 | Create a new course on [Product College Courses](https://github.com/Product-College-Courses/). 23 | 24 | ### Naming the course 25 | 26 | Courses should be named with catalog abbreviation and number followed by the description 27 | followed by the course name. For example, the course: 28 | 29 | > FEW 1.1 Advanced HTML CSS JavaScript 30 | 31 | would become: 32 | 33 | > FEW-1.1-Advanced-HTML-CSS-JavaScript 34 | 35 | ### Intialize the Course with a README 36 | 37 | Intialize the course with a README.md. This will contain the course syllabus. 38 | 39 | ### Initial the course with a License 40 | 41 | Choose the MIT license. 42 | 43 | ## Use the Course Template 44 | 45 | Use the course [course-template](./course-template.md) as a starting point for your 46 | putting your course on the Product College Github. 47 | 48 | You can paste the contents of this template into your course README. What's important 49 | is the headings and outline. It's good for students if all courses follow the same 50 | structure. 51 | 52 | **Please follow this template! This is important for BPPE compliance.** 53 | 54 | Everything *not* marked *optional* should be included in the top level README in the 55 | Github repo. 56 | 57 | - [course-template](./course-template.md) 58 | 59 | ### Use Markdown 60 | 61 | Write your class using Markdown. Follow the structure of the course template. Make 62 | sensible use of Headings, Lists, and other mark up. 63 | 64 | #### Tips 65 | 66 | Use Headings in order! Only one H1 heading per page. For example the page might start 67 | with an H1, the next heading will be an H2, if another sub topic appears that needs a 68 | heading use an H3. When the next new topic appears it is an H2. 69 | 70 | ## Post to Product College Github 71 | 72 | Write your courses and post them to the product college Github. 73 | Courses should be posted to 'Product College Classes'. 74 | 75 | - https://github.com/Product-College-Courses 76 | 77 | ### Organizing Examples and Resources 78 | 79 | If your class needs to link to large and complex sample/starter projects post these 80 | to 'Product College Labs'. Small sample files can be included in the main class 81 | repository. 82 | 83 | - https://github.com/Product-College-Labs 84 | 85 | # Product College Tutorials 86 | 87 | Tutorials can be lessons that you teach in class or other instructional material that 88 | you create for PC. 89 | 90 | When creating tutorials or other resources use the Summer Academy tutorial template. 91 | When completed submit it to the web team for inclusion in make School Web site. 92 | 93 | - https://github.com/MakeSchool-Tutorials/Tutorial-Template 94 | 95 | # Track your challenges with 96 | 97 | Alan's amazing google doc spreadsheet master tracker: 98 | 99 | - https://docs.google.com/spreadsheets/d/1FZJv2AolWFZRUwx0fWTIilXurwVmHnYz-RY9XxF-KPA/edit#gid=0 100 | --------------------------------------------------------------------------------