From 3a7f183aa7560a146357f096886e51ac52ce02c3 Mon Sep 17 00:00:00 2001 From: Kyla Stearns Date: Fri, 30 Mar 2018 12:50:25 -0500 Subject: [PATCH] add final Angular --- .gitignore | 0 README.md | 0 .../javascript_basics_one.html | 0 .../javascript_basics_two.html | 0 .../JS_Fundamentals/javascript_dom_one.html | 0 .../JS_Fundamentals/javascript_dom_two.html | 0 .../JS_Fundamentals/javascript_hoisting.md | 0 .../javascript_intermediate.html | 0 .../JS_Fundamentals/javascript_math.html | 0 .../JS_Fundamentals/javascript_objects.html | 0 .../JS_Fundamentals/javascript_scroll.html | 0 ashwin_vidiyala/JS_OOP/deck_of_cards.html | 0 ashwin_vidiyala/JS_OOP/ninja_class.html | 0 ashwin_vidiyala/JS_OOP/ninja_class_three.html | 0 derek_love/JS_Advanced/GOT/baratheon.png | Bin derek_love/JS_Advanced/GOT/details.js | 0 derek_love/JS_Advanced/GOT/houses.html | 0 derek_love/JS_Advanced/GOT/lannister.jpg | Bin derek_love/JS_Advanced/GOT/stark.jpg | Bin derek_love/JS_Advanced/GOT/styles.css | 0 derek_love/JS_Advanced/GOT/targaryen.jpg | Bin derek_love/JS_Advanced/JS_library.js | 0 .../WeatherApp/styles-weatherApp.css | 0 .../JS_Advanced/WeatherApp/weatherApp.html | 0 .../WeatherApp/weatherAppScript.js | 0 derek_love/JS_Advanced/dojoQuery/dojo.js | 0 derek_love/JS_Advanced/dojoQuery/index.html | 0 derek_love/JS_Advanced/fibNacci.js | 0 derek_love/JS_Advanced/hunt_github/hunt.js | 0 derek_love/JS_Advanced/hunt_github/index.html | 0 derek_love/JS_Advanced/test.js | 0 derek_love/JS_Fun/JS Math.html | 0 derek_love/JS_Fun/JSIntermediate.html | 0 derek_love/JS_Fun/JS_Hoisting.txt | 0 derek_love/JS_Fun/JS_Objects.html | 0 derek_love/JS_Fun/JS_Scroll.html | 0 derek_love/JS_Fun/basicOne.html | 0 derek_love/JS_Fun/basicTwo.html | 0 derek_love/JS_Fun/js_dom_1.html | 0 derek_love/JS_Fun/js_dom_2.html | 0 derek_love/JS_Fun/test.js | 0 derek_love/JS_OOP/cardDeck.html | 0 derek_love/JS_OOP/ninjaOne.html | 0 derek_love/JS_OOP/ninjaThree.html | 0 derek_love/JS_OOP/ninjaTwo.html | 0 derek_love/node/carsCats/images/cat1.jpg | Bin derek_love/node/carsCats/images/cat2.jpg | Bin derek_love/node/carsCats/images/lambo.jpg | Bin derek_love/node/carsCats/server.js | 0 derek_love/node/carsCats/views/form.html | 0 derek_love/node/carsCats/views/index.html | 0 derek_love/node/carsCats/views/index2.html | 0 derek_love/node/landing/server.js | 0 derek_love/node/landing/views/dojos.html | 0 derek_love/node/landing/views/index.html | 0 derek_love/node/landing/views/ninjas.html | 0 derek_love/node/math_mod/mathlib.js | 0 derek_love/node/math_mod/server.js | 0 derek_love/node/node_server/app.js | 0 derek_love/node/node_server/dojo.html | 0 derek_love/node/node_server/index.html | 0 .../node/node_server/stylesheets/styles.css | 0 derek_love/node/test.js | 0 dillon_votaw/express/counter/package.json | 0 dillon_votaw/express/counter/server.js | 0 dillon_votaw/express/counter/static/main.css | 0 dillon_votaw/express/counter/views/index.ejs | 0 .../express/hello_express/package.json | 0 dillon_votaw/express/hello_express/server.js | 0 .../express/hello_express/static/main.css | 0 .../express/hello_express/static/main.html | 0 .../express/hello_express/views/index.ejs | 0 .../express/hello_express/views/users.ejs | 0 dillon_votaw/express/number_game/package.json | 0 dillon_votaw/express/number_game/server.js | 0 .../express/number_game/static/main.css | 0 .../express/number_game/views/index.ejs | 0 dillon_votaw/express/survey_form/package.json | 0 dillon_votaw/express/survey_form/server.js | 0 .../express/survey_form/static/main.css | 0 .../express/survey_form/views/index.ejs | 0 .../express/survey_form/views/result.ejs | 0 dillon_votaw/express/templates/index.ejs | 0 dillon_votaw/express/templates/main.css | 0 dillon_votaw/express/templates/package.json | 0 dillon_votaw/express/templates/server.js | 0 .../javascript/broken_deck_of_cards.html | 0 dillon_votaw/javascript/deck_of_cards.html | 0 dillon_votaw/javascript/dojoquery.html | 0 dillon_votaw/javascript/fib_nacci.html | 0 dillon_votaw/javascript/for_running_js.html | 0 .../javascript/fundamentals/js_basics_i.html | 0 .../javascript/fundamentals/js_basics_ii.html | 0 .../javascript/fundamentals/js_dom_i.html | 0 .../javascript/fundamentals/js_dom_ii.html | 0 .../javascript/fundamentals/js_hoisting.html | 0 .../fundamentals/js_intermediate.html | 0 .../javascript/fundamentals/js_math.html | 0 .../javascript/fundamentals/js_objects.html | 0 .../javascript/fundamentals/js_scroll.html | 0 .../game_of_thrones/game_of_thrones.html | 0 .../game_of_thrones/img/baratheon.png | Bin .../game_of_thrones/img/lannister.jpg | Bin .../javascript/game_of_thrones/img/stark.jpg | Bin .../game_of_thrones/img/targaryen.jpg | Bin .../javascript/game_of_thrones/jquery.js | 0 .../hunting_github/hunting_github.html | 0 .../javascript/hunting_github/jquery.js | 0 .../javascript/javascript_library.html | 0 dillon_votaw/javascript/jquery_template.js | 0 dillon_votaw/javascript/ninja_class_1.html | 0 dillon_votaw/javascript/ninja_class_2.html | 0 dillon_votaw/javascript/ninja_class_3.html | 0 dillon_votaw/node/cars_and_cats/apps.js | 0 .../node/cars_and_cats/images/car1.jpg | Bin .../node/cars_and_cats/images/car2.jpg | Bin .../node/cars_and_cats/images/car3.jpg | Bin .../node/cars_and_cats/images/cat1.jpg | Bin .../node/cars_and_cats/images/cat2.jpg | Bin .../node/cars_and_cats/images/cat3.jpg | Bin .../node/cars_and_cats/stylesheets/main.css | 0 .../node/cars_and_cats/views/cars.html | 0 .../node/cars_and_cats/views/cats.html | 0 .../node/cars_and_cats/views/form.html | 0 dillon_votaw/node/landing_page/app.js | 0 .../node/landing_page/templates/dojos.html | 0 .../node/landing_page/templates/error.html | 0 .../node/landing_page/templates/index.html | 0 .../node/landing_page/templates/ninjas.html | 0 dillon_votaw/node/math_module/app.js | 0 dillon_votaw/node/math_module/mathlib.js | 0 dillon_votaw/node/node_module_basics/app.js | 0 .../node/node_module_basics/my_module.js | 0 dillon_votaw/node/node_server/app.js | 0 dillon_votaw/node/node_server/dojo/dojo.html | 0 dillon_votaw/node/node_server/index.html | 0 .../node/node_server/static/js/javascript.js | 0 dillon_votaw/node/template/server.js | 0 .../node/template/stylesheets/main.css | 0 dillon_votaw/node/test.js | 0 dillon_votaw/null.txt | 0 .../faveAuthors/authors/.angular-cli.json | 60 +++++ .../Angular/faveAuthors/authors/.editorconfig | 13 ++ .../Angular/faveAuthors/authors/.gitignore | 44 ++++ .../Angular/faveAuthors/authors/README.md | 27 +++ .../faveAuthors/authors/e2e/app.e2e-spec.ts | 14 ++ .../Angular/faveAuthors/authors/e2e/app.po.ts | 11 + .../faveAuthors/authors/e2e/tsconfig.e2e.json | 14 ++ .../Angular/faveAuthors/authors/karma.conf.js | 33 +++ .../Angular/faveAuthors/authors/package.json | 48 ++++ .../faveAuthors/authors/protractor.conf.js | 28 +++ .../authors/src/app/app-routing.module.ts | 19 ++ .../authors/src/app/app.component.css | 15 ++ .../authors/src/app/app.component.html | 5 + .../authors/src/app/app.component.spec.ts | 31 +++ .../authors/src/app/app.component.ts | 12 + .../faveAuthors/authors/src/app/app.module.ts | 36 +++ .../authors/src/app/edit/edit.component.css | 42 ++++ .../authors/src/app/edit/edit.component.html | 18 ++ .../src/app/edit/edit.component.spec.ts | 25 ++ .../authors/src/app/edit/edit.component.ts | 48 ++++ .../authors/src/app/home/home.component.css | 37 +++ .../authors/src/app/home/home.component.html | 21 ++ .../src/app/home/home.component.spec.ts | 25 ++ .../authors/src/app/home/home.component.ts | 44 ++++ .../authors/src/app/http.service.spec.ts | 15 ++ .../authors/src/app/http.service.ts | 38 +++ .../authors/src/app/new/new.component.css | 42 ++++ .../authors/src/app/new/new.component.html | 19 ++ .../authors/src/app/new/new.component.spec.ts | 25 ++ .../authors/src/app/new/new.component.ts | 39 ++++ .../faveAuthors/authors/src/assets/.gitkeep | 0 .../src/environments/environment.prod.ts | 3 + .../authors/src/environments/environment.ts | 8 + .../faveAuthors/authors/src/favicon.ico | Bin 0 -> 5430 bytes .../faveAuthors/authors/src/favicon.png | Bin 0 -> 13062 bytes .../faveAuthors/authors/src/index.html | 14 ++ .../Angular/faveAuthors/authors/src/main.ts | 12 + .../faveAuthors/authors/src/polyfills.ts | 79 +++++++ .../faveAuthors/authors/src/styles.css | 1 + .../Angular/faveAuthors/authors/src/test.ts | 20 ++ .../faveAuthors/authors/src/tsconfig.app.json | 13 ++ .../authors/src/tsconfig.spec.json | 19 ++ .../faveAuthors/authors/src/typings.d.ts | 5 + .../Angular/faveAuthors/authors/tsconfig.json | 19 ++ .../Angular/faveAuthors/authors/tslint.json | 143 ++++++++++++ kyla_stearns/Angular/faveAuthors/package.json | 17 ++ kyla_stearns/Angular/faveAuthors/server.js | 109 +++++++++ .../Angular/pokemon/.angular-cli.json | 0 kyla_stearns/Angular/pokemon/.editorconfig | 0 kyla_stearns/Angular/pokemon/.gitignore | 0 kyla_stearns/Angular/pokemon/README.md | 0 .../Angular/pokemon/e2e/app.e2e-spec.ts | 0 kyla_stearns/Angular/pokemon/e2e/app.po.ts | 0 .../Angular/pokemon/e2e/tsconfig.e2e.json | 0 kyla_stearns/Angular/pokemon/karma.conf.js | 0 kyla_stearns/Angular/pokemon/package.json | 0 .../Angular/pokemon/protractor.conf.js | 0 .../Angular/pokemon/src/app/app.component.css | 0 .../pokemon/src/app/app.component.html | 0 .../pokemon/src/app/app.component.spec.ts | 0 .../Angular/pokemon/src/app/app.component.ts | 0 .../Angular/pokemon/src/app/app.module.ts | 0 .../pokemon/src/app/http.service.spec.ts | 0 .../Angular/pokemon/src/app/http.service.ts | 0 .../Angular/pokemon/src/assets/.gitkeep | 0 .../Angular/pokemon/src/assets/donuts.jpg | Bin .../pokemon/src/assets/nikesnorlax.jpg | Bin .../Angular/pokemon/src/assets/snorlax.jpg | Bin .../src/environments/environment.prod.ts | 0 .../pokemon/src/environments/environment.ts | 0 kyla_stearns/Angular/pokemon/src/favicon.ico | Bin kyla_stearns/Angular/pokemon/src/favicon.png | Bin kyla_stearns/Angular/pokemon/src/index.html | 0 kyla_stearns/Angular/pokemon/src/main.ts | 0 kyla_stearns/Angular/pokemon/src/polyfills.ts | 0 kyla_stearns/Angular/pokemon/src/styles.css | 0 kyla_stearns/Angular/pokemon/src/test.ts | 0 .../Angular/pokemon/src/tsconfig.app.json | 0 .../Angular/pokemon/src/tsconfig.spec.json | 0 kyla_stearns/Angular/pokemon/src/typings.d.ts | 0 kyla_stearns/Angular/pokemon/tsconfig.json | 0 kyla_stearns/Angular/pokemon/tslint.json | 0 kyla_stearns/Angular/productMgmt/package.json | 19 ++ .../productMgmt/products/.angular-cli.json | 60 +++++ .../productMgmt/products/.editorconfig | 13 ++ .../Angular/productMgmt/products/.gitignore | 44 ++++ .../Angular/productMgmt/products/README.md | 27 +++ .../productMgmt/products/e2e/app.e2e-spec.ts | 14 ++ .../productMgmt/products/e2e/app.po.ts | 11 + .../products/e2e/tsconfig.e2e.json | 14 ++ .../productMgmt/products/karma.conf.js | 33 +++ .../Angular/productMgmt/products/package.json | 48 ++++ .../productMgmt/products/protractor.conf.js | 28 +++ .../products/src/app/app-routing.module.ts | 20 ++ .../products/src/app/app.component.css | 34 +++ .../products/src/app/app.component.html | 12 + .../products/src/app/app.component.spec.ts | 31 +++ .../products/src/app/app.component.ts | 12 + .../products/src/app/app.module.ts | 38 +++ .../products/src/app/edit/edit.component.css | 44 ++++ .../products/src/app/edit/edit.component.html | 32 +++ .../src/app/edit/edit.component.spec.ts | 25 ++ .../products/src/app/edit/edit.component.ts | 64 ++++++ .../products/src/app/home/home.component.css | 8 + .../products/src/app/home/home.component.html | 3 + .../src/app/home/home.component.spec.ts | 25 ++ .../products/src/app/home/home.component.ts | 15 ++ .../products/src/app/http.service.spec.ts | 15 ++ .../products/src/app/http.service.ts | 34 +++ .../products/src/app/new/new.component.css | 48 ++++ .../products/src/app/new/new.component.html | 36 +++ .../src/app/new/new.component.spec.ts | 25 ++ .../products/src/app/new/new.component.ts | 47 ++++ .../product-list/product-list.component.css | 36 +++ .../product-list/product-list.component.html | 9 + .../product-list.component.spec.ts | 25 ++ .../product-list/product-list.component.ts | 43 ++++ .../productMgmt/products/src/assets/.gitkeep | 0 .../src/environments/environment.prod.ts | 3 + .../products/src/environments/environment.ts | 8 + .../productMgmt/products/src/favicon.ico | Bin 0 -> 5430 bytes .../productMgmt/products/src/favicon.png | Bin 0 -> 23792 bytes .../productMgmt/products/src/index.html | 14 ++ .../Angular/productMgmt/products/src/main.ts | 12 + .../productMgmt/products/src/polyfills.ts | 79 +++++++ .../productMgmt/products/src/styles.css | 1 + .../Angular/productMgmt/products/src/test.ts | 20 ++ .../products/src/tsconfig.app.json | 13 ++ .../products/src/tsconfig.spec.json | 19 ++ .../productMgmt/products/src/typings.d.ts | 5 + .../productMgmt/products/tsconfig.json | 19 ++ .../Angular/productMgmt/products/tslint.json | 143 ++++++++++++ kyla_stearns/Angular/productMgmt/server.js | 129 +++++++++++ kyla_stearns/Angular/products2 | 1 + kyla_stearns/Angular/restaurants/IP.txt | 1 + .../restaurants/client/.angular-cli.json | 60 +++++ .../Angular/restaurants/client/.editorconfig | 13 ++ .../Angular/restaurants/client/README.md | 27 +++ .../restaurants/client/e2e/app.e2e-spec.ts | 14 ++ .../Angular/restaurants/client/e2e/app.po.ts | 11 + .../restaurants/client/e2e/tsconfig.e2e.json | 14 ++ .../Angular/restaurants/client/karma.conf.js | 33 +++ .../Angular/restaurants/client/package.json | 48 ++++ .../restaurants/client/protractor.conf.js | 28 +++ .../client/src/app/app-routing.module.ts | 23 ++ .../client/src/app/app.component.css | 30 +++ .../client/src/app/app.component.html | 10 + .../client/src/app/app.component.spec.ts | 31 +++ .../client/src/app/app.component.ts | 12 + .../restaurants/client/src/app/app.module.ts | 40 ++++ .../edit-restaurant.component.css | 49 ++++ .../edit-restaurant.component.html | 24 ++ .../edit-restaurant.component.spec.ts | 25 ++ .../edit-restaurant.component.ts | 56 +++++ .../client/src/app/home/home.component.css | 43 ++++ .../client/src/app/home/home.component.html | 24 ++ .../src/app/home/home.component.spec.ts | 25 ++ .../client/src/app/home/home.component.ts | 45 ++++ .../client/src/app/http.service.spec.ts | 15 ++ .../client/src/app/http.service.ts | 50 ++++ .../new-restaurant.component.css | 49 ++++ .../new-restaurant.component.html | 24 ++ .../new-restaurant.component.spec.ts | 25 ++ .../new-restaurant.component.ts | 51 +++++ .../app/new-review/new-review.component.css | 58 +++++ .../app/new-review/new-review.component.html | 31 +++ .../new-review/new-review.component.spec.ts | 25 ++ .../app/new-review/new-review.component.ts | 66 ++++++ .../src/app/review/review.component.css | 38 +++ .../src/app/review/review.component.html | 24 ++ .../src/app/review/review.component.spec.ts | 25 ++ .../client/src/app/review/review.component.ts | 37 +++ .../restaurants/client/src/assets/.gitkeep | 0 .../client/src/assets/forkspoon.png | Bin 0 -> 29724 bytes .../src/environments/environment.prod.ts | 3 + .../client/src/environments/environment.ts | 8 + .../restaurants/client/src/favicon.ico | Bin 0 -> 5430 bytes .../restaurants/client/src/favicon.png | Bin 0 -> 29724 bytes .../Angular/restaurants/client/src/index.html | 14 ++ .../Angular/restaurants/client/src/main.ts | 12 + .../restaurants/client/src/polyfills.ts | 79 +++++++ .../Angular/restaurants/client/src/styles.css | 1 + .../Angular/restaurants/client/src/test.ts | 20 ++ .../restaurants/client/src/tsconfig.app.json | 13 ++ .../restaurants/client/src/tsconfig.spec.json | 19 ++ .../restaurants/client/src/typings.d.ts | 5 + .../Angular/restaurants/client/tsconfig.json | 19 ++ .../Angular/restaurants/client/tslint.json | 143 ++++++++++++ kyla_stearns/Angular/restaurants/package.json | 20 ++ kyla_stearns/Angular/restaurants/server.js | 216 ++++++++++++++++++ .../restfulAPI/helloAngular/.angular-cli.json | 0 .../restfulAPI/helloAngular/.editorconfig | 0 .../restfulAPI/helloAngular/.gitignore | 0 .../Angular/restfulAPI/helloAngular/README.md | 0 .../helloAngular/e2e/app.e2e-spec.ts | 0 .../restfulAPI/helloAngular/e2e/app.po.ts | 0 .../helloAngular/e2e/tsconfig.e2e.json | 0 .../restfulAPI/helloAngular/karma.conf.js | 0 .../restfulAPI/helloAngular/package.json | 0 .../helloAngular/protractor.conf.js | 0 .../helloAngular/src/app/app.component.css | 0 .../helloAngular/src/app/app.component.html | 0 .../src/app/app.component.spec.ts | 0 .../helloAngular/src/app/app.component.ts | 0 .../helloAngular/src/app/app.module.ts | 0 .../helloAngular/src/app/http.service.spec.ts | 0 .../helloAngular/src/app/http.service.ts | 0 .../helloAngular/src/assets/.gitkeep | 0 .../src/environments/environment.prod.ts | 0 .../src/environments/environment.ts | 0 .../restfulAPI/helloAngular/src/favicon.ico | Bin .../restfulAPI/helloAngular/src/index.html | 0 .../restfulAPI/helloAngular/src/main.ts | 0 .../restfulAPI/helloAngular/src/polyfills.ts | 0 .../restfulAPI/helloAngular/src/styles.css | 0 .../restfulAPI/helloAngular/src/test.ts | 0 .../helloAngular/src/tsconfig.app.json | 0 .../helloAngular/src/tsconfig.spec.json | 0 .../restfulAPI/helloAngular/src/typings.d.ts | 0 .../restfulAPI/helloAngular/tsconfig.json | 0 .../restfulAPI/helloAngular/tslint.json | 0 kyla_stearns/Angular/restfulAPI/package.json | 0 kyla_stearns/Angular/restfulAPI/server.js | 0 kyla_stearns/Angular/shinto/.angular-cli.json | 60 +++++ kyla_stearns/Angular/shinto/.editorconfig | 13 ++ kyla_stearns/Angular/shinto/.gitignore | 44 ++++ kyla_stearns/Angular/shinto/README.md | 27 +++ .../Angular/shinto/e2e/app.e2e-spec.ts | 14 ++ kyla_stearns/Angular/shinto/e2e/app.po.ts | 11 + .../Angular/shinto/e2e/tsconfig.e2e.json | 14 ++ kyla_stearns/Angular/shinto/karma.conf.js | 33 +++ kyla_stearns/Angular/shinto/package.json | 48 ++++ .../Angular/shinto/protractor.conf.js | 28 +++ .../shinto/src/app/app-routing.module.ts | 24 ++ .../Angular/shinto/src/app/app.component.css | 32 +++ .../Angular/shinto/src/app/app.component.html | 14 ++ .../shinto/src/app/app.component.spec.ts | 31 +++ .../Angular/shinto/src/app/app.component.ts | 13 ++ .../Angular/shinto/src/app/app.module.ts | 41 ++++ .../shinto/src/app/buy/buy.component.css | 25 ++ .../shinto/src/app/buy/buy.component.html | 13 ++ .../shinto/src/app/buy/buy.component.spec.ts | 25 ++ .../shinto/src/app/buy/buy.component.ts | 33 +++ .../shinto/src/app/buy/buy.service.spec.ts | 15 ++ .../Angular/shinto/src/app/buy/buy.service.ts | 8 + .../shinto/src/app/home/home.component.css | 8 + .../shinto/src/app/home/home.component.html | 2 + .../src/app/home/home.component.spec.ts | 25 ++ .../shinto/src/app/home/home.component.ts | 17 ++ .../shinto/src/app/http.service.spec.ts | 15 ++ .../Angular/shinto/src/app/http.service.ts | 96 ++++++++ .../src/app/ledger/ledger.component.css | 23 ++ .../src/app/ledger/ledger.component.html | 19 ++ .../src/app/ledger/ledger.component.spec.ts | 25 ++ .../shinto/src/app/ledger/ledger.component.ts | 18 ++ .../shinto/src/app/mine/mine.component.css | 25 ++ .../shinto/src/app/mine/mine.component.html | 14 ++ .../src/app/mine/mine.component.spec.ts | 25 ++ .../shinto/src/app/mine/mine.component.ts | 57 +++++ .../shinto/src/app/sell/sell.component.css | 25 ++ .../shinto/src/app/sell/sell.component.html | 13 ++ .../src/app/sell/sell.component.spec.ts | 25 ++ .../shinto/src/app/sell/sell.component.ts | 35 +++ .../shinto/src/app/sell/sell.service.spec.ts | 15 ++ .../shinto/src/app/sell/sell.service.ts | 8 + .../app/transaction/transaction.component.css | 12 + .../transaction/transaction.component.html | 4 + .../transaction/transaction.component.spec.ts | 25 ++ .../app/transaction/transaction.component.ts | 32 +++ .../Angular/shinto/src/assets/.gitkeep | 0 .../Angular/shinto/src/assets/coin.png | Bin 0 -> 4214 bytes .../src/environments/environment.prod.ts | 3 + .../shinto/src/environments/environment.ts | 8 + kyla_stearns/Angular/shinto/src/favicon.ico | Bin 0 -> 5430 bytes kyla_stearns/Angular/shinto/src/favicon.png | Bin 0 -> 4214 bytes kyla_stearns/Angular/shinto/src/index.html | 14 ++ kyla_stearns/Angular/shinto/src/main.ts | 12 + kyla_stearns/Angular/shinto/src/polyfills.ts | 79 +++++++ kyla_stearns/Angular/shinto/src/styles.css | 1 + kyla_stearns/Angular/shinto/src/test.ts | 20 ++ .../Angular/shinto/src/tsconfig.app.json | 13 ++ .../Angular/shinto/src/tsconfig.spec.json | 19 ++ kyla_stearns/Angular/shinto/src/typings.d.ts | 5 + kyla_stearns/Angular/shinto/tsconfig.json | 19 ++ kyla_stearns/Angular/shinto/tslint.json | 143 ++++++++++++ kyla_stearns/Express/coolCatsChat/notes.txt | 0 .../Express/coolCatsChat/package.json | 0 kyla_stearns/Express/coolCatsChat/server.js | 0 .../Express/coolCatsChat/static/css/chat.css | 0 .../static/images/coolCatsClub.jpg | Bin .../Express/coolCatsChat/static/js/chat.js | 0 .../Express/coolCatsChat/views/chat.ejs | 0 .../Express/coolCatsChat/views/index.ejs | 0 .../Express/epicButtonGame/package.json | 0 kyla_stearns/Express/epicButtonGame/server.js | 0 .../epicButtonGame/static/css/button.css | 0 .../epicButtonGame/static/js/button.js | 0 .../Express/epicButtonGame/views/index.ejs | 0 kyla_stearns/Express/groupChat/package.json | 0 kyla_stearns/Express/groupChat/server.js | 0 .../Express/groupChat/static/css/chat.css | 0 .../Express/groupChat/static/js/chat.js | 0 .../Express/groupChat/views/index.ejs | 0 kyla_stearns/Express/surveyRe/package.json | 0 kyla_stearns/Express/surveyRe/server.js | 0 .../Express/surveyRe/static/css/sockets.css | 0 .../Express/surveyRe/static/js/sockets.js | 0 kyla_stearns/Express/surveyRe/views/index.ejs | 0 kyla_stearns/JavaScript/GOT/css/got.css | 0 kyla_stearns/JavaScript/GOT/got.txt | 0 kyla_stearns/JavaScript/GOT/html/got.html | 0 .../JavaScript/GOT/images/baratheon.png | Bin .../JavaScript/GOT/images/lannister.jpg | Bin kyla_stearns/JavaScript/GOT/images/stark.jpg | Bin .../JavaScript/GOT/images/targaryen.jpg | Bin kyla_stearns/JavaScript/GOT/js/got.js | 0 kyla_stearns/Mongo/LoginReg/package.json | 0 kyla_stearns/Mongo/LoginReg/server.js | 0 .../Mongo/LoginReg/static/css/loginReg.css | 0 .../Mongo/LoginReg/views/loginReg.ejs | 0 kyla_stearns/Mongo/LoginReg/views/success.ejs | 0 kyla_stearns/Mongo/messageBoard/package.json | 0 kyla_stearns/Mongo/messageBoard/server.js | 0 .../messageBoard/static/css/messageBoard.css | 0 .../Mongo/messageBoard/views/wall.ejs | 0 .../Mongo/mongooseDashboard/package.json | 0 .../Mongo/mongooseDashboard/server.js | 0 .../mongooseDashboard/static/css/animals.css | 0 .../Mongo/mongooseDashboard/views/animals.ejs | 0 .../Mongo/mongooseDashboard/views/index.ejs | 0 .../Mongo/mongooseDashboard/views/new.ejs | 0 .../Mongo/mongooseDashboard/views/show.ejs | 0 kyla_stearns/Mongo/quotingDojo/package.json | 0 kyla_stearns/Mongo/quotingDojo/server.js | 0 .../Mongo/quotingDojo/static/css/quotes.css | 0 .../Mongo/quotingDojo/views/index.ejs | 0 .../Mongo/quotingDojo/views/quotes.ejs | 0 .../Node/cars_and_cats/css/catsCars.css | 0 .../Node/cars_and_cats/images/adorbsCar.jpg | Bin .../Node/cars_and_cats/images/bahHumbug.jpg | Bin .../Node/cars_and_cats/images/crossCat.jpg | Bin kyla_stearns/Node/cars_and_cats/images/na.jpg | Bin .../Node/cars_and_cats/images/poetCar.jpg | Bin .../Node/cars_and_cats/images/sideEyeCar.jpg | Bin .../Node/cars_and_cats/images/smallIsBig.jpeg | Bin .../Node/cars_and_cats/images/thugLifeCat.jpg | Bin kyla_stearns/Node/cars_and_cats/server.js | 0 .../Node/cars_and_cats/views/cars.html | 0 .../Node/cars_and_cats/views/cats.html | 0 .../Node/cars_and_cats/views/newCar.html | 0 matt_tucker/algorithms/flood_fill.js | 0 matt_tucker/express/default-server.js | 0 matt_tucker/placeholder.txt | 0 wittrock/.gitignore | 0 wittrock/README.md | 0 wittrock/dom_1.html | 0 wittrock/dom_2.html | 0 wittrock/hoisting_js.txt | 0 wittrock/js_intermediate.js | 0 wittrock/js_math.js | 0 wittrock/js_objects.js | 0 wittrock/js_scroll.html | 0 wittrock/js_scroll.js | 0 wittrock/jsbasics1.txt | 0 wittrock/jsbasics2.txt | 0 wittrock/ninja_class.js | 0 wittrock/ninja_class3.js | 0 wittrock/nins_class2.js | 0 wittrock/oop_practice.js | 0 510 files changed, 6009 insertions(+) mode change 100644 => 100755 .gitignore mode change 100644 => 100755 README.md mode change 100644 => 100755 ashwin_vidiyala/JS_Fundamentals/javascript_basics_one.html mode change 100644 => 100755 ashwin_vidiyala/JS_Fundamentals/javascript_basics_two.html mode change 100644 => 100755 ashwin_vidiyala/JS_Fundamentals/javascript_dom_one.html mode change 100644 => 100755 ashwin_vidiyala/JS_Fundamentals/javascript_dom_two.html mode change 100644 => 100755 ashwin_vidiyala/JS_Fundamentals/javascript_hoisting.md mode change 100644 => 100755 ashwin_vidiyala/JS_Fundamentals/javascript_intermediate.html mode change 100644 => 100755 ashwin_vidiyala/JS_Fundamentals/javascript_math.html mode change 100644 => 100755 ashwin_vidiyala/JS_Fundamentals/javascript_objects.html mode change 100644 => 100755 ashwin_vidiyala/JS_Fundamentals/javascript_scroll.html mode change 100644 => 100755 ashwin_vidiyala/JS_OOP/deck_of_cards.html mode change 100644 => 100755 ashwin_vidiyala/JS_OOP/ninja_class.html mode change 100644 => 100755 ashwin_vidiyala/JS_OOP/ninja_class_three.html mode change 100644 => 100755 derek_love/JS_Advanced/GOT/baratheon.png mode change 100644 => 100755 derek_love/JS_Advanced/GOT/details.js mode change 100644 => 100755 derek_love/JS_Advanced/GOT/houses.html mode change 100644 => 100755 derek_love/JS_Advanced/GOT/lannister.jpg mode change 100644 => 100755 derek_love/JS_Advanced/GOT/stark.jpg mode change 100644 => 100755 derek_love/JS_Advanced/GOT/styles.css mode change 100644 => 100755 derek_love/JS_Advanced/GOT/targaryen.jpg mode change 100644 => 100755 derek_love/JS_Advanced/JS_library.js mode change 100644 => 100755 derek_love/JS_Advanced/WeatherApp/styles-weatherApp.css mode change 100644 => 100755 derek_love/JS_Advanced/WeatherApp/weatherApp.html mode change 100644 => 100755 derek_love/JS_Advanced/WeatherApp/weatherAppScript.js mode change 100644 => 100755 derek_love/JS_Advanced/dojoQuery/dojo.js mode change 100644 => 100755 derek_love/JS_Advanced/dojoQuery/index.html mode change 100644 => 100755 derek_love/JS_Advanced/fibNacci.js mode change 100644 => 100755 derek_love/JS_Advanced/hunt_github/hunt.js mode change 100644 => 100755 derek_love/JS_Advanced/hunt_github/index.html mode change 100644 => 100755 derek_love/JS_Advanced/test.js mode change 100644 => 100755 derek_love/JS_Fun/JS Math.html mode change 100644 => 100755 derek_love/JS_Fun/JSIntermediate.html mode change 100644 => 100755 derek_love/JS_Fun/JS_Hoisting.txt mode change 100644 => 100755 derek_love/JS_Fun/JS_Objects.html mode change 100644 => 100755 derek_love/JS_Fun/JS_Scroll.html mode change 100644 => 100755 derek_love/JS_Fun/basicOne.html mode change 100644 => 100755 derek_love/JS_Fun/basicTwo.html mode change 100644 => 100755 derek_love/JS_Fun/js_dom_1.html mode change 100644 => 100755 derek_love/JS_Fun/js_dom_2.html mode change 100644 => 100755 derek_love/JS_Fun/test.js mode change 100644 => 100755 derek_love/JS_OOP/cardDeck.html mode change 100644 => 100755 derek_love/JS_OOP/ninjaOne.html mode change 100644 => 100755 derek_love/JS_OOP/ninjaThree.html mode change 100644 => 100755 derek_love/JS_OOP/ninjaTwo.html mode change 100644 => 100755 derek_love/node/carsCats/images/cat1.jpg mode change 100644 => 100755 derek_love/node/carsCats/images/cat2.jpg mode change 100644 => 100755 derek_love/node/carsCats/images/lambo.jpg mode change 100644 => 100755 derek_love/node/carsCats/server.js mode change 100644 => 100755 derek_love/node/carsCats/views/form.html mode change 100644 => 100755 derek_love/node/carsCats/views/index.html mode change 100644 => 100755 derek_love/node/carsCats/views/index2.html mode change 100644 => 100755 derek_love/node/landing/server.js mode change 100644 => 100755 derek_love/node/landing/views/dojos.html mode change 100644 => 100755 derek_love/node/landing/views/index.html mode change 100644 => 100755 derek_love/node/landing/views/ninjas.html mode change 100644 => 100755 derek_love/node/math_mod/mathlib.js mode change 100644 => 100755 derek_love/node/math_mod/server.js mode change 100644 => 100755 derek_love/node/node_server/app.js mode change 100644 => 100755 derek_love/node/node_server/dojo.html mode change 100644 => 100755 derek_love/node/node_server/index.html mode change 100644 => 100755 derek_love/node/node_server/stylesheets/styles.css mode change 100644 => 100755 derek_love/node/test.js mode change 100644 => 100755 dillon_votaw/express/counter/package.json mode change 100644 => 100755 dillon_votaw/express/counter/server.js mode change 100644 => 100755 dillon_votaw/express/counter/static/main.css mode change 100644 => 100755 dillon_votaw/express/counter/views/index.ejs mode change 100644 => 100755 dillon_votaw/express/hello_express/package.json mode change 100644 => 100755 dillon_votaw/express/hello_express/server.js mode change 100644 => 100755 dillon_votaw/express/hello_express/static/main.css mode change 100644 => 100755 dillon_votaw/express/hello_express/static/main.html mode change 100644 => 100755 dillon_votaw/express/hello_express/views/index.ejs mode change 100644 => 100755 dillon_votaw/express/hello_express/views/users.ejs mode change 100644 => 100755 dillon_votaw/express/number_game/package.json mode change 100644 => 100755 dillon_votaw/express/number_game/server.js mode change 100644 => 100755 dillon_votaw/express/number_game/static/main.css mode change 100644 => 100755 dillon_votaw/express/number_game/views/index.ejs mode change 100644 => 100755 dillon_votaw/express/survey_form/package.json mode change 100644 => 100755 dillon_votaw/express/survey_form/server.js mode change 100644 => 100755 dillon_votaw/express/survey_form/static/main.css mode change 100644 => 100755 dillon_votaw/express/survey_form/views/index.ejs mode change 100644 => 100755 dillon_votaw/express/survey_form/views/result.ejs mode change 100644 => 100755 dillon_votaw/express/templates/index.ejs mode change 100644 => 100755 dillon_votaw/express/templates/main.css mode change 100644 => 100755 dillon_votaw/express/templates/package.json mode change 100644 => 100755 dillon_votaw/express/templates/server.js mode change 100644 => 100755 dillon_votaw/javascript/broken_deck_of_cards.html mode change 100644 => 100755 dillon_votaw/javascript/deck_of_cards.html mode change 100644 => 100755 dillon_votaw/javascript/dojoquery.html mode change 100644 => 100755 dillon_votaw/javascript/fib_nacci.html mode change 100644 => 100755 dillon_votaw/javascript/for_running_js.html mode change 100644 => 100755 dillon_votaw/javascript/fundamentals/js_basics_i.html mode change 100644 => 100755 dillon_votaw/javascript/fundamentals/js_basics_ii.html mode change 100644 => 100755 dillon_votaw/javascript/fundamentals/js_dom_i.html mode change 100644 => 100755 dillon_votaw/javascript/fundamentals/js_dom_ii.html mode change 100644 => 100755 dillon_votaw/javascript/fundamentals/js_hoisting.html mode change 100644 => 100755 dillon_votaw/javascript/fundamentals/js_intermediate.html mode change 100644 => 100755 dillon_votaw/javascript/fundamentals/js_math.html mode change 100644 => 100755 dillon_votaw/javascript/fundamentals/js_objects.html mode change 100644 => 100755 dillon_votaw/javascript/fundamentals/js_scroll.html mode change 100644 => 100755 dillon_votaw/javascript/game_of_thrones/game_of_thrones.html mode change 100644 => 100755 dillon_votaw/javascript/game_of_thrones/img/baratheon.png mode change 100644 => 100755 dillon_votaw/javascript/game_of_thrones/img/lannister.jpg mode change 100644 => 100755 dillon_votaw/javascript/game_of_thrones/img/stark.jpg mode change 100644 => 100755 dillon_votaw/javascript/game_of_thrones/img/targaryen.jpg mode change 100644 => 100755 dillon_votaw/javascript/game_of_thrones/jquery.js mode change 100644 => 100755 dillon_votaw/javascript/hunting_github/hunting_github.html mode change 100644 => 100755 dillon_votaw/javascript/hunting_github/jquery.js mode change 100644 => 100755 dillon_votaw/javascript/javascript_library.html mode change 100644 => 100755 dillon_votaw/javascript/jquery_template.js mode change 100644 => 100755 dillon_votaw/javascript/ninja_class_1.html mode change 100644 => 100755 dillon_votaw/javascript/ninja_class_2.html mode change 100644 => 100755 dillon_votaw/javascript/ninja_class_3.html mode change 100644 => 100755 dillon_votaw/node/cars_and_cats/apps.js mode change 100644 => 100755 dillon_votaw/node/cars_and_cats/images/car1.jpg mode change 100644 => 100755 dillon_votaw/node/cars_and_cats/images/car2.jpg mode change 100644 => 100755 dillon_votaw/node/cars_and_cats/images/car3.jpg mode change 100644 => 100755 dillon_votaw/node/cars_and_cats/images/cat1.jpg mode change 100644 => 100755 dillon_votaw/node/cars_and_cats/images/cat2.jpg mode change 100644 => 100755 dillon_votaw/node/cars_and_cats/images/cat3.jpg mode change 100644 => 100755 dillon_votaw/node/cars_and_cats/stylesheets/main.css mode change 100644 => 100755 dillon_votaw/node/cars_and_cats/views/cars.html mode change 100644 => 100755 dillon_votaw/node/cars_and_cats/views/cats.html mode change 100644 => 100755 dillon_votaw/node/cars_and_cats/views/form.html mode change 100644 => 100755 dillon_votaw/node/landing_page/app.js mode change 100644 => 100755 dillon_votaw/node/landing_page/templates/dojos.html mode change 100644 => 100755 dillon_votaw/node/landing_page/templates/error.html mode change 100644 => 100755 dillon_votaw/node/landing_page/templates/index.html mode change 100644 => 100755 dillon_votaw/node/landing_page/templates/ninjas.html mode change 100644 => 100755 dillon_votaw/node/math_module/app.js mode change 100644 => 100755 dillon_votaw/node/math_module/mathlib.js mode change 100644 => 100755 dillon_votaw/node/node_module_basics/app.js mode change 100644 => 100755 dillon_votaw/node/node_module_basics/my_module.js mode change 100644 => 100755 dillon_votaw/node/node_server/app.js mode change 100644 => 100755 dillon_votaw/node/node_server/dojo/dojo.html mode change 100644 => 100755 dillon_votaw/node/node_server/index.html mode change 100644 => 100755 dillon_votaw/node/node_server/static/js/javascript.js mode change 100644 => 100755 dillon_votaw/node/template/server.js mode change 100644 => 100755 dillon_votaw/node/template/stylesheets/main.css mode change 100644 => 100755 dillon_votaw/node/test.js mode change 100644 => 100755 dillon_votaw/null.txt create mode 100755 kyla_stearns/Angular/faveAuthors/authors/.angular-cli.json create mode 100755 kyla_stearns/Angular/faveAuthors/authors/.editorconfig create mode 100755 kyla_stearns/Angular/faveAuthors/authors/.gitignore create mode 100755 kyla_stearns/Angular/faveAuthors/authors/README.md create mode 100755 kyla_stearns/Angular/faveAuthors/authors/e2e/app.e2e-spec.ts create mode 100755 kyla_stearns/Angular/faveAuthors/authors/e2e/app.po.ts create mode 100755 kyla_stearns/Angular/faveAuthors/authors/e2e/tsconfig.e2e.json create mode 100755 kyla_stearns/Angular/faveAuthors/authors/karma.conf.js create mode 100755 kyla_stearns/Angular/faveAuthors/authors/package.json create mode 100755 kyla_stearns/Angular/faveAuthors/authors/protractor.conf.js create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/app/app-routing.module.ts create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/app/app.component.css create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/app/app.component.html create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/app/app.component.spec.ts create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/app/app.component.ts create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/app/app.module.ts create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/app/edit/edit.component.css create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/app/edit/edit.component.html create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/app/edit/edit.component.spec.ts create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/app/edit/edit.component.ts create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/app/home/home.component.css create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/app/home/home.component.html create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/app/home/home.component.spec.ts create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/app/home/home.component.ts create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/app/http.service.spec.ts create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/app/http.service.ts create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/app/new/new.component.css create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/app/new/new.component.html create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/app/new/new.component.spec.ts create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/app/new/new.component.ts create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/assets/.gitkeep create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/environments/environment.prod.ts create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/environments/environment.ts create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/favicon.ico create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/favicon.png create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/index.html create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/main.ts create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/polyfills.ts create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/styles.css create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/test.ts create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/tsconfig.app.json create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/tsconfig.spec.json create mode 100755 kyla_stearns/Angular/faveAuthors/authors/src/typings.d.ts create mode 100755 kyla_stearns/Angular/faveAuthors/authors/tsconfig.json create mode 100755 kyla_stearns/Angular/faveAuthors/authors/tslint.json create mode 100755 kyla_stearns/Angular/faveAuthors/package.json create mode 100755 kyla_stearns/Angular/faveAuthors/server.js mode change 100644 => 100755 kyla_stearns/Angular/pokemon/.angular-cli.json mode change 100644 => 100755 kyla_stearns/Angular/pokemon/.editorconfig mode change 100644 => 100755 kyla_stearns/Angular/pokemon/.gitignore mode change 100644 => 100755 kyla_stearns/Angular/pokemon/README.md mode change 100644 => 100755 kyla_stearns/Angular/pokemon/e2e/app.e2e-spec.ts mode change 100644 => 100755 kyla_stearns/Angular/pokemon/e2e/app.po.ts mode change 100644 => 100755 kyla_stearns/Angular/pokemon/e2e/tsconfig.e2e.json mode change 100644 => 100755 kyla_stearns/Angular/pokemon/karma.conf.js mode change 100644 => 100755 kyla_stearns/Angular/pokemon/package.json mode change 100644 => 100755 kyla_stearns/Angular/pokemon/protractor.conf.js mode change 100644 => 100755 kyla_stearns/Angular/pokemon/src/app/app.component.css mode change 100644 => 100755 kyla_stearns/Angular/pokemon/src/app/app.component.html mode change 100644 => 100755 kyla_stearns/Angular/pokemon/src/app/app.component.spec.ts mode change 100644 => 100755 kyla_stearns/Angular/pokemon/src/app/app.component.ts mode change 100644 => 100755 kyla_stearns/Angular/pokemon/src/app/app.module.ts mode change 100644 => 100755 kyla_stearns/Angular/pokemon/src/app/http.service.spec.ts mode change 100644 => 100755 kyla_stearns/Angular/pokemon/src/app/http.service.ts mode change 100644 => 100755 kyla_stearns/Angular/pokemon/src/assets/.gitkeep mode change 100644 => 100755 kyla_stearns/Angular/pokemon/src/assets/donuts.jpg mode change 100644 => 100755 kyla_stearns/Angular/pokemon/src/assets/nikesnorlax.jpg mode change 100644 => 100755 kyla_stearns/Angular/pokemon/src/assets/snorlax.jpg mode change 100644 => 100755 kyla_stearns/Angular/pokemon/src/environments/environment.prod.ts mode change 100644 => 100755 kyla_stearns/Angular/pokemon/src/environments/environment.ts mode change 100644 => 100755 kyla_stearns/Angular/pokemon/src/favicon.ico mode change 100644 => 100755 kyla_stearns/Angular/pokemon/src/favicon.png mode change 100644 => 100755 kyla_stearns/Angular/pokemon/src/index.html mode change 100644 => 100755 kyla_stearns/Angular/pokemon/src/main.ts mode change 100644 => 100755 kyla_stearns/Angular/pokemon/src/polyfills.ts mode change 100644 => 100755 kyla_stearns/Angular/pokemon/src/styles.css mode change 100644 => 100755 kyla_stearns/Angular/pokemon/src/test.ts mode change 100644 => 100755 kyla_stearns/Angular/pokemon/src/tsconfig.app.json mode change 100644 => 100755 kyla_stearns/Angular/pokemon/src/tsconfig.spec.json mode change 100644 => 100755 kyla_stearns/Angular/pokemon/src/typings.d.ts mode change 100644 => 100755 kyla_stearns/Angular/pokemon/tsconfig.json mode change 100644 => 100755 kyla_stearns/Angular/pokemon/tslint.json create mode 100755 kyla_stearns/Angular/productMgmt/package.json create mode 100755 kyla_stearns/Angular/productMgmt/products/.angular-cli.json create mode 100755 kyla_stearns/Angular/productMgmt/products/.editorconfig create mode 100755 kyla_stearns/Angular/productMgmt/products/.gitignore create mode 100755 kyla_stearns/Angular/productMgmt/products/README.md create mode 100755 kyla_stearns/Angular/productMgmt/products/e2e/app.e2e-spec.ts create mode 100755 kyla_stearns/Angular/productMgmt/products/e2e/app.po.ts create mode 100755 kyla_stearns/Angular/productMgmt/products/e2e/tsconfig.e2e.json create mode 100755 kyla_stearns/Angular/productMgmt/products/karma.conf.js create mode 100755 kyla_stearns/Angular/productMgmt/products/package.json create mode 100755 kyla_stearns/Angular/productMgmt/products/protractor.conf.js create mode 100755 kyla_stearns/Angular/productMgmt/products/src/app/app-routing.module.ts create mode 100755 kyla_stearns/Angular/productMgmt/products/src/app/app.component.css create mode 100755 kyla_stearns/Angular/productMgmt/products/src/app/app.component.html create mode 100755 kyla_stearns/Angular/productMgmt/products/src/app/app.component.spec.ts create mode 100755 kyla_stearns/Angular/productMgmt/products/src/app/app.component.ts create mode 100755 kyla_stearns/Angular/productMgmt/products/src/app/app.module.ts create mode 100755 kyla_stearns/Angular/productMgmt/products/src/app/edit/edit.component.css create mode 100755 kyla_stearns/Angular/productMgmt/products/src/app/edit/edit.component.html create mode 100755 kyla_stearns/Angular/productMgmt/products/src/app/edit/edit.component.spec.ts create mode 100755 kyla_stearns/Angular/productMgmt/products/src/app/edit/edit.component.ts create mode 100755 kyla_stearns/Angular/productMgmt/products/src/app/home/home.component.css create mode 100755 kyla_stearns/Angular/productMgmt/products/src/app/home/home.component.html create mode 100755 kyla_stearns/Angular/productMgmt/products/src/app/home/home.component.spec.ts create mode 100755 kyla_stearns/Angular/productMgmt/products/src/app/home/home.component.ts create mode 100755 kyla_stearns/Angular/productMgmt/products/src/app/http.service.spec.ts create mode 100755 kyla_stearns/Angular/productMgmt/products/src/app/http.service.ts create mode 100755 kyla_stearns/Angular/productMgmt/products/src/app/new/new.component.css create mode 100755 kyla_stearns/Angular/productMgmt/products/src/app/new/new.component.html create mode 100755 kyla_stearns/Angular/productMgmt/products/src/app/new/new.component.spec.ts create mode 100755 kyla_stearns/Angular/productMgmt/products/src/app/new/new.component.ts create mode 100755 kyla_stearns/Angular/productMgmt/products/src/app/product-list/product-list.component.css create mode 100755 kyla_stearns/Angular/productMgmt/products/src/app/product-list/product-list.component.html create mode 100755 kyla_stearns/Angular/productMgmt/products/src/app/product-list/product-list.component.spec.ts create mode 100755 kyla_stearns/Angular/productMgmt/products/src/app/product-list/product-list.component.ts create mode 100755 kyla_stearns/Angular/productMgmt/products/src/assets/.gitkeep create mode 100755 kyla_stearns/Angular/productMgmt/products/src/environments/environment.prod.ts create mode 100755 kyla_stearns/Angular/productMgmt/products/src/environments/environment.ts create mode 100755 kyla_stearns/Angular/productMgmt/products/src/favicon.ico create mode 100755 kyla_stearns/Angular/productMgmt/products/src/favicon.png create mode 100755 kyla_stearns/Angular/productMgmt/products/src/index.html create mode 100755 kyla_stearns/Angular/productMgmt/products/src/main.ts create mode 100755 kyla_stearns/Angular/productMgmt/products/src/polyfills.ts create mode 100755 kyla_stearns/Angular/productMgmt/products/src/styles.css create mode 100755 kyla_stearns/Angular/productMgmt/products/src/test.ts create mode 100755 kyla_stearns/Angular/productMgmt/products/src/tsconfig.app.json create mode 100755 kyla_stearns/Angular/productMgmt/products/src/tsconfig.spec.json create mode 100755 kyla_stearns/Angular/productMgmt/products/src/typings.d.ts create mode 100755 kyla_stearns/Angular/productMgmt/products/tsconfig.json create mode 100755 kyla_stearns/Angular/productMgmt/products/tslint.json create mode 100755 kyla_stearns/Angular/productMgmt/server.js create mode 160000 kyla_stearns/Angular/products2 create mode 100755 kyla_stearns/Angular/restaurants/IP.txt create mode 100755 kyla_stearns/Angular/restaurants/client/.angular-cli.json create mode 100755 kyla_stearns/Angular/restaurants/client/.editorconfig create mode 100755 kyla_stearns/Angular/restaurants/client/README.md create mode 100755 kyla_stearns/Angular/restaurants/client/e2e/app.e2e-spec.ts create mode 100755 kyla_stearns/Angular/restaurants/client/e2e/app.po.ts create mode 100755 kyla_stearns/Angular/restaurants/client/e2e/tsconfig.e2e.json create mode 100755 kyla_stearns/Angular/restaurants/client/karma.conf.js create mode 100755 kyla_stearns/Angular/restaurants/client/package.json create mode 100755 kyla_stearns/Angular/restaurants/client/protractor.conf.js create mode 100755 kyla_stearns/Angular/restaurants/client/src/app/app-routing.module.ts create mode 100755 kyla_stearns/Angular/restaurants/client/src/app/app.component.css create mode 100755 kyla_stearns/Angular/restaurants/client/src/app/app.component.html create mode 100755 kyla_stearns/Angular/restaurants/client/src/app/app.component.spec.ts create mode 100755 kyla_stearns/Angular/restaurants/client/src/app/app.component.ts create mode 100755 kyla_stearns/Angular/restaurants/client/src/app/app.module.ts create mode 100755 kyla_stearns/Angular/restaurants/client/src/app/edit-restaurant/edit-restaurant.component.css create mode 100755 kyla_stearns/Angular/restaurants/client/src/app/edit-restaurant/edit-restaurant.component.html create mode 100755 kyla_stearns/Angular/restaurants/client/src/app/edit-restaurant/edit-restaurant.component.spec.ts create mode 100755 kyla_stearns/Angular/restaurants/client/src/app/edit-restaurant/edit-restaurant.component.ts create mode 100755 kyla_stearns/Angular/restaurants/client/src/app/home/home.component.css create mode 100755 kyla_stearns/Angular/restaurants/client/src/app/home/home.component.html create mode 100755 kyla_stearns/Angular/restaurants/client/src/app/home/home.component.spec.ts create mode 100755 kyla_stearns/Angular/restaurants/client/src/app/home/home.component.ts create mode 100755 kyla_stearns/Angular/restaurants/client/src/app/http.service.spec.ts create mode 100755 kyla_stearns/Angular/restaurants/client/src/app/http.service.ts create mode 100755 kyla_stearns/Angular/restaurants/client/src/app/new-restaurant/new-restaurant.component.css create mode 100755 kyla_stearns/Angular/restaurants/client/src/app/new-restaurant/new-restaurant.component.html create mode 100755 kyla_stearns/Angular/restaurants/client/src/app/new-restaurant/new-restaurant.component.spec.ts create mode 100755 kyla_stearns/Angular/restaurants/client/src/app/new-restaurant/new-restaurant.component.ts create mode 100755 kyla_stearns/Angular/restaurants/client/src/app/new-review/new-review.component.css create mode 100755 kyla_stearns/Angular/restaurants/client/src/app/new-review/new-review.component.html create mode 100755 kyla_stearns/Angular/restaurants/client/src/app/new-review/new-review.component.spec.ts create mode 100755 kyla_stearns/Angular/restaurants/client/src/app/new-review/new-review.component.ts create mode 100755 kyla_stearns/Angular/restaurants/client/src/app/review/review.component.css create mode 100755 kyla_stearns/Angular/restaurants/client/src/app/review/review.component.html create mode 100755 kyla_stearns/Angular/restaurants/client/src/app/review/review.component.spec.ts create mode 100755 kyla_stearns/Angular/restaurants/client/src/app/review/review.component.ts create mode 100755 kyla_stearns/Angular/restaurants/client/src/assets/.gitkeep create mode 100755 kyla_stearns/Angular/restaurants/client/src/assets/forkspoon.png create mode 100755 kyla_stearns/Angular/restaurants/client/src/environments/environment.prod.ts create mode 100755 kyla_stearns/Angular/restaurants/client/src/environments/environment.ts create mode 100755 kyla_stearns/Angular/restaurants/client/src/favicon.ico create mode 100755 kyla_stearns/Angular/restaurants/client/src/favicon.png create mode 100755 kyla_stearns/Angular/restaurants/client/src/index.html create mode 100755 kyla_stearns/Angular/restaurants/client/src/main.ts create mode 100755 kyla_stearns/Angular/restaurants/client/src/polyfills.ts create mode 100755 kyla_stearns/Angular/restaurants/client/src/styles.css create mode 100755 kyla_stearns/Angular/restaurants/client/src/test.ts create mode 100755 kyla_stearns/Angular/restaurants/client/src/tsconfig.app.json create mode 100755 kyla_stearns/Angular/restaurants/client/src/tsconfig.spec.json create mode 100755 kyla_stearns/Angular/restaurants/client/src/typings.d.ts create mode 100755 kyla_stearns/Angular/restaurants/client/tsconfig.json create mode 100755 kyla_stearns/Angular/restaurants/client/tslint.json create mode 100755 kyla_stearns/Angular/restaurants/package.json create mode 100755 kyla_stearns/Angular/restaurants/server.js mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/.angular-cli.json mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/.editorconfig mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/.gitignore mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/README.md mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/e2e/app.e2e-spec.ts mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/e2e/app.po.ts mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/e2e/tsconfig.e2e.json mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/karma.conf.js mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/package.json mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/protractor.conf.js mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/src/app/app.component.css mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/src/app/app.component.html mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/src/app/app.component.spec.ts mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/src/app/app.component.ts mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/src/app/app.module.ts mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/src/app/http.service.spec.ts mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/src/app/http.service.ts mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/src/assets/.gitkeep mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/src/environments/environment.prod.ts mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/src/environments/environment.ts mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/src/favicon.ico mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/src/index.html mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/src/main.ts mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/src/polyfills.ts mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/src/styles.css mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/src/test.ts mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/src/tsconfig.app.json mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/src/tsconfig.spec.json mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/src/typings.d.ts mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/tsconfig.json mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/helloAngular/tslint.json mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/package.json mode change 100644 => 100755 kyla_stearns/Angular/restfulAPI/server.js create mode 100755 kyla_stearns/Angular/shinto/.angular-cli.json create mode 100755 kyla_stearns/Angular/shinto/.editorconfig create mode 100755 kyla_stearns/Angular/shinto/.gitignore create mode 100755 kyla_stearns/Angular/shinto/README.md create mode 100755 kyla_stearns/Angular/shinto/e2e/app.e2e-spec.ts create mode 100755 kyla_stearns/Angular/shinto/e2e/app.po.ts create mode 100755 kyla_stearns/Angular/shinto/e2e/tsconfig.e2e.json create mode 100755 kyla_stearns/Angular/shinto/karma.conf.js create mode 100755 kyla_stearns/Angular/shinto/package.json create mode 100755 kyla_stearns/Angular/shinto/protractor.conf.js create mode 100755 kyla_stearns/Angular/shinto/src/app/app-routing.module.ts create mode 100755 kyla_stearns/Angular/shinto/src/app/app.component.css create mode 100755 kyla_stearns/Angular/shinto/src/app/app.component.html create mode 100755 kyla_stearns/Angular/shinto/src/app/app.component.spec.ts create mode 100755 kyla_stearns/Angular/shinto/src/app/app.component.ts create mode 100755 kyla_stearns/Angular/shinto/src/app/app.module.ts create mode 100755 kyla_stearns/Angular/shinto/src/app/buy/buy.component.css create mode 100755 kyla_stearns/Angular/shinto/src/app/buy/buy.component.html create mode 100755 kyla_stearns/Angular/shinto/src/app/buy/buy.component.spec.ts create mode 100755 kyla_stearns/Angular/shinto/src/app/buy/buy.component.ts create mode 100755 kyla_stearns/Angular/shinto/src/app/buy/buy.service.spec.ts create mode 100755 kyla_stearns/Angular/shinto/src/app/buy/buy.service.ts create mode 100755 kyla_stearns/Angular/shinto/src/app/home/home.component.css create mode 100755 kyla_stearns/Angular/shinto/src/app/home/home.component.html create mode 100755 kyla_stearns/Angular/shinto/src/app/home/home.component.spec.ts create mode 100755 kyla_stearns/Angular/shinto/src/app/home/home.component.ts create mode 100755 kyla_stearns/Angular/shinto/src/app/http.service.spec.ts create mode 100755 kyla_stearns/Angular/shinto/src/app/http.service.ts create mode 100755 kyla_stearns/Angular/shinto/src/app/ledger/ledger.component.css create mode 100755 kyla_stearns/Angular/shinto/src/app/ledger/ledger.component.html create mode 100755 kyla_stearns/Angular/shinto/src/app/ledger/ledger.component.spec.ts create mode 100755 kyla_stearns/Angular/shinto/src/app/ledger/ledger.component.ts create mode 100755 kyla_stearns/Angular/shinto/src/app/mine/mine.component.css create mode 100755 kyla_stearns/Angular/shinto/src/app/mine/mine.component.html create mode 100755 kyla_stearns/Angular/shinto/src/app/mine/mine.component.spec.ts create mode 100755 kyla_stearns/Angular/shinto/src/app/mine/mine.component.ts create mode 100755 kyla_stearns/Angular/shinto/src/app/sell/sell.component.css create mode 100755 kyla_stearns/Angular/shinto/src/app/sell/sell.component.html create mode 100755 kyla_stearns/Angular/shinto/src/app/sell/sell.component.spec.ts create mode 100755 kyla_stearns/Angular/shinto/src/app/sell/sell.component.ts create mode 100755 kyla_stearns/Angular/shinto/src/app/sell/sell.service.spec.ts create mode 100755 kyla_stearns/Angular/shinto/src/app/sell/sell.service.ts create mode 100755 kyla_stearns/Angular/shinto/src/app/transaction/transaction.component.css create mode 100755 kyla_stearns/Angular/shinto/src/app/transaction/transaction.component.html create mode 100755 kyla_stearns/Angular/shinto/src/app/transaction/transaction.component.spec.ts create mode 100755 kyla_stearns/Angular/shinto/src/app/transaction/transaction.component.ts create mode 100755 kyla_stearns/Angular/shinto/src/assets/.gitkeep create mode 100755 kyla_stearns/Angular/shinto/src/assets/coin.png create mode 100755 kyla_stearns/Angular/shinto/src/environments/environment.prod.ts create mode 100755 kyla_stearns/Angular/shinto/src/environments/environment.ts create mode 100755 kyla_stearns/Angular/shinto/src/favicon.ico create mode 100755 kyla_stearns/Angular/shinto/src/favicon.png create mode 100755 kyla_stearns/Angular/shinto/src/index.html create mode 100755 kyla_stearns/Angular/shinto/src/main.ts create mode 100755 kyla_stearns/Angular/shinto/src/polyfills.ts create mode 100755 kyla_stearns/Angular/shinto/src/styles.css create mode 100755 kyla_stearns/Angular/shinto/src/test.ts create mode 100755 kyla_stearns/Angular/shinto/src/tsconfig.app.json create mode 100755 kyla_stearns/Angular/shinto/src/tsconfig.spec.json create mode 100755 kyla_stearns/Angular/shinto/src/typings.d.ts create mode 100755 kyla_stearns/Angular/shinto/tsconfig.json create mode 100755 kyla_stearns/Angular/shinto/tslint.json mode change 100644 => 100755 kyla_stearns/Express/coolCatsChat/notes.txt mode change 100644 => 100755 kyla_stearns/Express/coolCatsChat/package.json mode change 100644 => 100755 kyla_stearns/Express/coolCatsChat/server.js mode change 100644 => 100755 kyla_stearns/Express/coolCatsChat/static/css/chat.css mode change 100644 => 100755 kyla_stearns/Express/coolCatsChat/static/images/coolCatsClub.jpg mode change 100644 => 100755 kyla_stearns/Express/coolCatsChat/static/js/chat.js mode change 100644 => 100755 kyla_stearns/Express/coolCatsChat/views/chat.ejs mode change 100644 => 100755 kyla_stearns/Express/coolCatsChat/views/index.ejs mode change 100644 => 100755 kyla_stearns/Express/epicButtonGame/package.json mode change 100644 => 100755 kyla_stearns/Express/epicButtonGame/server.js mode change 100644 => 100755 kyla_stearns/Express/epicButtonGame/static/css/button.css mode change 100644 => 100755 kyla_stearns/Express/epicButtonGame/static/js/button.js mode change 100644 => 100755 kyla_stearns/Express/epicButtonGame/views/index.ejs mode change 100644 => 100755 kyla_stearns/Express/groupChat/package.json mode change 100644 => 100755 kyla_stearns/Express/groupChat/server.js mode change 100644 => 100755 kyla_stearns/Express/groupChat/static/css/chat.css mode change 100644 => 100755 kyla_stearns/Express/groupChat/static/js/chat.js mode change 100644 => 100755 kyla_stearns/Express/groupChat/views/index.ejs mode change 100644 => 100755 kyla_stearns/Express/surveyRe/package.json mode change 100644 => 100755 kyla_stearns/Express/surveyRe/server.js mode change 100644 => 100755 kyla_stearns/Express/surveyRe/static/css/sockets.css mode change 100644 => 100755 kyla_stearns/Express/surveyRe/static/js/sockets.js mode change 100644 => 100755 kyla_stearns/Express/surveyRe/views/index.ejs mode change 100644 => 100755 kyla_stearns/JavaScript/GOT/css/got.css mode change 100644 => 100755 kyla_stearns/JavaScript/GOT/got.txt mode change 100644 => 100755 kyla_stearns/JavaScript/GOT/html/got.html mode change 100644 => 100755 kyla_stearns/JavaScript/GOT/images/baratheon.png mode change 100644 => 100755 kyla_stearns/JavaScript/GOT/images/lannister.jpg mode change 100644 => 100755 kyla_stearns/JavaScript/GOT/images/stark.jpg mode change 100644 => 100755 kyla_stearns/JavaScript/GOT/images/targaryen.jpg mode change 100644 => 100755 kyla_stearns/JavaScript/GOT/js/got.js mode change 100644 => 100755 kyla_stearns/Mongo/LoginReg/package.json mode change 100644 => 100755 kyla_stearns/Mongo/LoginReg/server.js mode change 100644 => 100755 kyla_stearns/Mongo/LoginReg/static/css/loginReg.css mode change 100644 => 100755 kyla_stearns/Mongo/LoginReg/views/loginReg.ejs mode change 100644 => 100755 kyla_stearns/Mongo/LoginReg/views/success.ejs mode change 100644 => 100755 kyla_stearns/Mongo/messageBoard/package.json mode change 100644 => 100755 kyla_stearns/Mongo/messageBoard/server.js mode change 100644 => 100755 kyla_stearns/Mongo/messageBoard/static/css/messageBoard.css mode change 100644 => 100755 kyla_stearns/Mongo/messageBoard/views/wall.ejs mode change 100644 => 100755 kyla_stearns/Mongo/mongooseDashboard/package.json mode change 100644 => 100755 kyla_stearns/Mongo/mongooseDashboard/server.js mode change 100644 => 100755 kyla_stearns/Mongo/mongooseDashboard/static/css/animals.css mode change 100644 => 100755 kyla_stearns/Mongo/mongooseDashboard/views/animals.ejs mode change 100644 => 100755 kyla_stearns/Mongo/mongooseDashboard/views/index.ejs mode change 100644 => 100755 kyla_stearns/Mongo/mongooseDashboard/views/new.ejs mode change 100644 => 100755 kyla_stearns/Mongo/mongooseDashboard/views/show.ejs mode change 100644 => 100755 kyla_stearns/Mongo/quotingDojo/package.json mode change 100644 => 100755 kyla_stearns/Mongo/quotingDojo/server.js mode change 100644 => 100755 kyla_stearns/Mongo/quotingDojo/static/css/quotes.css mode change 100644 => 100755 kyla_stearns/Mongo/quotingDojo/views/index.ejs mode change 100644 => 100755 kyla_stearns/Mongo/quotingDojo/views/quotes.ejs mode change 100644 => 100755 kyla_stearns/Node/cars_and_cats/css/catsCars.css mode change 100644 => 100755 kyla_stearns/Node/cars_and_cats/images/adorbsCar.jpg mode change 100644 => 100755 kyla_stearns/Node/cars_and_cats/images/bahHumbug.jpg mode change 100644 => 100755 kyla_stearns/Node/cars_and_cats/images/crossCat.jpg mode change 100644 => 100755 kyla_stearns/Node/cars_and_cats/images/na.jpg mode change 100644 => 100755 kyla_stearns/Node/cars_and_cats/images/poetCar.jpg mode change 100644 => 100755 kyla_stearns/Node/cars_and_cats/images/sideEyeCar.jpg mode change 100644 => 100755 kyla_stearns/Node/cars_and_cats/images/smallIsBig.jpeg mode change 100644 => 100755 kyla_stearns/Node/cars_and_cats/images/thugLifeCat.jpg mode change 100644 => 100755 kyla_stearns/Node/cars_and_cats/server.js mode change 100644 => 100755 kyla_stearns/Node/cars_and_cats/views/cars.html mode change 100644 => 100755 kyla_stearns/Node/cars_and_cats/views/cats.html mode change 100644 => 100755 kyla_stearns/Node/cars_and_cats/views/newCar.html mode change 100644 => 100755 matt_tucker/algorithms/flood_fill.js mode change 100644 => 100755 matt_tucker/express/default-server.js mode change 100644 => 100755 matt_tucker/placeholder.txt mode change 100644 => 100755 wittrock/.gitignore mode change 100644 => 100755 wittrock/README.md mode change 100644 => 100755 wittrock/dom_1.html mode change 100644 => 100755 wittrock/dom_2.html mode change 100644 => 100755 wittrock/hoisting_js.txt mode change 100644 => 100755 wittrock/js_intermediate.js mode change 100644 => 100755 wittrock/js_math.js mode change 100644 => 100755 wittrock/js_objects.js mode change 100644 => 100755 wittrock/js_scroll.html mode change 100644 => 100755 wittrock/js_scroll.js mode change 100644 => 100755 wittrock/jsbasics1.txt mode change 100644 => 100755 wittrock/jsbasics2.txt mode change 100644 => 100755 wittrock/ninja_class.js mode change 100644 => 100755 wittrock/ninja_class3.js mode change 100644 => 100755 wittrock/nins_class2.js mode change 100644 => 100755 wittrock/oop_practice.js diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/ashwin_vidiyala/JS_Fundamentals/javascript_basics_one.html b/ashwin_vidiyala/JS_Fundamentals/javascript_basics_one.html old mode 100644 new mode 100755 diff --git a/ashwin_vidiyala/JS_Fundamentals/javascript_basics_two.html b/ashwin_vidiyala/JS_Fundamentals/javascript_basics_two.html old mode 100644 new mode 100755 diff --git a/ashwin_vidiyala/JS_Fundamentals/javascript_dom_one.html b/ashwin_vidiyala/JS_Fundamentals/javascript_dom_one.html old mode 100644 new mode 100755 diff --git a/ashwin_vidiyala/JS_Fundamentals/javascript_dom_two.html b/ashwin_vidiyala/JS_Fundamentals/javascript_dom_two.html old mode 100644 new mode 100755 diff --git a/ashwin_vidiyala/JS_Fundamentals/javascript_hoisting.md b/ashwin_vidiyala/JS_Fundamentals/javascript_hoisting.md old mode 100644 new mode 100755 diff --git a/ashwin_vidiyala/JS_Fundamentals/javascript_intermediate.html b/ashwin_vidiyala/JS_Fundamentals/javascript_intermediate.html old mode 100644 new mode 100755 diff --git a/ashwin_vidiyala/JS_Fundamentals/javascript_math.html b/ashwin_vidiyala/JS_Fundamentals/javascript_math.html old mode 100644 new mode 100755 diff --git a/ashwin_vidiyala/JS_Fundamentals/javascript_objects.html b/ashwin_vidiyala/JS_Fundamentals/javascript_objects.html old mode 100644 new mode 100755 diff --git a/ashwin_vidiyala/JS_Fundamentals/javascript_scroll.html b/ashwin_vidiyala/JS_Fundamentals/javascript_scroll.html old mode 100644 new mode 100755 diff --git a/ashwin_vidiyala/JS_OOP/deck_of_cards.html b/ashwin_vidiyala/JS_OOP/deck_of_cards.html old mode 100644 new mode 100755 diff --git a/ashwin_vidiyala/JS_OOP/ninja_class.html b/ashwin_vidiyala/JS_OOP/ninja_class.html old mode 100644 new mode 100755 diff --git a/ashwin_vidiyala/JS_OOP/ninja_class_three.html b/ashwin_vidiyala/JS_OOP/ninja_class_three.html old mode 100644 new mode 100755 diff --git a/derek_love/JS_Advanced/GOT/baratheon.png b/derek_love/JS_Advanced/GOT/baratheon.png old mode 100644 new mode 100755 diff --git a/derek_love/JS_Advanced/GOT/details.js b/derek_love/JS_Advanced/GOT/details.js old mode 100644 new mode 100755 diff --git a/derek_love/JS_Advanced/GOT/houses.html b/derek_love/JS_Advanced/GOT/houses.html old mode 100644 new mode 100755 diff --git a/derek_love/JS_Advanced/GOT/lannister.jpg b/derek_love/JS_Advanced/GOT/lannister.jpg old mode 100644 new mode 100755 diff --git a/derek_love/JS_Advanced/GOT/stark.jpg b/derek_love/JS_Advanced/GOT/stark.jpg old mode 100644 new mode 100755 diff --git a/derek_love/JS_Advanced/GOT/styles.css b/derek_love/JS_Advanced/GOT/styles.css old mode 100644 new mode 100755 diff --git a/derek_love/JS_Advanced/GOT/targaryen.jpg b/derek_love/JS_Advanced/GOT/targaryen.jpg old mode 100644 new mode 100755 diff --git a/derek_love/JS_Advanced/JS_library.js b/derek_love/JS_Advanced/JS_library.js old mode 100644 new mode 100755 diff --git a/derek_love/JS_Advanced/WeatherApp/styles-weatherApp.css b/derek_love/JS_Advanced/WeatherApp/styles-weatherApp.css old mode 100644 new mode 100755 diff --git a/derek_love/JS_Advanced/WeatherApp/weatherApp.html b/derek_love/JS_Advanced/WeatherApp/weatherApp.html old mode 100644 new mode 100755 diff --git a/derek_love/JS_Advanced/WeatherApp/weatherAppScript.js b/derek_love/JS_Advanced/WeatherApp/weatherAppScript.js old mode 100644 new mode 100755 diff --git a/derek_love/JS_Advanced/dojoQuery/dojo.js b/derek_love/JS_Advanced/dojoQuery/dojo.js old mode 100644 new mode 100755 diff --git a/derek_love/JS_Advanced/dojoQuery/index.html b/derek_love/JS_Advanced/dojoQuery/index.html old mode 100644 new mode 100755 diff --git a/derek_love/JS_Advanced/fibNacci.js b/derek_love/JS_Advanced/fibNacci.js old mode 100644 new mode 100755 diff --git a/derek_love/JS_Advanced/hunt_github/hunt.js b/derek_love/JS_Advanced/hunt_github/hunt.js old mode 100644 new mode 100755 diff --git a/derek_love/JS_Advanced/hunt_github/index.html b/derek_love/JS_Advanced/hunt_github/index.html old mode 100644 new mode 100755 diff --git a/derek_love/JS_Advanced/test.js b/derek_love/JS_Advanced/test.js old mode 100644 new mode 100755 diff --git a/derek_love/JS_Fun/JS Math.html b/derek_love/JS_Fun/JS Math.html old mode 100644 new mode 100755 diff --git a/derek_love/JS_Fun/JSIntermediate.html b/derek_love/JS_Fun/JSIntermediate.html old mode 100644 new mode 100755 diff --git a/derek_love/JS_Fun/JS_Hoisting.txt b/derek_love/JS_Fun/JS_Hoisting.txt old mode 100644 new mode 100755 diff --git a/derek_love/JS_Fun/JS_Objects.html b/derek_love/JS_Fun/JS_Objects.html old mode 100644 new mode 100755 diff --git a/derek_love/JS_Fun/JS_Scroll.html b/derek_love/JS_Fun/JS_Scroll.html old mode 100644 new mode 100755 diff --git a/derek_love/JS_Fun/basicOne.html b/derek_love/JS_Fun/basicOne.html old mode 100644 new mode 100755 diff --git a/derek_love/JS_Fun/basicTwo.html b/derek_love/JS_Fun/basicTwo.html old mode 100644 new mode 100755 diff --git a/derek_love/JS_Fun/js_dom_1.html b/derek_love/JS_Fun/js_dom_1.html old mode 100644 new mode 100755 diff --git a/derek_love/JS_Fun/js_dom_2.html b/derek_love/JS_Fun/js_dom_2.html old mode 100644 new mode 100755 diff --git a/derek_love/JS_Fun/test.js b/derek_love/JS_Fun/test.js old mode 100644 new mode 100755 diff --git a/derek_love/JS_OOP/cardDeck.html b/derek_love/JS_OOP/cardDeck.html old mode 100644 new mode 100755 diff --git a/derek_love/JS_OOP/ninjaOne.html b/derek_love/JS_OOP/ninjaOne.html old mode 100644 new mode 100755 diff --git a/derek_love/JS_OOP/ninjaThree.html b/derek_love/JS_OOP/ninjaThree.html old mode 100644 new mode 100755 diff --git a/derek_love/JS_OOP/ninjaTwo.html b/derek_love/JS_OOP/ninjaTwo.html old mode 100644 new mode 100755 diff --git a/derek_love/node/carsCats/images/cat1.jpg b/derek_love/node/carsCats/images/cat1.jpg old mode 100644 new mode 100755 diff --git a/derek_love/node/carsCats/images/cat2.jpg b/derek_love/node/carsCats/images/cat2.jpg old mode 100644 new mode 100755 diff --git a/derek_love/node/carsCats/images/lambo.jpg b/derek_love/node/carsCats/images/lambo.jpg old mode 100644 new mode 100755 diff --git a/derek_love/node/carsCats/server.js b/derek_love/node/carsCats/server.js old mode 100644 new mode 100755 diff --git a/derek_love/node/carsCats/views/form.html b/derek_love/node/carsCats/views/form.html old mode 100644 new mode 100755 diff --git a/derek_love/node/carsCats/views/index.html b/derek_love/node/carsCats/views/index.html old mode 100644 new mode 100755 diff --git a/derek_love/node/carsCats/views/index2.html b/derek_love/node/carsCats/views/index2.html old mode 100644 new mode 100755 diff --git a/derek_love/node/landing/server.js b/derek_love/node/landing/server.js old mode 100644 new mode 100755 diff --git a/derek_love/node/landing/views/dojos.html b/derek_love/node/landing/views/dojos.html old mode 100644 new mode 100755 diff --git a/derek_love/node/landing/views/index.html b/derek_love/node/landing/views/index.html old mode 100644 new mode 100755 diff --git a/derek_love/node/landing/views/ninjas.html b/derek_love/node/landing/views/ninjas.html old mode 100644 new mode 100755 diff --git a/derek_love/node/math_mod/mathlib.js b/derek_love/node/math_mod/mathlib.js old mode 100644 new mode 100755 diff --git a/derek_love/node/math_mod/server.js b/derek_love/node/math_mod/server.js old mode 100644 new mode 100755 diff --git a/derek_love/node/node_server/app.js b/derek_love/node/node_server/app.js old mode 100644 new mode 100755 diff --git a/derek_love/node/node_server/dojo.html b/derek_love/node/node_server/dojo.html old mode 100644 new mode 100755 diff --git a/derek_love/node/node_server/index.html b/derek_love/node/node_server/index.html old mode 100644 new mode 100755 diff --git a/derek_love/node/node_server/stylesheets/styles.css b/derek_love/node/node_server/stylesheets/styles.css old mode 100644 new mode 100755 diff --git a/derek_love/node/test.js b/derek_love/node/test.js old mode 100644 new mode 100755 diff --git a/dillon_votaw/express/counter/package.json b/dillon_votaw/express/counter/package.json old mode 100644 new mode 100755 diff --git a/dillon_votaw/express/counter/server.js b/dillon_votaw/express/counter/server.js old mode 100644 new mode 100755 diff --git a/dillon_votaw/express/counter/static/main.css b/dillon_votaw/express/counter/static/main.css old mode 100644 new mode 100755 diff --git a/dillon_votaw/express/counter/views/index.ejs b/dillon_votaw/express/counter/views/index.ejs old mode 100644 new mode 100755 diff --git a/dillon_votaw/express/hello_express/package.json b/dillon_votaw/express/hello_express/package.json old mode 100644 new mode 100755 diff --git a/dillon_votaw/express/hello_express/server.js b/dillon_votaw/express/hello_express/server.js old mode 100644 new mode 100755 diff --git a/dillon_votaw/express/hello_express/static/main.css b/dillon_votaw/express/hello_express/static/main.css old mode 100644 new mode 100755 diff --git a/dillon_votaw/express/hello_express/static/main.html b/dillon_votaw/express/hello_express/static/main.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/express/hello_express/views/index.ejs b/dillon_votaw/express/hello_express/views/index.ejs old mode 100644 new mode 100755 diff --git a/dillon_votaw/express/hello_express/views/users.ejs b/dillon_votaw/express/hello_express/views/users.ejs old mode 100644 new mode 100755 diff --git a/dillon_votaw/express/number_game/package.json b/dillon_votaw/express/number_game/package.json old mode 100644 new mode 100755 diff --git a/dillon_votaw/express/number_game/server.js b/dillon_votaw/express/number_game/server.js old mode 100644 new mode 100755 diff --git a/dillon_votaw/express/number_game/static/main.css b/dillon_votaw/express/number_game/static/main.css old mode 100644 new mode 100755 diff --git a/dillon_votaw/express/number_game/views/index.ejs b/dillon_votaw/express/number_game/views/index.ejs old mode 100644 new mode 100755 diff --git a/dillon_votaw/express/survey_form/package.json b/dillon_votaw/express/survey_form/package.json old mode 100644 new mode 100755 diff --git a/dillon_votaw/express/survey_form/server.js b/dillon_votaw/express/survey_form/server.js old mode 100644 new mode 100755 diff --git a/dillon_votaw/express/survey_form/static/main.css b/dillon_votaw/express/survey_form/static/main.css old mode 100644 new mode 100755 diff --git a/dillon_votaw/express/survey_form/views/index.ejs b/dillon_votaw/express/survey_form/views/index.ejs old mode 100644 new mode 100755 diff --git a/dillon_votaw/express/survey_form/views/result.ejs b/dillon_votaw/express/survey_form/views/result.ejs old mode 100644 new mode 100755 diff --git a/dillon_votaw/express/templates/index.ejs b/dillon_votaw/express/templates/index.ejs old mode 100644 new mode 100755 diff --git a/dillon_votaw/express/templates/main.css b/dillon_votaw/express/templates/main.css old mode 100644 new mode 100755 diff --git a/dillon_votaw/express/templates/package.json b/dillon_votaw/express/templates/package.json old mode 100644 new mode 100755 diff --git a/dillon_votaw/express/templates/server.js b/dillon_votaw/express/templates/server.js old mode 100644 new mode 100755 diff --git a/dillon_votaw/javascript/broken_deck_of_cards.html b/dillon_votaw/javascript/broken_deck_of_cards.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/javascript/deck_of_cards.html b/dillon_votaw/javascript/deck_of_cards.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/javascript/dojoquery.html b/dillon_votaw/javascript/dojoquery.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/javascript/fib_nacci.html b/dillon_votaw/javascript/fib_nacci.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/javascript/for_running_js.html b/dillon_votaw/javascript/for_running_js.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/javascript/fundamentals/js_basics_i.html b/dillon_votaw/javascript/fundamentals/js_basics_i.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/javascript/fundamentals/js_basics_ii.html b/dillon_votaw/javascript/fundamentals/js_basics_ii.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/javascript/fundamentals/js_dom_i.html b/dillon_votaw/javascript/fundamentals/js_dom_i.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/javascript/fundamentals/js_dom_ii.html b/dillon_votaw/javascript/fundamentals/js_dom_ii.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/javascript/fundamentals/js_hoisting.html b/dillon_votaw/javascript/fundamentals/js_hoisting.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/javascript/fundamentals/js_intermediate.html b/dillon_votaw/javascript/fundamentals/js_intermediate.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/javascript/fundamentals/js_math.html b/dillon_votaw/javascript/fundamentals/js_math.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/javascript/fundamentals/js_objects.html b/dillon_votaw/javascript/fundamentals/js_objects.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/javascript/fundamentals/js_scroll.html b/dillon_votaw/javascript/fundamentals/js_scroll.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/javascript/game_of_thrones/game_of_thrones.html b/dillon_votaw/javascript/game_of_thrones/game_of_thrones.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/javascript/game_of_thrones/img/baratheon.png b/dillon_votaw/javascript/game_of_thrones/img/baratheon.png old mode 100644 new mode 100755 diff --git a/dillon_votaw/javascript/game_of_thrones/img/lannister.jpg b/dillon_votaw/javascript/game_of_thrones/img/lannister.jpg old mode 100644 new mode 100755 diff --git a/dillon_votaw/javascript/game_of_thrones/img/stark.jpg b/dillon_votaw/javascript/game_of_thrones/img/stark.jpg old mode 100644 new mode 100755 diff --git a/dillon_votaw/javascript/game_of_thrones/img/targaryen.jpg b/dillon_votaw/javascript/game_of_thrones/img/targaryen.jpg old mode 100644 new mode 100755 diff --git a/dillon_votaw/javascript/game_of_thrones/jquery.js b/dillon_votaw/javascript/game_of_thrones/jquery.js old mode 100644 new mode 100755 diff --git a/dillon_votaw/javascript/hunting_github/hunting_github.html b/dillon_votaw/javascript/hunting_github/hunting_github.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/javascript/hunting_github/jquery.js b/dillon_votaw/javascript/hunting_github/jquery.js old mode 100644 new mode 100755 diff --git a/dillon_votaw/javascript/javascript_library.html b/dillon_votaw/javascript/javascript_library.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/javascript/jquery_template.js b/dillon_votaw/javascript/jquery_template.js old mode 100644 new mode 100755 diff --git a/dillon_votaw/javascript/ninja_class_1.html b/dillon_votaw/javascript/ninja_class_1.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/javascript/ninja_class_2.html b/dillon_votaw/javascript/ninja_class_2.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/javascript/ninja_class_3.html b/dillon_votaw/javascript/ninja_class_3.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/node/cars_and_cats/apps.js b/dillon_votaw/node/cars_and_cats/apps.js old mode 100644 new mode 100755 diff --git a/dillon_votaw/node/cars_and_cats/images/car1.jpg b/dillon_votaw/node/cars_and_cats/images/car1.jpg old mode 100644 new mode 100755 diff --git a/dillon_votaw/node/cars_and_cats/images/car2.jpg b/dillon_votaw/node/cars_and_cats/images/car2.jpg old mode 100644 new mode 100755 diff --git a/dillon_votaw/node/cars_and_cats/images/car3.jpg b/dillon_votaw/node/cars_and_cats/images/car3.jpg old mode 100644 new mode 100755 diff --git a/dillon_votaw/node/cars_and_cats/images/cat1.jpg b/dillon_votaw/node/cars_and_cats/images/cat1.jpg old mode 100644 new mode 100755 diff --git a/dillon_votaw/node/cars_and_cats/images/cat2.jpg b/dillon_votaw/node/cars_and_cats/images/cat2.jpg old mode 100644 new mode 100755 diff --git a/dillon_votaw/node/cars_and_cats/images/cat3.jpg b/dillon_votaw/node/cars_and_cats/images/cat3.jpg old mode 100644 new mode 100755 diff --git a/dillon_votaw/node/cars_and_cats/stylesheets/main.css b/dillon_votaw/node/cars_and_cats/stylesheets/main.css old mode 100644 new mode 100755 diff --git a/dillon_votaw/node/cars_and_cats/views/cars.html b/dillon_votaw/node/cars_and_cats/views/cars.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/node/cars_and_cats/views/cats.html b/dillon_votaw/node/cars_and_cats/views/cats.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/node/cars_and_cats/views/form.html b/dillon_votaw/node/cars_and_cats/views/form.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/node/landing_page/app.js b/dillon_votaw/node/landing_page/app.js old mode 100644 new mode 100755 diff --git a/dillon_votaw/node/landing_page/templates/dojos.html b/dillon_votaw/node/landing_page/templates/dojos.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/node/landing_page/templates/error.html b/dillon_votaw/node/landing_page/templates/error.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/node/landing_page/templates/index.html b/dillon_votaw/node/landing_page/templates/index.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/node/landing_page/templates/ninjas.html b/dillon_votaw/node/landing_page/templates/ninjas.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/node/math_module/app.js b/dillon_votaw/node/math_module/app.js old mode 100644 new mode 100755 diff --git a/dillon_votaw/node/math_module/mathlib.js b/dillon_votaw/node/math_module/mathlib.js old mode 100644 new mode 100755 diff --git a/dillon_votaw/node/node_module_basics/app.js b/dillon_votaw/node/node_module_basics/app.js old mode 100644 new mode 100755 diff --git a/dillon_votaw/node/node_module_basics/my_module.js b/dillon_votaw/node/node_module_basics/my_module.js old mode 100644 new mode 100755 diff --git a/dillon_votaw/node/node_server/app.js b/dillon_votaw/node/node_server/app.js old mode 100644 new mode 100755 diff --git a/dillon_votaw/node/node_server/dojo/dojo.html b/dillon_votaw/node/node_server/dojo/dojo.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/node/node_server/index.html b/dillon_votaw/node/node_server/index.html old mode 100644 new mode 100755 diff --git a/dillon_votaw/node/node_server/static/js/javascript.js b/dillon_votaw/node/node_server/static/js/javascript.js old mode 100644 new mode 100755 diff --git a/dillon_votaw/node/template/server.js b/dillon_votaw/node/template/server.js old mode 100644 new mode 100755 diff --git a/dillon_votaw/node/template/stylesheets/main.css b/dillon_votaw/node/template/stylesheets/main.css old mode 100644 new mode 100755 diff --git a/dillon_votaw/node/test.js b/dillon_votaw/node/test.js old mode 100644 new mode 100755 diff --git a/dillon_votaw/null.txt b/dillon_votaw/null.txt old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/faveAuthors/authors/.angular-cli.json b/kyla_stearns/Angular/faveAuthors/authors/.angular-cli.json new file mode 100755 index 0000000..d733727 --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/.angular-cli.json @@ -0,0 +1,60 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "project": { + "name": "authors" + }, + "apps": [ + { + "root": "src", + "outDir": "dist", + "assets": [ + "assets", + "favicon.png" + ], + "index": "index.html", + "main": "main.ts", + "polyfills": "polyfills.ts", + "test": "test.ts", + "tsconfig": "tsconfig.app.json", + "testTsconfig": "tsconfig.spec.json", + "prefix": "app", + "styles": [ + "styles.css" + ], + "scripts": [], + "environmentSource": "environments/environment.ts", + "environments": { + "dev": "environments/environment.ts", + "prod": "environments/environment.prod.ts" + } + } + ], + "e2e": { + "protractor": { + "config": "./protractor.conf.js" + } + }, + "lint": [ + { + "project": "src/tsconfig.app.json", + "exclude": "**/node_modules/**" + }, + { + "project": "src/tsconfig.spec.json", + "exclude": "**/node_modules/**" + }, + { + "project": "e2e/tsconfig.e2e.json", + "exclude": "**/node_modules/**" + } + ], + "test": { + "karma": { + "config": "./karma.conf.js" + } + }, + "defaults": { + "styleExt": "css", + "component": {} + } +} diff --git a/kyla_stearns/Angular/faveAuthors/authors/.editorconfig b/kyla_stearns/Angular/faveAuthors/authors/.editorconfig new file mode 100755 index 0000000..6e87a00 --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/.editorconfig @@ -0,0 +1,13 @@ +# Editor configuration, see http://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/kyla_stearns/Angular/faveAuthors/authors/.gitignore b/kyla_stearns/Angular/faveAuthors/authors/.gitignore new file mode 100755 index 0000000..eabf65e --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/.gitignore @@ -0,0 +1,44 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/dist-server +/tmp +/out-tsc + +# dependencies +/node_modules + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +/typings + +# e2e +/e2e/*.js +/e2e/*.map + +# System Files +.DS_Store +Thumbs.db diff --git a/kyla_stearns/Angular/faveAuthors/authors/README.md b/kyla_stearns/Angular/faveAuthors/authors/README.md new file mode 100755 index 0000000..ee7f0e0 --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/README.md @@ -0,0 +1,27 @@ +# Authors + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.7.3. + +## Development server + +Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. + +## Code scaffolding + +Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. + +## Build + +Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build. + +## Running unit tests + +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Running end-to-end tests + +Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/kyla_stearns/Angular/faveAuthors/authors/e2e/app.e2e-spec.ts b/kyla_stearns/Angular/faveAuthors/authors/e2e/app.e2e-spec.ts new file mode 100755 index 0000000..bce841b --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/e2e/app.e2e-spec.ts @@ -0,0 +1,14 @@ +import { AppPage } from './app.po'; + +describe('authors App', () => { + let page: AppPage; + + beforeEach(() => { + page = new AppPage(); + }); + + it('should display welcome message', () => { + page.navigateTo(); + expect(page.getParagraphText()).toEqual('Welcome to app!'); + }); +}); diff --git a/kyla_stearns/Angular/faveAuthors/authors/e2e/app.po.ts b/kyla_stearns/Angular/faveAuthors/authors/e2e/app.po.ts new file mode 100755 index 0000000..82ea75b --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/e2e/app.po.ts @@ -0,0 +1,11 @@ +import { browser, by, element } from 'protractor'; + +export class AppPage { + navigateTo() { + return browser.get('/'); + } + + getParagraphText() { + return element(by.css('app-root h1')).getText(); + } +} diff --git a/kyla_stearns/Angular/faveAuthors/authors/e2e/tsconfig.e2e.json b/kyla_stearns/Angular/faveAuthors/authors/e2e/tsconfig.e2e.json new file mode 100755 index 0000000..1d9e5ed --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/e2e/tsconfig.e2e.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/e2e", + "baseUrl": "./", + "module": "commonjs", + "target": "es5", + "types": [ + "jasmine", + "jasminewd2", + "node" + ] + } +} diff --git a/kyla_stearns/Angular/faveAuthors/authors/karma.conf.js b/kyla_stearns/Angular/faveAuthors/authors/karma.conf.js new file mode 100755 index 0000000..af139fa --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/karma.conf.js @@ -0,0 +1,33 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular/cli'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular/cli/plugins/karma') + ], + client:{ + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + reports: [ 'html', 'lcovonly' ], + fixWebpackSourcePaths: true + }, + angularCli: { + environment: 'dev' + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false + }); +}; diff --git a/kyla_stearns/Angular/faveAuthors/authors/package.json b/kyla_stearns/Angular/faveAuthors/authors/package.json new file mode 100755 index 0000000..0ffec99 --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/package.json @@ -0,0 +1,48 @@ +{ + "name": "authors", + "version": "0.0.0", + "license": "MIT", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build --prod", + "test": "ng test", + "lint": "ng lint", + "e2e": "ng e2e" + }, + "private": true, + "dependencies": { + "@angular/animations": "^5.2.0", + "@angular/common": "^5.2.0", + "@angular/compiler": "^5.2.0", + "@angular/core": "^5.2.0", + "@angular/forms": "^5.2.0", + "@angular/http": "^5.2.0", + "@angular/platform-browser": "^5.2.0", + "@angular/platform-browser-dynamic": "^5.2.0", + "@angular/router": "^5.2.0", + "core-js": "^2.4.1", + "rxjs": "^5.5.6", + "zone.js": "^0.8.19" + }, + "devDependencies": { + "@angular/cli": "~1.7.3", + "@angular/compiler-cli": "^5.2.0", + "@angular/language-service": "^5.2.0", + "@types/jasmine": "~2.8.3", + "@types/jasminewd2": "~2.0.2", + "@types/node": "~6.0.60", + "codelyzer": "^4.0.1", + "jasmine-core": "~2.8.0", + "jasmine-spec-reporter": "~4.2.1", + "karma": "~2.0.0", + "karma-chrome-launcher": "~2.2.0", + "karma-coverage-istanbul-reporter": "^1.2.1", + "karma-jasmine": "~1.1.0", + "karma-jasmine-html-reporter": "^0.2.2", + "protractor": "~5.1.2", + "ts-node": "~4.1.0", + "tslint": "~5.9.1", + "typescript": "~2.5.3" + } +} diff --git a/kyla_stearns/Angular/faveAuthors/authors/protractor.conf.js b/kyla_stearns/Angular/faveAuthors/authors/protractor.conf.js new file mode 100755 index 0000000..7ee3b5e --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/protractor.conf.js @@ -0,0 +1,28 @@ +// Protractor configuration file, see link for more information +// https://github.com/angular/protractor/blob/master/lib/config.ts + +const { SpecReporter } = require('jasmine-spec-reporter'); + +exports.config = { + allScriptsTimeout: 11000, + specs: [ + './e2e/**/*.e2e-spec.ts' + ], + capabilities: { + 'browserName': 'chrome' + }, + directConnect: true, + baseUrl: 'http://localhost:4200/', + framework: 'jasmine', + jasmineNodeOpts: { + showColors: true, + defaultTimeoutInterval: 30000, + print: function() {} + }, + onPrepare() { + require('ts-node').register({ + project: 'e2e/tsconfig.e2e.json' + }); + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); + } +}; diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/app/app-routing.module.ts b/kyla_stearns/Angular/faveAuthors/authors/src/app/app-routing.module.ts new file mode 100755 index 0000000..1fae960 --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/app/app-routing.module.ts @@ -0,0 +1,19 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { HomeComponent } from './home/home.component'; +import { NewComponent } from './new/new.component'; +import { EditComponent } from './edit/edit.component'; + +const routes: Routes = [ + {path: '', pathMatch: 'full', component: HomeComponent }, + {path: 'home', component: HomeComponent }, + {path: 'new', component: NewComponent}, + {path: 'edit/:id', component: EditComponent} +]; + +@NgModule({ + imports: [RouterModule.forRoot(routes)], + exports: [RouterModule] +}) +export class AppRoutingModule { } diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/app/app.component.css b/kyla_stearns/Angular/faveAuthors/authors/src/app/app.component.css new file mode 100755 index 0000000..5a5e3f5 --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/app/app.component.css @@ -0,0 +1,15 @@ +*{ + margin: 0px; + padding: 0px; + font-family: Arial, sans-serif; +} + +#wrapper{ + width: 970px; + margin: auto; +} + +h1{ + margin: 15px 0px 15px 0px; +} + diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/app/app.component.html b/kyla_stearns/Angular/faveAuthors/authors/src/app/app.component.html new file mode 100755 index 0000000..1978471 --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/app/app.component.html @@ -0,0 +1,5 @@ + +
+

Favorite Authors

+ + diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/app/app.component.spec.ts b/kyla_stearns/Angular/faveAuthors/authors/src/app/app.component.spec.ts new file mode 100755 index 0000000..e4ca195 --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/app/app.component.spec.ts @@ -0,0 +1,31 @@ +import { TestBed, async } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { AppComponent } from './app.component'; +describe('AppComponent', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [ + RouterTestingModule + ], + declarations: [ + AppComponent + ], + }).compileComponents(); + })); + it('should create the app', async(() => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app).toBeTruthy(); + })); + it(`should have as title 'app'`, async(() => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app.title).toEqual('app'); + })); + it('should render title in a h1 tag', async(() => { + const fixture = TestBed.createComponent(AppComponent); + fixture.detectChanges(); + const compiled = fixture.debugElement.nativeElement; + expect(compiled.querySelector('h1').textContent).toContain('Welcome to app!'); + })); +}); diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/app/app.component.ts b/kyla_stearns/Angular/faveAuthors/authors/src/app/app.component.ts new file mode 100755 index 0000000..64bb6db --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/app/app.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; +import { HttpService } from './http.service'; + +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.css'] +}) +export class AppComponent { + title = 'app'; + constructor(private _httpService: HttpService){} +} diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/app/app.module.ts b/kyla_stearns/Angular/faveAuthors/authors/src/app/app.module.ts new file mode 100755 index 0000000..904fbcf --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/app/app.module.ts @@ -0,0 +1,36 @@ +import { BrowserModule } from '@angular/platform-browser'; +import { NgModule } from '@angular/core'; + +import { AppRoutingModule } from './app-routing.module'; +import { HttpModule } from '@angular/http'; +import { FormsModule } from '@angular/forms'; + +import { AppComponent } from './app.component'; +import { HomeComponent } from './home/home.component'; +import { NewComponent } from './new/new.component'; +import { EditComponent } from './edit/edit.component'; + +import { HttpService } from './http.service'; + + +@NgModule({ + declarations: [ + AppComponent, + HomeComponent, + NewComponent, + EditComponent + ], + imports: [ + BrowserModule, + AppRoutingModule, + HttpModule, + FormsModule + ], + providers: [ + HttpService + ], + bootstrap: [ + AppComponent + ] +}) +export class AppModule { } diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/app/edit/edit.component.css b/kyla_stearns/Angular/faveAuthors/authors/src/app/edit/edit.component.css new file mode 100755 index 0000000..9f8696f --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/app/edit/edit.component.css @@ -0,0 +1,42 @@ +#errors{ + color: red; + padding: 5px; + margin: 10px 0px 10px 0px; +} + +h4{ + margin-top: 10px; +} + +p{ + font-size: 18px; + margin: 15px 0px 15px 0px; +} + +input[type=text]{ + padding: 5px; + font-size: 14px; + width: 150px; +} + +input[type=submit]{ + width: 100px; + font-size: 14px; + padding: 5px; + text-align: center; + background-color: lightgrey; + vertical-align: top; + margin: 0px 15px 0px 15px; + border-radius: 5px; +} + +button{ + width: 100px; + font-size: 14px; + padding: 5px; + text-align: center; + background-color: lightgrey; + vertical-align: top; + margin: 0px 15px 0px 15px; + border-radius: 5px; +} \ No newline at end of file diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/app/edit/edit.component.html b/kyla_stearns/Angular/faveAuthors/authors/src/app/edit/edit.component.html new file mode 100755 index 0000000..4a9cff4 --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/app/edit/edit.component.html @@ -0,0 +1,18 @@ + Home + +
+

{{ response }}

+
+ +
+ + + + + + +
\ No newline at end of file diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/app/edit/edit.component.spec.ts b/kyla_stearns/Angular/faveAuthors/authors/src/app/edit/edit.component.spec.ts new file mode 100755 index 0000000..34ef921 --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/app/edit/edit.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditComponent } from './edit.component'; + +describe('EditComponent', () => { + let component: EditComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EditComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EditComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/app/edit/edit.component.ts b/kyla_stearns/Angular/faveAuthors/authors/src/app/edit/edit.component.ts new file mode 100755 index 0000000..e637ac3 --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/app/edit/edit.component.ts @@ -0,0 +1,48 @@ +import { Component, OnInit } from '@angular/core'; +import { HttpService } from '../http.service'; +import { ActivatedRoute, Params, Router } from '@angular/router'; + +@Component({ + selector: 'app-edit', + templateUrl: './edit.component.html', + styleUrls: ['./edit.component.css'] +}) +export class EditComponent implements OnInit { + thisAuthor = {}; + response: any; + constructor( + private _httpService: HttpService, + private _route: ActivatedRoute, + private _router: Router + ) { } + + ngOnInit() { + this.thisAuthor = {id: '', name: ''}; + this._route.params.subscribe((params: Params) => { + // console.log(Number(params['id'])); + // this.id = params['id']; + this.thisAuthor = {id: params['id'], name: this.thisAuthor.name}; + this._httpService.editAuthor(this.thisAuthor); + console.log("Data from this thisAuthor", this.thisAuthor); + }); + } + + onSubmitEdit(event){ + event.preventDefault(); + console.log("Inside onSubmitEdit function with thisAuthor", this.thisAuthor); + // code to send off the form data (this.thisAuthor) to the service + let observable = this._httpService.updateAuthor(this.thisAuthor); + observable.subscribe(data => { + // console.log("thisAuthor subscribe to Observable", data.json()); + this.response = data.json(); + // console.log("You have successfully updated this author", this.thisAuthor); + // then reset this.thisAuthor to new, clean object. + this.thisAuthor = {id: '', name: ''}; + // this._router.navigate(['/home']); + + } + + }) + } + +} diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/app/home/home.component.css b/kyla_stearns/Angular/faveAuthors/authors/src/app/home/home.component.css new file mode 100755 index 0000000..9dd4b3e --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/app/home/home.component.css @@ -0,0 +1,37 @@ +#errors{ + color: red; + padding: 5px; + margin: 10px 0px 10px 0px; +} + +h4{ + margin-top: 10px; +} + +p{ + font-size: 18px; + margin: 15px 0px 15px 0px; +} + +table{ + font-size: 18px; +} + +thead{ + background-color: lightgrey; +} + +th{ + padding: 2px; +} + +button{ + width: 100px; + font-size: 14px; + padding: 5px; + text-align: center; + background-color: lightgrey; + vertical-align: top; + margin: 0px 15px 0px 15px; + border-radius: 5px; +} \ No newline at end of file diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/app/home/home.component.html b/kyla_stearns/Angular/faveAuthors/authors/src/app/home/home.component.html new file mode 100755 index 0000000..aee4ee7 --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/app/home/home.component.html @@ -0,0 +1,21 @@ +
+

{{ response }}

+
+ + Add an author +

We have quotes by:

+ + + + + + + + + + + +
Author Actions Available
{{ element.name }} + + +
\ No newline at end of file diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/app/home/home.component.spec.ts b/kyla_stearns/Angular/faveAuthors/authors/src/app/home/home.component.spec.ts new file mode 100755 index 0000000..490e81b --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/app/home/home.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { HomeComponent } from './home.component'; + +describe('HomeComponent', () => { + let component: HomeComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ HomeComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HomeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/app/home/home.component.ts b/kyla_stearns/Angular/faveAuthors/authors/src/app/home/home.component.ts new file mode 100755 index 0000000..028069c --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/app/home/home.component.ts @@ -0,0 +1,44 @@ +import { Component, OnInit } from '@angular/core'; +import { HttpService } from '../http.service'; +import { ActivatedRoute, Params, Router } from '@angular/router'; + +@Component({ + selector: 'app-home', + templateUrl: './home.component.html', + styleUrls: ['./home.component.css'] +}) +export class HomeComponent implements OnInit { + authors = []; + response: any; + constructor( + private _httpService: HttpService, + private _route: ActivatedRoute, + private _router: Router + ) { } + + ngOnInit() { + this.getAuthors(); + } + + getAuthors(){ + let observable = this._httpService.getAllAuthors(); + observable.subscribe(data => { // subscribe to Observable in order to get updates when you receive a response + data = data.json(); + // console.log("Got our authors!", data); // inject HttpService as dependency + // console.log( "This is all_authors of data", data['all_authors']); + this.authors = data['all_authors']; + }); + } + + deleteAuthor(id){ + console.log("inside component delete with id", id); + let observable = this._httpService.deleteAuthor(id); + observable.subscribe(data => { // subscribe to Observable in order to get updates when you receive a response + // console.log("deleteAuthor subscribe to Observable", data.json()); + this.response = data.json(); // inject HttpService as dependency + this.getAuthors(); + // this._router.navigate(['/']); + // can re-route home but i chose to stay on the page, clear the form, and show validations + }); + } +} \ No newline at end of file diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/app/http.service.spec.ts b/kyla_stearns/Angular/faveAuthors/authors/src/app/http.service.spec.ts new file mode 100755 index 0000000..c2eb030 --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/app/http.service.spec.ts @@ -0,0 +1,15 @@ +import { TestBed, inject } from '@angular/core/testing'; + +import { HttpService } from './http.service'; + +describe('HttpService', () => { + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [HttpService] + }); + }); + + it('should be created', inject([HttpService], (service: HttpService) => { + expect(service).toBeTruthy(); + })); +}); diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/app/http.service.ts b/kyla_stearns/Angular/faveAuthors/authors/src/app/http.service.ts new file mode 100755 index 0000000..9eebfc2 --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/app/http.service.ts @@ -0,0 +1,38 @@ +import { Injectable } from '@angular/core'; +import { Http } from '@angular/http'; // import Http + +@Injectable() +export class HttpService{ + constructor(private _http: Http){ // inject Http as dependency + // this.getTasks(); // invoke getTasks function to fetch from database upon creation + } + getAllAuthors(){ + // console.log("Inside getAllTasks function"); + // our http response is an Observable, store it in a variable + // let tempObservable = this._http.get('/authors'); + // subscribe to the Observable and provide the code we would like to do with our data from the response + // tempObservable.subscribe(data => console.log("Got our authors!", data)); + return this._http.get('/authors'); // return the Observable + } + + createAuthor(newAuthor){ + // console.log("Inside createAuthor function with newAuthor", newAuthor); + return this._http.post('/authors/new', newAuthor); + } + + editAuthor(id){ + // console.log("Inside editAuthor function with id", id); + return this._http.get('/authors/edit/'+id); // return the Observable + } + + updateAuthor(editAuthor){ + // console.log("Inside updateAuthor function with editAuthor", editAuthor); + return this._http.put('/authors/update/'+editAuthor.id, editAuthor); // return the Observable + } + + deleteAuthor(id){ + // console.log("Inside deleteAuthor function with id", id); + return this._http.delete('/authors/'+id); // return the Observable + } +} + diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/app/new/new.component.css b/kyla_stearns/Angular/faveAuthors/authors/src/app/new/new.component.css new file mode 100755 index 0000000..9f8696f --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/app/new/new.component.css @@ -0,0 +1,42 @@ +#errors{ + color: red; + padding: 5px; + margin: 10px 0px 10px 0px; +} + +h4{ + margin-top: 10px; +} + +p{ + font-size: 18px; + margin: 15px 0px 15px 0px; +} + +input[type=text]{ + padding: 5px; + font-size: 14px; + width: 150px; +} + +input[type=submit]{ + width: 100px; + font-size: 14px; + padding: 5px; + text-align: center; + background-color: lightgrey; + vertical-align: top; + margin: 0px 15px 0px 15px; + border-radius: 5px; +} + +button{ + width: 100px; + font-size: 14px; + padding: 5px; + text-align: center; + background-color: lightgrey; + vertical-align: top; + margin: 0px 15px 0px 15px; + border-radius: 5px; +} \ No newline at end of file diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/app/new/new.component.html b/kyla_stearns/Angular/faveAuthors/authors/src/app/new/new.component.html new file mode 100755 index 0000000..cd2a994 --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/app/new/new.component.html @@ -0,0 +1,19 @@ + Home + +
+

{{ response }}

+
+ +

Add a new author:

+ +
+ + + + + + +
\ No newline at end of file diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/app/new/new.component.spec.ts b/kyla_stearns/Angular/faveAuthors/authors/src/app/new/new.component.spec.ts new file mode 100755 index 0000000..3451b0f --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/app/new/new.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { NewComponent } from './new.component'; + +describe('NewComponent', () => { + let component: NewComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ NewComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(NewComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/app/new/new.component.ts b/kyla_stearns/Angular/faveAuthors/authors/src/app/new/new.component.ts new file mode 100755 index 0000000..2b0f665 --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/app/new/new.component.ts @@ -0,0 +1,39 @@ +import { Component, OnInit } from '@angular/core'; +import { HttpService } from '../http.service'; +import { ActivatedRoute, Params, Router } from '@angular/router'; +// not really using params in this case, but easy to bring in in case want to change later + +@Component({ + selector: 'app-new', + templateUrl: './new.component.html', + styleUrls: ['./new.component.css'] +}) +export class NewComponent implements OnInit { + newAuthor = {}; + response: any; + constructor( + private _httpService: HttpService, + private _route: ActivatedRoute, + private _router: Router + ) { } + + ngOnInit() { + this.newAuthor = { name: '' }; + } + + onSubmitNew(event){ + // CODE TO SUBMIT FORM AND SEND TO DB + event.preventDefault(); + // code to send off the form data (this.newTask) to the service + // console.log("Updated newTask", this.newTask); + let observable = this._httpService.createAuthor(this.newAuthor); + observable.subscribe(data => { + // console.log("newAuthor subscribe to Observable", data.json()); + this.response = data.json(); + // then reset this.newAuthor to new, clean object. + this.newAuthor = { name: '' }; + // this._router.navigate(['/home']); + // can re-route home but i chose to stay on the page, clear the form, and show validations + }) + } +} diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/assets/.gitkeep b/kyla_stearns/Angular/faveAuthors/authors/src/assets/.gitkeep new file mode 100755 index 0000000..e69de29 diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/environments/environment.prod.ts b/kyla_stearns/Angular/faveAuthors/authors/src/environments/environment.prod.ts new file mode 100755 index 0000000..3612073 --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/environments/environment.prod.ts @@ -0,0 +1,3 @@ +export const environment = { + production: true +}; diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/environments/environment.ts b/kyla_stearns/Angular/faveAuthors/authors/src/environments/environment.ts new file mode 100755 index 0000000..b7f639a --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/environments/environment.ts @@ -0,0 +1,8 @@ +// The file contents for the current environment will overwrite these during build. +// The build system defaults to the dev environment which uses `environment.ts`, but if you do +// `ng build --env=prod` then `environment.prod.ts` will be used instead. +// The list of which env maps to which file can be found in `.angular-cli.json`. + +export const environment = { + production: false +}; diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/favicon.ico b/kyla_stearns/Angular/faveAuthors/authors/src/favicon.ico new file mode 100755 index 0000000000000000000000000000000000000000..8081c7ceaf2be08bf59010158c586170d9d2d517 GIT binary patch literal 5430 zcmc(je{54#6vvCoAI3i*G5%$U7!sA3wtMZ$fH6V9C`=eXGJb@R1%(I_{vnZtpD{6n z5Pl{DmxzBDbrB>}`90e12m8T*36WoeDLA&SD_hw{H^wM!cl_RWcVA!I+x87ee975; z@4kD^=bYPn&pmG@(+JZ`rqQEKxW<}RzhW}I!|ulN=fmjVi@x{p$cC`)5$a!)X&U+blKNvN5tg=uLvuLnuqRM;Yc*swiexsoh#XPNu{9F#c`G zQLe{yWA(Y6(;>y|-efAy11k<09(@Oo1B2@0`PtZSkqK&${ zgEY}`W@t{%?9u5rF?}Y7OL{338l*JY#P!%MVQY@oqnItpZ}?s z!r?*kwuR{A@jg2Chlf0^{q*>8n5Ir~YWf*wmsh7B5&EpHfd5@xVaj&gqsdui^spyL zB|kUoblGoO7G(MuKTfa9?pGH0@QP^b#!lM1yHWLh*2iq#`C1TdrnO-d#?Oh@XV2HK zKA{`eo{--^K&MW66Lgsktfvn#cCAc*(}qsfhrvOjMGLE?`dHVipu1J3Kgr%g?cNa8 z)pkmC8DGH~fG+dlrp(5^-QBeEvkOvv#q7MBVLtm2oD^$lJZx--_=K&Ttd=-krx(Bb zcEoKJda@S!%%@`P-##$>*u%T*mh+QjV@)Qa=Mk1?#zLk+M4tIt%}wagT{5J%!tXAE;r{@=bb%nNVxvI+C+$t?!VJ@0d@HIyMJTI{vEw0Ul ze(ha!e&qANbTL1ZneNl45t=#Ot??C0MHjjgY8%*mGisN|S6%g3;Hlx#fMNcL<87MW zZ>6moo1YD?P!fJ#Jb(4)_cc50X5n0KoDYfdPoL^iV`k&o{LPyaoqMqk92wVM#_O0l z09$(A-D+gVIlq4TA&{1T@BsUH`Bm=r#l$Z51J-U&F32+hfUP-iLo=jg7Xmy+WLq6_tWv&`wDlz#`&)Jp~iQf zZP)tu>}pIIJKuw+$&t}GQuqMd%Z>0?t%&BM&Wo^4P^Y z)c6h^f2R>X8*}q|bblAF?@;%?2>$y+cMQbN{X$)^R>vtNq_5AB|0N5U*d^T?X9{xQnJYeU{ zoZL#obI;~Pp95f1`%X3D$Mh*4^?O?IT~7HqlWguezmg?Ybq|7>qQ(@pPHbE9V?f|( z+0xo!#m@Np9PljsyxBY-UA*{U*la#8Wz2sO|48_-5t8%_!n?S$zlGe+NA%?vmxjS- zHE5O3ZarU=X}$7>;Okp(UWXJxI%G_J-@IH;%5#Rt$(WUX?6*Ux!IRd$dLP6+SmPn= z8zjm4jGjN772R{FGkXwcNv8GBcZI#@Y2m{RNF_w8(Z%^A*!bS*!}s6sh*NnURytky humW;*g7R+&|Ledvc-pe`OYVna7&JvNd~PTsBZ zYHkA~!^(F$=~JrrxWdrH!b;d|Rq(ZMn#8rk_=WVc^%IYrXee+t3IiztKzEZQzzYBl z{)GlW68=KK|HG&Mm*Bb(C*&Qj`iC9ILQB~m@nz!8K>Itcx~bYWhapmf*QMoa%f=d* z3;eTNcy22{RXEABaLl4<)jn_|Bg2l?Wtu~q+rG_%^H`lk-QJPNkvpVhQVoexQfEsMdT@cg1$uC&2C=I-}fy z4brRJJ~^`#CbPND4IVZaJxp#sQ`1XCCB~@PS(O z-$P>tw_`ax{!G2j7dOa`AV$t~SZ!7L%nRV|f8O@s<)_7CxgX!2cL+DG90{t;@$y@~ z+HET!g3<*d`f}>)>fcN)GR*NB9?7kN?LLtsBlVHR%AGI zwwC&g|NP<=q#$ng}u;oV&7xsCP zf9OLI=Q{aPpRxv_(Egs0_o?f_K3+`r+nH-CFyBVwG@$#PbAeCTeZr+ z++j@;>P@}!#%M%la*s)@{xPU<&waC(<2X(GZa3ZSs}t@}coA#1IXyo_!C2yt2fyNq zOnt&{ViXtU_jNm67)*W3c2@YzIinO#=HT7)3L~J4V^hu>eak}^u;~?%WHTTBx-xBR z0)21GwZ@Esg6hG<^#n5u4F&D{&G8;k2P{8Kdh+Us>G$oyqd#5MV--ro0%O zrSOL|+VMG8=j!675Pvt)I#xZ`tLN*=xAE!NALOG;wz&}>rcvJz+ODKt?y3vY+j)E`6-aO%RJAbG`0|jM8BVeU{}?)u%J;}B>FJBh z-wNOK5RUJLlK;{iL)$YV>X05T!t$-o;f}cxU9N&DwAn?ykE5I`*Bk=!1&`C`wu#cz zMs{&3jGgmewmo#rxnV1$=}LWLhR4)e(66_IqdO08^?MV<4!PcPX<_IoHQ;pAK7qM+ zH7a#N=MK;rr@F0+Mn1F|;0b@6ULSbh+?bA5F@@&gP#MmD{O2E^z5+oLIOpgqN_#o- zcJ6R;lXnxP z3(k5k3=KvFXa1p%RiWr(=O1>8I|PFi!gQ08_ESp_aR9_@wiTPJ)N+%xQn&o)Qh=f` zWF<2-g%&xrgtnf>9sD3w*>-O)K*4aPFP}}_V5)1D9ND|+W5$JPNDYO z73kQv&5(}!#8z6XLuxq3m1hf`eMj@(Lwd)Y7lzbZN;D7!l6^o`q6J{X)eNo2%?D%J zFHWL<*yIx+(3ZAFyu*g(ppcZkQr5@25*H5&K@Lh&Xt}@3CM<8`YW$9tuQfHxLlzd) zX=S%%6b|XeUKktIMI^zKij}$Z*pu1JtW7C=lhav==iwHOo>bP`dP3VIKZ^78oqq!r z=1TuK?V!af6SK1R^p&3wy}i9CHYjh-R6$m^#wVgGZxqsz*EfzoqS1F0CGd5W-1*|$ z1&E63PMs8|MJY(?*1X8r&r|xE6Cmwnt=LYlTj5Ny@t#%#5WD5tIPH&DMFUFq>74aX z`ozXKUQfg+9vq+Eom&M+ulm++TwM(}w*w+_>NJHi>y;p5P9`%!JedlR;S^f?J7poJ z%$p`}IN3n<2C}|G67uR)Kq*^c+Ty zo72F0XUT@5_kE_kFT!XXknJ1K82r7&%BoH{ufQoG425|T@hWB#%`_DX*QNv1jbpQz zwrAQMs^f-y3j{7;Wb?d~n8j$8Fb|d+(NH+eMo3rGXP;LyQTrme zS;cfc`geS%^WS5-8ce8Rxvzzxt5!1NReo!Wbk%4!wFg-Fbw>{K zsX@cAw^5@#4rk}yg{wVe14;2^$Cd0j48oWApkP-^R_3NM5!rB;5pyUMveN=qFKHG| z#Bf4Few_fR6ZVK~8WY^d>o@*C>W?R%dIr@^T6F@a$kPk{Elt!R?ULf>vl(e(v@*?} zPdxsYoTF1R(rA~Q)yT=SZrustJtP;-k_u<}X7SX4ha34->Y^Cz{K84wBGr_4q?Po5 z8jQ+i6VDkt>|9=YFReNydw)woYIoX((@|$i#hZmUL5CZaPkY*u|N{5HmzONqNer6)_ase4|d zT$*^$JJB^*B0ptY93mL?s9^acE%f^{r&6rn(REkxbj9)D#G1x*0 z9Ss?+kovr7LXzto-s2weWk5&rfCcnPMdhuupAN;hE_u0Q^{n0Bn5HwN*1F%h;aRoM%Dp_c=W=RE%5Pp>5a;`|@Ws1?IH)7lH{WceGlyMm z!2~V5owiICe0ponPwG>Glg-X`!Zp@1F~?P0H5> z7YN;$<=_Q@-RqGWvfE`s7gmnCU3H1aOw6y8o*A1|4LbDgYF=0tzLo2t@Yk?v*}lf2 zwZ$`6y+>Z|L6lX@8tZhwzyD_Cr>t3zXX?-PyW@DnAS;wg{0_7dhk%~b_mr#z1w|62WJd#jjt@M9;QcS~OjP{&*=cE^xaMRE1>u2*Z%qAM=TH*w=Z;nCwi4N~AM6tW^EDEdiAL2+#%ElI&>b73NpTl^=VQk#ueBD* z+q$buCoM`ve~L`brU)cXp6e4}nGEFYvzW-f9a|H2vIty(SB25W@%9drX|h>rRQm7N z8xd{^!CArWoqGPQ>1QPFV&lkjP6^no3B~>cz78|HhB*2Q0^Wg~b71{_9?x0LptHd< zE|>Ke!`7TNMIA#;CX+?a#$k9cQFukrybWY1^qEuJRz*X_TwZ5I zp}Tz4B(+6%RV95=T2&EG8aR`pwdcHbMeR9M=6?vU#IHuD@)8=j>c8j)MMx$n?N$JS7*ar zWF-`S_8X$jbXMJNP>NoUq3zJAisoV6z6)^BmCpT4qXE@q;d+L!*ksSolAuT5W)lK( zs>&!FUwsnSzPS(dnC~3mUV6-)*0b%$c-Q*HlLnN&kK-FZXd6c-?*=^9?o1m{3Oq8C z@8YN>C;6zD{p+85eA15Ld_YJ4|?Uikzh6)idokR zzcI%rdcn#d=(T0J*i5+*XYmk52Tz%i4?T0DFf()_u_1V+iPbadiI^{Ky0_=nm-(U3 z72Ch-bl6RNiESt)Qcui(5FQCvnZ!795DR0H5;qQCR1N(;dGbuqUW=s%zx9R{epc|3 ztjaiW7nunzPN{cXROJ8sx~F&TWJqxNOZOvwy^af4vmH7Y>ix@$$#bHG+HNvwdksY| ztg`H7J*N{lOzqJwJ@av|$7f119$v~lHD$(ytqVT$vkj)cPEwcmH@}p(e4-#Xf(|IE z%5M2c+K$Pn`-aal!F z8r-(( zB2_1NP-%}Axgfdc8aCyOmTSU(U1R6i4(sJVhot=!_O3aXlz^sdpq}-uRgxmuj_L4x zGAUqJev=x>)Ap*$m6|4~;foQ$2xd9wVop8C)_$34 z`r~cLXD$5v>%Y~{?&*1Or1Jajfv0Ex;5VFL?1GR64ww?ovFM&R=y-NLB!tPR%-kx# zdXB_bQYk)NL*^3|IeWv{0)$R`Q5m#lb-yyU>$ zh>M({T$WghQBda$T8(*c*u|dJ`E~NUW`>Fc%~>R2;1nt=Ek zSITb{7~OE=KBEc4ECh?!sv~I7mp>lkb8G%;Z;3?4+?*nKEe=l9eMi}oP{TVB7%0zT zC1$Qnj%V0X62uLrJQcw{aq#IH%AOY`NhQtY_g>-$d2IzMVS@eLcxB z#fkgQO85W=MW^LFImvx^_-r9AC?oB);0|Va+~Fx4=lPIxD39EzaYXCsIR*H@U$EH& z&Wi%Og3f)XFlJ$J}ptt;X z3YE!>m|_3eNdq(>cHI+Zeo?k{)fz@HMfVJtbzM=z|3QWV1SJ8MwD=%yP&p^D!578Q*CG%LSRVkE@Oe2Coh;1 z2X)4h2%R#4uY4$bF{lk*DG?3Q_ZdijpGS&3kfMxFQk&eMrnnXPzy=SFb}*2E#OoMZ zm&P=Fir)aT#tWF2_>uNFs2SaA(lMJTjt|=+?Rc;g9C)2_`;w{F`BR)qj-vOEJme$V8HA3PMMVSnk*!)QX$ zUe1j)C|r0_nVJ+{pePP_l4Ni3gSu>}7BDLS1JDN&Y`9Xi?)nWi?i0oWoBSrU97NgA zAVs-Gf46zEhb~Wpz%;D;@aQH=!TW>$3#Sp%1sGmuL2ZKy zsOKgF(m8P_PO@z>dA7a=HT(gHxF2O~x+_)~5Sew$*cl|>)35`1{p)3_+ZgzFN--0f zL3isVI6%CIZ38$ za9C%IW>C-q)#^$gn*RucWba}i()-;)8i{txP39qCXCbsWt7aWEE8~r{5eWk1>UyUGS^8X<7AeM{&cJRHnhe?teyeaAMfwSMh zvV}x7Tqp_lO}D*fA&7=7Gtd?(n{(mHR!GoEK!bMp@p?PZTKzY2hu?UX|BYtgNIP_S zg#&l0BzXOwBKwY890c5?kqJ2d|&hDmZKpgbZCMq~jKZJDjFB>}eCRkHdb2TTS4=^}! zN(>bpj@1cah|AL2oN3to->Ccj|3w1W#SzX;Wv`vhy9(U?|3vo*7)nt;E2<$36*?ts zp$RTO0W0h{R`g$L-ga2Q)0mgm4MW*4zYV9hF-U4ZBx9}#X4U_#G=M83k{Mj&khIr+blqC_JGEXVd!lOV@HxA5-YwI3|O7WWkUe=2Pv1dSu&f7T#{CbYj>_@6b% z(1-jd{~1Rticp7R$e<<8!g!6I8gBbsm1j*Qawf$uxO<0p~~l&^@Je)p90olV&v|IJ1ByG6O||J-zG zd8jF!716GYhi=7;lRjC%2VB{4LFmKw&loe8!X$z1VG!p0Z%h%O-wdqDvW#uw$;B1M z%!DXbg6m14P5CA?-8ncDh_e62CgNGkK(gCpE90tCVk}}@Rl^I?(G1$`t-4PFvNm|9 z?80CewN&7a=LflQI0NGyn^*<G|ndCfnwjZpUl|JyLw3N24kPUcQ@_dcbxdlXB`=Me<7w%3>ma0*|E{z z1BEAdGw5jXK-mu?McH>5o1l_K)p!9D500zWjsN(j+hD%tVYj4#kVg5u3fT8BNa?nq zKTRmgf8QY>%|Qxje-8p&HsbctDT5^pXJN847GCL5I8JD~bhmPSRu^es2HkcH$0IqB zO;Z;FF+4c33SkGru$t6WZ|ss9(!Ru|Vf_~@n<4~SIdMCoozr17RZ9waXnbHw2uy{4 z`Zu}I=iAc-CAw?#70B}2#=^MS@5ANml#y=LrP*6ccIqD}L{Dru5IITX%c%M2k^V@` zud8Lc;(2cgzX7o|Ox@3xG9jZ?A}8(VY*FUxtZrg!mh$=2OsB9DPuuLPK*_^v82nCZ zGMQ+*jrN37+Q(_)unuPJo0M1&J2oRFRFS$A<_l7BLA? zL1o}d7+9|WIeuW;=Vz81(K3Oj(l>~bSYhFT#>B-8M|ZPP4?I<=*e68k8^xbEPm;(e z(+Ga)YUFC_r=nHy>MoQo!^w=R-Dq#yJM^PBn_-t&HWht`h;(U$meB0Z2x(yS_Vbo!+- z&?C`EB%0hMt|zhfmefgY*U=6Mn(;Qgu@~(7`Nemj6N*&|KFVe7K$f0&M#{_YYD9Y8 zJPl^BC?Dt3NKt`_P-+7e`(#6Sdu%Yp36S9RF5rH5)W@2_fC2 z^?!tk>5Ao71=C;HUX#`3>VBOsJ{){#RE2r8l<$tq{%p;(amr5Rj~D@3m35%L5m2Q+ z`+X6T6JnMJ3{%#q>ZYHma@B9L8>s4Uw%O8?)4j=0-nyI(l#lwP_H{bFm&k{Y`LQd_*bsx6_N_~ZV5v=D zKEbT(Ezf1mj{D9`phqxG2B5p2RW0bEupxF$qH$=ydn`=3kcXz$-niiD6FmZej|YA0XVca_-KGP792hTCVmURDZ3D#2#psxN4;`Yg>uIhZn91LN#+ zospi2?OCj{FI2XQ!Q4BqK72tG>rXqv;vyeO6jsASv!bR?Z&3}-nmX2@chBUHC@Rz4 z6j546?x$~ge-wyBII!V_0^gqsP68qUXc&}lsZ(O{JQ)%n_1_7444wg&?FFT6f+$rE zBKqP6;e$e&T5h|+^{wT*uS|1H<6c#fq!0P*969vJBS4CfQj1@4urI(KWBr=yv9cwC^jYB6)(IhqR;)2 zc33rgIt5$aH*JiP#3MykNp|B#NhT%RA{@rtvnmn}FB^a@=fPL0;R&bo+ZYM$uH%j( z`UUz+4}SJ=TO?4)v^JC^4I%w5D$0B4m66iVZZD!=-DrG9C?Rw~;(MO<381QjGLc)j zL>?8aQ~IO2nJr}{z_gVHQe^yV@6@Hklp4)*JL;6KE5B5{aGughD^v5vZv|~A@`*#; z(u$T>e+JeV&OOcOtjMDbt}1&6ZC1S^Os$h_2EM1+P)_>$)!Z(a&bziyGNhwcNI5j% z^X+=jL)$+C^xA|nZJM6!Q5-l}BE2!xN!zRkZ7fXMVOP5Yd-j<6JC&WZvDA`N=}MV@ za_I7seC|ftTvD}c#r2E+Gw({AF`qNmLuWBMpP^H!YIa^Z`tfkP?V58Ze*eZ4cG1wl zProGwW-shgWP~x_66yYKromtmQ8#U|yAb?6bTz*(fU0qg++U1c8#)FA6v6ROq2b)6 zmVFzw#n5l&N8^h8he}xcg0Fi1R$0}NZg39s{?EL(A1|J<5LWl{vX+hJUW<=*K^uP} zJyM^91}&4PUHKwE(%elbQw9^?bQVNq6q{gL=%Mzv54)#+Dfla8DeYS+qiLm7S+L{A z^(`nn&!QnIQ%YNxXYvk8G$A0wrmA7A;$dyhU_wH3zD?H|r5x*f# z)rw8;ObL9{xnK|+Qi4~jcF!haiJ~tPW;KkjmD6B$x3FKkM2N#VHYLO6+xN5qOhvYk z)(MV7J5P6uU!YpkBG_=FEV|`V_D8H_CbS$KT^h88yL_`cU&Q&!w-v;B{^uN>_E=0C z=BQ7)-IjRoalA)3rnGma_fu(!2v0qW**77}BA-CNz}rKxY|fYzJe1JsIdDs}!}GaI&7q~c zZPV|UBOVGZ?i3svTf17g+?Y~uBByzgX;LOFBPKniYVEg?4oydgs+GofqAPR#&q!?V zqWs?1tP9RB1ojAauXmoI`E3OaJh;}n)B~p9eWWFAD!)!EaxTF7qjauqrk_HQ{FAI@LnW$r< z?+Xb-%MZ@Y!0Ts)&+Dw9P&o8`p53OX$*ZfdsP)=rTiX8Xy+4A6ep&lQ8uZF$@0T}V z%kq4kt$j$*UwA&zynIm7#`8g2ahBE|ad?-z)_=Mg$VZ#p_3>Wn2dnSV&QwlZ4JR(< zn68G;&dccq zIwslEof~bFYUK|lW^)EuL%VHMN|x60b-Ft8F9%k)d;3bIMVJr`y9Xz!7fv`Yc9^dd zb$*QYINN2>tjf(wpJ5*t6eZGM0C~dtnxws>=A)BO_4G7E+dl*ZDrkgy2z*_#u2P3L zrygO=*z4XtZL;jZ_D2(P>z&~)I&vIWPj|!GjVk!f=k?*P$*C7IT!U)v4zp@B11+I7 z&AZRm`t7HUV4n&?YCM41m2|Zq^(g&T#^d55J$A(8f<;iufPD-(LeFCL49b~jJPcNAWl-Fz z^L)sZT8H)A;E1Q`yzgzSAQ0q)!9o8h$lTI#?AG~%9eva5t$Xj*u?9$O4>w0{YT2u{kuF(Cp1}nagCd;SyFqc>PsB=tZi{6<&GuR?)cc_z@A$$MQcFdWkoy1+bV?AjWKietbc5? zPMyKHJ;BR4J(vZ3XJPz_jm3HI5J~uC3SX!~`)$gWSjk`QeoTpDkN=Vi>Y#?{ z)%;rrj682uUcBi4E+BB|Xr}9@KhvhBKHmogCgu#-(;k;qLE*@tDBd_T{YlLYOwbh* zzs>~a9u=DtS4Be)X|;c;kPi;<@bvp~#-_BZW_C;z^Yfr~fSE4*^*AQ>OtVL~)1rz#vf)Bl2`nQXtOB|YA=$FQ(Vz*7 zuGI0-$N|?qEiFwUJ^K0tgj*hWA!XaUeI0|lz&(B>TZ;g$y99PuTv@vZWKDpZfVfvC zGS(Is^}Z0+{`3g%3Rpo?qIK;m3>Mz*LRB8*m6UjS+d|kE!v`9oaT%H9sKil@!>A)?;5Ko=~ZhhRN4~lNG^p2Zd z!wcNq zc<$4<2(5R~YY{-!0_`R!eaI5oK7JE+%0yrgvoG{_SYPd7Rs{lX!2FRMm06b=l_`!K zJ6d>4*gj2L=$-6>E!;~KVGS3A{Y7CZ+imSAp+`Z27An?9l8Jo6x%(+cFnqRS(W%oo zmS3=kDEO=s7VZuMu4o)aqX_wa)oM8)k;00Y#jqKA@>I4U+(r6!IlY6hFu;$9Mx=<1 z!M>==f=e**p3l~;+COX0x*R!Y;cLnZzD3~_YGqlqb^Axrih*mF3aP4P*sW2S1bIyDNaX?C_4O=JX~cEZ_Y>F|T*bXxW^G5s>=< z#)VTt$fUweOv!z~+_{ZXd=Da4BJnPt-#GguoVlrD(!oHk41&c(;h1W7MRDGDjEi*7 z?}qr{>&cJHTmFD9cMMx$@oBiOy^<~9L_o(yrm-eH2S>TLa9L{{&LUh3cFS?64u7E1 z6-f=%QG%jgnnzfSJT>aC(i@nD!wJf>yx_ds<#Opy9Gf!+gldO$J@zX%$g6+4tOJ>0 zGnXm4QZpL%@frJ6M{S_tgfrSryx@%?!u3vmhfCsSM1Y+-;ezK97u$KBFYxF9NvK~hhs%I66r2uRG)C7*2p28nd{dr^85KX zD{Z)^tSMW_d#ZIhGq>eKt=g%)B)B#~5%rFvPX0RKYQZ1O;9e{u37W-_$^AE;*ItYg z=ar5a$cu$wXJyducpT-!%v>fzcPWcWZ2pH4?{iuZCi-AF0d{mYY=s@2MK3lRI)60mvj4GqhVaNr z<0*+ak7;@hi#xb4L%iKP`#t%>YmG2J)3&`UdO+_T&2vTPNmPp;Qh05~7I)hw&lVCV z62o!By;e`iqA7otR7Ixp$UTB*rLS_-eu-4nAawm_Etz5}mq4E@k&>)(Akq6-g;~t+ z&F?(7hfdPDNW!B<&X|4$kbh8a$LvpSI?`KWC{L~~>x8G1LA7_&hv=FbU&gzfDZJ%K zC+ul;?f!lomV0pVU2KMBT;f~Pi?19z)-U2$Tn;m%_5yp*w&!Uv*CUvBeE)QZgyi0( z?|$l-{X?&lNsdP%b+(E9>*YPc<|b4<7Y*`G1x-_Q&T-NSI*`GqaheSmLvI}RJvQtm z%z4^DJ+dl~g-)0`*A1@P>?wS3uYhdD&ymv>i}XhIbO|Pj*BG-a;W0P2R_9E-C3(jB z90MYaPmT?@jzkv`8jsW%ZyBPD>1?(@V|S98z0L-7=pU^~@AW^SA*n6$Io^#4w^iQffEViPtu%X&(v!S|H|8GC_L1$(^o{7kCwVmhP zPA?k;Jb(TLW{e3Ul_K4TLo~Pevm(Y{x3%RC<&Tzy(s!4N#PDTtveGWsJwt>db8BlR zN6cfDHt7;kCOz_U3uw~U$Ea^i)jk~&jNQHYp<9{cIij^VQLvVb6Fz?y|9MQsfzu$G z(QPi$T^`m-Fc()l>+-NJ*#TelMyifZLC(1?ZUQ=6!}uF}1Wvdcz0akVv}?77(Gk`y zPe?9fMvA;nT`6-B8te}0pOLV=9Pzg&{-UI|>#*2jmyq4o%e`jaG`7KywUdjvlrpub z&BplWr%sVxl3sZEiSR$_31D613ZCrYk%@?lv`Bs$0Z%&O%WKI1tBt$24Z4V1qx~Nr zIYYjEYLT>hwOhx{o@KMwTtEGpeMyn^vi|Zhk!^?EMnk^~d9dL*GI;vJA17IDB02R{ z$*@dfRp$oQ{@Qko?fu{FlR2t}PD!tyyBAWHM`Kw)E>a4Ct zb=bJQ<;M5=56pf2oxXf3zvCQDi07BxmpA`Yp}Qm7Ljd&N9}L^AD?E9 ANdN!< literal 0 HcmV?d00001 diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/index.html b/kyla_stearns/Angular/faveAuthors/authors/src/index.html new file mode 100755 index 0000000..9d453b7 --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/index.html @@ -0,0 +1,14 @@ + + + + + Authors + + + + + + + + + diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/main.ts b/kyla_stearns/Angular/faveAuthors/authors/src/main.ts new file mode 100755 index 0000000..91ec6da --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/main.ts @@ -0,0 +1,12 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(AppModule) + .catch(err => console.log(err)); diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/polyfills.ts b/kyla_stearns/Angular/faveAuthors/authors/src/polyfills.ts new file mode 100755 index 0000000..af84770 --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/polyfills.ts @@ -0,0 +1,79 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** IE9, IE10 and IE11 requires all of the following polyfills. **/ +// import 'core-js/es6/symbol'; +// import 'core-js/es6/object'; +// import 'core-js/es6/function'; +// import 'core-js/es6/parse-int'; +// import 'core-js/es6/parse-float'; +// import 'core-js/es6/number'; +// import 'core-js/es6/math'; +// import 'core-js/es6/string'; +// import 'core-js/es6/date'; +// import 'core-js/es6/array'; +// import 'core-js/es6/regexp'; +// import 'core-js/es6/map'; +// import 'core-js/es6/weak-map'; +// import 'core-js/es6/set'; + +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** IE10 and IE11 requires the following for the Reflect API. */ +// import 'core-js/es6/reflect'; + + +/** Evergreen browsers require these. **/ +// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove. +import 'core-js/es7/reflect'; + + +/** + * Required to support Web Animations `@angular/platform-browser/animations`. + * Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation + **/ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + */ + + // (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame + // (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick + // (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + + /* + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + */ +// (window as any).__Zone_enable_cross_context_check = true; + +/*************************************************************************************************** + * Zone JS is required by default for Angular itself. + */ +import 'zone.js/dist/zone'; // Included with Angular CLI. + + + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/styles.css b/kyla_stearns/Angular/faveAuthors/authors/src/styles.css new file mode 100755 index 0000000..90d4ee0 --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/styles.css @@ -0,0 +1 @@ +/* You can add global styles to this file, and also import other style files */ diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/test.ts b/kyla_stearns/Angular/faveAuthors/authors/src/test.ts new file mode 100755 index 0000000..1631789 --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/test.ts @@ -0,0 +1,20 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: any; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/tsconfig.app.json b/kyla_stearns/Angular/faveAuthors/authors/src/tsconfig.app.json new file mode 100755 index 0000000..39ba8db --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/tsconfig.app.json @@ -0,0 +1,13 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/app", + "baseUrl": "./", + "module": "es2015", + "types": [] + }, + "exclude": [ + "test.ts", + "**/*.spec.ts" + ] +} diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/tsconfig.spec.json b/kyla_stearns/Angular/faveAuthors/authors/src/tsconfig.spec.json new file mode 100755 index 0000000..ac22a29 --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/tsconfig.spec.json @@ -0,0 +1,19 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/spec", + "baseUrl": "./", + "module": "commonjs", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/kyla_stearns/Angular/faveAuthors/authors/src/typings.d.ts b/kyla_stearns/Angular/faveAuthors/authors/src/typings.d.ts new file mode 100755 index 0000000..ef5c7bd --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/src/typings.d.ts @@ -0,0 +1,5 @@ +/* SystemJS module definition */ +declare var module: NodeModule; +interface NodeModule { + id: string; +} diff --git a/kyla_stearns/Angular/faveAuthors/authors/tsconfig.json b/kyla_stearns/Angular/faveAuthors/authors/tsconfig.json new file mode 100755 index 0000000..a6c016b --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "target": "es5", + "typeRoots": [ + "node_modules/@types" + ], + "lib": [ + "es2017", + "dom" + ] + } +} diff --git a/kyla_stearns/Angular/faveAuthors/authors/tslint.json b/kyla_stearns/Angular/faveAuthors/authors/tslint.json new file mode 100755 index 0000000..9963d6c --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/authors/tslint.json @@ -0,0 +1,143 @@ +{ + "rulesDirectory": [ + "node_modules/codelyzer" + ], + "rules": { + "arrow-return-shorthand": true, + "callable-types": true, + "class-name": true, + "comment-format": [ + true, + "check-space" + ], + "curly": true, + "deprecation": { + "severity": "warn" + }, + "eofline": true, + "forin": true, + "import-blacklist": [ + true, + "rxjs", + "rxjs/Rx" + ], + "import-spacing": true, + "indent": [ + true, + "spaces" + ], + "interface-over-type-literal": true, + "label-position": true, + "max-line-length": [ + true, + 140 + ], + "member-access": false, + "member-ordering": [ + true, + { + "order": [ + "static-field", + "instance-field", + "static-method", + "instance-method" + ] + } + ], + "no-arg": true, + "no-bitwise": true, + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-construct": true, + "no-debugger": true, + "no-duplicate-super": true, + "no-empty": false, + "no-empty-interface": true, + "no-eval": true, + "no-inferrable-types": [ + true, + "ignore-params" + ], + "no-misused-new": true, + "no-non-null-assertion": true, + "no-shadowed-variable": true, + "no-string-literal": false, + "no-string-throw": true, + "no-switch-case-fall-through": true, + "no-trailing-whitespace": true, + "no-unnecessary-initializer": true, + "no-unused-expression": true, + "no-use-before-declare": true, + "no-var-keyword": true, + "object-literal-sort-keys": false, + "one-line": [ + true, + "check-open-brace", + "check-catch", + "check-else", + "check-whitespace" + ], + "prefer-const": true, + "quotemark": [ + true, + "single" + ], + "radix": true, + "semicolon": [ + true, + "always" + ], + "triple-equals": [ + true, + "allow-null-check" + ], + "typedef-whitespace": [ + true, + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + } + ], + "unified-signatures": true, + "variable-name": false, + "whitespace": [ + true, + "check-branch", + "check-decl", + "check-operator", + "check-separator", + "check-type" + ], + "directive-selector": [ + true, + "attribute", + "app", + "camelCase" + ], + "component-selector": [ + true, + "element", + "app", + "kebab-case" + ], + "no-output-on-prefix": true, + "use-input-property-decorator": true, + "use-output-property-decorator": true, + "use-host-property-decorator": true, + "no-input-rename": true, + "no-output-rename": true, + "use-life-cycle-interface": true, + "use-pipe-transform-interface": true, + "component-class-suffix": true, + "directive-class-suffix": true + } +} diff --git a/kyla_stearns/Angular/faveAuthors/package.json b/kyla_stearns/Angular/faveAuthors/package.json new file mode 100755 index 0000000..a8926e6 --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/package.json @@ -0,0 +1,17 @@ +{ + "name": "faveAuthors", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "body-parser": "^1.18.2", + "express": "^4.16.3", + "mongoose": "^5.0.11" + } +} diff --git a/kyla_stearns/Angular/faveAuthors/server.js b/kyla_stearns/Angular/faveAuthors/server.js new file mode 100755 index 0000000..c99ba1d --- /dev/null +++ b/kyla_stearns/Angular/faveAuthors/server.js @@ -0,0 +1,109 @@ +let express = require('express'); + app = express(); + bodyParser = require('body-parser'); + mongoose = require('mongoose'); + AuthorsSchema = new mongoose.Schema({ + name: { + type: String, + required: [true, "Must enter a name to add."], + minlength: [3, "Name must be at least 3 characters."], + } + }, {timestamps: true}); + +app.use(bodyParser.json()); +app.use(express.static( __dirname + '/authors/dist' )); + +// connect to the database -- make sure after localhost/ you put in the db name you created +mongoose.connect('mongodb://localhost/authors'); +// use native promises -- uses the promise library to save an object +mongoose.Promise = global.Promise +// Set this Schema in our Models as 'Author' +mongoose.model('Author', AuthorsSchema); +// Retrieve this Schema from our Models, named 'Author' +// MOST IMPORTANT -- get this blueprint by making a new schema instance from the mongoose.Schema() +// object constructor +let Author = mongoose.model('Author'); + +app.get('/authors', (req,res) => { + // GET ALL AUTHORS + Author.find({}, (err, all_authors) => { + if(err){ + // console.log("There's an error finding all authors", err); + res.json(err.message); + // res.status(401).json(err.message); + } + else{ + // console.log("Successfully retrieved authors", all_authors); + res.json({all_authors: all_authors}); + } + }); +}); + +app.post('/authors/new', (req,res) => { + // CREATE A NEW AUTHOR + console.log("Inside POST new author with form data", req.body.title, req.body.description); + let new_author = new Author({name: req.body.name}); + new_author.save((err) => { + if(err){ + // console.log("There's an error creating a new author.", err); + res.json(err.message); + // res.status(401).json(err.message); + } + else{ + // console.log("Successfully created new author", new_author); + res.json("You have successfully added an author!"); + } + }); +}); + +app.get('/authors/edit/:id', (req,res) => { + // GET SPECIFIC AUTHOR BY ID -- best to use findOne so you don't have more than 1 + Author.findOne({_id: req.params.id}, (err, this_author) => { + if(err){ + // console.log("There's an error getting this author.", err); + res.json(err.message); + // res.status(401).json(err.message); + } + else{ + // console.log("Successfully retrieved this author", this_author); + res.json({this_author: this_author}); + } + }); +}); + +app.put('/authors/update/:id', (req,res) => { + // UPDATE SPECIFIC AUTHOR BY ID + console.log("Inside server .put to update author", req.body); + Author.update({_id: req.params.id}, {name: req.body.name}, {runValidators: true}, (err, this_author) => { + if(err){ + // console.log("There's an error updating this author", err.message); + res.json(err.message); + // res.status(401).json(err.message); + } + else{ + // console.log("Successfully updated this author", this_author); + res.json("You have updated this author!"); + } + }); +}); + +app.delete('/authors/:id', (req,res) => { + // DELETE SPECIFIC AUTHOR BY ID + // console.log("Inside the DELETE function", req.params.id); + Author.remove({_id: req.params.id}, (err) => { + // if there is an error, console.log that something went wrong + if(err){ + // console.log("There's an error deleting this author.", err); + res.json(err.message); + // res.status(401).json(err.message); + } + else{ + res.json("You have successfully deleted this author!"); + } + }); +}); + +app.listen(5678, () => { + console.log('Listening on port 5678'); +}) + diff --git a/kyla_stearns/Angular/pokemon/.angular-cli.json b/kyla_stearns/Angular/pokemon/.angular-cli.json old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/.editorconfig b/kyla_stearns/Angular/pokemon/.editorconfig old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/.gitignore b/kyla_stearns/Angular/pokemon/.gitignore old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/README.md b/kyla_stearns/Angular/pokemon/README.md old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/e2e/app.e2e-spec.ts b/kyla_stearns/Angular/pokemon/e2e/app.e2e-spec.ts old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/e2e/app.po.ts b/kyla_stearns/Angular/pokemon/e2e/app.po.ts old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/e2e/tsconfig.e2e.json b/kyla_stearns/Angular/pokemon/e2e/tsconfig.e2e.json old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/karma.conf.js b/kyla_stearns/Angular/pokemon/karma.conf.js old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/package.json b/kyla_stearns/Angular/pokemon/package.json old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/protractor.conf.js b/kyla_stearns/Angular/pokemon/protractor.conf.js old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/src/app/app.component.css b/kyla_stearns/Angular/pokemon/src/app/app.component.css old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/src/app/app.component.html b/kyla_stearns/Angular/pokemon/src/app/app.component.html old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/src/app/app.component.spec.ts b/kyla_stearns/Angular/pokemon/src/app/app.component.spec.ts old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/src/app/app.component.ts b/kyla_stearns/Angular/pokemon/src/app/app.component.ts old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/src/app/app.module.ts b/kyla_stearns/Angular/pokemon/src/app/app.module.ts old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/src/app/http.service.spec.ts b/kyla_stearns/Angular/pokemon/src/app/http.service.spec.ts old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/src/app/http.service.ts b/kyla_stearns/Angular/pokemon/src/app/http.service.ts old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/src/assets/.gitkeep b/kyla_stearns/Angular/pokemon/src/assets/.gitkeep old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/src/assets/donuts.jpg b/kyla_stearns/Angular/pokemon/src/assets/donuts.jpg old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/src/assets/nikesnorlax.jpg b/kyla_stearns/Angular/pokemon/src/assets/nikesnorlax.jpg old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/src/assets/snorlax.jpg b/kyla_stearns/Angular/pokemon/src/assets/snorlax.jpg old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/src/environments/environment.prod.ts b/kyla_stearns/Angular/pokemon/src/environments/environment.prod.ts old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/src/environments/environment.ts b/kyla_stearns/Angular/pokemon/src/environments/environment.ts old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/src/favicon.ico b/kyla_stearns/Angular/pokemon/src/favicon.ico old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/src/favicon.png b/kyla_stearns/Angular/pokemon/src/favicon.png old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/src/index.html b/kyla_stearns/Angular/pokemon/src/index.html old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/src/main.ts b/kyla_stearns/Angular/pokemon/src/main.ts old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/src/polyfills.ts b/kyla_stearns/Angular/pokemon/src/polyfills.ts old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/src/styles.css b/kyla_stearns/Angular/pokemon/src/styles.css old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/src/test.ts b/kyla_stearns/Angular/pokemon/src/test.ts old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/src/tsconfig.app.json b/kyla_stearns/Angular/pokemon/src/tsconfig.app.json old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/src/tsconfig.spec.json b/kyla_stearns/Angular/pokemon/src/tsconfig.spec.json old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/src/typings.d.ts b/kyla_stearns/Angular/pokemon/src/typings.d.ts old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/tsconfig.json b/kyla_stearns/Angular/pokemon/tsconfig.json old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/pokemon/tslint.json b/kyla_stearns/Angular/pokemon/tslint.json old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/productMgmt/package.json b/kyla_stearns/Angular/productMgmt/package.json new file mode 100755 index 0000000..6b40c8d --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/package.json @@ -0,0 +1,19 @@ +{ + "name": "productMgmt", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "body-parser": "^1.18.2", + "express": "^4.16.3", + "mongoose": "^5.0.11", + "mongoose-type-url": "^1.0.2", + "mongoose-unique-validator": "^2.0.0" + } +} diff --git a/kyla_stearns/Angular/productMgmt/products/.angular-cli.json b/kyla_stearns/Angular/productMgmt/products/.angular-cli.json new file mode 100755 index 0000000..5c2f813 --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/.angular-cli.json @@ -0,0 +1,60 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "project": { + "name": "products" + }, + "apps": [ + { + "root": "src", + "outDir": "dist", + "assets": [ + "assets", + "favicon.png" + ], + "index": "index.html", + "main": "main.ts", + "polyfills": "polyfills.ts", + "test": "test.ts", + "tsconfig": "tsconfig.app.json", + "testTsconfig": "tsconfig.spec.json", + "prefix": "app", + "styles": [ + "styles.css" + ], + "scripts": [], + "environmentSource": "environments/environment.ts", + "environments": { + "dev": "environments/environment.ts", + "prod": "environments/environment.prod.ts" + } + } + ], + "e2e": { + "protractor": { + "config": "./protractor.conf.js" + } + }, + "lint": [ + { + "project": "src/tsconfig.app.json", + "exclude": "**/node_modules/**" + }, + { + "project": "src/tsconfig.spec.json", + "exclude": "**/node_modules/**" + }, + { + "project": "e2e/tsconfig.e2e.json", + "exclude": "**/node_modules/**" + } + ], + "test": { + "karma": { + "config": "./karma.conf.js" + } + }, + "defaults": { + "styleExt": "css", + "component": {} + } +} diff --git a/kyla_stearns/Angular/productMgmt/products/.editorconfig b/kyla_stearns/Angular/productMgmt/products/.editorconfig new file mode 100755 index 0000000..6e87a00 --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/.editorconfig @@ -0,0 +1,13 @@ +# Editor configuration, see http://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/kyla_stearns/Angular/productMgmt/products/.gitignore b/kyla_stearns/Angular/productMgmt/products/.gitignore new file mode 100755 index 0000000..eabf65e --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/.gitignore @@ -0,0 +1,44 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/dist-server +/tmp +/out-tsc + +# dependencies +/node_modules + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +/typings + +# e2e +/e2e/*.js +/e2e/*.map + +# System Files +.DS_Store +Thumbs.db diff --git a/kyla_stearns/Angular/productMgmt/products/README.md b/kyla_stearns/Angular/productMgmt/products/README.md new file mode 100755 index 0000000..a6dc459 --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/README.md @@ -0,0 +1,27 @@ +# Products + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.7.3. + +## Development server + +Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. + +## Code scaffolding + +Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. + +## Build + +Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build. + +## Running unit tests + +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Running end-to-end tests + +Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/kyla_stearns/Angular/productMgmt/products/e2e/app.e2e-spec.ts b/kyla_stearns/Angular/productMgmt/products/e2e/app.e2e-spec.ts new file mode 100755 index 0000000..b445aba --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/e2e/app.e2e-spec.ts @@ -0,0 +1,14 @@ +import { AppPage } from './app.po'; + +describe('products App', () => { + let page: AppPage; + + beforeEach(() => { + page = new AppPage(); + }); + + it('should display welcome message', () => { + page.navigateTo(); + expect(page.getParagraphText()).toEqual('Welcome to app!'); + }); +}); diff --git a/kyla_stearns/Angular/productMgmt/products/e2e/app.po.ts b/kyla_stearns/Angular/productMgmt/products/e2e/app.po.ts new file mode 100755 index 0000000..82ea75b --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/e2e/app.po.ts @@ -0,0 +1,11 @@ +import { browser, by, element } from 'protractor'; + +export class AppPage { + navigateTo() { + return browser.get('/'); + } + + getParagraphText() { + return element(by.css('app-root h1')).getText(); + } +} diff --git a/kyla_stearns/Angular/productMgmt/products/e2e/tsconfig.e2e.json b/kyla_stearns/Angular/productMgmt/products/e2e/tsconfig.e2e.json new file mode 100755 index 0000000..1d9e5ed --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/e2e/tsconfig.e2e.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/e2e", + "baseUrl": "./", + "module": "commonjs", + "target": "es5", + "types": [ + "jasmine", + "jasminewd2", + "node" + ] + } +} diff --git a/kyla_stearns/Angular/productMgmt/products/karma.conf.js b/kyla_stearns/Angular/productMgmt/products/karma.conf.js new file mode 100755 index 0000000..af139fa --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/karma.conf.js @@ -0,0 +1,33 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular/cli'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular/cli/plugins/karma') + ], + client:{ + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + reports: [ 'html', 'lcovonly' ], + fixWebpackSourcePaths: true + }, + angularCli: { + environment: 'dev' + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false + }); +}; diff --git a/kyla_stearns/Angular/productMgmt/products/package.json b/kyla_stearns/Angular/productMgmt/products/package.json new file mode 100755 index 0000000..4e96b82 --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/package.json @@ -0,0 +1,48 @@ +{ + "name": "products", + "version": "0.0.0", + "license": "MIT", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build --prod", + "test": "ng test", + "lint": "ng lint", + "e2e": "ng e2e" + }, + "private": true, + "dependencies": { + "@angular/animations": "^5.2.0", + "@angular/common": "^5.2.0", + "@angular/compiler": "^5.2.0", + "@angular/core": "^5.2.0", + "@angular/forms": "^5.2.0", + "@angular/http": "^5.2.0", + "@angular/platform-browser": "^5.2.0", + "@angular/platform-browser-dynamic": "^5.2.0", + "@angular/router": "^5.2.0", + "core-js": "^2.4.1", + "rxjs": "^5.5.6", + "zone.js": "^0.8.19" + }, + "devDependencies": { + "@angular/cli": "~1.7.3", + "@angular/compiler-cli": "^5.2.0", + "@angular/language-service": "^5.2.0", + "@types/jasmine": "~2.8.3", + "@types/jasminewd2": "~2.0.2", + "@types/node": "~6.0.60", + "codelyzer": "^4.0.1", + "jasmine-core": "~2.8.0", + "jasmine-spec-reporter": "~4.2.1", + "karma": "~2.0.0", + "karma-chrome-launcher": "~2.2.0", + "karma-coverage-istanbul-reporter": "^1.2.1", + "karma-jasmine": "~1.1.0", + "karma-jasmine-html-reporter": "^0.2.2", + "protractor": "~5.1.2", + "ts-node": "~4.1.0", + "tslint": "~5.9.1", + "typescript": "~2.5.3" + } +} diff --git a/kyla_stearns/Angular/productMgmt/products/protractor.conf.js b/kyla_stearns/Angular/productMgmt/products/protractor.conf.js new file mode 100755 index 0000000..7ee3b5e --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/protractor.conf.js @@ -0,0 +1,28 @@ +// Protractor configuration file, see link for more information +// https://github.com/angular/protractor/blob/master/lib/config.ts + +const { SpecReporter } = require('jasmine-spec-reporter'); + +exports.config = { + allScriptsTimeout: 11000, + specs: [ + './e2e/**/*.e2e-spec.ts' + ], + capabilities: { + 'browserName': 'chrome' + }, + directConnect: true, + baseUrl: 'http://localhost:4200/', + framework: 'jasmine', + jasmineNodeOpts: { + showColors: true, + defaultTimeoutInterval: 30000, + print: function() {} + }, + onPrepare() { + require('ts-node').register({ + project: 'e2e/tsconfig.e2e.json' + }); + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); + } +}; diff --git a/kyla_stearns/Angular/productMgmt/products/src/app/app-routing.module.ts b/kyla_stearns/Angular/productMgmt/products/src/app/app-routing.module.ts new file mode 100755 index 0000000..99f7df9 --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/app/app-routing.module.ts @@ -0,0 +1,20 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { HomeComponent } from './home/home.component'; +import { ProductListComponent } from './product-list/product-list.component'; +import { EditComponent } from './edit/edit.component'; +import { NewComponent } from './new/new.component'; + +const routes: Routes = [ + {path: '', pathMatch: 'full', component: HomeComponent }, + {path: 'products', component: ProductListComponent}, + {path: 'products/new', component: NewComponent}, + {path: 'products/edit/:id', component: EditComponent} +]; + +@NgModule({ + imports: [RouterModule.forRoot(routes)], + exports: [RouterModule] +}) +export class AppRoutingModule { } diff --git a/kyla_stearns/Angular/productMgmt/products/src/app/app.component.css b/kyla_stearns/Angular/productMgmt/products/src/app/app.component.css new file mode 100755 index 0000000..524b7d1 --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/app/app.component.css @@ -0,0 +1,34 @@ +*{ + margin: 0px; + padding: 0px; + font-family: Arial, sans-serif; +} + +body{ + width: 970px; + margin: auto; +} + +header{ + width: 100%; + padding: 10px; +} + +header button{ + width: 150px; + font-size: 14px; + padding: 5px; + text-align: center; + background-color: lightgrey; + vertical-align: top; + margin: 0px 15px 0px 15px; + border-radius: 5px; +} + +header h1{ + margin: 15px 0px 15px 0px; +} + +main{ + padding: 15px; +} \ No newline at end of file diff --git a/kyla_stearns/Angular/productMgmt/products/src/app/app.component.html b/kyla_stearns/Angular/productMgmt/products/src/app/app.component.html new file mode 100755 index 0000000..516841f --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/app/app.component.html @@ -0,0 +1,12 @@ +
+

All the Things Product Collection

+ + + +
+ +
+ + + +
diff --git a/kyla_stearns/Angular/productMgmt/products/src/app/app.component.spec.ts b/kyla_stearns/Angular/productMgmt/products/src/app/app.component.spec.ts new file mode 100755 index 0000000..e4ca195 --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/app/app.component.spec.ts @@ -0,0 +1,31 @@ +import { TestBed, async } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { AppComponent } from './app.component'; +describe('AppComponent', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [ + RouterTestingModule + ], + declarations: [ + AppComponent + ], + }).compileComponents(); + })); + it('should create the app', async(() => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app).toBeTruthy(); + })); + it(`should have as title 'app'`, async(() => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app.title).toEqual('app'); + })); + it('should render title in a h1 tag', async(() => { + const fixture = TestBed.createComponent(AppComponent); + fixture.detectChanges(); + const compiled = fixture.debugElement.nativeElement; + expect(compiled.querySelector('h1').textContent).toContain('Welcome to app!'); + })); +}); diff --git a/kyla_stearns/Angular/productMgmt/products/src/app/app.component.ts b/kyla_stearns/Angular/productMgmt/products/src/app/app.component.ts new file mode 100755 index 0000000..64bb6db --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/app/app.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; +import { HttpService } from './http.service'; + +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.css'] +}) +export class AppComponent { + title = 'app'; + constructor(private _httpService: HttpService){} +} diff --git a/kyla_stearns/Angular/productMgmt/products/src/app/app.module.ts b/kyla_stearns/Angular/productMgmt/products/src/app/app.module.ts new file mode 100755 index 0000000..f0f0901 --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/app/app.module.ts @@ -0,0 +1,38 @@ +import { BrowserModule } from '@angular/platform-browser'; +import { NgModule } from '@angular/core'; + +import { AppRoutingModule } from './app-routing.module'; +import { HttpModule } from '@angular/http'; +import { FormsModule } from '@angular/forms'; + +import { AppComponent } from './app.component'; +import { HomeComponent } from './home/home.component'; +import { ProductListComponent } from './product-list/product-list.component'; +import { EditComponent } from './edit/edit.component'; +import { NewComponent } from './new/new.component'; + +import { HttpService } from './http.service'; + + +@NgModule({ + declarations: [ + AppComponent, + HomeComponent, + ProductListComponent, + EditComponent, + NewComponent + ], + imports: [ + BrowserModule, + AppRoutingModule, + HttpModule, + FormsModule + ], + providers: [ + HttpService + ], + bootstrap: [ + AppComponent + ] +}) +export class AppModule { } diff --git a/kyla_stearns/Angular/productMgmt/products/src/app/edit/edit.component.css b/kyla_stearns/Angular/productMgmt/products/src/app/edit/edit.component.css new file mode 100755 index 0000000..54eb614 --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/app/edit/edit.component.css @@ -0,0 +1,44 @@ +#errors{ + color: red; + padding: 5px; + margin: 10px 0px 10px 0px; +} + +form{ + margin-left: 25px; +} + +label{ + display: block; + margin: 10px 0px 10px 0px; +} + +input[type=text]{ + display: block; + padding: 5px; + font-size: 14px; + margin-left: 15px; + width: 225px; +} + +input[type=submit]{ + width: 100px; + font-size: 14px; + padding: 5px; + text-align: center; + background-color: lightgrey; + vertical-align: top; + margin: 15px 15px 0px 15px; + border-radius: 5px; +} + +button{ + width: 100px; + font-size: 14px; + padding: 5px; + text-align: center; + background-color: lightgrey; + vertical-align: top; + margin: 15px 15px 0px 15px; + border-radius: 5px; +} \ No newline at end of file diff --git a/kyla_stearns/Angular/productMgmt/products/src/app/edit/edit.component.html b/kyla_stearns/Angular/productMgmt/products/src/app/edit/edit.component.html new file mode 100755 index 0000000..85c69f0 --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/app/edit/edit.component.html @@ -0,0 +1,32 @@ +
+

{{ response }}

+
+ +
+ + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/kyla_stearns/Angular/productMgmt/products/src/app/edit/edit.component.spec.ts b/kyla_stearns/Angular/productMgmt/products/src/app/edit/edit.component.spec.ts new file mode 100755 index 0000000..34ef921 --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/app/edit/edit.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditComponent } from './edit.component'; + +describe('EditComponent', () => { + let component: EditComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EditComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EditComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kyla_stearns/Angular/productMgmt/products/src/app/edit/edit.component.ts b/kyla_stearns/Angular/productMgmt/products/src/app/edit/edit.component.ts new file mode 100755 index 0000000..53d7047 --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/app/edit/edit.component.ts @@ -0,0 +1,64 @@ +import { Component, OnInit } from '@angular/core'; +import { HttpService } from '../http.service'; +import { ActivatedRoute, Params, Router } from '@angular/router'; + +@Component({ + selector: 'app-edit', + templateUrl: './edit.component.html', + styleUrls: ['./edit.component.css'] +}) +export class EditComponent implements OnInit { + thisProduct = {}; + response: any; + constructor( + private _httpService: HttpService, + private _route: ActivatedRoute, + private _router: Router + ) { } + + ngOnInit() { + this.thisProduct = {id: '', title: '', price: '', imgLink: ''}; + this._route.params.subscribe((params: Params) => { + // console.log(Number(params['id'])); + // this.id = params['id']; + let observable = this._httpService.editProduct(params['id']); + observable.subscribe(data =>{ + data = data.json(); + console.log("Data from this thisProduct", data['this_product']); + this.thisProduct = { + id: params['id'], + title: data.this_product.title, + price: Number(data.this_product.price), + imgLink: data.this_product.imgLink + }; + }); + }); + } + + onSubmitEdit(event){ + event.preventDefault(); + console.log("Inside onSubmitEdit function with thisProduct", this.thisProduct); + // code to send off the form data (this.thisProduct) to the service + let observable = this._httpService.updateProduct(this.thisProduct); + observable.subscribe(data => { + + console.log("thisProduct subscribe to Observable", data.json()); + this.response = data.json(); + // console.log("You have successfully updated this product.", this.thisProduct); + // then reset this.thisProduct to new, clean object. + this.thisProduct = {id: '', title: '', price: '', imgLink: ''}; + this._router.navigate(['/products']); + + // THIS IS WHAT YOU WOULD USE IF YOU DECIDE TO CHANGE SERVER SIDE TO USE STATUS(400) ERROR + // observable.subscribe( (res: any) => { + // this.thisAuthor = {id: '', name: ''}; + // }; + // ( (err: any) => { + // this.response = err.error.errors.field_name.message; + // })); + + } + + }); + } +} \ No newline at end of file diff --git a/kyla_stearns/Angular/productMgmt/products/src/app/home/home.component.css b/kyla_stearns/Angular/productMgmt/products/src/app/home/home.component.css new file mode 100755 index 0000000..4cb6924 --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/app/home/home.component.css @@ -0,0 +1,8 @@ +h2{ + margin-top: 10px; +} + +p{ + font-size: 18px; + margin: 15px 0px 15px 0px; +} \ No newline at end of file diff --git a/kyla_stearns/Angular/productMgmt/products/src/app/home/home.component.html b/kyla_stearns/Angular/productMgmt/products/src/app/home/home.component.html new file mode 100755 index 0000000..39d7fd6 --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/app/home/home.component.html @@ -0,0 +1,3 @@ +

Home Page

+

Welcome to the Project Product Management! Here we can manage a set of products.

+

You are able to add your favorite products, remove old ones, and make updates.

\ No newline at end of file diff --git a/kyla_stearns/Angular/productMgmt/products/src/app/home/home.component.spec.ts b/kyla_stearns/Angular/productMgmt/products/src/app/home/home.component.spec.ts new file mode 100755 index 0000000..490e81b --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/app/home/home.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { HomeComponent } from './home.component'; + +describe('HomeComponent', () => { + let component: HomeComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ HomeComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HomeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kyla_stearns/Angular/productMgmt/products/src/app/home/home.component.ts b/kyla_stearns/Angular/productMgmt/products/src/app/home/home.component.ts new file mode 100755 index 0000000..33fd770 --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/app/home/home.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-home', + templateUrl: './home.component.html', + styleUrls: ['./home.component.css'] +}) +export class HomeComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/kyla_stearns/Angular/productMgmt/products/src/app/http.service.spec.ts b/kyla_stearns/Angular/productMgmt/products/src/app/http.service.spec.ts new file mode 100755 index 0000000..c2eb030 --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/app/http.service.spec.ts @@ -0,0 +1,15 @@ +import { TestBed, inject } from '@angular/core/testing'; + +import { HttpService } from './http.service'; + +describe('HttpService', () => { + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [HttpService] + }); + }); + + it('should be created', inject([HttpService], (service: HttpService) => { + expect(service).toBeTruthy(); + })); +}); diff --git a/kyla_stearns/Angular/productMgmt/products/src/app/http.service.ts b/kyla_stearns/Angular/productMgmt/products/src/app/http.service.ts new file mode 100755 index 0000000..30f2c32 --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/app/http.service.ts @@ -0,0 +1,34 @@ +import { Injectable } from '@angular/core'; +import { Http } from '@angular/http'; // import Http + +@Injectable() +export class HttpService { + + constructor(private _http: Http) { } + + getAllProducts(){ + console.log("Inside getAllProducts function"); + return this._http.get('/products'); + } + + createProduct(newProduct){ + console.log("Inside createProduct function with newProduct", newProduct); + return this._http.post('/products/new', newProduct); + } + + editProduct(id){ + console.log("Inside editProduct function with id", id); + return this._http.get('/products/edit/'+id); + } + + updateProduct(editProduct){ + console.log("Inside updateProduct function with editProduct", editProduct); + return this._http.patch('/products/update/'+editProduct.id, editProduct); + } + + deleteProduct(id){ + console.log("Inside deleteProduct function with id", id); + return this._http.delete('/products/'+id); + } +} + diff --git a/kyla_stearns/Angular/productMgmt/products/src/app/new/new.component.css b/kyla_stearns/Angular/productMgmt/products/src/app/new/new.component.css new file mode 100755 index 0000000..4b489bd --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/app/new/new.component.css @@ -0,0 +1,48 @@ +#errors{ + color: red; + padding: 5px; + margin: 10px 0px 10px 0px; +} + +h4{ + margin-top: 10px; +} + +form{ + margin-left: 25px; +} + +label{ + display: block; + margin: 10px 0px 10px 0px; +} + +input[type=text]{ + display: block; + padding: 5px; + font-size: 14px; + margin-left: 15px; + width: 225px; +} + +input[type=submit]{ + width: 100px; + font-size: 14px; + padding: 5px; + text-align: center; + background-color: lightgrey; + vertical-align: top; + margin: 15px 15px 0px 15px; + border-radius: 5px; +} + +button{ + width: 100px; + font-size: 14px; + padding: 5px; + text-align: center; + background-color: lightgrey; + vertical-align: top; + margin: 15px 15px 0px 15px; + border-radius: 5px; +} \ No newline at end of file diff --git a/kyla_stearns/Angular/productMgmt/products/src/app/new/new.component.html b/kyla_stearns/Angular/productMgmt/products/src/app/new/new.component.html new file mode 100755 index 0000000..ac12eae --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/app/new/new.component.html @@ -0,0 +1,36 @@ +
+

{{ response }}

+
+ +

Add a new product:

+ +
+ + + + + + + + + + + + + +
\ No newline at end of file diff --git a/kyla_stearns/Angular/productMgmt/products/src/app/new/new.component.spec.ts b/kyla_stearns/Angular/productMgmt/products/src/app/new/new.component.spec.ts new file mode 100755 index 0000000..3451b0f --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/app/new/new.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { NewComponent } from './new.component'; + +describe('NewComponent', () => { + let component: NewComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ NewComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(NewComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kyla_stearns/Angular/productMgmt/products/src/app/new/new.component.ts b/kyla_stearns/Angular/productMgmt/products/src/app/new/new.component.ts new file mode 100755 index 0000000..8420fe9 --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/app/new/new.component.ts @@ -0,0 +1,47 @@ +import { Component, OnInit } from '@angular/core'; +import { HttpService } from '../http.service'; +import { ActivatedRoute, Params, Router } from '@angular/router'; +// not really using params in this case, but easy to bring in in case want to change later + +@Component({ + selector: 'app-new', + templateUrl: './new.component.html', + styleUrls: ['./new.component.css'] +}) +export class NewComponent implements OnInit { + newProduct = {}; + response: any; + constructor( + private _httpService: HttpService, + private _route: ActivatedRoute, + private _router: Router + ) { } + + ngOnInit() { + this.newProduct = {id: '', title: '', price: '', imgLink: ''}; + } + onSubmitNew(event){ + // CODE TO SUBMIT FORM AND SEND TO DB + event.preventDefault(); + // code to send off the form data (this.newProduct) to the service + // console.log("Updated newProduct", this.newProduct); + let observable = this._httpService.createProduct(this.newProduct); + observable.subscribe(data => { + // console.log("newProduct subscribe to Observable", data.json()); + this.response = data.json(); + // then reset this.newProduct to new, clean object. + this.newProduct = {id: '', title: '', price: '', imgLink: ''}; + // this._router.navigate(['/home']); + // can re-route home but i chose to stay on the page, clear the form, and show validations + + // THIS IS WHAT YOU WOULD USE IF YOU DECIDE TO CHANGE SERVER SIDE TO USE STATUS(400) ERROR + // observable.subscribe( (res: any) => { + // this.thisAuthor = {id: '', name: ''}; + // }; + // ( (err: any) => { + // this.response = err.error.errors.field_name.message; + // })); + + }) + } +} diff --git a/kyla_stearns/Angular/productMgmt/products/src/app/product-list/product-list.component.css b/kyla_stearns/Angular/productMgmt/products/src/app/product-list/product-list.component.css new file mode 100755 index 0000000..56f8956 --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/app/product-list/product-list.component.css @@ -0,0 +1,36 @@ +h2{ + margin-top: 10px; +} + +p{ + font-size: 18px; + margin: 15px 0px 15px 0px; +} + +#product{ + vertical-align: top; + display: inline-block; + width: 20%; + height: 350px; + border: 2px solid black; + padding: 5px; + margin: 10px; + text-align: center; +} + +img{ + display: block; + width: 100%; + height: 200px; +} + +button{ + width: 75px; + font-size: 14px; + padding: 5px; + text-align: center; + background-color: lightgrey; + vertical-align: top; + margin: 0px 20px 0px 15px; + border-radius: 5px; +} \ No newline at end of file diff --git a/kyla_stearns/Angular/productMgmt/products/src/app/product-list/product-list.component.html b/kyla_stearns/Angular/productMgmt/products/src/app/product-list/product-list.component.html new file mode 100755 index 0000000..0103733 --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/app/product-list/product-list.component.html @@ -0,0 +1,9 @@ +

Product List

+ +
+ product +

{{ element.title }}

+

${{ element.price }}

+ + +
\ No newline at end of file diff --git a/kyla_stearns/Angular/productMgmt/products/src/app/product-list/product-list.component.spec.ts b/kyla_stearns/Angular/productMgmt/products/src/app/product-list/product-list.component.spec.ts new file mode 100755 index 0000000..a2c901b --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/app/product-list/product-list.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ProductListComponent } from './product-list.component'; + +describe('ProductListComponent', () => { + let component: ProductListComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ProductListComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ProductListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kyla_stearns/Angular/productMgmt/products/src/app/product-list/product-list.component.ts b/kyla_stearns/Angular/productMgmt/products/src/app/product-list/product-list.component.ts new file mode 100755 index 0000000..06c9170 --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/app/product-list/product-list.component.ts @@ -0,0 +1,43 @@ +import { Component, OnInit } from '@angular/core'; +import { HttpService } from '../http.service'; +import { ActivatedRoute, Params, Router } from '@angular/router'; + +@Component({ + selector: 'app-product-list', + templateUrl: './product-list.component.html', + styleUrls: ['./product-list.component.css'] +}) +export class ProductListComponent implements OnInit { + products = []; + constructor( + private _httpService: HttpService, + private _route: ActivatedRoute, + private _router: Router + ) { } + + ngOnInit() { + this.getProducts(); + } + + getProducts(){ + let observable = this._httpService.getAllProducts(); + observable.subscribe(data => { // subscribe to Observable in order to get updates when you receive a response + data = data.json(); + console.log("Got our products!", data); + console.log( "This is all_products of data", data['all_products']); + this.products = data['all_products']; + }); + } + + deleteProduct(id){ + console.log("inside component delete with id", id); + let observable = this._httpService.deleteProduct(id); + observable.subscribe(data => { // subscribe to Observable in order to get updates when you receive a response + console.log("deleteProduct subscribe to Observable", data.json()); + this.response = data.json(); // inject HttpService as dependency + this.getProducts(); + // this._router.navigate(['/']); + // can re-route home but i chose to stay on the page, clear the form, and show validations + }); + } +} \ No newline at end of file diff --git a/kyla_stearns/Angular/productMgmt/products/src/assets/.gitkeep b/kyla_stearns/Angular/productMgmt/products/src/assets/.gitkeep new file mode 100755 index 0000000..e69de29 diff --git a/kyla_stearns/Angular/productMgmt/products/src/environments/environment.prod.ts b/kyla_stearns/Angular/productMgmt/products/src/environments/environment.prod.ts new file mode 100755 index 0000000..3612073 --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/environments/environment.prod.ts @@ -0,0 +1,3 @@ +export const environment = { + production: true +}; diff --git a/kyla_stearns/Angular/productMgmt/products/src/environments/environment.ts b/kyla_stearns/Angular/productMgmt/products/src/environments/environment.ts new file mode 100755 index 0000000..b7f639a --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/environments/environment.ts @@ -0,0 +1,8 @@ +// The file contents for the current environment will overwrite these during build. +// The build system defaults to the dev environment which uses `environment.ts`, but if you do +// `ng build --env=prod` then `environment.prod.ts` will be used instead. +// The list of which env maps to which file can be found in `.angular-cli.json`. + +export const environment = { + production: false +}; diff --git a/kyla_stearns/Angular/productMgmt/products/src/favicon.ico b/kyla_stearns/Angular/productMgmt/products/src/favicon.ico new file mode 100755 index 0000000000000000000000000000000000000000..8081c7ceaf2be08bf59010158c586170d9d2d517 GIT binary patch literal 5430 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 literal 0 HcmV?d00001 diff --git a/kyla_stearns/Angular/productMgmt/products/src/index.html b/kyla_stearns/Angular/productMgmt/products/src/index.html new file mode 100755 index 0000000..18ef9bb --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/index.html @@ -0,0 +1,14 @@ + + + + + Products + + + + + + + + + diff --git a/kyla_stearns/Angular/productMgmt/products/src/main.ts b/kyla_stearns/Angular/productMgmt/products/src/main.ts new file mode 100755 index 0000000..91ec6da --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/main.ts @@ -0,0 +1,12 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(AppModule) + .catch(err => console.log(err)); diff --git a/kyla_stearns/Angular/productMgmt/products/src/polyfills.ts b/kyla_stearns/Angular/productMgmt/products/src/polyfills.ts new file mode 100755 index 0000000..af84770 --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/polyfills.ts @@ -0,0 +1,79 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** IE9, IE10 and IE11 requires all of the following polyfills. **/ +// import 'core-js/es6/symbol'; +// import 'core-js/es6/object'; +// import 'core-js/es6/function'; +// import 'core-js/es6/parse-int'; +// import 'core-js/es6/parse-float'; +// import 'core-js/es6/number'; +// import 'core-js/es6/math'; +// import 'core-js/es6/string'; +// import 'core-js/es6/date'; +// import 'core-js/es6/array'; +// import 'core-js/es6/regexp'; +// import 'core-js/es6/map'; +// import 'core-js/es6/weak-map'; +// import 'core-js/es6/set'; + +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** IE10 and IE11 requires the following for the Reflect API. */ +// import 'core-js/es6/reflect'; + + +/** Evergreen browsers require these. **/ +// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove. +import 'core-js/es7/reflect'; + + +/** + * Required to support Web Animations `@angular/platform-browser/animations`. + * Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation + **/ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + */ + + // (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame + // (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick + // (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + + /* + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + */ +// (window as any).__Zone_enable_cross_context_check = true; + +/*************************************************************************************************** + * Zone JS is required by default for Angular itself. + */ +import 'zone.js/dist/zone'; // Included with Angular CLI. + + + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ diff --git a/kyla_stearns/Angular/productMgmt/products/src/styles.css b/kyla_stearns/Angular/productMgmt/products/src/styles.css new file mode 100755 index 0000000..90d4ee0 --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/styles.css @@ -0,0 +1 @@ +/* You can add global styles to this file, and also import other style files */ diff --git a/kyla_stearns/Angular/productMgmt/products/src/test.ts b/kyla_stearns/Angular/productMgmt/products/src/test.ts new file mode 100755 index 0000000..1631789 --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/test.ts @@ -0,0 +1,20 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: any; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/kyla_stearns/Angular/productMgmt/products/src/tsconfig.app.json b/kyla_stearns/Angular/productMgmt/products/src/tsconfig.app.json new file mode 100755 index 0000000..39ba8db --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/tsconfig.app.json @@ -0,0 +1,13 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/app", + "baseUrl": "./", + "module": "es2015", + "types": [] + }, + "exclude": [ + "test.ts", + "**/*.spec.ts" + ] +} diff --git a/kyla_stearns/Angular/productMgmt/products/src/tsconfig.spec.json b/kyla_stearns/Angular/productMgmt/products/src/tsconfig.spec.json new file mode 100755 index 0000000..ac22a29 --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/tsconfig.spec.json @@ -0,0 +1,19 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/spec", + "baseUrl": "./", + "module": "commonjs", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/kyla_stearns/Angular/productMgmt/products/src/typings.d.ts b/kyla_stearns/Angular/productMgmt/products/src/typings.d.ts new file mode 100755 index 0000000..ef5c7bd --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/src/typings.d.ts @@ -0,0 +1,5 @@ +/* SystemJS module definition */ +declare var module: NodeModule; +interface NodeModule { + id: string; +} diff --git a/kyla_stearns/Angular/productMgmt/products/tsconfig.json b/kyla_stearns/Angular/productMgmt/products/tsconfig.json new file mode 100755 index 0000000..a6c016b --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "target": "es5", + "typeRoots": [ + "node_modules/@types" + ], + "lib": [ + "es2017", + "dom" + ] + } +} diff --git a/kyla_stearns/Angular/productMgmt/products/tslint.json b/kyla_stearns/Angular/productMgmt/products/tslint.json new file mode 100755 index 0000000..9963d6c --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/products/tslint.json @@ -0,0 +1,143 @@ +{ + "rulesDirectory": [ + "node_modules/codelyzer" + ], + "rules": { + "arrow-return-shorthand": true, + "callable-types": true, + "class-name": true, + "comment-format": [ + true, + "check-space" + ], + "curly": true, + "deprecation": { + "severity": "warn" + }, + "eofline": true, + "forin": true, + "import-blacklist": [ + true, + "rxjs", + "rxjs/Rx" + ], + "import-spacing": true, + "indent": [ + true, + "spaces" + ], + "interface-over-type-literal": true, + "label-position": true, + "max-line-length": [ + true, + 140 + ], + "member-access": false, + "member-ordering": [ + true, + { + "order": [ + "static-field", + "instance-field", + "static-method", + "instance-method" + ] + } + ], + "no-arg": true, + "no-bitwise": true, + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-construct": true, + "no-debugger": true, + "no-duplicate-super": true, + "no-empty": false, + "no-empty-interface": true, + "no-eval": true, + "no-inferrable-types": [ + true, + "ignore-params" + ], + "no-misused-new": true, + "no-non-null-assertion": true, + "no-shadowed-variable": true, + "no-string-literal": false, + "no-string-throw": true, + "no-switch-case-fall-through": true, + "no-trailing-whitespace": true, + "no-unnecessary-initializer": true, + "no-unused-expression": true, + "no-use-before-declare": true, + "no-var-keyword": true, + "object-literal-sort-keys": false, + "one-line": [ + true, + "check-open-brace", + "check-catch", + "check-else", + "check-whitespace" + ], + "prefer-const": true, + "quotemark": [ + true, + "single" + ], + "radix": true, + "semicolon": [ + true, + "always" + ], + "triple-equals": [ + true, + "allow-null-check" + ], + "typedef-whitespace": [ + true, + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + } + ], + "unified-signatures": true, + "variable-name": false, + "whitespace": [ + true, + "check-branch", + "check-decl", + "check-operator", + "check-separator", + "check-type" + ], + "directive-selector": [ + true, + "attribute", + "app", + "camelCase" + ], + "component-selector": [ + true, + "element", + "app", + "kebab-case" + ], + "no-output-on-prefix": true, + "use-input-property-decorator": true, + "use-output-property-decorator": true, + "use-host-property-decorator": true, + "no-input-rename": true, + "no-output-rename": true, + "use-life-cycle-interface": true, + "use-pipe-transform-interface": true, + "component-class-suffix": true, + "directive-class-suffix": true + } +} diff --git a/kyla_stearns/Angular/productMgmt/server.js b/kyla_stearns/Angular/productMgmt/server.js new file mode 100755 index 0000000..1a3ae2c --- /dev/null +++ b/kyla_stearns/Angular/productMgmt/server.js @@ -0,0 +1,129 @@ +let express = require('express'); + app = express(); + bodyParser = require('body-parser'); + mongoose = require('mongoose'); require('mongoose-type-url'); + // ** MAKE SURE TO RUN ** npm install mongoose-type-url + uniqueValidator = require('mongoose-unique-validator'); + ProductsSchema = new mongoose.Schema({ + title: { + type: String, + required: [true, "Must enter a title."], + minlength: [4, "Title must be at least 4 characters."] + }, + price: { + type: Number, + required: [true, "Must enter a price."], + min: [1, "Price must be at least one dollar."] + }, + imgLink: { + type: mongoose.SchemaTypes.Url, + required: false, + // unique: [true, "Link must be valid."] + // NOT SURE IF NEED UNIQUE WITH mongoose-type-url + } + }, {timestamps: true}); +// use unique validator here +ProductsSchema.plugin(uniqueValidator); + +app.use(bodyParser.json()); +app.use(express.static( __dirname + '/products/dist' )); + +// connect to the database -- make sure after localhost/ you put in the db name you created +mongoose.connect('mongodb://localhost/products'); +// use native promises -- uses the promise library to save an object +mongoose.Promise = global.Promise +// Set this Schema in our Models as 'Product' +mongoose.model('Product', ProductsSchema); +// Retrieve this Schema from our Models, named 'Product' +// MOST IMPORTANT -- get this blueprint by making a new schema instance from the mongoose.Schema() +// object constructor +let Product = mongoose.model('Product'); + +app.get('/products', (req,res) => { + // GET ALL PRODUCTS + Product.find({}, (err, all_products) => { + if(err){ + console.log("There's an error finding all products", err); + res.json(err.message); + // res.status(400).json(err); + } + else{ + console.log("Successfully retrieved products", all_products); + res.json({all_products: all_products}); + } + }); +}); + +app.post('/products/new', (req,res) => { + // CREATE A NEW PRODUCT + console.log("Inside POST new product with form data", req.body); + let new_product = new Product({title: req.body.title, price: req.body.price, imgLink: req.body.imgLink}); + new_product.save((err) => { + if(err){ + console.log("There's an error creating a new product.", err); + res.json(err.message); + // res.status(400).json(err); + } + else{ + console.log("Successfully created new product", new_product); + res.json("You have successfully added an product!"); + } + }); +}); + +app.get('/products/edit/:id', (req,res) => { + // GET SPECIFIC PRODUCT BY ID -- best to use findOne so you don't have more than 1 + Product.findOne({_id: req.params.id}, (err, this_product) => { + if(err){ + console.log("There's an error getting this product.", err); + res.json(err.message); + // res.status(400).json(err); + } + else{ + console.log("Successfully retrieved this product", this_product); + res.json({this_product: this_product}); + } + }); +}); + +app.patch('/products/update/:id', (req,res) => { + // UPDATE SPECIFIC PRODUCT BY ID + console.log("Inside server .put to update product", req.body); + Product.update( + {_id: req.params.id}, + {title: req.body.title, price: req.body.price, imgLink: req.body.imgLink}, + {runValidators: true}, + (err, this_product) => { + if(err){ + console.log("There's an error updating this product", err.message); + res.json(err.message); + // res.status(400).json(err); + } + else{ + console.log("Successfully updated this product", this_product); + res.json({this_product: this_product}); + } + }); +}); + +app.delete('/products/:id', (req,res) => { + // DELETE SPECIFIC AUTHOR BY ID + console.log("Inside the DELETE function", req.params.id); + Product.remove({_id: req.params.id}, (err) => { + // if there is an error, console.log that something went wrong + if(err){ + console.log("There's an error deleting this product.", err); + res.json(err.message); + // res.status(400).json(err); + } + else{ + console.log("Successfully deleted this product."); + res.json("You have successfully deleted this product!"); + } + }); +}); + +app.listen(5678, () => { + console.log('Listening on port 5678'); +}) + diff --git a/kyla_stearns/Angular/products2 b/kyla_stearns/Angular/products2 new file mode 160000 index 0000000..2aec7ad --- /dev/null +++ b/kyla_stearns/Angular/products2 @@ -0,0 +1 @@ +Subproject commit 2aec7adfbcc69123d04cdbf489d25478ca510896 diff --git a/kyla_stearns/Angular/restaurants/IP.txt b/kyla_stearns/Angular/restaurants/IP.txt new file mode 100755 index 0000000..48e3e20 --- /dev/null +++ b/kyla_stearns/Angular/restaurants/IP.txt @@ -0,0 +1 @@ +AWS private IP: 172.31.2.221 \ No newline at end of file diff --git a/kyla_stearns/Angular/restaurants/client/.angular-cli.json b/kyla_stearns/Angular/restaurants/client/.angular-cli.json new file mode 100755 index 0000000..3d965d7 --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/.angular-cli.json @@ -0,0 +1,60 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "project": { + "name": "client" + }, + "apps": [ + { + "root": "src", + "outDir": "dist", + "assets": [ + "assets", + "favicon.png" + ], + "index": "index.html", + "main": "main.ts", + "polyfills": "polyfills.ts", + "test": "test.ts", + "tsconfig": "tsconfig.app.json", + "testTsconfig": "tsconfig.spec.json", + "prefix": "app", + "styles": [ + "styles.css" + ], + "scripts": [], + "environmentSource": "environments/environment.ts", + "environments": { + "dev": "environments/environment.ts", + "prod": "environments/environment.prod.ts" + } + } + ], + "e2e": { + "protractor": { + "config": "./protractor.conf.js" + } + }, + "lint": [ + { + "project": "src/tsconfig.app.json", + "exclude": "**/node_modules/**" + }, + { + "project": "src/tsconfig.spec.json", + "exclude": "**/node_modules/**" + }, + { + "project": "e2e/tsconfig.e2e.json", + "exclude": "**/node_modules/**" + } + ], + "test": { + "karma": { + "config": "./karma.conf.js" + } + }, + "defaults": { + "styleExt": "css", + "component": {} + } +} diff --git a/kyla_stearns/Angular/restaurants/client/.editorconfig b/kyla_stearns/Angular/restaurants/client/.editorconfig new file mode 100755 index 0000000..6e87a00 --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/.editorconfig @@ -0,0 +1,13 @@ +# Editor configuration, see http://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/kyla_stearns/Angular/restaurants/client/README.md b/kyla_stearns/Angular/restaurants/client/README.md new file mode 100755 index 0000000..882badc --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/README.md @@ -0,0 +1,27 @@ +# Client + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.7.3. + +## Development server + +Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. + +## Code scaffolding + +Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. + +## Build + +Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build. + +## Running unit tests + +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Running end-to-end tests + +Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/kyla_stearns/Angular/restaurants/client/e2e/app.e2e-spec.ts b/kyla_stearns/Angular/restaurants/client/e2e/app.e2e-spec.ts new file mode 100755 index 0000000..2b4e850 --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/e2e/app.e2e-spec.ts @@ -0,0 +1,14 @@ +import { AppPage } from './app.po'; + +describe('client App', () => { + let page: AppPage; + + beforeEach(() => { + page = new AppPage(); + }); + + it('should display welcome message', () => { + page.navigateTo(); + expect(page.getParagraphText()).toEqual('Welcome to app!'); + }); +}); diff --git a/kyla_stearns/Angular/restaurants/client/e2e/app.po.ts b/kyla_stearns/Angular/restaurants/client/e2e/app.po.ts new file mode 100755 index 0000000..82ea75b --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/e2e/app.po.ts @@ -0,0 +1,11 @@ +import { browser, by, element } from 'protractor'; + +export class AppPage { + navigateTo() { + return browser.get('/'); + } + + getParagraphText() { + return element(by.css('app-root h1')).getText(); + } +} diff --git a/kyla_stearns/Angular/restaurants/client/e2e/tsconfig.e2e.json b/kyla_stearns/Angular/restaurants/client/e2e/tsconfig.e2e.json new file mode 100755 index 0000000..1d9e5ed --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/e2e/tsconfig.e2e.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/e2e", + "baseUrl": "./", + "module": "commonjs", + "target": "es5", + "types": [ + "jasmine", + "jasminewd2", + "node" + ] + } +} diff --git a/kyla_stearns/Angular/restaurants/client/karma.conf.js b/kyla_stearns/Angular/restaurants/client/karma.conf.js new file mode 100755 index 0000000..af139fa --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/karma.conf.js @@ -0,0 +1,33 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular/cli'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular/cli/plugins/karma') + ], + client:{ + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + reports: [ 'html', 'lcovonly' ], + fixWebpackSourcePaths: true + }, + angularCli: { + environment: 'dev' + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false + }); +}; diff --git a/kyla_stearns/Angular/restaurants/client/package.json b/kyla_stearns/Angular/restaurants/client/package.json new file mode 100755 index 0000000..ed2fdea --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/package.json @@ -0,0 +1,48 @@ +{ + "name": "client", + "version": "0.0.0", + "license": "MIT", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build --prod", + "test": "ng test", + "lint": "ng lint", + "e2e": "ng e2e" + }, + "private": true, + "dependencies": { + "@angular/animations": "^5.2.0", + "@angular/common": "^5.2.0", + "@angular/compiler": "^5.2.0", + "@angular/core": "^5.2.0", + "@angular/forms": "^5.2.0", + "@angular/http": "^5.2.0", + "@angular/platform-browser": "^5.2.0", + "@angular/platform-browser-dynamic": "^5.2.0", + "@angular/router": "^5.2.0", + "core-js": "^2.4.1", + "rxjs": "^5.5.6", + "zone.js": "^0.8.19" + }, + "devDependencies": { + "@angular/cli": "~1.7.3", + "@angular/compiler-cli": "^5.2.0", + "@angular/language-service": "^5.2.0", + "@types/jasmine": "~2.8.3", + "@types/jasminewd2": "~2.0.2", + "@types/node": "~6.0.60", + "codelyzer": "^4.0.1", + "jasmine-core": "~2.8.0", + "jasmine-spec-reporter": "~4.2.1", + "karma": "~2.0.0", + "karma-chrome-launcher": "~2.2.0", + "karma-coverage-istanbul-reporter": "^1.2.1", + "karma-jasmine": "~1.1.0", + "karma-jasmine-html-reporter": "^0.2.2", + "protractor": "~5.1.2", + "ts-node": "~4.1.0", + "tslint": "~5.9.1", + "typescript": "~2.5.3" + } +} diff --git a/kyla_stearns/Angular/restaurants/client/protractor.conf.js b/kyla_stearns/Angular/restaurants/client/protractor.conf.js new file mode 100755 index 0000000..7ee3b5e --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/protractor.conf.js @@ -0,0 +1,28 @@ +// Protractor configuration file, see link for more information +// https://github.com/angular/protractor/blob/master/lib/config.ts + +const { SpecReporter } = require('jasmine-spec-reporter'); + +exports.config = { + allScriptsTimeout: 11000, + specs: [ + './e2e/**/*.e2e-spec.ts' + ], + capabilities: { + 'browserName': 'chrome' + }, + directConnect: true, + baseUrl: 'http://localhost:4200/', + framework: 'jasmine', + jasmineNodeOpts: { + showColors: true, + defaultTimeoutInterval: 30000, + print: function() {} + }, + onPrepare() { + require('ts-node').register({ + project: 'e2e/tsconfig.e2e.json' + }); + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); + } +}; diff --git a/kyla_stearns/Angular/restaurants/client/src/app/app-routing.module.ts b/kyla_stearns/Angular/restaurants/client/src/app/app-routing.module.ts new file mode 100755 index 0000000..0888261 --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/app/app-routing.module.ts @@ -0,0 +1,23 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { HomeComponent } from './home/home.component'; +import { NewRestaurantComponent } from './new-restaurant/new-restaurant.component'; +import { EditRestaurantComponent } from './edit-restaurant/edit-restaurant.component'; +import { ReviewComponent } from './review/review.component'; +import { NewReviewComponent } from './new-review/new-review.component'; + +const routes: Routes = [ + {path: '', pathMatch: 'full', component: HomeComponent }, + {path: 'home', component: HomeComponent }, + {path: 'new', component: NewRestaurantComponent}, + {path: 'edit/:id', component: EditRestaurantComponent}, + {path: 'reviews/:id', component: ReviewComponent}, + {path: 'write/:id', component: NewReviewComponent} +]; + +@NgModule({ + imports: [RouterModule.forRoot(routes)], + exports: [RouterModule] +}) +export class AppRoutingModule { } diff --git a/kyla_stearns/Angular/restaurants/client/src/app/app.component.css b/kyla_stearns/Angular/restaurants/client/src/app/app.component.css new file mode 100755 index 0000000..8812d03 --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/app/app.component.css @@ -0,0 +1,30 @@ +*{ + margin: 0px; + padding: 0px; + font-family: Arial, sans-serif; +} + +body{ + width: 970px; + margin: auto; +} + +header{ + width: 100%; + padding: 10px; +} + +img{ + height: 100px; + width: 100px; + margin: -10px 10px 0px 15px; +} + +h1{ + display: inline; + vertical-align: top; +} + +main{ + padding: 15px; +} \ No newline at end of file diff --git a/kyla_stearns/Angular/restaurants/client/src/app/app.component.html b/kyla_stearns/Angular/restaurants/client/src/app/app.component.html new file mode 100755 index 0000000..45e62a2 --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/app/app.component.html @@ -0,0 +1,10 @@ +
+ food logo +

Let's eat!

+
+ +
+ + + +
\ No newline at end of file diff --git a/kyla_stearns/Angular/restaurants/client/src/app/app.component.spec.ts b/kyla_stearns/Angular/restaurants/client/src/app/app.component.spec.ts new file mode 100755 index 0000000..e4ca195 --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/app/app.component.spec.ts @@ -0,0 +1,31 @@ +import { TestBed, async } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { AppComponent } from './app.component'; +describe('AppComponent', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [ + RouterTestingModule + ], + declarations: [ + AppComponent + ], + }).compileComponents(); + })); + it('should create the app', async(() => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app).toBeTruthy(); + })); + it(`should have as title 'app'`, async(() => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app.title).toEqual('app'); + })); + it('should render title in a h1 tag', async(() => { + const fixture = TestBed.createComponent(AppComponent); + fixture.detectChanges(); + const compiled = fixture.debugElement.nativeElement; + expect(compiled.querySelector('h1').textContent).toContain('Welcome to app!'); + })); +}); diff --git a/kyla_stearns/Angular/restaurants/client/src/app/app.component.ts b/kyla_stearns/Angular/restaurants/client/src/app/app.component.ts new file mode 100755 index 0000000..64bb6db --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/app/app.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; +import { HttpService } from './http.service'; + +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.css'] +}) +export class AppComponent { + title = 'app'; + constructor(private _httpService: HttpService){} +} diff --git a/kyla_stearns/Angular/restaurants/client/src/app/app.module.ts b/kyla_stearns/Angular/restaurants/client/src/app/app.module.ts new file mode 100755 index 0000000..d493a35 --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/app/app.module.ts @@ -0,0 +1,40 @@ +import { BrowserModule } from '@angular/platform-browser'; +import { NgModule } from '@angular/core'; + +import { AppRoutingModule } from './app-routing.module'; +import { HttpModule } from '@angular/http'; +import { FormsModule } from '@angular/forms'; + +import { AppComponent } from './app.component'; +import { HomeComponent } from './home/home.component'; +import { NewRestaurantComponent } from './new-restaurant/new-restaurant.component'; +import { EditRestaurantComponent } from './edit-restaurant/edit-restaurant.component'; +import { ReviewComponent } from './review/review.component'; +import { NewReviewComponent } from './new-review/new-review.component'; + +import { HttpService } from './http.service'; + + +@NgModule({ + declarations: [ + AppComponent, + HomeComponent, + NewRestaurantComponent, + EditRestaurantComponent, + ReviewComponent, + NewReviewComponent + ], + imports: [ + BrowserModule, + AppRoutingModule, + HttpModule, + FormsModule + ], + providers: [ + HttpService + ], + bootstrap: [ + AppComponent + ] +}) +export class AppModule { } diff --git a/kyla_stearns/Angular/restaurants/client/src/app/edit-restaurant/edit-restaurant.component.css b/kyla_stearns/Angular/restaurants/client/src/app/edit-restaurant/edit-restaurant.component.css new file mode 100755 index 0000000..83c2ec1 --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/app/edit-restaurant/edit-restaurant.component.css @@ -0,0 +1,49 @@ +#errors{ + color: red; + padding: 5px; + margin: 10px 0px 10px 0px; +} + +h4{ + margin-top: 10px; +} + +p{ + font-size: 18px; + margin: 15px 0px 15px 0px; +} + +label{ + display: block; + margin: 10px 0px 10px 0px; +} + +input[type=text]{ + display: block; + padding: 5px; + font-size: 14px; + margin-left: 15px; + width: 225px; +} + +input[type=submit]{ + width: 100px; + font-size: 14px; + padding: 5px; + text-align: center; + background-color: #4EBEFB; + vertical-align: top; + margin: 15px 15px 0px 15px; + border-radius: 5px; +} + +button{ + width: 100px; + font-size: 14px; + padding: 5px; + text-align: center; + background-color: lightgrey; + vertical-align: top; + margin: 15px 15px 0px 15px; + border-radius: 5px; +} \ No newline at end of file diff --git a/kyla_stearns/Angular/restaurants/client/src/app/edit-restaurant/edit-restaurant.component.html b/kyla_stearns/Angular/restaurants/client/src/app/edit-restaurant/edit-restaurant.component.html new file mode 100755 index 0000000..ddea94a --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/app/edit-restaurant/edit-restaurant.component.html @@ -0,0 +1,24 @@ +
+

{{ response.name.message }}

+

{{ response.cuisine.message }}

+
+ +

Edit this restaurant:

+ +
+ + + + + + + + + +
\ No newline at end of file diff --git a/kyla_stearns/Angular/restaurants/client/src/app/edit-restaurant/edit-restaurant.component.spec.ts b/kyla_stearns/Angular/restaurants/client/src/app/edit-restaurant/edit-restaurant.component.spec.ts new file mode 100755 index 0000000..7991ae1 --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/app/edit-restaurant/edit-restaurant.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditRestaurantComponent } from './edit-restaurant.component'; + +describe('EditRestaurantComponent', () => { + let component: EditRestaurantComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EditRestaurantComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EditRestaurantComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kyla_stearns/Angular/restaurants/client/src/app/edit-restaurant/edit-restaurant.component.ts b/kyla_stearns/Angular/restaurants/client/src/app/edit-restaurant/edit-restaurant.component.ts new file mode 100755 index 0000000..62e1bce --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/app/edit-restaurant/edit-restaurant.component.ts @@ -0,0 +1,56 @@ +import { Component, OnInit } from '@angular/core'; +import { HttpService } from '../http.service'; +import { ActivatedRoute, Params, Router } from '@angular/router'; + +@Component({ + selector: 'app-edit-restaurant', + templateUrl: './edit-restaurant.component.html', + styleUrls: ['./edit-restaurant.component.css'] +}) +export class EditRestaurantComponent implements OnInit { + thisRestaurant = {}; + response: any; + constructor( + private _httpService: HttpService, + private _route: ActivatedRoute, + private _router: Router + ) { } + + ngOnInit() { + this.response = {name: '', cuisine: ''}; + this._route.params.subscribe((params: Params) => { + // console.log("inside editInit with params id", params['id']); + let observable = this._httpService.editRestaurant(params['id']); + observable.subscribe(data => { + // console.log("edit restaurant subscribe to Observable", data.json()); + data = data.json(); + // console.log("Data from this thisRestaurant", data['this_restaurant']); + this.thisRestaurant = { + id: params['id'], + name: data['this_restaurant'].name, + cuisine: data['this_restaurant'].cuisine + }; + }); + }); + } + + onSubmitEdit(event){ + event.preventDefault(); + // console.log("Inside onSubmitEdit function with thisRestaurant", this.thisRestaurant); + // code to send off the form data (this.thisRestaurant) to the service + let observable = this._httpService.updateRestaurant(this.thisRestaurant); + observable.subscribe((data:any) => { + data = data.json(); + // console.log("thisRestaurant subscribe to Observable", data); + if (data.message){ + this.response = data.message.errors; + // console.log(this.response, "response"); + } + else{ + // then reset this.thisRestaurant to new, clean object. + this.thisRestaurant = {id: '', name: '', cuisine: '' }; + this._router.navigate(['']); + } + }) + } +} \ No newline at end of file diff --git a/kyla_stearns/Angular/restaurants/client/src/app/home/home.component.css b/kyla_stearns/Angular/restaurants/client/src/app/home/home.component.css new file mode 100755 index 0000000..a3060db --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/app/home/home.component.css @@ -0,0 +1,43 @@ +#errors{ + color: red; + padding: 5px; + margin: 10px 0px 10px 0px; +} + +h4{ + margin-top: 10px; +} + +p{ + font-size: 18px; + margin: 15px 0px 15px 0px; +} + +table{ + font-size: 18px; + margin-top: 15px; +} + +thead{ + background-color: lightgrey; +} + +th{ + padding: 2px 5px 2px 5px; +} + +#new{ + width: 200px; + background-color: orange; +} + +button{ + width: 100px; + font-size: 14px; + padding: 5px; + text-align: center; + background-color: lightgrey; + vertical-align: top; + margin: 0px 15px 0px 15px; + border-radius: 5px; +} \ No newline at end of file diff --git a/kyla_stearns/Angular/restaurants/client/src/app/home/home.component.html b/kyla_stearns/Angular/restaurants/client/src/app/home/home.component.html new file mode 100755 index 0000000..0d73aff --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/app/home/home.component.html @@ -0,0 +1,24 @@ +
+

{{ response }}

+
+ + + + + + + + + + + + + + + + +
Restaurant Cuisine Actions Available
{{ element.name }} {{ element.cuisine }} + + + +
\ No newline at end of file diff --git a/kyla_stearns/Angular/restaurants/client/src/app/home/home.component.spec.ts b/kyla_stearns/Angular/restaurants/client/src/app/home/home.component.spec.ts new file mode 100755 index 0000000..490e81b --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/app/home/home.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { HomeComponent } from './home.component'; + +describe('HomeComponent', () => { + let component: HomeComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ HomeComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HomeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kyla_stearns/Angular/restaurants/client/src/app/home/home.component.ts b/kyla_stearns/Angular/restaurants/client/src/app/home/home.component.ts new file mode 100755 index 0000000..d287d09 --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/app/home/home.component.ts @@ -0,0 +1,45 @@ +import { Component, OnInit } from '@angular/core'; +import { HttpService } from '../http.service'; +import { ActivatedRoute, Params, Router } from '@angular/router'; + +@Component({ + selector: 'app-home', + templateUrl: './home.component.html', + styleUrls: ['./home.component.css'] +}) +export class HomeComponent implements OnInit { + restaurants = []; + response: any; + constructor( + private _httpService: HttpService, + private _route: ActivatedRoute, + private _router: Router + ) { } + + ngOnInit() { + this.getRestaurants(); + } + + getRestaurants(){ + let observable = this._httpService.getAllRestaurants(); + observable.subscribe(data => { // subscribe to Observable in order to get updates when you receive a response + data = data.json(); + // console.log("Got our restaurants!", data); // inject HttpService as dependency + // console.log( "This is all_restaurants of data", data['all_restaurants']); + this.restaurants = data['all_restaurants']; + }); + } + + deleteRestaurant(id){ + // console.log("inside component delete with id", id); + let observable = this._httpService.deleteRestaurant(id); + observable.subscribe(data => { // subscribe to Observable in order to get updates when you receive a response + // console.log("deleteRestaurant subscribe to Observable", data.json()); + this.response = data.json(); // inject HttpService as dependency + this._router.navigate(['/home']); + // location.reload(); + // this.getRestaurants(); + }); + } + +} diff --git a/kyla_stearns/Angular/restaurants/client/src/app/http.service.spec.ts b/kyla_stearns/Angular/restaurants/client/src/app/http.service.spec.ts new file mode 100755 index 0000000..c2eb030 --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/app/http.service.spec.ts @@ -0,0 +1,15 @@ +import { TestBed, inject } from '@angular/core/testing'; + +import { HttpService } from './http.service'; + +describe('HttpService', () => { + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [HttpService] + }); + }); + + it('should be created', inject([HttpService], (service: HttpService) => { + expect(service).toBeTruthy(); + })); +}); diff --git a/kyla_stearns/Angular/restaurants/client/src/app/http.service.ts b/kyla_stearns/Angular/restaurants/client/src/app/http.service.ts new file mode 100755 index 0000000..516ba58 --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/app/http.service.ts @@ -0,0 +1,50 @@ +import { Injectable } from '@angular/core'; +import { Http } from '@angular/http'; + +@Injectable() +export class HttpService { + + constructor(private _http: Http) { } + + getAllRestaurants(){ + // console.log("Inside getAllRestaurants function"); + return this._http.get('/restaurants'); + } + + createRestaurant(newRestaurant){ + // console.log("Inside createRestaurant function with newRestaurant", newRestaurant); + return this._http.post('/restaurants/new', newRestaurant); + } + + editRestaurant(id){ + // console.log("Inside editRestaurant function with id", id); + return this._http.get('/restaurants/edit/'+id); + } + + updateRestaurant(editRestaurant){ + // console.log("Inside updateRestaurant function with editRestaurant", editRestaurant); + return this._http.patch('/restaurants/update/'+editRestaurant.id, editRestaurant); + } + + deleteRestaurant(id){ + // console.log("Inside deleteRestaurant function with id", id); + return this._http.delete('/restaurants/'+id); + } + + getAllReviews(id){ + // console.log("Inside getAllReviews function", id); + return this._http.get('/reviews/'+id); + } + + getName(id){ + // console.log("Inside getAllReviews function", id); + return this._http.get('/name/'+id); + } + + createReview(newReview){ + // console.log("Inside createReview function with newReview", newReview); + return this._http.post('/review/'+newReview._restaurant, newReview); + } + +} + diff --git a/kyla_stearns/Angular/restaurants/client/src/app/new-restaurant/new-restaurant.component.css b/kyla_stearns/Angular/restaurants/client/src/app/new-restaurant/new-restaurant.component.css new file mode 100755 index 0000000..83c2ec1 --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/app/new-restaurant/new-restaurant.component.css @@ -0,0 +1,49 @@ +#errors{ + color: red; + padding: 5px; + margin: 10px 0px 10px 0px; +} + +h4{ + margin-top: 10px; +} + +p{ + font-size: 18px; + margin: 15px 0px 15px 0px; +} + +label{ + display: block; + margin: 10px 0px 10px 0px; +} + +input[type=text]{ + display: block; + padding: 5px; + font-size: 14px; + margin-left: 15px; + width: 225px; +} + +input[type=submit]{ + width: 100px; + font-size: 14px; + padding: 5px; + text-align: center; + background-color: #4EBEFB; + vertical-align: top; + margin: 15px 15px 0px 15px; + border-radius: 5px; +} + +button{ + width: 100px; + font-size: 14px; + padding: 5px; + text-align: center; + background-color: lightgrey; + vertical-align: top; + margin: 15px 15px 0px 15px; + border-radius: 5px; +} \ No newline at end of file diff --git a/kyla_stearns/Angular/restaurants/client/src/app/new-restaurant/new-restaurant.component.html b/kyla_stearns/Angular/restaurants/client/src/app/new-restaurant/new-restaurant.component.html new file mode 100755 index 0000000..5580646 --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/app/new-restaurant/new-restaurant.component.html @@ -0,0 +1,24 @@ +
+

{{ response.name.message }}

+

{{ response.cuisine.message }}

+
+ +

Register a restaurant:

+ +
+ + + + + + + + + +
\ No newline at end of file diff --git a/kyla_stearns/Angular/restaurants/client/src/app/new-restaurant/new-restaurant.component.spec.ts b/kyla_stearns/Angular/restaurants/client/src/app/new-restaurant/new-restaurant.component.spec.ts new file mode 100755 index 0000000..4e3e229 --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/app/new-restaurant/new-restaurant.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { NewRestaurantComponent } from './new-restaurant.component'; + +describe('NewRestaurantComponent', () => { + let component: NewRestaurantComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ NewRestaurantComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(NewRestaurantComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kyla_stearns/Angular/restaurants/client/src/app/new-restaurant/new-restaurant.component.ts b/kyla_stearns/Angular/restaurants/client/src/app/new-restaurant/new-restaurant.component.ts new file mode 100755 index 0000000..89fd542 --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/app/new-restaurant/new-restaurant.component.ts @@ -0,0 +1,51 @@ +import { Component, OnInit } from '@angular/core'; +import { HttpService } from '../http.service'; +import { ActivatedRoute, Params, Router } from '@angular/router'; + +@Component({ + selector: 'app-new-restaurant', + templateUrl: './new-restaurant.component.html', + styleUrls: ['./new-restaurant.component.css'] +}) +export class NewRestaurantComponent implements OnInit { + newRestaurant = {}; + response: any; + constructor( + private _httpService: HttpService, + private _route: ActivatedRoute, + private _router: Router + ) { } + + ngOnInit() { + this.response = {name: '', cuisine: '', errmsg: ''}; + this.newRestaurant = { name: '', cuisine: '' }; + } + + onSubmitNew(event){ + // CODE TO SUBMIT FORM AND SEND TO DB + event.preventDefault(); + this.response = {name: '', cuisine: '', errmsg: ''}; + // code to send off the form data (this.newRestaurant) to the service + let observable = this._httpService.createRestaurant(this.newRestaurant); + observable.subscribe((data:any) => { + data = data.json(); + // console.log("newRestaurant subscribe to Observable", data); + if(data.message){ + if(data.message.errors){ + // console.log("error submitting new restaurant", data.message.errors); + this.response = data.message.errors; + // console.log(this.response, "response"); + } + else{ + // console.log("UNIQUE error submitting new restaurant", data.message.errmsg); + this.response.name = {message: "This restaurant has already been registered."} + } + } + else{ + // console.log("Getting inside else to navigate home"); + this.newRestaurant = { name: '', cuisine: '' }; + this._router.navigate(['/home']); + } + }); + } +} \ No newline at end of file diff --git a/kyla_stearns/Angular/restaurants/client/src/app/new-review/new-review.component.css b/kyla_stearns/Angular/restaurants/client/src/app/new-review/new-review.component.css new file mode 100755 index 0000000..4240ec4 --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/app/new-review/new-review.component.css @@ -0,0 +1,58 @@ +#errors{ + color: red; + padding: 5px; + margin: 10px 0px 10px 0px; +} + +h4{ + margin-top: 10px; +} + +p{ + font-size: 18px; + margin: 15px 0px 15px 0px; +} + +label{ + display: block; + margin: 10px 0px 10px 0px; +} + +option{ + display: block; + padding: 15px; + font-size: 14px; + margin-left: 25px; + width: 150px; +} + +input{ + display: block; + padding: 5px; + font-size: 14px; + margin-left: 15px; + width: 225px; +} + +input[type=submit]{ + display: inline; + width: 100px; + font-size: 14px; + padding: 5px; + text-align: center; + background-color: #4EBEFB; + vertical-align: top; + margin: 15px 15px 0px 15px; + border-radius: 5px; +} + +button{ + width: 100px; + font-size: 14px; + padding: 5px; + text-align: center; + background-color: lightgrey; + vertical-align: top; + margin: 15px 15px 0px 15px; + border-radius: 5px; +} \ No newline at end of file diff --git a/kyla_stearns/Angular/restaurants/client/src/app/new-review/new-review.component.html b/kyla_stearns/Angular/restaurants/client/src/app/new-review/new-review.component.html new file mode 100755 index 0000000..893cea3 --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/app/new-review/new-review.component.html @@ -0,0 +1,31 @@ +
+

{{ response.name.message }}

+

{{ response.content.message }}

+
+ +

Write a review for {{ currentRestaurant }}:

+ +
+ + + + + + + + + + + +
\ No newline at end of file diff --git a/kyla_stearns/Angular/restaurants/client/src/app/new-review/new-review.component.spec.ts b/kyla_stearns/Angular/restaurants/client/src/app/new-review/new-review.component.spec.ts new file mode 100755 index 0000000..eb1609b --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/app/new-review/new-review.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { NewReviewComponent } from './new-review.component'; + +describe('NewReviewComponent', () => { + let component: NewReviewComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ NewReviewComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(NewReviewComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kyla_stearns/Angular/restaurants/client/src/app/new-review/new-review.component.ts b/kyla_stearns/Angular/restaurants/client/src/app/new-review/new-review.component.ts new file mode 100755 index 0000000..0e6e333 --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/app/new-review/new-review.component.ts @@ -0,0 +1,66 @@ +import { Component, OnInit } from '@angular/core'; +import { HttpService } from '../http.service'; +import { ActivatedRoute, Params, Router } from '@angular/router'; + +@Component({ + selector: 'app-new-review', + templateUrl: './new-review.component.html', + styleUrls: ['./new-review.component.css'] +}) +export class NewReviewComponent implements OnInit { + newReview = {}; + response: any; + currentRestaurant: any; + constructor( + private _httpService: HttpService, + private _route: ActivatedRoute, + private _router: Router + ) { } + + ngOnInit() { + this._route.params.subscribe((params: Params) => { + // console.log("inside NEW reviewInit with params id", params['id']); + this.response = {name: '', content: ''}; + this.newReview = { + _restaurant: params['id'], + name: '', + rank: 1, + content: '' + }; + let observable = this._httpService.getName(params['id']); + observable.subscribe(data => { // subscribe to Observable in order to get updates when you receive a response + data = data.json(); + // console.log("this is the current restaurant name", data['restaurant_name']); + this.currentRestaurant = data['restaurant_name']; + }); + }); + } + + onSubmitNew(event){ + // CODE TO SUBMIT FORM AND SEND TO DB + event.preventDefault(); + // code to send off the form data (this.newReview) to the service + // console.log("Updated newReview", this.newReview); + let observable = this._httpService.createReview(this.newReview); + observable.subscribe((data:any) => { + data = data.json(); + // console.log("newReview subscribe to Observable", data); + if(data.message){ + this.response = data.message.errors; + // console.log(this.response, "response"); + } + else{ + // then reset this.newReview to new, clean object. + // console.log(this.newReview._restaurant, "this.newReview"); + this._router.navigate(['/reviews/'+this.newReview._restaurant]); + this.newReview = { + _restaurant: '', + name: '', + rank: 1, + content: '' + }; + } + }) + } + +} diff --git a/kyla_stearns/Angular/restaurants/client/src/app/review/review.component.css b/kyla_stearns/Angular/restaurants/client/src/app/review/review.component.css new file mode 100755 index 0000000..d38a57d --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/app/review/review.component.css @@ -0,0 +1,38 @@ +#errors{ + color: red; + padding: 5px; + margin: 10px 0px 10px 0px; +} + +h4{ + margin-top: 10px; +} + +p{ + font-size: 18px; + margin: 15px 0px 15px 0px; +} + +table{ + font-size: 18px; + margin-top: 15px; +} + +thead{ + background-color: lightgrey; +} + +th{ + padding: 2px 5px 2px 5px; +} + +button{ + width: 200px; + font-size: 14px; + padding: 5px; + text-align: center; + background-color: orange; + vertical-align: top; + margin: 0px 15px 0px 15px; + border-radius: 5px; +} \ No newline at end of file diff --git a/kyla_stearns/Angular/restaurants/client/src/app/review/review.component.html b/kyla_stearns/Angular/restaurants/client/src/app/review/review.component.html new file mode 100755 index 0000000..de6128c --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/app/review/review.component.html @@ -0,0 +1,24 @@ +
+

{{ response }}

+
+ +

Reviews for {{ currentRestaurant }}

+ + + + + + + + + + + + + + + + + + +
Customer Stars Description Actions
{{ element.name }} {{ element.rank }} {{ element.content }}
\ No newline at end of file diff --git a/kyla_stearns/Angular/restaurants/client/src/app/review/review.component.spec.ts b/kyla_stearns/Angular/restaurants/client/src/app/review/review.component.spec.ts new file mode 100755 index 0000000..41f37ab --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/app/review/review.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ReviewComponent } from './review.component'; + +describe('ReviewComponent', () => { + let component: ReviewComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ReviewComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ReviewComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kyla_stearns/Angular/restaurants/client/src/app/review/review.component.ts b/kyla_stearns/Angular/restaurants/client/src/app/review/review.component.ts new file mode 100755 index 0000000..05b326d --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/app/review/review.component.ts @@ -0,0 +1,37 @@ +import { Component, OnInit } from '@angular/core'; +import { HttpService } from '../http.service'; +import { ActivatedRoute, Params, Router } from '@angular/router'; + +@Component({ + selector: 'app-review', + templateUrl: './review.component.html', + styleUrls: ['./review.component.css'] +}) +export class ReviewComponent implements OnInit { + reviews = []; + restaurantID: any; + currentRestaurant: any; + response: any; + constructor( + private _httpService: HttpService, + private _route: ActivatedRoute, + private _router: Router + ) { } + + ngOnInit() { + this._route.params.subscribe((params: Params) => { + this.restaurantID = params['id']; + // console.log("inside reviewInit with params id", params['id']); + let observable = this._httpService.getAllReviews(params['id']); + observable.subscribe(data => { // subscribe to Observable in order to get updates when you receive a response + data = data.json(); + // console.log("Got our reviews!", data); // inject HttpService as dependency + // console.log( "This is all_reviews of data", data['all_reviews']); + // console.log("this is the current restaurant name", data['restaurant_name']); + this.currentRestaurant = data['restaurant_name']; + this.reviews = data['all_reviews']; + }); + }); + } + +} diff --git a/kyla_stearns/Angular/restaurants/client/src/assets/.gitkeep b/kyla_stearns/Angular/restaurants/client/src/assets/.gitkeep new file mode 100755 index 0000000..e69de29 diff --git a/kyla_stearns/Angular/restaurants/client/src/assets/forkspoon.png b/kyla_stearns/Angular/restaurants/client/src/assets/forkspoon.png new file mode 100755 index 0000000000000000000000000000000000000000..ff5cc08ca52c5e190488a052c86beb2abba2c867 GIT binary patch literal 29724 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 + + + + Restaurants + + + + + + + + + diff --git a/kyla_stearns/Angular/restaurants/client/src/main.ts b/kyla_stearns/Angular/restaurants/client/src/main.ts new file mode 100755 index 0000000..91ec6da --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/main.ts @@ -0,0 +1,12 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(AppModule) + .catch(err => console.log(err)); diff --git a/kyla_stearns/Angular/restaurants/client/src/polyfills.ts b/kyla_stearns/Angular/restaurants/client/src/polyfills.ts new file mode 100755 index 0000000..af84770 --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/polyfills.ts @@ -0,0 +1,79 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** IE9, IE10 and IE11 requires all of the following polyfills. **/ +// import 'core-js/es6/symbol'; +// import 'core-js/es6/object'; +// import 'core-js/es6/function'; +// import 'core-js/es6/parse-int'; +// import 'core-js/es6/parse-float'; +// import 'core-js/es6/number'; +// import 'core-js/es6/math'; +// import 'core-js/es6/string'; +// import 'core-js/es6/date'; +// import 'core-js/es6/array'; +// import 'core-js/es6/regexp'; +// import 'core-js/es6/map'; +// import 'core-js/es6/weak-map'; +// import 'core-js/es6/set'; + +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** IE10 and IE11 requires the following for the Reflect API. */ +// import 'core-js/es6/reflect'; + + +/** Evergreen browsers require these. **/ +// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove. +import 'core-js/es7/reflect'; + + +/** + * Required to support Web Animations `@angular/platform-browser/animations`. + * Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation + **/ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + */ + + // (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame + // (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick + // (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + + /* + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + */ +// (window as any).__Zone_enable_cross_context_check = true; + +/*************************************************************************************************** + * Zone JS is required by default for Angular itself. + */ +import 'zone.js/dist/zone'; // Included with Angular CLI. + + + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ diff --git a/kyla_stearns/Angular/restaurants/client/src/styles.css b/kyla_stearns/Angular/restaurants/client/src/styles.css new file mode 100755 index 0000000..90d4ee0 --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/styles.css @@ -0,0 +1 @@ +/* You can add global styles to this file, and also import other style files */ diff --git a/kyla_stearns/Angular/restaurants/client/src/test.ts b/kyla_stearns/Angular/restaurants/client/src/test.ts new file mode 100755 index 0000000..1631789 --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/test.ts @@ -0,0 +1,20 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: any; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/kyla_stearns/Angular/restaurants/client/src/tsconfig.app.json b/kyla_stearns/Angular/restaurants/client/src/tsconfig.app.json new file mode 100755 index 0000000..39ba8db --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/tsconfig.app.json @@ -0,0 +1,13 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/app", + "baseUrl": "./", + "module": "es2015", + "types": [] + }, + "exclude": [ + "test.ts", + "**/*.spec.ts" + ] +} diff --git a/kyla_stearns/Angular/restaurants/client/src/tsconfig.spec.json b/kyla_stearns/Angular/restaurants/client/src/tsconfig.spec.json new file mode 100755 index 0000000..ac22a29 --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/tsconfig.spec.json @@ -0,0 +1,19 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/spec", + "baseUrl": "./", + "module": "commonjs", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/kyla_stearns/Angular/restaurants/client/src/typings.d.ts b/kyla_stearns/Angular/restaurants/client/src/typings.d.ts new file mode 100755 index 0000000..ef5c7bd --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/src/typings.d.ts @@ -0,0 +1,5 @@ +/* SystemJS module definition */ +declare var module: NodeModule; +interface NodeModule { + id: string; +} diff --git a/kyla_stearns/Angular/restaurants/client/tsconfig.json b/kyla_stearns/Angular/restaurants/client/tsconfig.json new file mode 100755 index 0000000..a6c016b --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "target": "es5", + "typeRoots": [ + "node_modules/@types" + ], + "lib": [ + "es2017", + "dom" + ] + } +} diff --git a/kyla_stearns/Angular/restaurants/client/tslint.json b/kyla_stearns/Angular/restaurants/client/tslint.json new file mode 100755 index 0000000..9963d6c --- /dev/null +++ b/kyla_stearns/Angular/restaurants/client/tslint.json @@ -0,0 +1,143 @@ +{ + "rulesDirectory": [ + "node_modules/codelyzer" + ], + "rules": { + "arrow-return-shorthand": true, + "callable-types": true, + "class-name": true, + "comment-format": [ + true, + "check-space" + ], + "curly": true, + "deprecation": { + "severity": "warn" + }, + "eofline": true, + "forin": true, + "import-blacklist": [ + true, + "rxjs", + "rxjs/Rx" + ], + "import-spacing": true, + "indent": [ + true, + "spaces" + ], + "interface-over-type-literal": true, + "label-position": true, + "max-line-length": [ + true, + 140 + ], + "member-access": false, + "member-ordering": [ + true, + { + "order": [ + "static-field", + "instance-field", + "static-method", + "instance-method" + ] + } + ], + "no-arg": true, + "no-bitwise": true, + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-construct": true, + "no-debugger": true, + "no-duplicate-super": true, + "no-empty": false, + "no-empty-interface": true, + "no-eval": true, + "no-inferrable-types": [ + true, + "ignore-params" + ], + "no-misused-new": true, + "no-non-null-assertion": true, + "no-shadowed-variable": true, + "no-string-literal": false, + "no-string-throw": true, + "no-switch-case-fall-through": true, + "no-trailing-whitespace": true, + "no-unnecessary-initializer": true, + "no-unused-expression": true, + "no-use-before-declare": true, + "no-var-keyword": true, + "object-literal-sort-keys": false, + "one-line": [ + true, + "check-open-brace", + "check-catch", + "check-else", + "check-whitespace" + ], + "prefer-const": true, + "quotemark": [ + true, + "single" + ], + "radix": true, + "semicolon": [ + true, + "always" + ], + "triple-equals": [ + true, + "allow-null-check" + ], + "typedef-whitespace": [ + true, + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + } + ], + "unified-signatures": true, + "variable-name": false, + "whitespace": [ + true, + "check-branch", + "check-decl", + "check-operator", + "check-separator", + "check-type" + ], + "directive-selector": [ + true, + "attribute", + "app", + "camelCase" + ], + "component-selector": [ + true, + "element", + "app", + "kebab-case" + ], + "no-output-on-prefix": true, + "use-input-property-decorator": true, + "use-output-property-decorator": true, + "use-host-property-decorator": true, + "no-input-rename": true, + "no-output-rename": true, + "use-life-cycle-interface": true, + "use-pipe-transform-interface": true, + "component-class-suffix": true, + "directive-class-suffix": true + } +} diff --git a/kyla_stearns/Angular/restaurants/package.json b/kyla_stearns/Angular/restaurants/package.json new file mode 100755 index 0000000..179671b --- /dev/null +++ b/kyla_stearns/Angular/restaurants/package.json @@ -0,0 +1,20 @@ +{ + "name": "restaurants", + "version": "1.0.0", + "description": "", + "main": "server.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "start": "node server.js" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "body-parser": "^1.18.2", + "express": "^4.16.3", + "mongoose": "^5.0.11", + "mongoose-unique-validator": "^2.0.0", + "path": "^0.12.7" + } +} diff --git a/kyla_stearns/Angular/restaurants/server.js b/kyla_stearns/Angular/restaurants/server.js new file mode 100755 index 0000000..4866ac3 --- /dev/null +++ b/kyla_stearns/Angular/restaurants/server.js @@ -0,0 +1,216 @@ +let express = require('express'); + app = express(); + bodyParser = require('body-parser'); + mongoose = require('mongoose'); + path = require('path'); + uniqueValidator = require('mongoose-unique-validator'); + Schema = mongoose.Schema; + RestaurantsSchema = new mongoose.Schema({ + name: { + type: String, + unique: [true, "Restaurant already in database."], + required: [true, "Please enter a restaurant name."], + minlength: [3, "Name must be at least 3 characters."] + }, + cuisine: { + type: String, + required: [true, "Please enter a cuisine."], + min: [3, "Cuisine must be at least 3 characters."] + }, + reviews: [{ + type: Schema.Types.ObjectId, ref: 'Review' + }], + }, {timestamps: true}); + ReviewsSchema = new mongoose.Schema({ + _restaurant: { + type: Schema.Types.ObjectId, ref: 'Restaurant'}, + name: { + type: String, + required: [true, "Please enter your name."], + minlength: [3, "Name must be at least 3 characters."] + }, + rank: { + type: Number, + required: [true, "Please give your star rank."], + min: [1, "Minimum rank is 1."], + max: [5, "Maximum rank is 5."] + }, + content: { + type: String, + required: [true, "Please enter a review."], + min: [3, "Review must be at least 3 characters."] + }, + }, {timestamps: true}); + +app.use(bodyParser.json()); +app.use(express.static( __dirname + '/client/dist')); + +mongoose.connect('mongodb://localhost/restaurants'); // CHANGE TO MATCH DB NAME +mongoose.Promise = global.Promise; +mongoose.model('Restaurant', RestaurantsSchema); +mongoose.model('Review', ReviewsSchema); +let Restaurant = mongoose.model('Restaurant'); + Review = mongoose.model('Review'); + + +app.get('/restaurants', (req,res) => { + // GET ALL RESTAURANTS + Restaurant.find({}).populate('reviews').exec((err, all_restaurants) => { + if(err){ + // console.log("There's an error finding all restaurants", err); + res.json({message: err}); + // res.status(400).json(err); + } + else{ + // console.log("Successfully retrieved restaurants", all_restaurants); + res.json({all_restaurants: all_restaurants}); + } + }); +}); + +app.post('/restaurants/new', (req,res) => { + // CREATE A NEW RESTAURANT + // console.log("Inside POST new restaurant with form data", req.body); + let new_restaurant = new Restaurant({name: req.body.name, cuisine: req.body.cuisine}); + new_restaurant.save((err) => { + if(err){ + // console.log("There's an error creating a new restaurant.", err); + res.json({message: err}); + // res.status(400).json(err); + } + else{ + // console.log("Successfully created new restaurant", new_restaurant); + res.json({new_restaurant: new_restaurant}); + } + }); +}); + +app.get('/restaurants/edit/:id', (req,res) => { + // GET SPECIFIC RESTAURANT BY ID -- best to use findOne so you don't have more than 1 + Restaurant.findOne({_id: req.params.id}, (err, this_restaurant) => { + if(err){ + // console.log("There's an error getting this restaurant.", err); + res.json({message: err}); + // res.status(400).json(err); + } + else{ + // console.log("Successfully retrieved this restaurant", this_restaurant); + res.json({this_restaurant: this_restaurant}); + } + }); +}); + +app.patch('/restaurants/update/:id', (req,res) => { + // UPDATE SPECIFIC RESTAURANT BY ID + console.log("Inside server .put to update restaurant", req.body); + Restaurant.update( + {_id: req.params.id}, + {name: req.body.name, cuisine: req.body.cuisine}, + {runValidators: true}, + (err, this_restaurant) => { + if(err){ + // console.log("There's an error updating this restaurant", err.message); + res.json({message: err}); + // res.status(400).json(err); + } + else{ + // console.log("Successfully updated this restaurant", this_restaurant); + res.json("Successfully updated this restaurant"); + } + }); +}); + +app.get('/reviews/:id', (req,res) => { + // GET SPECIFIC RESTAURANT BY ID -- best to use findOne so you don't have more than 1 + // console.log("INSIDE SERVER GET ALL REVIEWS", req.params.id); + Restaurant.findOne({_id: req.params.id}, (err, this_restaurant) => { + if(err){ + // console.log("There's an error getting this restaurant.", err); + res.json({message: err}); + // res.status(400).json(err); + } + else{ + // SORT HERE -- MAKE SURE TO SORT THEN EXECUTE THE CALLBACK W/ ERRORS ETC + Review.find({_restaurant: req.params.id}).sort({rank: -1}).exec( (err, all_reviews) => { + if(err){ + // console.log("There's an error getting all reviews.", err); + res.json({message: err}); + // res.status(400).json(err); + } + else{ + // console.log("Successfully retrieved all reviews", all_reviews, this_restaurant); + res.json({all_reviews: all_reviews, restaurant_name: this_restaurant.name}); + } + }); + } + }); +}); + +app.get('/name/:id', (req,res) => { + // GET SPECIFIC RESTAURANT BY ID -- best to use findOne so you don't have more than 1 + // console.log("INSIDE SERVER GET ALL REST NAME", req.params.id); + Restaurant.findOne({_id: req.params.id}, (err, this_restaurant) => { + if(err){ + // console.log("There's an error getting this restaurant.", err); + res.json({message: err}); + // res.status(400).json(err); + } + else{ + // console.log("Successfully retrieved this restaurant", this_restaurant); + res.json({restaurant_name: this_restaurant.name}); + } + }); +}); + +app.post('/review/:id', (req,res) => { + Restaurant.findOne({_id: req.params.id}, (err, this_restaurant) => { + // console.log(req.body); + let review = new Review({name: req.body.name, rank: req.body.rank, content: req.body.content}); + // console.log(review); + review._restaurant = this_restaurant._id; + review.save((err) => { + if(err) { + // console.log('Errors saving review.', err.message); + res.json({message: err}); + } + else { + this_restaurant.reviews.push(review); + // console.log(this_restaurant.reviews); + this_restaurant.save((err) => { + if(err){ + // console.log('Errors saving restaurant.'); + res.json({message: err}); + } + else{ + res.json({this_restaurant: this_restaurant}); + } + }); + } + }); + }); +}); + +app.delete('/restaurants/:id', (req,res) => { + // DELETE SPECIFIC RESTAURANT BY ID + // console.log("Inside the DELETE function", req.params.id); + Restaurant.remove({_id: req.params.id}, (err) => { + // if there is an error, console.log that something went wrong + if(err){ + // console.log("There's an error deleting this restaurant.", err); + res.json(err.message); + // res.status(400).json(err); + } + else{ + console.log("Successfully deleted this restaurant."); + // res.json("You have successfully deleted this restaurant!"); + } + }); +}); + +app.all("*", (req, res, next) => { + res.sendFile(path.resolve("./client/dist/index.html")); +}); + +app.listen(5678, () => { + console.log('Listening on port 5678'); +}) \ No newline at end of file diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/.angular-cli.json b/kyla_stearns/Angular/restfulAPI/helloAngular/.angular-cli.json old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/.editorconfig b/kyla_stearns/Angular/restfulAPI/helloAngular/.editorconfig old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/.gitignore b/kyla_stearns/Angular/restfulAPI/helloAngular/.gitignore old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/README.md b/kyla_stearns/Angular/restfulAPI/helloAngular/README.md old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/e2e/app.e2e-spec.ts b/kyla_stearns/Angular/restfulAPI/helloAngular/e2e/app.e2e-spec.ts old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/e2e/app.po.ts b/kyla_stearns/Angular/restfulAPI/helloAngular/e2e/app.po.ts old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/e2e/tsconfig.e2e.json b/kyla_stearns/Angular/restfulAPI/helloAngular/e2e/tsconfig.e2e.json old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/karma.conf.js b/kyla_stearns/Angular/restfulAPI/helloAngular/karma.conf.js old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/package.json b/kyla_stearns/Angular/restfulAPI/helloAngular/package.json old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/protractor.conf.js b/kyla_stearns/Angular/restfulAPI/helloAngular/protractor.conf.js old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/src/app/app.component.css b/kyla_stearns/Angular/restfulAPI/helloAngular/src/app/app.component.css old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/src/app/app.component.html b/kyla_stearns/Angular/restfulAPI/helloAngular/src/app/app.component.html old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/src/app/app.component.spec.ts b/kyla_stearns/Angular/restfulAPI/helloAngular/src/app/app.component.spec.ts old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/src/app/app.component.ts b/kyla_stearns/Angular/restfulAPI/helloAngular/src/app/app.component.ts old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/src/app/app.module.ts b/kyla_stearns/Angular/restfulAPI/helloAngular/src/app/app.module.ts old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/src/app/http.service.spec.ts b/kyla_stearns/Angular/restfulAPI/helloAngular/src/app/http.service.spec.ts old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/src/app/http.service.ts b/kyla_stearns/Angular/restfulAPI/helloAngular/src/app/http.service.ts old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/src/assets/.gitkeep b/kyla_stearns/Angular/restfulAPI/helloAngular/src/assets/.gitkeep old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/src/environments/environment.prod.ts b/kyla_stearns/Angular/restfulAPI/helloAngular/src/environments/environment.prod.ts old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/src/environments/environment.ts b/kyla_stearns/Angular/restfulAPI/helloAngular/src/environments/environment.ts old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/src/favicon.ico b/kyla_stearns/Angular/restfulAPI/helloAngular/src/favicon.ico old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/src/index.html b/kyla_stearns/Angular/restfulAPI/helloAngular/src/index.html old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/src/main.ts b/kyla_stearns/Angular/restfulAPI/helloAngular/src/main.ts old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/src/polyfills.ts b/kyla_stearns/Angular/restfulAPI/helloAngular/src/polyfills.ts old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/src/styles.css b/kyla_stearns/Angular/restfulAPI/helloAngular/src/styles.css old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/src/test.ts b/kyla_stearns/Angular/restfulAPI/helloAngular/src/test.ts old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/src/tsconfig.app.json b/kyla_stearns/Angular/restfulAPI/helloAngular/src/tsconfig.app.json old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/src/tsconfig.spec.json b/kyla_stearns/Angular/restfulAPI/helloAngular/src/tsconfig.spec.json old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/src/typings.d.ts b/kyla_stearns/Angular/restfulAPI/helloAngular/src/typings.d.ts old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/tsconfig.json b/kyla_stearns/Angular/restfulAPI/helloAngular/tsconfig.json old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/helloAngular/tslint.json b/kyla_stearns/Angular/restfulAPI/helloAngular/tslint.json old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/package.json b/kyla_stearns/Angular/restfulAPI/package.json old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/restfulAPI/server.js b/kyla_stearns/Angular/restfulAPI/server.js old mode 100644 new mode 100755 diff --git a/kyla_stearns/Angular/shinto/.angular-cli.json b/kyla_stearns/Angular/shinto/.angular-cli.json new file mode 100755 index 0000000..39ae07e --- /dev/null +++ b/kyla_stearns/Angular/shinto/.angular-cli.json @@ -0,0 +1,60 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "project": { + "name": "shinto" + }, + "apps": [ + { + "root": "src", + "outDir": "dist", + "assets": [ + "assets", + "favicon.png" + ], + "index": "index.html", + "main": "main.ts", + "polyfills": "polyfills.ts", + "test": "test.ts", + "tsconfig": "tsconfig.app.json", + "testTsconfig": "tsconfig.spec.json", + "prefix": "app", + "styles": [ + "styles.css" + ], + "scripts": [], + "environmentSource": "environments/environment.ts", + "environments": { + "dev": "environments/environment.ts", + "prod": "environments/environment.prod.ts" + } + } + ], + "e2e": { + "protractor": { + "config": "./protractor.conf.js" + } + }, + "lint": [ + { + "project": "src/tsconfig.app.json", + "exclude": "**/node_modules/**" + }, + { + "project": "src/tsconfig.spec.json", + "exclude": "**/node_modules/**" + }, + { + "project": "e2e/tsconfig.e2e.json", + "exclude": "**/node_modules/**" + } + ], + "test": { + "karma": { + "config": "./karma.conf.js" + } + }, + "defaults": { + "styleExt": "css", + "component": {} + } +} diff --git a/kyla_stearns/Angular/shinto/.editorconfig b/kyla_stearns/Angular/shinto/.editorconfig new file mode 100755 index 0000000..6e87a00 --- /dev/null +++ b/kyla_stearns/Angular/shinto/.editorconfig @@ -0,0 +1,13 @@ +# Editor configuration, see http://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/kyla_stearns/Angular/shinto/.gitignore b/kyla_stearns/Angular/shinto/.gitignore new file mode 100755 index 0000000..eabf65e --- /dev/null +++ b/kyla_stearns/Angular/shinto/.gitignore @@ -0,0 +1,44 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/dist-server +/tmp +/out-tsc + +# dependencies +/node_modules + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +/typings + +# e2e +/e2e/*.js +/e2e/*.map + +# System Files +.DS_Store +Thumbs.db diff --git a/kyla_stearns/Angular/shinto/README.md b/kyla_stearns/Angular/shinto/README.md new file mode 100755 index 0000000..4767fa8 --- /dev/null +++ b/kyla_stearns/Angular/shinto/README.md @@ -0,0 +1,27 @@ +# Shinto + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.7.3. + +## Development server + +Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. + +## Code scaffolding + +Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. + +## Build + +Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build. + +## Running unit tests + +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Running end-to-end tests + +Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/kyla_stearns/Angular/shinto/e2e/app.e2e-spec.ts b/kyla_stearns/Angular/shinto/e2e/app.e2e-spec.ts new file mode 100755 index 0000000..4834d61 --- /dev/null +++ b/kyla_stearns/Angular/shinto/e2e/app.e2e-spec.ts @@ -0,0 +1,14 @@ +import { AppPage } from './app.po'; + +describe('shinto App', () => { + let page: AppPage; + + beforeEach(() => { + page = new AppPage(); + }); + + it('should display welcome message', () => { + page.navigateTo(); + expect(page.getParagraphText()).toEqual('Welcome to app!'); + }); +}); diff --git a/kyla_stearns/Angular/shinto/e2e/app.po.ts b/kyla_stearns/Angular/shinto/e2e/app.po.ts new file mode 100755 index 0000000..82ea75b --- /dev/null +++ b/kyla_stearns/Angular/shinto/e2e/app.po.ts @@ -0,0 +1,11 @@ +import { browser, by, element } from 'protractor'; + +export class AppPage { + navigateTo() { + return browser.get('/'); + } + + getParagraphText() { + return element(by.css('app-root h1')).getText(); + } +} diff --git a/kyla_stearns/Angular/shinto/e2e/tsconfig.e2e.json b/kyla_stearns/Angular/shinto/e2e/tsconfig.e2e.json new file mode 100755 index 0000000..1d9e5ed --- /dev/null +++ b/kyla_stearns/Angular/shinto/e2e/tsconfig.e2e.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/e2e", + "baseUrl": "./", + "module": "commonjs", + "target": "es5", + "types": [ + "jasmine", + "jasminewd2", + "node" + ] + } +} diff --git a/kyla_stearns/Angular/shinto/karma.conf.js b/kyla_stearns/Angular/shinto/karma.conf.js new file mode 100755 index 0000000..af139fa --- /dev/null +++ b/kyla_stearns/Angular/shinto/karma.conf.js @@ -0,0 +1,33 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular/cli'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular/cli/plugins/karma') + ], + client:{ + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + reports: [ 'html', 'lcovonly' ], + fixWebpackSourcePaths: true + }, + angularCli: { + environment: 'dev' + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false + }); +}; diff --git a/kyla_stearns/Angular/shinto/package.json b/kyla_stearns/Angular/shinto/package.json new file mode 100755 index 0000000..de58257 --- /dev/null +++ b/kyla_stearns/Angular/shinto/package.json @@ -0,0 +1,48 @@ +{ + "name": "shinto", + "version": "0.0.0", + "license": "MIT", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build --prod", + "test": "ng test", + "lint": "ng lint", + "e2e": "ng e2e" + }, + "private": true, + "dependencies": { + "@angular/animations": "^5.2.0", + "@angular/common": "^5.2.0", + "@angular/compiler": "^5.2.0", + "@angular/core": "^5.2.0", + "@angular/forms": "^5.2.0", + "@angular/http": "^5.2.0", + "@angular/platform-browser": "^5.2.0", + "@angular/platform-browser-dynamic": "^5.2.0", + "@angular/router": "^5.2.0", + "core-js": "^2.4.1", + "rxjs": "^5.5.6", + "zone.js": "^0.8.19" + }, + "devDependencies": { + "@angular/cli": "~1.7.3", + "@angular/compiler-cli": "^5.2.0", + "@angular/language-service": "^5.2.0", + "@types/jasmine": "~2.8.3", + "@types/jasminewd2": "~2.0.2", + "@types/node": "~6.0.60", + "codelyzer": "^4.0.1", + "jasmine-core": "~2.8.0", + "jasmine-spec-reporter": "~4.2.1", + "karma": "~2.0.0", + "karma-chrome-launcher": "~2.2.0", + "karma-coverage-istanbul-reporter": "^1.2.1", + "karma-jasmine": "~1.1.0", + "karma-jasmine-html-reporter": "^0.2.2", + "protractor": "~5.1.2", + "ts-node": "~4.1.0", + "tslint": "~5.9.1", + "typescript": "~2.5.3" + } +} diff --git a/kyla_stearns/Angular/shinto/protractor.conf.js b/kyla_stearns/Angular/shinto/protractor.conf.js new file mode 100755 index 0000000..7ee3b5e --- /dev/null +++ b/kyla_stearns/Angular/shinto/protractor.conf.js @@ -0,0 +1,28 @@ +// Protractor configuration file, see link for more information +// https://github.com/angular/protractor/blob/master/lib/config.ts + +const { SpecReporter } = require('jasmine-spec-reporter'); + +exports.config = { + allScriptsTimeout: 11000, + specs: [ + './e2e/**/*.e2e-spec.ts' + ], + capabilities: { + 'browserName': 'chrome' + }, + directConnect: true, + baseUrl: 'http://localhost:4200/', + framework: 'jasmine', + jasmineNodeOpts: { + showColors: true, + defaultTimeoutInterval: 30000, + print: function() {} + }, + onPrepare() { + require('ts-node').register({ + project: 'e2e/tsconfig.e2e.json' + }); + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); + } +}; diff --git a/kyla_stearns/Angular/shinto/src/app/app-routing.module.ts b/kyla_stearns/Angular/shinto/src/app/app-routing.module.ts new file mode 100755 index 0000000..6574a23 --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/app-routing.module.ts @@ -0,0 +1,24 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { MineComponent } from './mine/mine.component'; +import { BuyComponent } from './buy/buy.component'; +import { SellComponent } from './sell/sell.component'; +import { LedgerComponent } from './ledger/ledger.component'; +import { HomeComponent } from './home/home.component'; +import { TransactionComponent } from './transaction/transaction.component'; + +const routes: Routes = [ + { path: 'home', component: HomeComponent }, + { path: 'buy', component: BuyComponent }, + { path: 'ledger', component: LedgerComponent }, + { path: 'mine', component: MineComponent }, + { path: 'sell', component: SellComponent }, + { path: 'transaction/:id', component: TransactionComponent } +]; + +@NgModule({ + imports: [RouterModule.forRoot(routes)], + exports: [RouterModule] +}) +export class AppRoutingModule { } diff --git a/kyla_stearns/Angular/shinto/src/app/app.component.css b/kyla_stearns/Angular/shinto/src/app/app.component.css new file mode 100755 index 0000000..8f7c2ad --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/app.component.css @@ -0,0 +1,32 @@ +*{ + margin: 0px; + padding: 0px; + font-family: Arial, sans-serif; +} + +body{ + width: 970px; + margin: auto; +} + +header{ + width: 100%; + padding: 10px; +} + +header button{ + width: 150px; + font-size: 14px; + padding: 5px; + text-align: center; + background-color: lightgrey; + vertical-align: top; + margin: 0px 15px 0px 15px; + border-radius: 5px; +} + +img{ + height: 100px; + width: 100px; + margin: -10px 10px 0px 15px; +} \ No newline at end of file diff --git a/kyla_stearns/Angular/shinto/src/app/app.component.html b/kyla_stearns/Angular/shinto/src/app/app.component.html new file mode 100755 index 0000000..99873c0 --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/app.component.html @@ -0,0 +1,14 @@ + +
+ coin logo + + + + + +
+
+ + + +
\ No newline at end of file diff --git a/kyla_stearns/Angular/shinto/src/app/app.component.spec.ts b/kyla_stearns/Angular/shinto/src/app/app.component.spec.ts new file mode 100755 index 0000000..e4ca195 --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/app.component.spec.ts @@ -0,0 +1,31 @@ +import { TestBed, async } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { AppComponent } from './app.component'; +describe('AppComponent', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [ + RouterTestingModule + ], + declarations: [ + AppComponent + ], + }).compileComponents(); + })); + it('should create the app', async(() => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app).toBeTruthy(); + })); + it(`should have as title 'app'`, async(() => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app.title).toEqual('app'); + })); + it('should render title in a h1 tag', async(() => { + const fixture = TestBed.createComponent(AppComponent); + fixture.detectChanges(); + const compiled = fixture.debugElement.nativeElement; + expect(compiled.querySelector('h1').textContent).toContain('Welcome to app!'); + })); +}); diff --git a/kyla_stearns/Angular/shinto/src/app/app.component.ts b/kyla_stearns/Angular/shinto/src/app/app.component.ts new file mode 100755 index 0000000..2784fd9 --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/app.component.ts @@ -0,0 +1,13 @@ +import { Component } from '@angular/core'; +import { HttpService } from './http.service'; + +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.css'] +}) +export class AppComponent { + title = 'app'; + constructor(private _httpService: HttpService){ + } +} diff --git a/kyla_stearns/Angular/shinto/src/app/app.module.ts b/kyla_stearns/Angular/shinto/src/app/app.module.ts new file mode 100755 index 0000000..30a2152 --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/app.module.ts @@ -0,0 +1,41 @@ +import { BrowserModule } from '@angular/platform-browser'; +import { NgModule } from '@angular/core'; + +import { AppRoutingModule } from './app-routing.module'; +import { HttpModule } from '@angular/http'; +import { FormsModule } from '@angular/forms'; + +import { AppComponent } from './app.component'; +import { MineComponent } from './mine/mine.component'; +import { BuyComponent } from './buy/buy.component'; +import { SellComponent } from './sell/sell.component'; +import { LedgerComponent } from './ledger/ledger.component'; +import { HomeComponent } from './home/home.component'; +import { TransactionComponent } from './transaction/transaction.component'; + +import { HttpService } from './http.service'; + +@NgModule({ + declarations: [ + AppComponent, + MineComponent, + BuyComponent, + SellComponent, + LedgerComponent, + HomeComponent, + TransactionComponent + ], + imports: [ + BrowserModule, + AppRoutingModule, + HttpModule, + FormsModule + ], + providers: [ + HttpService + ], + bootstrap: [ + AppComponent + ] +}) +export class AppModule { } diff --git a/kyla_stearns/Angular/shinto/src/app/buy/buy.component.css b/kyla_stearns/Angular/shinto/src/app/buy/buy.component.css new file mode 100755 index 0000000..ece33a4 --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/buy/buy.component.css @@ -0,0 +1,25 @@ +h1{ + margin-top: 10px; +} + +p{ + font-size: 18px; + margin: 15px 0px 15px 0px; +} + +input[type=text]{ + padding: 5px; + font-size: 14px; + width: 150px; +} + +input[type=submit]{ + width: 100px; + font-size: 14px; + padding: 5px; + text-align: center; + background-color: lightgrey; + vertical-align: top; + margin: 0px 15px 0px 15px; + border-radius: 5px; +} \ No newline at end of file diff --git a/kyla_stearns/Angular/shinto/src/app/buy/buy.component.html b/kyla_stearns/Angular/shinto/src/app/buy/buy.component.html new file mode 100755 index 0000000..2952bec --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/buy/buy.component.html @@ -0,0 +1,13 @@ +

Buy ShintoCoins

+

Current ShintoCoin Value: ${{ currentValue }}

+

Number of ShintoCoins Owned: {{ owned }}

+
+ + + +
\ No newline at end of file diff --git a/kyla_stearns/Angular/shinto/src/app/buy/buy.component.spec.ts b/kyla_stearns/Angular/shinto/src/app/buy/buy.component.spec.ts new file mode 100755 index 0000000..29331ec --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/buy/buy.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BuyComponent } from './buy.component'; + +describe('BuyComponent', () => { + let component: BuyComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BuyComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BuyComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kyla_stearns/Angular/shinto/src/app/buy/buy.component.ts b/kyla_stearns/Angular/shinto/src/app/buy/buy.component.ts new file mode 100755 index 0000000..f973e54 --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/buy/buy.component.ts @@ -0,0 +1,33 @@ +import { Component, OnInit } from '@angular/core'; +import { HttpService } from '../http.service'; + +@Component({ + selector: 'app-buy', + templateUrl: './buy.component.html', + styleUrls: ['./buy.component.css'] +}) +export class BuyComponent implements OnInit { + coinBuy: any; + owned: number = 0; + currentValue: number = 0; + + constructor(private _httpService: HttpService){ + } + + ngOnInit() { + this.owned = this._httpService.totalOwned; + this.currentValue = this._httpService.value; + this.coinBuy = {bought: 0}; + } + + onBuy(event){ + event.preventDefault(); + // console.log("information from buy form", this.coinBuy); + let observable = this._httpService.buyCoins(this.coinBuy.bought); + // console.log("received back from service with bought amount", observable); + this.owned = this._httpService.totalOwned; + this.currentValue = this._httpService.value; + this.coinBuy.bought = 0; + } + +} diff --git a/kyla_stearns/Angular/shinto/src/app/buy/buy.service.spec.ts b/kyla_stearns/Angular/shinto/src/app/buy/buy.service.spec.ts new file mode 100755 index 0000000..fc0ec1c --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/buy/buy.service.spec.ts @@ -0,0 +1,15 @@ +import { TestBed, inject } from '@angular/core/testing'; + +import { BuyService } from './buy.service'; + +describe('BuyService', () => { + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [BuyService] + }); + }); + + it('should be created', inject([BuyService], (service: BuyService) => { + expect(service).toBeTruthy(); + })); +}); diff --git a/kyla_stearns/Angular/shinto/src/app/buy/buy.service.ts b/kyla_stearns/Angular/shinto/src/app/buy/buy.service.ts new file mode 100755 index 0000000..33a264e --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/buy/buy.service.ts @@ -0,0 +1,8 @@ +import { Injectable } from '@angular/core'; + +@Injectable() +export class BuyService { + + constructor() { } + +} diff --git a/kyla_stearns/Angular/shinto/src/app/home/home.component.css b/kyla_stearns/Angular/shinto/src/app/home/home.component.css new file mode 100755 index 0000000..8c91cf6 --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/home/home.component.css @@ -0,0 +1,8 @@ +h1{ + margin-top: 10px; +} + +p{ + font-size: 18px; + margin: 15px 0px 15px 0px; +} \ No newline at end of file diff --git a/kyla_stearns/Angular/shinto/src/app/home/home.component.html b/kyla_stearns/Angular/shinto/src/app/home/home.component.html new file mode 100755 index 0000000..2cce117 --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/home/home.component.html @@ -0,0 +1,2 @@ +

ShintoCoin

+

Welcome to ShintoCoins! ShintoCoins are coins made by solving algorithms! To get started, head over to Mine Coins and get to work!

diff --git a/kyla_stearns/Angular/shinto/src/app/home/home.component.spec.ts b/kyla_stearns/Angular/shinto/src/app/home/home.component.spec.ts new file mode 100755 index 0000000..490e81b --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/home/home.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { HomeComponent } from './home.component'; + +describe('HomeComponent', () => { + let component: HomeComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ HomeComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HomeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kyla_stearns/Angular/shinto/src/app/home/home.component.ts b/kyla_stearns/Angular/shinto/src/app/home/home.component.ts new file mode 100755 index 0000000..060cfbe --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/home/home.component.ts @@ -0,0 +1,17 @@ +import { Component, OnInit } from '@angular/core'; +import { HttpService } from '../http.service'; + +@Component({ + selector: 'app-home', + templateUrl: './home.component.html', + styleUrls: ['./home.component.css'] +}) +export class HomeComponent implements OnInit { + + constructor(private _httpService: HttpService){ + } + + ngOnInit() { + } + +} diff --git a/kyla_stearns/Angular/shinto/src/app/http.service.spec.ts b/kyla_stearns/Angular/shinto/src/app/http.service.spec.ts new file mode 100755 index 0000000..c2eb030 --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/http.service.spec.ts @@ -0,0 +1,15 @@ +import { TestBed, inject } from '@angular/core/testing'; + +import { HttpService } from './http.service'; + +describe('HttpService', () => { + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [HttpService] + }); + }); + + it('should be created', inject([HttpService], (service: HttpService) => { + expect(service).toBeTruthy(); + })); +}); diff --git a/kyla_stearns/Angular/shinto/src/app/http.service.ts b/kyla_stearns/Angular/shinto/src/app/http.service.ts new file mode 100755 index 0000000..fee2072 --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/http.service.ts @@ -0,0 +1,96 @@ +import { Injectable } from '@angular/core'; +import { Http } from '@angular/http'; + +@Injectable() +export class HttpService { + totalOwned: any = 0; + value: number = 100; + id: any; + transaction = {}; + ledger = []; + QA: any; + + constructor(private _http: Http) { + this.transaction = {action: '', amount: 0, id: 0, value: 0}; + } + + getID(){ + return Math.floor((Math.random()* 999)+1); + } + + retrieveTransaction(id){ + // FIND THE TRANSACTION WITH THE ID EQUAL TO THE PARAM PASSED + console.log("inside retrieveTransaction with id", id); + return this.findTransaction(id); + } + + findTransaction(id){ + console.log("inside findTransaction function", id); + for(let i = 0; i < this.ledger.length; i++){ + if(this.ledger[i].id === id){ + return this.ledger[i]; + } + else{ + continue; + } + } + } + + retrieveLedger(){ + return this.ledger; + } + + retrieveQuestion(){ + this.QA = [ + {question: 'Guess What?', answer: 'chicken butt'}, + {question: 'What is a group of unicorns known as?', answer: 'a blessing'}, + {question: 'Where was the fortune cookie actually invented?', answer: 'america'}, + {question: 'Which animal is known to kill more people than plane crashes?', answer: 'donkeys'}, + {question: 'Which Hollywood movie showed the first toilet flush?', answer: 'psycho'}, + ]; + return this.QA; + } + + buyCoins(coins){ + // console.log("inside buyCoins in service", coins); + this.id = this.getID(); + // console.log("id for buyCoins", this.id); + this.value++; + this.transaction = {action: 'Bought', amount: coins, id: this.id, value: this.value} + // console.log("this transaction info", this.transaction); + this.ledger.push(this.transaction); + // console.log("new ledger in buy", this.ledger); + // console.log(Number(coins), "number version of coins"); + this.totalOwned += Number(coins); + // console.log("new totalOwned in bought service", this.totalOwned) + } + + sellCoins(coins){ + // console.log("inside sellCoins in service", coins); + this.id = this.getID(); + // console.log("id for sellCoins", this.id); + this.value--; + this.transaction = {action: 'Sold', amount: coins, id: this.id, value: this.value} + // console.log("this transaction info", this.transaction); + this.ledger.push(this.transaction); + // console.log("new ledger in sell", this.ledger); + // console.log(Number(coins), "number version of coins"); + this.totalOwned -= Number(coins); + // console.log("new totalOwned in sold service", this.totalOwned) + } + + mineCoins(coins){ + // console.log("inside mineCoins in service", coins); + this.id = this.getID(); + // console.log("id for mineCoins", this.id); + this.value++; + this.transaction = {action: 'Mined', amount: coins, id: this.id, value: this.value} + // console.log("this transaction info", this.transaction); + this.ledger.push(this.transaction); + // console.log("new ledger in mine", this.ledger); + // console.log(Number(coins), "number version of coins"); + this.totalOwned += Number(coins); + // console.log("new totalOwned in mine service", this.totalOwned) + } + +} \ No newline at end of file diff --git a/kyla_stearns/Angular/shinto/src/app/ledger/ledger.component.css b/kyla_stearns/Angular/shinto/src/app/ledger/ledger.component.css new file mode 100755 index 0000000..02702fa --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/ledger/ledger.component.css @@ -0,0 +1,23 @@ +h1{ + margin-top: 10px; +} + +p{ + font-size: 18px; + margin: 15px 0px 15px 0px; +} + +table{ + font-size: 18px; +} + +thead{ + background-color: lightgrey; +} + +button{ + background-color: lightgrey; + font-size: 12px; + border-radius: 2px; + padding: 3px; +} \ No newline at end of file diff --git a/kyla_stearns/Angular/shinto/src/app/ledger/ledger.component.html b/kyla_stearns/Angular/shinto/src/app/ledger/ledger.component.html new file mode 100755 index 0000000..3e9604c --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/ledger/ledger.component.html @@ -0,0 +1,19 @@ +

Browse the Ledger

+

Here you can browse all ShintoCoin transactions.

+ + + + + + + + + + + + + + + + +
Action Amount Value
{{ element.action }} {{ element.amount }} {{ element.value }}
\ No newline at end of file diff --git a/kyla_stearns/Angular/shinto/src/app/ledger/ledger.component.spec.ts b/kyla_stearns/Angular/shinto/src/app/ledger/ledger.component.spec.ts new file mode 100755 index 0000000..cef947e --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/ledger/ledger.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LedgerComponent } from './ledger.component'; + +describe('LedgerComponent', () => { + let component: LedgerComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ LedgerComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LedgerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kyla_stearns/Angular/shinto/src/app/ledger/ledger.component.ts b/kyla_stearns/Angular/shinto/src/app/ledger/ledger.component.ts new file mode 100755 index 0000000..aa70c0b --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/ledger/ledger.component.ts @@ -0,0 +1,18 @@ +import { Component, OnInit } from '@angular/core'; +import { HttpService } from '../http.service'; + +@Component({ + selector: 'app-ledger', + templateUrl: './ledger.component.html', + styleUrls: ['./ledger.component.css'] +}) +export class LedgerComponent implements OnInit { + ledger: any; + constructor(private _httpService: HttpService){ + } + + ngOnInit() { + this.ledger = this._httpService.retrieveLedger(); + } + +} diff --git a/kyla_stearns/Angular/shinto/src/app/mine/mine.component.css b/kyla_stearns/Angular/shinto/src/app/mine/mine.component.css new file mode 100755 index 0000000..ece33a4 --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/mine/mine.component.css @@ -0,0 +1,25 @@ +h1{ + margin-top: 10px; +} + +p{ + font-size: 18px; + margin: 15px 0px 15px 0px; +} + +input[type=text]{ + padding: 5px; + font-size: 14px; + width: 150px; +} + +input[type=submit]{ + width: 100px; + font-size: 14px; + padding: 5px; + text-align: center; + background-color: lightgrey; + vertical-align: top; + margin: 0px 15px 0px 15px; + border-radius: 5px; +} \ No newline at end of file diff --git a/kyla_stearns/Angular/shinto/src/app/mine/mine.component.html b/kyla_stearns/Angular/shinto/src/app/mine/mine.component.html new file mode 100755 index 0000000..c1967d9 --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/mine/mine.component.html @@ -0,0 +1,14 @@ +

Mine ShintoCoins

+

Here you can mine ShintoCoins by being the first the solve the algorithm:

+

Question: {{ QA[element].question }}

+
+ + + +
\ No newline at end of file diff --git a/kyla_stearns/Angular/shinto/src/app/mine/mine.component.spec.ts b/kyla_stearns/Angular/shinto/src/app/mine/mine.component.spec.ts new file mode 100755 index 0000000..9c848f8 --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/mine/mine.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MineComponent } from './mine.component'; + +describe('MineComponent', () => { + let component: MineComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ MineComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(MineComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kyla_stearns/Angular/shinto/src/app/mine/mine.component.ts b/kyla_stearns/Angular/shinto/src/app/mine/mine.component.ts new file mode 100755 index 0000000..4304eb1 --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/mine/mine.component.ts @@ -0,0 +1,57 @@ +import { Component, OnInit } from '@angular/core'; +import { HttpService } from '../http.service'; + +@Component({ + selector: 'app-mine', + templateUrl: './mine.component.html', + styleUrls: ['./mine.component.css'] +}) +export class MineComponent implements OnInit { + attempt: string = ''; + QA: any; + element: number; + coinMine: any; + // could totally just make coinMine a number + owned: any = 0; + currentValue: number = 0; + + constructor(private _httpService: HttpService){ + } + + ngOnInit() { + this.getQuestion(); + this.element = 0; + this.coinMine = {mined: 1}; + // if coinMine is a number, could just set it = 1 here + } + + getQuestion(){ + this.QA = this._httpService.retrieveQuestion(); + } + + getAnswer(event){ + event.preventDefault(); + this.attempt = this.attempt.toLowerCase(); + if(this.QA[this.element].answer === this.attempt){ + this.attempt = ''; + this.owned = this._httpService.mineCoins(this.coinMine.mined); + // if coinMine is a number, then just pass this.coinMine here + if(this.element <= 4){ + this.element++; + } + else{ + this.element = 0; + } + } + else{ + if(this.element <= 4){ + this.element++; + } + else{ + this.element = 0; + } + } + + } + +} diff --git a/kyla_stearns/Angular/shinto/src/app/sell/sell.component.css b/kyla_stearns/Angular/shinto/src/app/sell/sell.component.css new file mode 100755 index 0000000..ece33a4 --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/sell/sell.component.css @@ -0,0 +1,25 @@ +h1{ + margin-top: 10px; +} + +p{ + font-size: 18px; + margin: 15px 0px 15px 0px; +} + +input[type=text]{ + padding: 5px; + font-size: 14px; + width: 150px; +} + +input[type=submit]{ + width: 100px; + font-size: 14px; + padding: 5px; + text-align: center; + background-color: lightgrey; + vertical-align: top; + margin: 0px 15px 0px 15px; + border-radius: 5px; +} \ No newline at end of file diff --git a/kyla_stearns/Angular/shinto/src/app/sell/sell.component.html b/kyla_stearns/Angular/shinto/src/app/sell/sell.component.html new file mode 100755 index 0000000..df8015d --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/sell/sell.component.html @@ -0,0 +1,13 @@ +

Sell ShintoCoins

+

Current ShintoCoin Value: ${{ currentValue }}

+

Number of ShintoCoins Owned: {{ owned }}

+
+ + + +
\ No newline at end of file diff --git a/kyla_stearns/Angular/shinto/src/app/sell/sell.component.spec.ts b/kyla_stearns/Angular/shinto/src/app/sell/sell.component.spec.ts new file mode 100755 index 0000000..34bd685 --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/sell/sell.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SellComponent } from './sell.component'; + +describe('SellComponent', () => { + let component: SellComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ SellComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SellComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kyla_stearns/Angular/shinto/src/app/sell/sell.component.ts b/kyla_stearns/Angular/shinto/src/app/sell/sell.component.ts new file mode 100755 index 0000000..789ce8d --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/sell/sell.component.ts @@ -0,0 +1,35 @@ +import { Component, OnInit } from '@angular/core'; +import { HttpService } from '../http.service'; + +@Component({ + selector: 'app-sell', + templateUrl: './sell.component.html', + styleUrls: ['./sell.component.css'] +}) +export class SellComponent implements OnInit { + transaction = {amount: 0, id: ""}; + coinSell: any; + owned: number = 0; + currentValue: number = 0; + constructor(private _httpService: HttpService){ + } + + ngOnInit() { + this.owned = this._httpService.totalOwned; + this.coinSell = {sold: 0}; + this.currentValue = this._httpService.value; + } + + onSell(event){ + event.preventDefault(); + // console.log("information from sell form", this.coinSell); + let observable = this._httpService.sellCoins(this.coinSell.sold); + // console.log("received back from service with sold amount", observable); + this.owned = this._httpService.totalOwned; + this.currentValue = this._httpService.value; + this.coinSell.sold = 0; + } +} + + + diff --git a/kyla_stearns/Angular/shinto/src/app/sell/sell.service.spec.ts b/kyla_stearns/Angular/shinto/src/app/sell/sell.service.spec.ts new file mode 100755 index 0000000..41b0935 --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/sell/sell.service.spec.ts @@ -0,0 +1,15 @@ +import { TestBed, inject } from '@angular/core/testing'; + +import { SellService } from './sell.service'; + +describe('SellService', () => { + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [SellService] + }); + }); + + it('should be created', inject([SellService], (service: SellService) => { + expect(service).toBeTruthy(); + })); +}); diff --git a/kyla_stearns/Angular/shinto/src/app/sell/sell.service.ts b/kyla_stearns/Angular/shinto/src/app/sell/sell.service.ts new file mode 100755 index 0000000..4d10600 --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/sell/sell.service.ts @@ -0,0 +1,8 @@ +import { Injectable } from '@angular/core'; + +@Injectable() +export class SellService { + + constructor() { } + +} diff --git a/kyla_stearns/Angular/shinto/src/app/transaction/transaction.component.css b/kyla_stearns/Angular/shinto/src/app/transaction/transaction.component.css new file mode 100755 index 0000000..b97bb7a --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/transaction/transaction.component.css @@ -0,0 +1,12 @@ +h1{ + margin-top: 10px; +} + +p{ + font-size: 18px; + margin: 15px 0px 15px 0px; +} + +span{ + font-weight: bold; +} \ No newline at end of file diff --git a/kyla_stearns/Angular/shinto/src/app/transaction/transaction.component.html b/kyla_stearns/Angular/shinto/src/app/transaction/transaction.component.html new file mode 100755 index 0000000..f0d156c --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/transaction/transaction.component.html @@ -0,0 +1,4 @@ +

Ledger Transaction Details

+

Detailed view of a transaction from the ledger.

+

Transaction #{{ transaction.id }}

+

{{ transaction.action }} {{ transaction.amount }} ShintoCoin

\ No newline at end of file diff --git a/kyla_stearns/Angular/shinto/src/app/transaction/transaction.component.spec.ts b/kyla_stearns/Angular/shinto/src/app/transaction/transaction.component.spec.ts new file mode 100755 index 0000000..f7fa14a --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/transaction/transaction.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TransactionComponent } from './transaction.component'; + +describe('TransactionComponent', () => { + let component: TransactionComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ TransactionComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TransactionComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kyla_stearns/Angular/shinto/src/app/transaction/transaction.component.ts b/kyla_stearns/Angular/shinto/src/app/transaction/transaction.component.ts new file mode 100755 index 0000000..2badfb0 --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/app/transaction/transaction.component.ts @@ -0,0 +1,32 @@ +import { Component, OnInit } from '@angular/core'; +import { HttpService } from '../http.service'; +import { ActivatedRoute, Params, Router } from '@angular/router'; + +@Component({ + selector: 'app-transaction', + templateUrl: './transaction.component.html', + styleUrls: ['./transaction.component.css'] +}) +export class TransactionComponent implements OnInit { + transaction: any; + id: number; + constructor( + // inject with HttpService, route and router in order to be able to pull from URL parameter + private _httpService: HttpService, + private _route: ActivatedRoute, + private _router: Router) {} + + ngOnInit() { + this._route.params.subscribe((params: Params) => { + console.log(Number(params['id'])); + this.id = Number(params['id']); + this.transaction = this._httpService.retrieveTransaction(this.id); + console.log("Data from this transaction", this.transaction); + }); + } + + // TRYING TO GO TO LEDGER/TRANSACTION/ID INSTEAD OF TRANSACTION/ID + // Error: Uncaught (in promise): + // Error: Cannot match any routes. URL Segment: 'ledger/transaction/144' + +} diff --git a/kyla_stearns/Angular/shinto/src/assets/.gitkeep b/kyla_stearns/Angular/shinto/src/assets/.gitkeep new file mode 100755 index 0000000..e69de29 diff --git a/kyla_stearns/Angular/shinto/src/assets/coin.png b/kyla_stearns/Angular/shinto/src/assets/coin.png new file mode 100755 index 0000000000000000000000000000000000000000..e0eb9eb92e5d64341a3bd1fdc7ef332a2fd9daa0 GIT binary patch literal 4214 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 M07*qoM6N<$f`&OBEdT%j literal 0 HcmV?d00001 diff --git a/kyla_stearns/Angular/shinto/src/environments/environment.prod.ts b/kyla_stearns/Angular/shinto/src/environments/environment.prod.ts new file mode 100755 index 0000000..3612073 --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/environments/environment.prod.ts @@ -0,0 +1,3 @@ +export const environment = { + production: true +}; diff --git a/kyla_stearns/Angular/shinto/src/environments/environment.ts b/kyla_stearns/Angular/shinto/src/environments/environment.ts new file mode 100755 index 0000000..b7f639a --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/environments/environment.ts @@ -0,0 +1,8 @@ +// The file contents for the current environment will overwrite these during build. +// The build system defaults to the dev environment which uses `environment.ts`, but if you do +// `ng build --env=prod` then `environment.prod.ts` will be used instead. +// The list of which env maps to which file can be found in `.angular-cli.json`. + +export const environment = { + production: false +}; diff --git a/kyla_stearns/Angular/shinto/src/favicon.ico b/kyla_stearns/Angular/shinto/src/favicon.ico new file mode 100755 index 0000000000000000000000000000000000000000..8081c7ceaf2be08bf59010158c586170d9d2d517 GIT binary patch literal 5430 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 M07*qoM6N<$f`&OBEdT%j literal 0 HcmV?d00001 diff --git a/kyla_stearns/Angular/shinto/src/index.html b/kyla_stearns/Angular/shinto/src/index.html new file mode 100755 index 0000000..6a2502f --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/index.html @@ -0,0 +1,14 @@ + + + + + ShintoCoin + + + + + + + + + diff --git a/kyla_stearns/Angular/shinto/src/main.ts b/kyla_stearns/Angular/shinto/src/main.ts new file mode 100755 index 0000000..91ec6da --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/main.ts @@ -0,0 +1,12 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(AppModule) + .catch(err => console.log(err)); diff --git a/kyla_stearns/Angular/shinto/src/polyfills.ts b/kyla_stearns/Angular/shinto/src/polyfills.ts new file mode 100755 index 0000000..af84770 --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/polyfills.ts @@ -0,0 +1,79 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** IE9, IE10 and IE11 requires all of the following polyfills. **/ +// import 'core-js/es6/symbol'; +// import 'core-js/es6/object'; +// import 'core-js/es6/function'; +// import 'core-js/es6/parse-int'; +// import 'core-js/es6/parse-float'; +// import 'core-js/es6/number'; +// import 'core-js/es6/math'; +// import 'core-js/es6/string'; +// import 'core-js/es6/date'; +// import 'core-js/es6/array'; +// import 'core-js/es6/regexp'; +// import 'core-js/es6/map'; +// import 'core-js/es6/weak-map'; +// import 'core-js/es6/set'; + +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** IE10 and IE11 requires the following for the Reflect API. */ +// import 'core-js/es6/reflect'; + + +/** Evergreen browsers require these. **/ +// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove. +import 'core-js/es7/reflect'; + + +/** + * Required to support Web Animations `@angular/platform-browser/animations`. + * Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation + **/ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + */ + + // (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame + // (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick + // (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + + /* + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + */ +// (window as any).__Zone_enable_cross_context_check = true; + +/*************************************************************************************************** + * Zone JS is required by default for Angular itself. + */ +import 'zone.js/dist/zone'; // Included with Angular CLI. + + + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ diff --git a/kyla_stearns/Angular/shinto/src/styles.css b/kyla_stearns/Angular/shinto/src/styles.css new file mode 100755 index 0000000..90d4ee0 --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/styles.css @@ -0,0 +1 @@ +/* You can add global styles to this file, and also import other style files */ diff --git a/kyla_stearns/Angular/shinto/src/test.ts b/kyla_stearns/Angular/shinto/src/test.ts new file mode 100755 index 0000000..1631789 --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/test.ts @@ -0,0 +1,20 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: any; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/kyla_stearns/Angular/shinto/src/tsconfig.app.json b/kyla_stearns/Angular/shinto/src/tsconfig.app.json new file mode 100755 index 0000000..39ba8db --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/tsconfig.app.json @@ -0,0 +1,13 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/app", + "baseUrl": "./", + "module": "es2015", + "types": [] + }, + "exclude": [ + "test.ts", + "**/*.spec.ts" + ] +} diff --git a/kyla_stearns/Angular/shinto/src/tsconfig.spec.json b/kyla_stearns/Angular/shinto/src/tsconfig.spec.json new file mode 100755 index 0000000..ac22a29 --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/tsconfig.spec.json @@ -0,0 +1,19 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/spec", + "baseUrl": "./", + "module": "commonjs", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/kyla_stearns/Angular/shinto/src/typings.d.ts b/kyla_stearns/Angular/shinto/src/typings.d.ts new file mode 100755 index 0000000..ef5c7bd --- /dev/null +++ b/kyla_stearns/Angular/shinto/src/typings.d.ts @@ -0,0 +1,5 @@ +/* SystemJS module definition */ +declare var module: NodeModule; +interface NodeModule { + id: string; +} diff --git a/kyla_stearns/Angular/shinto/tsconfig.json b/kyla_stearns/Angular/shinto/tsconfig.json new file mode 100755 index 0000000..a6c016b --- /dev/null +++ b/kyla_stearns/Angular/shinto/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "target": "es5", + "typeRoots": [ + "node_modules/@types" + ], + "lib": [ + "es2017", + "dom" + ] + } +} diff --git a/kyla_stearns/Angular/shinto/tslint.json b/kyla_stearns/Angular/shinto/tslint.json new file mode 100755 index 0000000..9963d6c --- /dev/null +++ b/kyla_stearns/Angular/shinto/tslint.json @@ -0,0 +1,143 @@ +{ + "rulesDirectory": [ + "node_modules/codelyzer" + ], + "rules": { + "arrow-return-shorthand": true, + "callable-types": true, + "class-name": true, + "comment-format": [ + true, + "check-space" + ], + "curly": true, + "deprecation": { + "severity": "warn" + }, + "eofline": true, + "forin": true, + "import-blacklist": [ + true, + "rxjs", + "rxjs/Rx" + ], + "import-spacing": true, + "indent": [ + true, + "spaces" + ], + "interface-over-type-literal": true, + "label-position": true, + "max-line-length": [ + true, + 140 + ], + "member-access": false, + "member-ordering": [ + true, + { + "order": [ + "static-field", + "instance-field", + "static-method", + "instance-method" + ] + } + ], + "no-arg": true, + "no-bitwise": true, + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-construct": true, + "no-debugger": true, + "no-duplicate-super": true, + "no-empty": false, + "no-empty-interface": true, + "no-eval": true, + "no-inferrable-types": [ + true, + "ignore-params" + ], + "no-misused-new": true, + "no-non-null-assertion": true, + "no-shadowed-variable": true, + "no-string-literal": false, + "no-string-throw": true, + "no-switch-case-fall-through": true, + "no-trailing-whitespace": true, + "no-unnecessary-initializer": true, + "no-unused-expression": true, + "no-use-before-declare": true, + "no-var-keyword": true, + "object-literal-sort-keys": false, + "one-line": [ + true, + "check-open-brace", + "check-catch", + "check-else", + "check-whitespace" + ], + "prefer-const": true, + "quotemark": [ + true, + "single" + ], + "radix": true, + "semicolon": [ + true, + "always" + ], + "triple-equals": [ + true, + "allow-null-check" + ], + "typedef-whitespace": [ + true, + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + } + ], + "unified-signatures": true, + "variable-name": false, + "whitespace": [ + true, + "check-branch", + "check-decl", + "check-operator", + "check-separator", + "check-type" + ], + "directive-selector": [ + true, + "attribute", + "app", + "camelCase" + ], + "component-selector": [ + true, + "element", + "app", + "kebab-case" + ], + "no-output-on-prefix": true, + "use-input-property-decorator": true, + "use-output-property-decorator": true, + "use-host-property-decorator": true, + "no-input-rename": true, + "no-output-rename": true, + "use-life-cycle-interface": true, + "use-pipe-transform-interface": true, + "component-class-suffix": true, + "directive-class-suffix": true + } +} diff --git a/kyla_stearns/Express/coolCatsChat/notes.txt b/kyla_stearns/Express/coolCatsChat/notes.txt old mode 100644 new mode 100755 diff --git a/kyla_stearns/Express/coolCatsChat/package.json b/kyla_stearns/Express/coolCatsChat/package.json old mode 100644 new mode 100755 diff --git a/kyla_stearns/Express/coolCatsChat/server.js b/kyla_stearns/Express/coolCatsChat/server.js old mode 100644 new mode 100755 diff --git a/kyla_stearns/Express/coolCatsChat/static/css/chat.css b/kyla_stearns/Express/coolCatsChat/static/css/chat.css old mode 100644 new mode 100755 diff --git a/kyla_stearns/Express/coolCatsChat/static/images/coolCatsClub.jpg b/kyla_stearns/Express/coolCatsChat/static/images/coolCatsClub.jpg old mode 100644 new mode 100755 diff --git a/kyla_stearns/Express/coolCatsChat/static/js/chat.js b/kyla_stearns/Express/coolCatsChat/static/js/chat.js old mode 100644 new mode 100755 diff --git a/kyla_stearns/Express/coolCatsChat/views/chat.ejs b/kyla_stearns/Express/coolCatsChat/views/chat.ejs old mode 100644 new mode 100755 diff --git a/kyla_stearns/Express/coolCatsChat/views/index.ejs b/kyla_stearns/Express/coolCatsChat/views/index.ejs old mode 100644 new mode 100755 diff --git a/kyla_stearns/Express/epicButtonGame/package.json b/kyla_stearns/Express/epicButtonGame/package.json old mode 100644 new mode 100755 diff --git a/kyla_stearns/Express/epicButtonGame/server.js b/kyla_stearns/Express/epicButtonGame/server.js old mode 100644 new mode 100755 diff --git a/kyla_stearns/Express/epicButtonGame/static/css/button.css b/kyla_stearns/Express/epicButtonGame/static/css/button.css old mode 100644 new mode 100755 diff --git a/kyla_stearns/Express/epicButtonGame/static/js/button.js b/kyla_stearns/Express/epicButtonGame/static/js/button.js old mode 100644 new mode 100755 diff --git a/kyla_stearns/Express/epicButtonGame/views/index.ejs b/kyla_stearns/Express/epicButtonGame/views/index.ejs old mode 100644 new mode 100755 diff --git a/kyla_stearns/Express/groupChat/package.json b/kyla_stearns/Express/groupChat/package.json old mode 100644 new mode 100755 diff --git a/kyla_stearns/Express/groupChat/server.js b/kyla_stearns/Express/groupChat/server.js old mode 100644 new mode 100755 diff --git a/kyla_stearns/Express/groupChat/static/css/chat.css b/kyla_stearns/Express/groupChat/static/css/chat.css old mode 100644 new mode 100755 diff --git a/kyla_stearns/Express/groupChat/static/js/chat.js b/kyla_stearns/Express/groupChat/static/js/chat.js old mode 100644 new mode 100755 diff --git a/kyla_stearns/Express/groupChat/views/index.ejs b/kyla_stearns/Express/groupChat/views/index.ejs old mode 100644 new mode 100755 diff --git a/kyla_stearns/Express/surveyRe/package.json b/kyla_stearns/Express/surveyRe/package.json old mode 100644 new mode 100755 diff --git a/kyla_stearns/Express/surveyRe/server.js b/kyla_stearns/Express/surveyRe/server.js old mode 100644 new mode 100755 diff --git a/kyla_stearns/Express/surveyRe/static/css/sockets.css b/kyla_stearns/Express/surveyRe/static/css/sockets.css old mode 100644 new mode 100755 diff --git a/kyla_stearns/Express/surveyRe/static/js/sockets.js b/kyla_stearns/Express/surveyRe/static/js/sockets.js old mode 100644 new mode 100755 diff --git a/kyla_stearns/Express/surveyRe/views/index.ejs b/kyla_stearns/Express/surveyRe/views/index.ejs old mode 100644 new mode 100755 diff --git a/kyla_stearns/JavaScript/GOT/css/got.css b/kyla_stearns/JavaScript/GOT/css/got.css old mode 100644 new mode 100755 diff --git a/kyla_stearns/JavaScript/GOT/got.txt b/kyla_stearns/JavaScript/GOT/got.txt old mode 100644 new mode 100755 diff --git a/kyla_stearns/JavaScript/GOT/html/got.html b/kyla_stearns/JavaScript/GOT/html/got.html old mode 100644 new mode 100755 diff --git a/kyla_stearns/JavaScript/GOT/images/baratheon.png b/kyla_stearns/JavaScript/GOT/images/baratheon.png old mode 100644 new mode 100755 diff --git a/kyla_stearns/JavaScript/GOT/images/lannister.jpg b/kyla_stearns/JavaScript/GOT/images/lannister.jpg old mode 100644 new mode 100755 diff --git a/kyla_stearns/JavaScript/GOT/images/stark.jpg b/kyla_stearns/JavaScript/GOT/images/stark.jpg old mode 100644 new mode 100755 diff --git a/kyla_stearns/JavaScript/GOT/images/targaryen.jpg b/kyla_stearns/JavaScript/GOT/images/targaryen.jpg old mode 100644 new mode 100755 diff --git a/kyla_stearns/JavaScript/GOT/js/got.js b/kyla_stearns/JavaScript/GOT/js/got.js old mode 100644 new mode 100755 diff --git a/kyla_stearns/Mongo/LoginReg/package.json b/kyla_stearns/Mongo/LoginReg/package.json old mode 100644 new mode 100755 diff --git a/kyla_stearns/Mongo/LoginReg/server.js b/kyla_stearns/Mongo/LoginReg/server.js old mode 100644 new mode 100755 diff --git a/kyla_stearns/Mongo/LoginReg/static/css/loginReg.css b/kyla_stearns/Mongo/LoginReg/static/css/loginReg.css old mode 100644 new mode 100755 diff --git a/kyla_stearns/Mongo/LoginReg/views/loginReg.ejs b/kyla_stearns/Mongo/LoginReg/views/loginReg.ejs old mode 100644 new mode 100755 diff --git a/kyla_stearns/Mongo/LoginReg/views/success.ejs b/kyla_stearns/Mongo/LoginReg/views/success.ejs old mode 100644 new mode 100755 diff --git a/kyla_stearns/Mongo/messageBoard/package.json b/kyla_stearns/Mongo/messageBoard/package.json old mode 100644 new mode 100755 diff --git a/kyla_stearns/Mongo/messageBoard/server.js b/kyla_stearns/Mongo/messageBoard/server.js old mode 100644 new mode 100755 diff --git a/kyla_stearns/Mongo/messageBoard/static/css/messageBoard.css b/kyla_stearns/Mongo/messageBoard/static/css/messageBoard.css old mode 100644 new mode 100755 diff --git a/kyla_stearns/Mongo/messageBoard/views/wall.ejs b/kyla_stearns/Mongo/messageBoard/views/wall.ejs old mode 100644 new mode 100755 diff --git a/kyla_stearns/Mongo/mongooseDashboard/package.json b/kyla_stearns/Mongo/mongooseDashboard/package.json old mode 100644 new mode 100755 diff --git a/kyla_stearns/Mongo/mongooseDashboard/server.js b/kyla_stearns/Mongo/mongooseDashboard/server.js old mode 100644 new mode 100755 diff --git a/kyla_stearns/Mongo/mongooseDashboard/static/css/animals.css b/kyla_stearns/Mongo/mongooseDashboard/static/css/animals.css old mode 100644 new mode 100755 diff --git a/kyla_stearns/Mongo/mongooseDashboard/views/animals.ejs b/kyla_stearns/Mongo/mongooseDashboard/views/animals.ejs old mode 100644 new mode 100755 diff --git a/kyla_stearns/Mongo/mongooseDashboard/views/index.ejs b/kyla_stearns/Mongo/mongooseDashboard/views/index.ejs old mode 100644 new mode 100755 diff --git a/kyla_stearns/Mongo/mongooseDashboard/views/new.ejs b/kyla_stearns/Mongo/mongooseDashboard/views/new.ejs old mode 100644 new mode 100755 diff --git a/kyla_stearns/Mongo/mongooseDashboard/views/show.ejs b/kyla_stearns/Mongo/mongooseDashboard/views/show.ejs old mode 100644 new mode 100755 diff --git a/kyla_stearns/Mongo/quotingDojo/package.json b/kyla_stearns/Mongo/quotingDojo/package.json old mode 100644 new mode 100755 diff --git a/kyla_stearns/Mongo/quotingDojo/server.js b/kyla_stearns/Mongo/quotingDojo/server.js old mode 100644 new mode 100755 diff --git a/kyla_stearns/Mongo/quotingDojo/static/css/quotes.css b/kyla_stearns/Mongo/quotingDojo/static/css/quotes.css old mode 100644 new mode 100755 diff --git a/kyla_stearns/Mongo/quotingDojo/views/index.ejs b/kyla_stearns/Mongo/quotingDojo/views/index.ejs old mode 100644 new mode 100755 diff --git a/kyla_stearns/Mongo/quotingDojo/views/quotes.ejs b/kyla_stearns/Mongo/quotingDojo/views/quotes.ejs old mode 100644 new mode 100755 diff --git a/kyla_stearns/Node/cars_and_cats/css/catsCars.css b/kyla_stearns/Node/cars_and_cats/css/catsCars.css old mode 100644 new mode 100755 diff --git a/kyla_stearns/Node/cars_and_cats/images/adorbsCar.jpg b/kyla_stearns/Node/cars_and_cats/images/adorbsCar.jpg old mode 100644 new mode 100755 diff --git a/kyla_stearns/Node/cars_and_cats/images/bahHumbug.jpg b/kyla_stearns/Node/cars_and_cats/images/bahHumbug.jpg old mode 100644 new mode 100755 diff --git a/kyla_stearns/Node/cars_and_cats/images/crossCat.jpg b/kyla_stearns/Node/cars_and_cats/images/crossCat.jpg old mode 100644 new mode 100755 diff --git a/kyla_stearns/Node/cars_and_cats/images/na.jpg b/kyla_stearns/Node/cars_and_cats/images/na.jpg old mode 100644 new mode 100755 diff --git a/kyla_stearns/Node/cars_and_cats/images/poetCar.jpg b/kyla_stearns/Node/cars_and_cats/images/poetCar.jpg old mode 100644 new mode 100755 diff --git a/kyla_stearns/Node/cars_and_cats/images/sideEyeCar.jpg b/kyla_stearns/Node/cars_and_cats/images/sideEyeCar.jpg old mode 100644 new mode 100755 diff --git a/kyla_stearns/Node/cars_and_cats/images/smallIsBig.jpeg b/kyla_stearns/Node/cars_and_cats/images/smallIsBig.jpeg old mode 100644 new mode 100755 diff --git a/kyla_stearns/Node/cars_and_cats/images/thugLifeCat.jpg b/kyla_stearns/Node/cars_and_cats/images/thugLifeCat.jpg old mode 100644 new mode 100755 diff --git a/kyla_stearns/Node/cars_and_cats/server.js b/kyla_stearns/Node/cars_and_cats/server.js old mode 100644 new mode 100755 diff --git a/kyla_stearns/Node/cars_and_cats/views/cars.html b/kyla_stearns/Node/cars_and_cats/views/cars.html old mode 100644 new mode 100755 diff --git a/kyla_stearns/Node/cars_and_cats/views/cats.html b/kyla_stearns/Node/cars_and_cats/views/cats.html old mode 100644 new mode 100755 diff --git a/kyla_stearns/Node/cars_and_cats/views/newCar.html b/kyla_stearns/Node/cars_and_cats/views/newCar.html old mode 100644 new mode 100755 diff --git a/matt_tucker/algorithms/flood_fill.js b/matt_tucker/algorithms/flood_fill.js old mode 100644 new mode 100755 diff --git a/matt_tucker/express/default-server.js b/matt_tucker/express/default-server.js old mode 100644 new mode 100755 diff --git a/matt_tucker/placeholder.txt b/matt_tucker/placeholder.txt old mode 100644 new mode 100755 diff --git a/wittrock/.gitignore b/wittrock/.gitignore old mode 100644 new mode 100755 diff --git a/wittrock/README.md b/wittrock/README.md old mode 100644 new mode 100755 diff --git a/wittrock/dom_1.html b/wittrock/dom_1.html old mode 100644 new mode 100755 diff --git a/wittrock/dom_2.html b/wittrock/dom_2.html old mode 100644 new mode 100755 diff --git a/wittrock/hoisting_js.txt b/wittrock/hoisting_js.txt old mode 100644 new mode 100755 diff --git a/wittrock/js_intermediate.js b/wittrock/js_intermediate.js old mode 100644 new mode 100755 diff --git a/wittrock/js_math.js b/wittrock/js_math.js old mode 100644 new mode 100755 diff --git a/wittrock/js_objects.js b/wittrock/js_objects.js old mode 100644 new mode 100755 diff --git a/wittrock/js_scroll.html b/wittrock/js_scroll.html old mode 100644 new mode 100755 diff --git a/wittrock/js_scroll.js b/wittrock/js_scroll.js old mode 100644 new mode 100755 diff --git a/wittrock/jsbasics1.txt b/wittrock/jsbasics1.txt old mode 100644 new mode 100755 diff --git a/wittrock/jsbasics2.txt b/wittrock/jsbasics2.txt old mode 100644 new mode 100755 diff --git a/wittrock/ninja_class.js b/wittrock/ninja_class.js old mode 100644 new mode 100755 diff --git a/wittrock/ninja_class3.js b/wittrock/ninja_class3.js old mode 100644 new mode 100755 diff --git a/wittrock/nins_class2.js b/wittrock/nins_class2.js old mode 100644 new mode 100755 diff --git a/wittrock/oop_practice.js b/wittrock/oop_practice.js old mode 100644 new mode 100755