├── .gitignore ├── README.md ├── fend-design-patterns ├── .gitignore ├── README.md ├── cat-clicker-v1 │ ├── README.md │ ├── docs │ │ └── preview.png │ ├── gulpfile.js │ ├── package.json │ └── src │ │ ├── image │ │ ├── 480x318 │ │ │ ├── cat-1-480x318.jpg │ │ │ ├── cat-10-480x318.jpg │ │ │ ├── cat-11-480x318.jpg │ │ │ ├── cat-2-480x318.jpg │ │ │ ├── cat-3-480x318.jpg │ │ │ ├── cat-4-480x318.jpg │ │ │ ├── cat-5-480x318.jpg │ │ │ ├── cat-6-480x318.jpg │ │ │ ├── cat-7-480x318.jpg │ │ │ ├── cat-8-480x318.jpg │ │ │ └── cat-9-480x318.jpg │ │ ├── 960x635 │ │ │ ├── cat-1-960x635.jpg │ │ │ ├── cat-10-960x635.jpg │ │ │ ├── cat-11-960x635.jpg │ │ │ ├── cat-2-960x635.jpg │ │ │ ├── cat-3-960x635.jpg │ │ │ ├── cat-4-960x635.jpg │ │ │ ├── cat-5-960x635.jpg │ │ │ ├── cat-6-960x635.jpg │ │ │ ├── cat-7-960x635.jpg │ │ │ ├── cat-8-960x635.jpg │ │ │ └── cat-9-960x635.jpg │ │ ├── cat-1.jpg │ │ ├── cat-10.jpg │ │ ├── cat-11.jpg │ │ ├── cat-2.jpg │ │ ├── cat-3.jpg │ │ ├── cat-4.jpg │ │ ├── cat-5.jpg │ │ ├── cat-6.jpg │ │ ├── cat-7.jpg │ │ ├── cat-8.jpg │ │ └── cat-9.jpg │ │ ├── index.html │ │ ├── scripts │ │ ├── app.js │ │ └── util.js │ │ └── styles │ │ ├── main.css │ │ └── normalize.css ├── cat-clicker-v2 │ ├── README.md │ ├── docs │ │ └── preview.png │ ├── gulpfile.js │ ├── package.json │ └── src │ │ ├── image │ │ ├── 480x318 │ │ │ ├── cat-1-480x318.jpg │ │ │ ├── cat-10-480x318.jpg │ │ │ ├── cat-11-480x318.jpg │ │ │ ├── cat-2-480x318.jpg │ │ │ ├── cat-3-480x318.jpg │ │ │ ├── cat-4-480x318.jpg │ │ │ ├── cat-5-480x318.jpg │ │ │ ├── cat-6-480x318.jpg │ │ │ ├── cat-7-480x318.jpg │ │ │ ├── cat-8-480x318.jpg │ │ │ └── cat-9-480x318.jpg │ │ ├── 960x635 │ │ │ ├── cat-1-960x635.jpg │ │ │ ├── cat-10-960x635.jpg │ │ │ ├── cat-11-960x635.jpg │ │ │ ├── cat-2-960x635.jpg │ │ │ ├── cat-3-960x635.jpg │ │ │ ├── cat-4-960x635.jpg │ │ │ ├── cat-5-960x635.jpg │ │ │ ├── cat-6-960x635.jpg │ │ │ ├── cat-7-960x635.jpg │ │ │ ├── cat-8-960x635.jpg │ │ │ └── cat-9-960x635.jpg │ │ ├── cat-1.jpg │ │ ├── cat-10.jpg │ │ ├── cat-11.jpg │ │ ├── cat-2.jpg │ │ ├── cat-3.jpg │ │ ├── cat-4.jpg │ │ ├── cat-5.jpg │ │ ├── cat-6.jpg │ │ ├── cat-7.jpg │ │ ├── cat-8.jpg │ │ └── cat-9.jpg │ │ ├── index.html │ │ ├── scripts │ │ └── app.js │ │ └── styles │ │ ├── main.css │ │ └── normalize.css ├── ud989-cat-clicker-ko-starter │ ├── README.md │ ├── image │ │ ├── 480x318 │ │ │ ├── cat-1-480x318.jpg │ │ │ ├── cat-10-480x318.jpg │ │ │ ├── cat-11-480x318.jpg │ │ │ ├── cat-2-480x318.jpg │ │ │ ├── cat-3-480x318.jpg │ │ │ ├── cat-4-480x318.jpg │ │ │ ├── cat-5-480x318.jpg │ │ │ ├── cat-6-480x318.jpg │ │ │ ├── cat-7-480x318.jpg │ │ │ ├── cat-8-480x318.jpg │ │ │ └── cat-9-480x318.jpg │ │ ├── 960x635 │ │ │ ├── cat-1-960x635.jpg │ │ │ ├── cat-10-960x635.jpg │ │ │ ├── cat-11-960x635.jpg │ │ │ ├── cat-2-960x635.jpg │ │ │ ├── cat-3-960x635.jpg │ │ │ ├── cat-4-960x635.jpg │ │ │ ├── cat-5-960x635.jpg │ │ │ ├── cat-6-960x635.jpg │ │ │ ├── cat-7-960x635.jpg │ │ │ ├── cat-8-960x635.jpg │ │ │ └── cat-9-960x635.jpg │ │ ├── cat-1.jpg │ │ ├── cat-10.jpg │ │ ├── cat-11.jpg │ │ ├── cat-2.jpg │ │ ├── cat-3.jpg │ │ ├── cat-4.jpg │ │ ├── cat-5.jpg │ │ ├── cat-6.jpg │ │ ├── cat-7.jpg │ │ ├── cat-8.jpg │ │ └── cat-9.jpg │ ├── index.html │ └── js │ │ ├── app.js │ │ └── lib │ │ └── knockout-3.2.0.js ├── ud989-retain-master │ ├── README.md │ ├── css │ │ └── retain.css │ ├── index.html │ └── js │ │ └── retain.js ├── ud989-school-attendance-master │ ├── README.md │ ├── css │ │ ├── normalize.css │ │ └── style.css │ ├── index.html │ └── js │ │ └── app.js └── ud989-todo-app │ ├── README.md │ ├── bower.json │ ├── bower_components │ ├── backbone.localStorage │ │ └── backbone.localStorage.js │ ├── backbone │ │ └── backbone.js │ ├── jquery │ │ └── jquery.js │ ├── todomvc-common │ │ ├── base.css │ │ ├── base.js │ │ └── bg.png │ └── underscore │ │ └── underscore.js │ ├── index.html │ └── js │ ├── app.js │ ├── collections │ └── todos.js │ ├── models │ └── todo.js │ ├── routers │ └── router.js │ └── views │ ├── app-view.js │ └── todo-view.js ├── fend-feed-reader ├── README.md ├── css │ ├── icomoon.css │ ├── normalize.css │ └── style.css ├── fonts │ ├── icomoon.eot │ ├── icomoon.svg │ ├── icomoon.ttf │ └── icomoon.woff ├── index.html ├── jasmine │ ├── lib │ │ └── jasmine-2.1.2 │ │ │ ├── boot.js │ │ │ ├── console.js │ │ │ ├── jasmine-html.js │ │ │ ├── jasmine.css │ │ │ ├── jasmine.js │ │ │ └── jasmine_favicon.png │ └── spec │ │ └── feedreader.js └── js │ └── app.js ├── fend-frogger ├── .gitignore ├── README.md ├── gulpfile.js ├── package.json └── src │ └── client │ ├── css │ └── style.css │ ├── images │ ├── Gem Blue.png │ ├── Gem Green.png │ ├── Gem Orange.png │ ├── Heart.png │ ├── Key.png │ ├── Rock.png │ ├── Selector.png │ ├── Star.png │ ├── char-boy.png │ ├── char-cat-girl.png │ ├── char-horn-girl.png │ ├── char-pink-girl.png │ ├── char-princess-girl.png │ ├── enemy-bug.png │ ├── grass-block.png │ ├── stone-block.png │ └── water-block.png │ ├── index.html │ ├── js │ ├── app.js │ ├── engine.js │ ├── resources.js │ └── util.js │ └── sounds │ ├── button-press.wav │ ├── collectable-pickup.wav │ ├── died.wav │ └── won.wav ├── fend-neighborhood-map ├── .gitignore ├── README.md ├── bower.json ├── gulpfile.js ├── package.json └── src │ ├── css │ ├── main.css │ └── normalize.css │ ├── image │ ├── center.svg │ ├── checkmark-green.svg │ ├── checkmark.svg │ ├── fold-arrow.svg │ ├── pin.svg │ ├── sidebar-button.svg │ ├── x-red.svg │ └── x.svg │ ├── index.html │ └── js │ ├── app.js │ ├── map.js │ ├── models │ ├── folder.js │ └── marker.js │ ├── placeInfo.js │ ├── util.js │ └── viewmodels │ ├── info-window.js │ ├── main.js │ ├── markersForm.js │ └── sidebar.js ├── fend-optimization ├── .gitignore ├── README.md ├── docs │ └── Optimization Notes ├── gulpfile.js ├── package.json └── src │ ├── css │ ├── print.css │ └── style.css │ ├── image │ ├── 2048-thumb.jpg │ ├── 2048.png │ ├── cam_be_like.jpg │ ├── mobile-thumb.jpg │ ├── mobilewebdev.jpg │ ├── pizzeria-thumb.jpg │ ├── profilepic.jpg │ └── webperf-thumb.jpg │ ├── index.html │ ├── js │ └── perfmatters.js │ ├── project-2048.html │ ├── project-mobile.html │ ├── project-webperf.html │ └── views │ ├── css │ ├── bootstrap-grid.css │ └── style.css │ ├── image │ ├── pizza.png │ ├── pizzeria-1024x768.jpg │ ├── pizzeria-256x192.jpg │ ├── pizzeria-512x384.jpg │ └── pizzeria.jpg │ ├── js │ └── main.js │ └── pizza.html ├── fend-portfolio ├── .gitignore ├── README.md ├── gulpfile.js ├── package.json └── src │ ├── app │ └── app.js │ ├── content │ ├── img │ │ ├── GitHub-Mark-32px.png │ │ ├── frogger-300x300.png │ │ ├── frogger-600x600.png │ │ ├── neighborhood-map-300x300.png │ │ ├── neighborhood-map-600x600.png │ │ ├── resume-300x300.png │ │ ├── resume-600x600.png │ │ ├── twitch-streamers-300x300.png │ │ ├── twitch-streamers-600x600.png │ │ └── udacity-logo.png │ ├── main.css │ └── normalize.css │ └── index.html ├── fend-resume ├── .gitignore ├── README.md ├── bower.json ├── gulpfile.js ├── package.json └── src │ ├── elements │ └── elements.html │ ├── img │ ├── fend-feed-reader-specs.png │ ├── fend-frogger-gameplay.png │ ├── fend-frogger-scores.png │ ├── fend-frogger-start.png │ ├── fend-neighborhood-map-clear.png │ ├── fend-neighborhood-map-delete.png │ ├── fend-neighborhood-map-info.png │ ├── fend-neighborhood-map-sidebar.png │ ├── fend-optimization-game.png │ ├── fend-optimization-home.png │ ├── fend-optimization-pizzeria.png │ ├── fend-portfolio-contact.png │ ├── fend-portfolio-top.png │ ├── fend-portfolio-work.png │ ├── fend-resume-bot.png │ ├── fend-resume-mid.png │ ├── fend-resume-top.png │ ├── junior-dev-blog.png │ ├── junior-dev-contact.png │ ├── junior-dev-landing.png │ ├── junior-dev-portfolio.png │ └── self.png │ ├── index.html │ ├── js │ ├── app.js │ └── helper.js │ └── styles │ ├── normalize.css │ └── style.css └── projects-index ├── README.md ├── build-script └── src ├── index.html ├── scripts └── main.js └── styles ├── main.css └── normalize.css /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .tmp 3 | dist 4 | .publish 5 | projects-index/src/projects 6 | projects-index/src/scripts/projects.js 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Udacity FEND Projects 2 | 3 | [View project index here.](https://tempurturtul.github.io/udacity-fend-projects/) 4 | 5 | The directories in this repository prefixed `fend` contain my completed projects from Udacity's [Front-End Web Developer Nanodegree](https://www.udacity.com/course/front-end-web-developer-nanodegree--nd001) program. 6 | 7 | Each `fend` project was added using [git-subtree](https://github.com/git/git/blob/master/contrib/subtree/git-subtree.txt) from what were originally individual repositories. (For tips on navigating individual project commit histories, see this [Stack Overflow answer](http://stackoverflow.com/a/14992078).) 8 | 9 | The `projects-index/` directory is the exception, and is original to this repository. It contains the index site hosted on this repository's `gh-pages` branch. 10 | 11 | **See project directories for project details.** 12 | -------------------------------------------------------------------------------- /fend-design-patterns/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .tmp 3 | dist 4 | .publish 5 | -------------------------------------------------------------------------------- /fend-design-patterns/README.md: -------------------------------------------------------------------------------- 1 | # Design Patterns 2 | 3 | This repository contains my work for Udacity's [JavaScript Design Patterns course](https://www.udacity.com/course/ud989-nd). 4 | 5 | The final project for the course is located in [fend-neighborhood-map](https://github.com/Tempurturtul/udacity-fend-projects/tree/master/fend-neighborhood-map). 6 | 7 | ## Contents 8 | 9 | [**cat-clicker-v1/**](cat-clicker-v1/) 10 | - A simple project built before completing any coursework. Included for comparison. 11 | 12 | [**cat-clicker-v2/**](cat-clicker-v2) 13 | - A revision of cat-clicker-v1, created using a Model-View-"Octopus" design pattern. 14 | 15 | [**ud989-cat-clicker-ko-starter/**](ud989-cat-clicker-ko-starter) 16 | - An introduction to the Knockout framework. 17 | 18 | [**ud989-retain-master/**](ud989-retain-master) 19 | - An initial introduction to the Model-View-"Octopus" design pattern later used to build cat-clicker-v2. 20 | 21 | [**ud989-school-attendance-master/**](ud989-school-attendance-master) 22 | - Practice refactoring unorganized code. 23 | 24 | [**ud989-todo-app/**](ud989-todo-app) 25 | - Practice working with an unknown codebase. 26 | -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/README.md: -------------------------------------------------------------------------------- 1 | # Cat Clicker, v1 2 | 3 | This is the first version of the "Cat Clicker" application, created before working through the [Design Patterns course](https://www.udacity.com/course/ud989-nd). 4 | 5 | It is included for comparison with [version 2](https://github.com/Tempurturtul/udacity-fend-projects/tree/master/fend-design-patterns/cat-clicker-v2), which was created after working through the course. 6 | 7 | ![Preview](docs/preview.png "A preview screenshot.") 8 | 9 | ## Quickstart 10 | 11 | **Prerequisites:** 12 | - [Node](https://nodejs.org/en/) 13 | - [Gulp](http://gulpjs.com/) 14 | 15 | **Clone the repository, navigate to this project, and install dependencies.** 16 | ``` 17 | git clone https://github.com/Tempurturtul/udacity-fend-projects.git 18 | cd udacity-fend-projects/fend-design-patterns/cat-clicker-v1/ 19 | npm install 20 | ``` 21 | 22 | **Run the default gulp task to serve source files.** *(See `gulpfile.js` for additional tasks.)* 23 | ``` 24 | gulp 25 | ``` 26 | 27 | ## Udacity's Project Requirements 28 | 29 | **Original Requirements** 30 | - ~~Displays a picture of a cat.~~ 31 | - Displays a number representing clicks. 32 | - The number of clicks increments when the cat picture is clicked. 33 | 34 | **Revised Requirements 1** 35 | - ~~Displays pictures of two cats.~~ 36 | - Displays the cat's name above the picture. 37 | 38 | **Revised Requirements 2** 39 | - Displays a list of at least 5 cats by name. 40 | - Displays a picture of the selected cat along with it's name in a display area. 41 | - Clicks tracked separately for each cat. 42 | -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/docs/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/docs/preview.png -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cat-clicker-v1", 3 | "version": "1.0.0", 4 | "private": true, 5 | "author": "Tempurturtul", 6 | "license": "MIT", 7 | "devDependencies": { 8 | "browser-sync": "^2.10.0", 9 | "del": "^2.2.0", 10 | "gulp": "^3.9.0", 11 | "gulp-cssnano": "^2.0.0", 12 | "gulp-gh-pages": "^0.5.4", 13 | "gulp-htmlmin": "^1.3.0", 14 | "gulp-if": "^2.0.0", 15 | "gulp-imagemin": "^2.4.0", 16 | "gulp-jshint": "^2.0.0", 17 | "gulp-jsonlint": "^1.1.1", 18 | "gulp-plumber": "^1.0.1", 19 | "gulp-replace": "^0.5.4", 20 | "gulp-rev-all": "^0.8.22", 21 | "gulp-uglify": "^1.5.1", 22 | "gulp-uncss": "^1.0.4", 23 | "gulp-useref": "^3.0.5", 24 | "imagemin-pngquant": "^4.2.0", 25 | "jshint": "^2.8.0", 26 | "merge-stream": "^1.0.0", 27 | "psi": "^2.0.2", 28 | "run-sequence": "^1.1.5" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/480x318/cat-1-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/480x318/cat-1-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/480x318/cat-10-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/480x318/cat-10-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/480x318/cat-11-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/480x318/cat-11-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/480x318/cat-2-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/480x318/cat-2-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/480x318/cat-3-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/480x318/cat-3-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/480x318/cat-4-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/480x318/cat-4-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/480x318/cat-5-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/480x318/cat-5-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/480x318/cat-6-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/480x318/cat-6-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/480x318/cat-7-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/480x318/cat-7-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/480x318/cat-8-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/480x318/cat-8-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/480x318/cat-9-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/480x318/cat-9-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/960x635/cat-1-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/960x635/cat-1-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/960x635/cat-10-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/960x635/cat-10-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/960x635/cat-11-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/960x635/cat-11-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/960x635/cat-2-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/960x635/cat-2-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/960x635/cat-3-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/960x635/cat-3-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/960x635/cat-4-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/960x635/cat-4-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/960x635/cat-5-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/960x635/cat-5-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/960x635/cat-6-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/960x635/cat-6-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/960x635/cat-7-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/960x635/cat-7-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/960x635/cat-8-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/960x635/cat-8-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/960x635/cat-9-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/960x635/cat-9-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/cat-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/cat-1.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/cat-10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/cat-10.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/cat-11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/cat-11.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/cat-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/cat-2.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/cat-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/cat-3.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/cat-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/cat-4.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/cat-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/cat-5.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/cat-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/cat-6.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/cat-7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/cat-7.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/cat-8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/cat-8.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/image/cat-9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v1/src/image/cat-9.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Cat Clicker v1 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 20 |
21 | 27 |
28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/scripts/util.js: -------------------------------------------------------------------------------- 1 | /** 2 | * util.js 3 | * Utility functions for use by other aspects of the program. 4 | */ 5 | 6 | (function(global) { 7 | global.util = { 8 | randomFromRange: randomFromRange, 9 | storageAvailable: storageAvailable 10 | }; 11 | 12 | /** 13 | * Returns random integer between min (included) and max (included). 14 | * @returns {number} A random integer between min and max (inclusive). 15 | */ 16 | function randomFromRange(min, max) { 17 | return Math.floor(Math.random() * (max - min + 1)) + min; 18 | } 19 | 20 | /** 21 | * Detects whether localStorage is both supported and available. 22 | * Courtesy of MDN: https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API 23 | * @param {string} type - The type of storage to check ('localStorage' for example). 24 | * @returns {boolean} True if storage is available, false otherwise. 25 | */ 26 | function storageAvailable(type) { 27 | try { 28 | var storage = global.window[type]; 29 | var x = '__storage_test__'; 30 | 31 | storage.setItem(x, x); 32 | storage.removeItem(x); 33 | 34 | return true; 35 | } 36 | catch(e) { 37 | return false; 38 | } 39 | } 40 | })(this); 41 | -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v1/src/styles/main.css: -------------------------------------------------------------------------------- 1 | * { 2 | box-sizing: border-box; 3 | } 4 | 5 | html, 6 | body { 7 | height: 100%; 8 | } 9 | 10 | body { 11 | background: #333; 12 | color: #e0e0e0; 13 | } 14 | 15 | #counter { 16 | background: #333; 17 | font-size: 1.5em; 18 | padding: 10px 10px 2px 5px; 19 | position: fixed; 20 | right: 0; 21 | text-shadow: -2px 2px 2px #222; 22 | top: 0; 23 | } 24 | 25 | ul { 26 | /*border: solid white 1px;*/ 27 | display: flex; 28 | flex-direction: column; 29 | float: left; 30 | min-height: 100%; 31 | justify-content: center; 32 | list-style: none; 33 | margin: 0; 34 | padding: 0; 35 | width: 20%; 36 | } 37 | 38 | li { 39 | cursor: default; 40 | padding: 5px 5px 5px 5%; 41 | text-shadow: -2px 2px 2px #222; 42 | } 43 | 44 | li:hover { 45 | background: #222; 46 | } 47 | 48 | li:active { 49 | background: #111; 50 | } 51 | 52 | main { 53 | align-items: center; 54 | display: flex; 55 | min-height: 100%; 56 | padding: 0 5% 0 5%; 57 | width: 80%; 58 | } 59 | 60 | .cat { 61 | padding: 10px; 62 | overflow: hidden; 63 | } 64 | 65 | h2 { 66 | color: white; 67 | font-size: 1.2em; 68 | font-variant: small-caps; 69 | margin: 0; 70 | text-align: center; 71 | text-shadow: -2px 2px 2px #222; 72 | } 73 | 74 | img { 75 | border-radius: 8px; 76 | box-shadow: -2px 2px 2px #222; 77 | width: 100%; 78 | } 79 | 80 | img:hover { 81 | box-shadow: 0 0 2px 2px rgba(255,255,255,0.25); 82 | } 83 | 84 | img:active { 85 | box-shadow: 0 0 2px 1px rgba(255,255,255,1); 86 | } 87 | -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/README.md: -------------------------------------------------------------------------------- 1 | # Cat Clicker, v2 2 | 3 | This is the second version of the "Cat Clicker" application, created after working through the [Design Patterns course](https://www.udacity.com/course/ud989-nd). 4 | 5 | ![Preview](docs/preview.png "A preview screenshot.") 6 | 7 | ## Quickstart 8 | 9 | **Prerequisites:** 10 | - [Node](https://nodejs.org/en/) 11 | - [Gulp](http://gulpjs.com/) 12 | 13 | **Clone the repository, navigate to this project, and install dependencies.** 14 | ``` 15 | git clone https://github.com/Tempurturtul/udacity-fend-projects.git 16 | cd udacity-fend-projects/fend-design-patterns/cat-clicker-v2/ 17 | npm install 18 | ``` 19 | 20 | **Run the default gulp task to serve source files.** *(See `gulpfile.js` for additional tasks.)* 21 | ``` 22 | gulp 23 | ``` 24 | 25 | ## Udacity's Project Requirements 26 | 27 | **Original Requirements** 28 | - Displays a list of cats by name. 29 | - Displays details for a selected cat; including name, picture, and clicks. 30 | - The number of clicks for the selected cat increments when the cat picture is clicked. 31 | - The selected cat changes when a cat in the list of cats is clicked. 32 | 33 | **Revised Requirements 1** 34 | - Displays an admin button that toggles display of an admin area. 35 | - Optionally displays an admin area with inputs for changing the cat's name, url, and number of clicks. (Hidden by default.) 36 | - The admin area inputs are filled in with current values. 37 | - The admin area includes a cancel button, which hides the area and discards changes. 38 | - The admin area includes a save button, which submits the changes and updates the view. 39 | -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/docs/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/docs/preview.png -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cat-clicker-v2", 3 | "private": true, 4 | "author": "Tempurturtul", 5 | "license": "MIT", 6 | "devDependencies": { 7 | "browser-sync": "^2.10.0", 8 | "del": "^2.2.0", 9 | "gulp": "^3.9.0", 10 | "gulp-cssnano": "^2.0.0", 11 | "gulp-gh-pages": "^0.5.4", 12 | "gulp-htmlmin": "^1.3.0", 13 | "gulp-if": "^2.0.0", 14 | "gulp-imagemin": "^2.4.0", 15 | "gulp-jshint": "^2.0.0", 16 | "gulp-jsonlint": "^1.1.1", 17 | "gulp-plumber": "^1.0.1", 18 | "gulp-replace": "^0.5.4", 19 | "gulp-rev-all": "^0.8.22", 20 | "gulp-uglify": "^1.5.1", 21 | "gulp-uncss": "^1.0.4", 22 | "gulp-useref": "^3.0.5", 23 | "imagemin-pngquant": "^4.2.0", 24 | "jshint": "^2.8.0", 25 | "merge-stream": "^1.0.0", 26 | "psi": "^2.0.2", 27 | "run-sequence": "^1.1.5" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/480x318/cat-1-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/480x318/cat-1-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/480x318/cat-10-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/480x318/cat-10-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/480x318/cat-11-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/480x318/cat-11-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/480x318/cat-2-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/480x318/cat-2-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/480x318/cat-3-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/480x318/cat-3-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/480x318/cat-4-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/480x318/cat-4-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/480x318/cat-5-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/480x318/cat-5-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/480x318/cat-6-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/480x318/cat-6-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/480x318/cat-7-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/480x318/cat-7-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/480x318/cat-8-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/480x318/cat-8-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/480x318/cat-9-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/480x318/cat-9-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/960x635/cat-1-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/960x635/cat-1-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/960x635/cat-10-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/960x635/cat-10-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/960x635/cat-11-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/960x635/cat-11-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/960x635/cat-2-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/960x635/cat-2-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/960x635/cat-3-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/960x635/cat-3-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/960x635/cat-4-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/960x635/cat-4-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/960x635/cat-5-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/960x635/cat-5-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/960x635/cat-6-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/960x635/cat-6-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/960x635/cat-7-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/960x635/cat-7-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/960x635/cat-8-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/960x635/cat-8-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/960x635/cat-9-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/960x635/cat-9-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/cat-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/cat-1.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/cat-10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/cat-10.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/cat-11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/cat-11.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/cat-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/cat-2.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/cat-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/cat-3.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/cat-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/cat-4.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/cat-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/cat-5.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/cat-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/cat-6.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/cat-7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/cat-7.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/cat-8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/cat-8.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/image/cat-9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/cat-clicker-v2/src/image/cat-9.jpg -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Cat Clicker v2 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 22 |
23 | 28 |
29 |
30 | 51 |
52 |
53 | 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /fend-design-patterns/cat-clicker-v2/src/styles/main.css: -------------------------------------------------------------------------------- 1 | * { 2 | box-sizing: border-box; 3 | } 4 | 5 | html, 6 | body { 7 | height: 100%; 8 | } 9 | 10 | body { 11 | background: #333; 12 | color: #f0f0f0; 13 | } 14 | 15 | .container { 16 | align-items: center; 17 | /*border: solid blue 3px;*/ 18 | display: flex; 19 | min-height: 100%; 20 | } 21 | 22 | ul { 23 | /*border: solid yellow 1px;*/ 24 | flex: 0 0 auto; 25 | list-style: none; 26 | margin: 0; 27 | padding: 0 10px 0 0; 28 | } 29 | 30 | .cat-list-entry button { 31 | background: none; 32 | border: none; 33 | height: 100%; 34 | outline: none; 35 | padding: 2px 10px 2px 10px; 36 | text-align: left; 37 | text-shadow: -2px 2px 2px #222; 38 | width: 100%; 39 | } 40 | 41 | .cat-list-entry button:hover { 42 | background: #222; 43 | } 44 | 45 | .cat-list-entry button:active { 46 | background: #111; 47 | } 48 | 49 | .selected { 50 | color: #777; 51 | } 52 | 53 | main { 54 | /*border: solid red 1px;*/ 55 | flex: 1 1 auto; 56 | text-align: center; 57 | } 58 | 59 | h2 { 60 | font-variant: small-caps; 61 | margin: 0; 62 | text-shadow: -2px 2px 2px #222; 63 | } 64 | 65 | img { 66 | border-radius: 8px; 67 | box-shadow: -2px 2px 2px #222; 68 | } 69 | 70 | img:hover { 71 | box-shadow: 0 0 2px 2px rgba(255,255,255,0.25); 72 | } 73 | 74 | img:active { 75 | box-shadow: 0 0 2px 1px rgba(255,255,255,1); 76 | } 77 | 78 | #cat-clicks { 79 | background: #333; 80 | font-size: 1.5em; 81 | position: fixed; 82 | right: 10px; 83 | text-shadow: -2px 2px 2px #222; 84 | top: 10px; 85 | } 86 | 87 | .hidden { 88 | display: none; 89 | } 90 | 91 | #admin { 92 | background: white; 93 | color: black; 94 | } 95 | 96 | @media (max-width: 500px) { 97 | .container { 98 | flex-direction: column; 99 | } 100 | 101 | ul { 102 | display: flex; 103 | flex-wrap: wrap; 104 | justify-content: center; 105 | padding: 20px 0 10px 0; 106 | } 107 | 108 | main { 109 | margin-top: 40px; 110 | } 111 | 112 | span { 113 | top: auto; 114 | bottom: 10px; 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/README.md: -------------------------------------------------------------------------------- 1 | # [Udacity Cat Clicker KO Starter](https://github.com/udacity/ud989-cat-clicker-ko-starter/tree/ad8be8da63e0381dfeb4a1db108021dd294b0556) 2 | 3 | Introduction to Knockout. 4 | -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/480x318/cat-1-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/480x318/cat-1-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/480x318/cat-10-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/480x318/cat-10-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/480x318/cat-11-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/480x318/cat-11-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/480x318/cat-2-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/480x318/cat-2-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/480x318/cat-3-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/480x318/cat-3-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/480x318/cat-4-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/480x318/cat-4-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/480x318/cat-5-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/480x318/cat-5-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/480x318/cat-6-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/480x318/cat-6-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/480x318/cat-7-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/480x318/cat-7-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/480x318/cat-8-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/480x318/cat-8-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/480x318/cat-9-480x318.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/480x318/cat-9-480x318.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/960x635/cat-1-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/960x635/cat-1-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/960x635/cat-10-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/960x635/cat-10-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/960x635/cat-11-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/960x635/cat-11-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/960x635/cat-2-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/960x635/cat-2-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/960x635/cat-3-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/960x635/cat-3-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/960x635/cat-4-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/960x635/cat-4-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/960x635/cat-5-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/960x635/cat-5-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/960x635/cat-6-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/960x635/cat-6-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/960x635/cat-7-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/960x635/cat-7-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/960x635/cat-8-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/960x635/cat-8-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/960x635/cat-9-960x635.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/960x635/cat-9-960x635.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/cat-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/cat-1.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/cat-10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/cat-10.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/cat-11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/cat-11.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/cat-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/cat-2.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/cat-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/cat-3.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/cat-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/cat-4.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/cat-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/cat-5.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/cat-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/cat-6.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/cat-7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/cat-7.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/cat-8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/cat-8.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/image/cat-9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-cat-clicker-ko-starter/image/cat-9.jpg -------------------------------------------------------------------------------- /fend-design-patterns/ud989-cat-clicker-ko-starter/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Cat Clicker 6 | 7 | 8 | 11 | 12 |
13 | 14 |

15 |

16 |
17 | cute cat 20 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /fend-design-patterns/ud989-retain-master/README.md: -------------------------------------------------------------------------------- 1 | # [Udacity Retain](https://github.com/udacity/ud989-retain/tree/6dd88680fa581da1b9d69472795aa5a57e946b91) 2 | 3 | Introduces the MVO (Model, View, Octopus) design pattern. 4 | -------------------------------------------------------------------------------- /fend-design-patterns/ud989-retain-master/css/retain.css: -------------------------------------------------------------------------------- 1 | *, 2 | *:before, 3 | *:after {box-sizing: border-box;} 4 | 5 | .new-note-form { 6 | margin-bottom: 15px; 7 | } 8 | .new-note-content { 9 | width:100%; 10 | display: block; 11 | font-size: 1.3em; 12 | } 13 | 14 | .notes { 15 | list-style-type: none; 16 | margin:0; 17 | padding: 0; 18 | } 19 | .note { 20 | display: inline-block; 21 | width: 250px; 22 | margin-right: 20px; 23 | margin-bottom: 20px; 24 | padding:10px; 25 | list-style-type: none; 26 | background-color: #cde; 27 | } 28 | 29 | .note-date { 30 | font-size:0.7em; 31 | margin-bottom: 10px; 32 | display: block; 33 | } -------------------------------------------------------------------------------- /fend-design-patterns/ud989-retain-master/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Udacity Retain 6 | 7 | 8 | 9 |
10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /fend-design-patterns/ud989-retain-master/js/retain.js: -------------------------------------------------------------------------------- 1 | $(function(){ 2 | 3 | var model = { 4 | init: function() { 5 | if (!localStorage.notes) { 6 | localStorage.notes = JSON.stringify([]); 7 | } 8 | }, 9 | add: function(obj) { 10 | var data = JSON.parse(localStorage.notes); 11 | data.push(obj); 12 | localStorage.notes = JSON.stringify(data); 13 | }, 14 | getAllNotes: function() { 15 | return JSON.parse(localStorage.notes); 16 | } 17 | }; 18 | 19 | 20 | var octopus = { 21 | addNewNote: function(noteStr) { 22 | model.add({ 23 | content: noteStr, 24 | dateSubmitted: Date.now() 25 | }); 26 | view.render(); 27 | }, 28 | 29 | getNotes: function() { 30 | return model.getAllNotes().reverse(); 31 | }, 32 | 33 | init: function() { 34 | model.init(); 35 | view.init(); 36 | } 37 | }; 38 | 39 | 40 | var view = { 41 | init: function() { 42 | this.noteList = $('#notes'); 43 | var newNoteForm = $('#new-note-form'); 44 | var newNoteContent = $('#new-note-content'); 45 | newNoteForm.submit(function(e){ 46 | octopus.addNewNote(newNoteContent.val()); 47 | newNoteContent.val(''); 48 | e.preventDefault(); 49 | }); 50 | view.render(); 51 | }, 52 | render: function(){ 53 | var htmlStr = ''; 54 | octopus.getNotes().forEach(function(note){ 55 | htmlStr += '
  • '+ 56 | '' + 57 | new Date(note.dateSubmitted).toLocaleString() + 58 | ' ' + 59 | note.content + 60 | '
  • '; 61 | }); 62 | this.noteList.html( htmlStr ); 63 | } 64 | }; 65 | 66 | octopus.init(); 67 | }); 68 | -------------------------------------------------------------------------------- /fend-design-patterns/ud989-school-attendance-master/README.md: -------------------------------------------------------------------------------- 1 | # [Udacity School Attendance](https://github.com/udacity/ud989-school-attendance/tree/03e58bb7c07a5c897a8cafbb5fd27e4eede9d5a8) 2 | 3 | Refactoring practice. 4 | -------------------------------------------------------------------------------- /fend-design-patterns/ud989-school-attendance-master/css/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | line-height: 1.6; 3 | margin: 2em; 4 | } 5 | 6 | th { 7 | background-color: #001f3f; 8 | color: #fff; 9 | padding: 0.5em 1em; 10 | } 11 | 12 | td { 13 | border-top: 1px solid #eee; 14 | padding: 0.5em 1em; 15 | } 16 | 17 | input { 18 | cursor: pointer; 19 | } 20 | 21 | /* Column types */ 22 | th.missed-col { 23 | background-color: #f00; 24 | } 25 | 26 | td.missed-col { 27 | background-color: #ffecec; 28 | color: #f00; 29 | text-align: center; 30 | } 31 | 32 | .name-col { 33 | text-align: left; 34 | } 35 | -------------------------------------------------------------------------------- /fend-design-patterns/ud989-school-attendance-master/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Udacity Attendance App 7 | 8 | 9 | 10 | 11 | 12 | 13 |

    Udacity Attendance

    14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 32 | 33 |
    Student NameDays Missed-col
    34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /fend-design-patterns/ud989-todo-app/README.md: -------------------------------------------------------------------------------- 1 | # [Udacity TODO Unknown Framework](https://github.com/udacity/ud989-todo-app/tree/3a5c6a881a67664b365a8eddb1c6f0ddd44099b6) 2 | 3 | Practice working with an unknown codebase (turns out to be Backbone). 4 | -------------------------------------------------------------------------------- /fend-design-patterns/ud989-todo-app/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "todomvc-backbone", 3 | "version": "0.0.0", 4 | "dependencies": { 5 | "backbone": "~1.1.1", 6 | "underscore": "~1.6.0", 7 | "jquery": "~2.0.0", 8 | "todomvc-common": "~0.3.0", 9 | "backbone.localStorage": "~1.1.0" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /fend-design-patterns/ud989-todo-app/bower_components/todomvc-common/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tempurturtul/udacity-fend-projects/d8075f9cce2353fc523956a9056a2fbd5d24847b/fend-design-patterns/ud989-todo-app/bower_components/todomvc-common/bg.png -------------------------------------------------------------------------------- /fend-design-patterns/ud989-todo-app/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Backbone.js • TodoMVC 6 | 7 | 8 | 9 |
    10 | 14 |
    15 | 16 | 17 | 18 |
    19 | 20 |
    21 | 26 | 36 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /fend-design-patterns/ud989-todo-app/js/app.js: -------------------------------------------------------------------------------- 1 | /*global $ */ 2 | /*jshint unused:false */ 3 | var app = app || {}; 4 | var ENTER_KEY = 13; 5 | var ESC_KEY = 27; 6 | 7 | $(function () { 8 | 'use strict'; 9 | 10 | // kick things off by creating the `App` 11 | new app.AppView(); 12 | }); 13 | -------------------------------------------------------------------------------- /fend-design-patterns/ud989-todo-app/js/collections/todos.js: -------------------------------------------------------------------------------- 1 | /*global Backbone */ 2 | var app = app || {}; 3 | 4 | (function () { 5 | 'use strict'; 6 | 7 | // Todo Collection 8 | // --------------- 9 | 10 | // The collection of todos is backed by *localStorage* instead of a remote 11 | // server. 12 | var Todos = Backbone.Collection.extend({ 13 | // Reference to this collection's model. 14 | model: app.Todo, 15 | 16 | // Save all of the todo items under the `"todos"` namespace. 17 | localStorage: new Backbone.LocalStorage('todos-backbone'), 18 | 19 | // Filter down the list of all todo items that are finished. 20 | completed: function () { 21 | return this.where({completed: true}); 22 | }, 23 | 24 | // Filter down the list to only todo items that are still not finished. 25 | remaining: function () { 26 | return this.where({completed: false}); 27 | }, 28 | 29 | // We keep the Todos in sequential order, despite being saved by unordered 30 | // GUID in the database. This generates the next order number for new items. 31 | nextOrder: function () { 32 | return this.length ? this.last().get('order') + 1 : 1; 33 | }, 34 | 35 | // Todos are sorted by their original insertion order. 36 | comparator: 'order' 37 | }); 38 | 39 | // Create our global collection of **Todos**. 40 | app.todos = new Todos(); 41 | })(); 42 | -------------------------------------------------------------------------------- /fend-design-patterns/ud989-todo-app/js/models/todo.js: -------------------------------------------------------------------------------- 1 | /*global Backbone */ 2 | var app = app || {}; 3 | 4 | (function () { 5 | 'use strict'; 6 | 7 | // Todo Model 8 | // ---------- 9 | 10 | // Our basic **Todo** model has `title`, `order`, `completed`, and `priority` attributes. 11 | app.Todo = Backbone.Model.extend({ 12 | // Default attributes for the todo 13 | // and ensure that each todo created has `title`, `completed`, and `priority` keys. 14 | defaults: { 15 | title: '', 16 | completed: false, 17 | priority: false 18 | }, 19 | 20 | // Toggle the `completed` state of this todo item. 21 | toggle: function () { 22 | this.save({ 23 | completed: !this.get('completed') 24 | }); 25 | }, 26 | 27 | // Toggle the `priority` state of this todo item. 28 | togglePriority: function () { 29 | this.save({ 30 | priority: !this.get('priority') 31 | }); 32 | } 33 | }); 34 | })(); 35 | -------------------------------------------------------------------------------- /fend-design-patterns/ud989-todo-app/js/routers/router.js: -------------------------------------------------------------------------------- 1 | /*global Backbone */ 2 | var app = app || {}; 3 | 4 | (function () { 5 | 'use strict'; 6 | 7 | // Todo Router 8 | // ---------- 9 | var TodoRouter = Backbone.Router.extend({ 10 | routes: { 11 | '*filter': 'setFilter' 12 | }, 13 | 14 | setFilter: function (param) { 15 | // Set the current filter to be used 16 | app.TodoFilter = param || ''; 17 | 18 | // Trigger a collection filter event, causing hiding/unhiding 19 | // of Todo view items 20 | app.todos.trigger('filter'); 21 | } 22 | }); 23 | 24 | app.TodoRouter = new TodoRouter(); 25 | Backbone.history.start(); 26 | })(); 27 | -------------------------------------------------------------------------------- /fend-design-patterns/ud989-todo-app/js/views/app-view.js: -------------------------------------------------------------------------------- 1 | /*global Backbone, jQuery, _, ENTER_KEY */ 2 | var app = app || {}; 3 | 4 | (function ($) { 5 | 'use strict'; 6 | 7 | // The Application 8 | // --------------- 9 | 10 | // Our overall **AppView** is the top-level piece of UI. 11 | app.AppView = Backbone.View.extend({ 12 | 13 | // Instead of generating a new element, bind to the existing skeleton of 14 | // the App already present in the HTML. 15 | el: '#todoapp', 16 | 17 | // Our template for the line of statistics at the bottom of the app. 18 | statsTemplate: _.template($('#stats-template').html()), 19 | 20 | // Delegated events for creating new items, and clearing completed ones. 21 | events: { 22 | 'keypress #new-todo': 'createOnEnter', 23 | 'click #clear-completed': 'clearCompleted', 24 | 'click #toggle-all': 'toggleAllComplete' 25 | }, 26 | 27 | // At initialization we bind to the relevant events on the `Todos` 28 | // collection, when items are added or changed. Kick things off by 29 | // loading any preexisting todos that might be saved in *localStorage*. 30 | initialize: function () { 31 | this.allCheckbox = this.$('#toggle-all')[0]; 32 | this.$input = this.$('#new-todo'); 33 | this.$footer = this.$('#footer'); 34 | this.$main = this.$('#main'); 35 | this.$list = $('#todo-list'); 36 | 37 | this.listenTo(app.todos, 'add', this.addOne); 38 | this.listenTo(app.todos, 'reset', this.addAll); 39 | this.listenTo(app.todos, 'change:completed', this.filterOne); 40 | this.listenTo(app.todos, 'filter', this.filterAll); 41 | this.listenTo(app.todos, 'all', this.render); 42 | 43 | // Suppresses 'add' events with {reset: true} and prevents the app view 44 | // from being re-rendered for every model. Only renders when the 'reset' 45 | // event is triggered at the end of the fetch. 46 | app.todos.fetch({reset: true}); 47 | }, 48 | 49 | // Re-rendering the App just means refreshing the statistics -- the rest 50 | // of the app doesn't change. 51 | render: function () { 52 | var completed = app.todos.completed().length; 53 | var remaining = app.todos.remaining().length; 54 | 55 | if (app.todos.length) { 56 | this.$main.show(); 57 | this.$footer.show(); 58 | 59 | this.$footer.html(this.statsTemplate({ 60 | completed: completed, 61 | remaining: remaining 62 | })); 63 | 64 | this.$('#filters li a') 65 | .removeClass('selected') 66 | .filter('[href="#/' + (app.TodoFilter || '') + '"]') 67 | .addClass('selected'); 68 | } else { 69 | this.$main.hide(); 70 | this.$footer.hide(); 71 | } 72 | 73 | this.allCheckbox.checked = !remaining; 74 | }, 75 | 76 | // Add a single todo item to the list by creating a view for it, and 77 | // appending its element to the `