From bfec8fed844605adaf007f1172b2c6a6a46ddf26 Mon Sep 17 00:00:00 2001 From: Trish Griego Date: Tue, 18 Oct 2016 15:39:55 -0700 Subject: [PATCH 01/46] Fixed gem file errors. Created orders controller --- Gemfile | 1 + Gemfile.lock | 2 ++ app/assets/javascripts/orders.coffee | 3 ++ app/assets/stylesheets/orders.scss | 3 ++ app/controllers/orders_controller.rb | 22 ++++++++++++ app/helpers/orders_helper.rb | 2 ++ app/views/orders/create.html.erb | 2 ++ app/views/orders/destroy.html.erb | 2 ++ app/views/orders/edit.html.erb | 2 ++ app/views/orders/index.html.erb | 2 ++ app/views/orders/new.html.erb | 2 ++ app/views/orders/show.html.erb | 2 ++ app/views/orders/update.html.erb | 2 ++ config/database.yml | 2 +- config/routes.rb | 14 ++++++++ test/controllers/orders_controller_test.rb | 39 ++++++++++++++++++++++ 16 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 app/assets/javascripts/orders.coffee create mode 100644 app/assets/stylesheets/orders.scss create mode 100644 app/controllers/orders_controller.rb create mode 100644 app/helpers/orders_helper.rb create mode 100644 app/views/orders/create.html.erb create mode 100644 app/views/orders/destroy.html.erb create mode 100644 app/views/orders/edit.html.erb create mode 100644 app/views/orders/index.html.erb create mode 100644 app/views/orders/new.html.erb create mode 100644 app/views/orders/show.html.erb create mode 100644 app/views/orders/update.html.erb create mode 100644 test/controllers/orders_controller_test.rb diff --git a/Gemfile b/Gemfile index c69f4ddde9..8f60890a4f 100644 --- a/Gemfile +++ b/Gemfile @@ -35,6 +35,7 @@ gem 'sdoc', '~> 0.4.0', group: :doc group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug' + gem 'sqlite3' end group :development do diff --git a/Gemfile.lock b/Gemfile.lock index 20975578b8..89a9d13b3d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -123,6 +123,7 @@ GEM actionpack (>= 4.0) activesupport (>= 4.0) sprockets (>= 3.0.0) + sqlite3 (1.3.12) thor (0.19.1) thread_safe (0.3.5) tilt (2.0.2) @@ -150,6 +151,7 @@ DEPENDENCIES sass-rails (~> 5.0) sdoc (~> 0.4.0) spring + sqlite3 turbolinks uglifier (>= 1.3.0) web-console (~> 2.0) diff --git a/app/assets/javascripts/orders.coffee b/app/assets/javascripts/orders.coffee new file mode 100644 index 0000000000..24f83d18bb --- /dev/null +++ b/app/assets/javascripts/orders.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/stylesheets/orders.scss b/app/assets/stylesheets/orders.scss new file mode 100644 index 0000000000..3b0428a94e --- /dev/null +++ b/app/assets/stylesheets/orders.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the orders controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/controllers/orders_controller.rb b/app/controllers/orders_controller.rb new file mode 100644 index 0000000000..27bfa788fd --- /dev/null +++ b/app/controllers/orders_controller.rb @@ -0,0 +1,22 @@ +class OrdersController < ApplicationController + def index + end + + def show + end + + def new + end + + def create + end + + def edit + end + + def update + end + + def destroy + end +end diff --git a/app/helpers/orders_helper.rb b/app/helpers/orders_helper.rb new file mode 100644 index 0000000000..443227fd48 --- /dev/null +++ b/app/helpers/orders_helper.rb @@ -0,0 +1,2 @@ +module OrdersHelper +end diff --git a/app/views/orders/create.html.erb b/app/views/orders/create.html.erb new file mode 100644 index 0000000000..295bd84094 --- /dev/null +++ b/app/views/orders/create.html.erb @@ -0,0 +1,2 @@ +

Orders#create

+

Find me in app/views/orders/create.html.erb

diff --git a/app/views/orders/destroy.html.erb b/app/views/orders/destroy.html.erb new file mode 100644 index 0000000000..d14d0a3508 --- /dev/null +++ b/app/views/orders/destroy.html.erb @@ -0,0 +1,2 @@ +

Orders#destroy

+

Find me in app/views/orders/destroy.html.erb

diff --git a/app/views/orders/edit.html.erb b/app/views/orders/edit.html.erb new file mode 100644 index 0000000000..7de9049bee --- /dev/null +++ b/app/views/orders/edit.html.erb @@ -0,0 +1,2 @@ +

Orders#edit

+

Find me in app/views/orders/edit.html.erb

diff --git a/app/views/orders/index.html.erb b/app/views/orders/index.html.erb new file mode 100644 index 0000000000..d63a69fb54 --- /dev/null +++ b/app/views/orders/index.html.erb @@ -0,0 +1,2 @@ +

Orders#index

+

Find me in app/views/orders/index.html.erb

diff --git a/app/views/orders/new.html.erb b/app/views/orders/new.html.erb new file mode 100644 index 0000000000..1bc27609ce --- /dev/null +++ b/app/views/orders/new.html.erb @@ -0,0 +1,2 @@ +

Orders#new

+

Find me in app/views/orders/new.html.erb

diff --git a/app/views/orders/show.html.erb b/app/views/orders/show.html.erb new file mode 100644 index 0000000000..22eb495f6f --- /dev/null +++ b/app/views/orders/show.html.erb @@ -0,0 +1,2 @@ +

Orders#show

+

Find me in app/views/orders/show.html.erb

diff --git a/app/views/orders/update.html.erb b/app/views/orders/update.html.erb new file mode 100644 index 0000000000..21caac1f70 --- /dev/null +++ b/app/views/orders/update.html.erb @@ -0,0 +1,2 @@ +

Orders#update

+

Find me in app/views/orders/update.html.erb

diff --git a/config/database.yml b/config/database.yml index 04f24be2ba..770465bc7e 100644 --- a/config/database.yml +++ b/config/database.yml @@ -15,7 +15,7 @@ # gem 'pg' # default: &default - adapter: postgresql + adapter: sqlite3 encoding: unicode # For details on connection pooling, see rails configuration guide # http://guides.rubyonrails.org/configuring.html#database-pooling diff --git a/config/routes.rb b/config/routes.rb index 3f66539d54..ea4e19558d 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,4 +1,18 @@ Rails.application.routes.draw do + get 'orders/index' + + get 'orders/show' + + get 'orders/new' + + get 'orders/create' + + get 'orders/edit' + + get 'orders/update' + + get 'orders/destroy' + # The priority is based upon order of creation: first created -> highest priority. # See how all your routes lay out with "rake routes". diff --git a/test/controllers/orders_controller_test.rb b/test/controllers/orders_controller_test.rb new file mode 100644 index 0000000000..ec871721c6 --- /dev/null +++ b/test/controllers/orders_controller_test.rb @@ -0,0 +1,39 @@ +require 'test_helper' + +class OrdersControllerTest < ActionController::TestCase + test "should get index" do + get :index + assert_response :success + end + + test "should get show" do + get :show + assert_response :success + end + + test "should get new" do + get :new + assert_response :success + end + + test "should get create" do + get :create + assert_response :success + end + + test "should get edit" do + get :edit + assert_response :success + end + + test "should get update" do + get :update + assert_response :success + end + + test "should get destroy" do + get :destroy + assert_response :success + end + +end From b77bd774928be3c3c11b8c86c20aa416cc1344b1 Mon Sep 17 00:00:00 2001 From: Trish Griego Date: Tue, 18 Oct 2016 15:47:00 -0700 Subject: [PATCH 02/46] Created sessions controller --- app/assets/javascripts/sessions.coffee | 3 ++ app/assets/stylesheets/sessions.scss | 3 ++ app/controllers/sessions_controller.rb | 22 +++++++++++ app/helpers/sessions_helper.rb | 2 + app/views/sessions/create.html.erb | 2 + app/views/sessions/destroy.html.erb | 2 + app/views/sessions/edit.html.erb | 2 + app/views/sessions/index.html.erb | 2 + app/views/sessions/new.html.erb | 2 + app/views/sessions/show.html.erb | 2 + app/views/sessions/update.html.erb | 2 + config/routes.rb | 14 +++++++ test/controllers/sessions_controller_test.rb | 39 ++++++++++++++++++++ 13 files changed, 97 insertions(+) create mode 100644 app/assets/javascripts/sessions.coffee create mode 100644 app/assets/stylesheets/sessions.scss create mode 100644 app/controllers/sessions_controller.rb create mode 100644 app/helpers/sessions_helper.rb create mode 100644 app/views/sessions/create.html.erb create mode 100644 app/views/sessions/destroy.html.erb create mode 100644 app/views/sessions/edit.html.erb create mode 100644 app/views/sessions/index.html.erb create mode 100644 app/views/sessions/new.html.erb create mode 100644 app/views/sessions/show.html.erb create mode 100644 app/views/sessions/update.html.erb create mode 100644 test/controllers/sessions_controller_test.rb diff --git a/app/assets/javascripts/sessions.coffee b/app/assets/javascripts/sessions.coffee new file mode 100644 index 0000000000..24f83d18bb --- /dev/null +++ b/app/assets/javascripts/sessions.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/stylesheets/sessions.scss b/app/assets/stylesheets/sessions.scss new file mode 100644 index 0000000000..7bef9cf826 --- /dev/null +++ b/app/assets/stylesheets/sessions.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the sessions controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb new file mode 100644 index 0000000000..aff03666e0 --- /dev/null +++ b/app/controllers/sessions_controller.rb @@ -0,0 +1,22 @@ +class SessionsController < ApplicationController + def index + end + + def show + end + + def new + end + + def create + end + + def edit + end + + def update + end + + def destroy + end +end diff --git a/app/helpers/sessions_helper.rb b/app/helpers/sessions_helper.rb new file mode 100644 index 0000000000..309f8b2eb3 --- /dev/null +++ b/app/helpers/sessions_helper.rb @@ -0,0 +1,2 @@ +module SessionsHelper +end diff --git a/app/views/sessions/create.html.erb b/app/views/sessions/create.html.erb new file mode 100644 index 0000000000..c251174fea --- /dev/null +++ b/app/views/sessions/create.html.erb @@ -0,0 +1,2 @@ +

Sessions#create

+

Find me in app/views/sessions/create.html.erb

diff --git a/app/views/sessions/destroy.html.erb b/app/views/sessions/destroy.html.erb new file mode 100644 index 0000000000..d75237d982 --- /dev/null +++ b/app/views/sessions/destroy.html.erb @@ -0,0 +1,2 @@ +

Sessions#destroy

+

Find me in app/views/sessions/destroy.html.erb

diff --git a/app/views/sessions/edit.html.erb b/app/views/sessions/edit.html.erb new file mode 100644 index 0000000000..071265e062 --- /dev/null +++ b/app/views/sessions/edit.html.erb @@ -0,0 +1,2 @@ +

Sessions#edit

+

Find me in app/views/sessions/edit.html.erb

diff --git a/app/views/sessions/index.html.erb b/app/views/sessions/index.html.erb new file mode 100644 index 0000000000..62cbf379e3 --- /dev/null +++ b/app/views/sessions/index.html.erb @@ -0,0 +1,2 @@ +

Sessions#index

+

Find me in app/views/sessions/index.html.erb

diff --git a/app/views/sessions/new.html.erb b/app/views/sessions/new.html.erb new file mode 100644 index 0000000000..b39a3bc951 --- /dev/null +++ b/app/views/sessions/new.html.erb @@ -0,0 +1,2 @@ +

Sessions#new

+

Find me in app/views/sessions/new.html.erb

diff --git a/app/views/sessions/show.html.erb b/app/views/sessions/show.html.erb new file mode 100644 index 0000000000..1225c86bfd --- /dev/null +++ b/app/views/sessions/show.html.erb @@ -0,0 +1,2 @@ +

Sessions#show

+

Find me in app/views/sessions/show.html.erb

diff --git a/app/views/sessions/update.html.erb b/app/views/sessions/update.html.erb new file mode 100644 index 0000000000..057db622ad --- /dev/null +++ b/app/views/sessions/update.html.erb @@ -0,0 +1,2 @@ +

Sessions#update

+

Find me in app/views/sessions/update.html.erb

diff --git a/config/routes.rb b/config/routes.rb index ea4e19558d..33192606c2 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,4 +1,18 @@ Rails.application.routes.draw do + get 'sessions/index' + + get 'sessions/show' + + get 'sessions/new' + + get 'sessions/create' + + get 'sessions/edit' + + get 'sessions/update' + + get 'sessions/destroy' + get 'orders/index' get 'orders/show' diff --git a/test/controllers/sessions_controller_test.rb b/test/controllers/sessions_controller_test.rb new file mode 100644 index 0000000000..edb3fc6223 --- /dev/null +++ b/test/controllers/sessions_controller_test.rb @@ -0,0 +1,39 @@ +require 'test_helper' + +class SessionsControllerTest < ActionController::TestCase + test "should get index" do + get :index + assert_response :success + end + + test "should get show" do + get :show + assert_response :success + end + + test "should get new" do + get :new + assert_response :success + end + + test "should get create" do + get :create + assert_response :success + end + + test "should get edit" do + get :edit + assert_response :success + end + + test "should get update" do + get :update + assert_response :success + end + + test "should get destroy" do + get :destroy + assert_response :success + end + +end From 6b98d1cd88151df43d3199b757b4bbd3b0680df2 Mon Sep 17 00:00:00 2001 From: Trish Griego Date: Tue, 18 Oct 2016 15:50:15 -0700 Subject: [PATCH 03/46] Created products controller, sessions controller, user controller --- app/assets/javascripts/products.coffee | 3 ++ app/assets/javascripts/users.coffee | 3 ++ app/assets/stylesheets/products.scss | 3 ++ app/assets/stylesheets/users.scss | 3 ++ app/controllers/products_controller.rb | 22 +++++++++++ app/controllers/users_controller.rb | 22 +++++++++++ app/helpers/products_helper.rb | 2 + app/helpers/users_helper.rb | 2 + app/views/products/create.html.erb | 2 + app/views/products/destroy.html.erb | 2 + app/views/products/edit.html.erb | 2 + app/views/products/index.html.erb | 2 + app/views/products/new.html.erb | 2 + app/views/products/show.html.erb | 2 + app/views/products/update.html.erb | 2 + app/views/users/create.html.erb | 2 + app/views/users/destroy.html.erb | 2 + app/views/users/edit.html.erb | 2 + app/views/users/index.html.erb | 2 + app/views/users/new.html.erb | 2 + app/views/users/show.html.erb | 2 + app/views/users/update.html.erb | 2 + config/routes.rb | 28 ++++++++++++++ test/controllers/products_controller_test.rb | 39 ++++++++++++++++++++ test/controllers/users_controller_test.rb | 39 ++++++++++++++++++++ 25 files changed, 194 insertions(+) create mode 100644 app/assets/javascripts/products.coffee create mode 100644 app/assets/javascripts/users.coffee create mode 100644 app/assets/stylesheets/products.scss create mode 100644 app/assets/stylesheets/users.scss create mode 100644 app/controllers/products_controller.rb create mode 100644 app/controllers/users_controller.rb create mode 100644 app/helpers/products_helper.rb create mode 100644 app/helpers/users_helper.rb create mode 100644 app/views/products/create.html.erb create mode 100644 app/views/products/destroy.html.erb create mode 100644 app/views/products/edit.html.erb create mode 100644 app/views/products/index.html.erb create mode 100644 app/views/products/new.html.erb create mode 100644 app/views/products/show.html.erb create mode 100644 app/views/products/update.html.erb create mode 100644 app/views/users/create.html.erb create mode 100644 app/views/users/destroy.html.erb create mode 100644 app/views/users/edit.html.erb create mode 100644 app/views/users/index.html.erb create mode 100644 app/views/users/new.html.erb create mode 100644 app/views/users/show.html.erb create mode 100644 app/views/users/update.html.erb create mode 100644 test/controllers/products_controller_test.rb create mode 100644 test/controllers/users_controller_test.rb diff --git a/app/assets/javascripts/products.coffee b/app/assets/javascripts/products.coffee new file mode 100644 index 0000000000..24f83d18bb --- /dev/null +++ b/app/assets/javascripts/products.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/javascripts/users.coffee b/app/assets/javascripts/users.coffee new file mode 100644 index 0000000000..24f83d18bb --- /dev/null +++ b/app/assets/javascripts/users.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/stylesheets/products.scss b/app/assets/stylesheets/products.scss new file mode 100644 index 0000000000..89e2e8db07 --- /dev/null +++ b/app/assets/stylesheets/products.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the products controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/assets/stylesheets/users.scss b/app/assets/stylesheets/users.scss new file mode 100644 index 0000000000..1efc835ccd --- /dev/null +++ b/app/assets/stylesheets/users.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the users controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb new file mode 100644 index 0000000000..6cc58717c0 --- /dev/null +++ b/app/controllers/products_controller.rb @@ -0,0 +1,22 @@ +class ProductsController < ApplicationController + def index + end + + def show + end + + def new + end + + def create + end + + def edit + end + + def update + end + + def destroy + end +end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb new file mode 100644 index 0000000000..4da2ddd9da --- /dev/null +++ b/app/controllers/users_controller.rb @@ -0,0 +1,22 @@ +class UsersController < ApplicationController + def index + end + + def show + end + + def new + end + + def create + end + + def edit + end + + def update + end + + def destroy + end +end diff --git a/app/helpers/products_helper.rb b/app/helpers/products_helper.rb new file mode 100644 index 0000000000..ab5c42b325 --- /dev/null +++ b/app/helpers/products_helper.rb @@ -0,0 +1,2 @@ +module ProductsHelper +end diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb new file mode 100644 index 0000000000..2310a240d7 --- /dev/null +++ b/app/helpers/users_helper.rb @@ -0,0 +1,2 @@ +module UsersHelper +end diff --git a/app/views/products/create.html.erb b/app/views/products/create.html.erb new file mode 100644 index 0000000000..d546021001 --- /dev/null +++ b/app/views/products/create.html.erb @@ -0,0 +1,2 @@ +

Products#create

+

Find me in app/views/products/create.html.erb

diff --git a/app/views/products/destroy.html.erb b/app/views/products/destroy.html.erb new file mode 100644 index 0000000000..d5c678b499 --- /dev/null +++ b/app/views/products/destroy.html.erb @@ -0,0 +1,2 @@ +

Products#destroy

+

Find me in app/views/products/destroy.html.erb

diff --git a/app/views/products/edit.html.erb b/app/views/products/edit.html.erb new file mode 100644 index 0000000000..279b066f30 --- /dev/null +++ b/app/views/products/edit.html.erb @@ -0,0 +1,2 @@ +

Products#edit

+

Find me in app/views/products/edit.html.erb

diff --git a/app/views/products/index.html.erb b/app/views/products/index.html.erb new file mode 100644 index 0000000000..f8eeb82674 --- /dev/null +++ b/app/views/products/index.html.erb @@ -0,0 +1,2 @@ +

Products#index

+

Find me in app/views/products/index.html.erb

diff --git a/app/views/products/new.html.erb b/app/views/products/new.html.erb new file mode 100644 index 0000000000..a14e0d91b6 --- /dev/null +++ b/app/views/products/new.html.erb @@ -0,0 +1,2 @@ +

Products#new

+

Find me in app/views/products/new.html.erb

diff --git a/app/views/products/show.html.erb b/app/views/products/show.html.erb new file mode 100644 index 0000000000..5f44ec44d2 --- /dev/null +++ b/app/views/products/show.html.erb @@ -0,0 +1,2 @@ +

Products#show

+

Find me in app/views/products/show.html.erb

diff --git a/app/views/products/update.html.erb b/app/views/products/update.html.erb new file mode 100644 index 0000000000..039889ac02 --- /dev/null +++ b/app/views/products/update.html.erb @@ -0,0 +1,2 @@ +

Products#update

+

Find me in app/views/products/update.html.erb

diff --git a/app/views/users/create.html.erb b/app/views/users/create.html.erb new file mode 100644 index 0000000000..48ea02e600 --- /dev/null +++ b/app/views/users/create.html.erb @@ -0,0 +1,2 @@ +

Users#create

+

Find me in app/views/users/create.html.erb

diff --git a/app/views/users/destroy.html.erb b/app/views/users/destroy.html.erb new file mode 100644 index 0000000000..de4bd26343 --- /dev/null +++ b/app/views/users/destroy.html.erb @@ -0,0 +1,2 @@ +

Users#destroy

+

Find me in app/views/users/destroy.html.erb

diff --git a/app/views/users/edit.html.erb b/app/views/users/edit.html.erb new file mode 100644 index 0000000000..1881fbdba0 --- /dev/null +++ b/app/views/users/edit.html.erb @@ -0,0 +1,2 @@ +

Users#edit

+

Find me in app/views/users/edit.html.erb

diff --git a/app/views/users/index.html.erb b/app/views/users/index.html.erb new file mode 100644 index 0000000000..51968c88d2 --- /dev/null +++ b/app/views/users/index.html.erb @@ -0,0 +1,2 @@ +

Users#index

+

Find me in app/views/users/index.html.erb

diff --git a/app/views/users/new.html.erb b/app/views/users/new.html.erb new file mode 100644 index 0000000000..c21a1adf19 --- /dev/null +++ b/app/views/users/new.html.erb @@ -0,0 +1,2 @@ +

Users#new

+

Find me in app/views/users/new.html.erb

diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb new file mode 100644 index 0000000000..e5fa3adf14 --- /dev/null +++ b/app/views/users/show.html.erb @@ -0,0 +1,2 @@ +

Users#show

+

Find me in app/views/users/show.html.erb

diff --git a/app/views/users/update.html.erb b/app/views/users/update.html.erb new file mode 100644 index 0000000000..cabbde176a --- /dev/null +++ b/app/views/users/update.html.erb @@ -0,0 +1,2 @@ +

Users#update

+

Find me in app/views/users/update.html.erb

diff --git a/config/routes.rb b/config/routes.rb index 33192606c2..8e97423282 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,4 +1,32 @@ Rails.application.routes.draw do + get 'users/index' + + get 'users/show' + + get 'users/new' + + get 'users/create' + + get 'users/edit' + + get 'users/update' + + get 'users/destroy' + + get 'products/index' + + get 'products/show' + + get 'products/new' + + get 'products/create' + + get 'products/edit' + + get 'products/update' + + get 'products/destroy' + get 'sessions/index' get 'sessions/show' diff --git a/test/controllers/products_controller_test.rb b/test/controllers/products_controller_test.rb new file mode 100644 index 0000000000..5e7440a0d5 --- /dev/null +++ b/test/controllers/products_controller_test.rb @@ -0,0 +1,39 @@ +require 'test_helper' + +class ProductsControllerTest < ActionController::TestCase + test "should get index" do + get :index + assert_response :success + end + + test "should get show" do + get :show + assert_response :success + end + + test "should get new" do + get :new + assert_response :success + end + + test "should get create" do + get :create + assert_response :success + end + + test "should get edit" do + get :edit + assert_response :success + end + + test "should get update" do + get :update + assert_response :success + end + + test "should get destroy" do + get :destroy + assert_response :success + end + +end diff --git a/test/controllers/users_controller_test.rb b/test/controllers/users_controller_test.rb new file mode 100644 index 0000000000..d84749b5f0 --- /dev/null +++ b/test/controllers/users_controller_test.rb @@ -0,0 +1,39 @@ +require 'test_helper' + +class UsersControllerTest < ActionController::TestCase + test "should get index" do + get :index + assert_response :success + end + + test "should get show" do + get :show + assert_response :success + end + + test "should get new" do + get :new + assert_response :success + end + + test "should get create" do + get :create + assert_response :success + end + + test "should get edit" do + get :edit + assert_response :success + end + + test "should get update" do + get :update + assert_response :success + end + + test "should get destroy" do + get :destroy + assert_response :success + end + +end From 3d17e191798a22fc2792d9dcb6e3c4cba64f2eb3 Mon Sep 17 00:00:00 2001 From: Trish Griego Date: Tue, 18 Oct 2016 15:58:26 -0700 Subject: [PATCH 04/46] Creatd homepages controller --- app/assets/javascripts/homepages.coffee | 3 ++ app/assets/stylesheets/homepages.scss | 3 ++ app/controllers/homepages_controller.rb | 22 +++++++++++ app/helpers/homepages_helper.rb | 2 + app/views/homepages/create.html.erb | 2 + app/views/homepages/destroy.html.erb | 2 + app/views/homepages/edit.html.erb | 2 + app/views/homepages/index.html.erb | 2 + app/views/homepages/new.html.erb | 2 + app/views/homepages/show.html.erb | 2 + app/views/homepages/update.html.erb | 2 + config/routes.rb | 14 +++++++ test/controllers/homepages_controller_test.rb | 39 +++++++++++++++++++ 13 files changed, 97 insertions(+) create mode 100644 app/assets/javascripts/homepages.coffee create mode 100644 app/assets/stylesheets/homepages.scss create mode 100644 app/controllers/homepages_controller.rb create mode 100644 app/helpers/homepages_helper.rb create mode 100644 app/views/homepages/create.html.erb create mode 100644 app/views/homepages/destroy.html.erb create mode 100644 app/views/homepages/edit.html.erb create mode 100644 app/views/homepages/index.html.erb create mode 100644 app/views/homepages/new.html.erb create mode 100644 app/views/homepages/show.html.erb create mode 100644 app/views/homepages/update.html.erb create mode 100644 test/controllers/homepages_controller_test.rb diff --git a/app/assets/javascripts/homepages.coffee b/app/assets/javascripts/homepages.coffee new file mode 100644 index 0000000000..24f83d18bb --- /dev/null +++ b/app/assets/javascripts/homepages.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/stylesheets/homepages.scss b/app/assets/stylesheets/homepages.scss new file mode 100644 index 0000000000..e42583ae81 --- /dev/null +++ b/app/assets/stylesheets/homepages.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the homepages controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/controllers/homepages_controller.rb b/app/controllers/homepages_controller.rb new file mode 100644 index 0000000000..a01b4d1f45 --- /dev/null +++ b/app/controllers/homepages_controller.rb @@ -0,0 +1,22 @@ +class HomepagesController < ApplicationController + def index + end + + def show + end + + def new + end + + def create + end + + def edit + end + + def update + end + + def destroy + end +end diff --git a/app/helpers/homepages_helper.rb b/app/helpers/homepages_helper.rb new file mode 100644 index 0000000000..4bd8098f37 --- /dev/null +++ b/app/helpers/homepages_helper.rb @@ -0,0 +1,2 @@ +module HomepagesHelper +end diff --git a/app/views/homepages/create.html.erb b/app/views/homepages/create.html.erb new file mode 100644 index 0000000000..12e275a63e --- /dev/null +++ b/app/views/homepages/create.html.erb @@ -0,0 +1,2 @@ +

Homepages#create

+

Find me in app/views/homepages/create.html.erb

diff --git a/app/views/homepages/destroy.html.erb b/app/views/homepages/destroy.html.erb new file mode 100644 index 0000000000..59e0285e7e --- /dev/null +++ b/app/views/homepages/destroy.html.erb @@ -0,0 +1,2 @@ +

Homepages#destroy

+

Find me in app/views/homepages/destroy.html.erb

diff --git a/app/views/homepages/edit.html.erb b/app/views/homepages/edit.html.erb new file mode 100644 index 0000000000..d05072e7e6 --- /dev/null +++ b/app/views/homepages/edit.html.erb @@ -0,0 +1,2 @@ +

Homepages#edit

+

Find me in app/views/homepages/edit.html.erb

diff --git a/app/views/homepages/index.html.erb b/app/views/homepages/index.html.erb new file mode 100644 index 0000000000..37d3ce7099 --- /dev/null +++ b/app/views/homepages/index.html.erb @@ -0,0 +1,2 @@ +

Homepages#index

+

Find me in app/views/homepages/index.html.erb

diff --git a/app/views/homepages/new.html.erb b/app/views/homepages/new.html.erb new file mode 100644 index 0000000000..0ad26144e4 --- /dev/null +++ b/app/views/homepages/new.html.erb @@ -0,0 +1,2 @@ +

Homepages#new

+

Find me in app/views/homepages/new.html.erb

diff --git a/app/views/homepages/show.html.erb b/app/views/homepages/show.html.erb new file mode 100644 index 0000000000..dea05df968 --- /dev/null +++ b/app/views/homepages/show.html.erb @@ -0,0 +1,2 @@ +

Homepages#show

+

Find me in app/views/homepages/show.html.erb

diff --git a/app/views/homepages/update.html.erb b/app/views/homepages/update.html.erb new file mode 100644 index 0000000000..4cdb5ddd2f --- /dev/null +++ b/app/views/homepages/update.html.erb @@ -0,0 +1,2 @@ +

Homepages#update

+

Find me in app/views/homepages/update.html.erb

diff --git a/config/routes.rb b/config/routes.rb index 8e97423282..b4c40aa031 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,4 +1,18 @@ Rails.application.routes.draw do + get 'homepages/index' + + get 'homepages/show' + + get 'homepages/new' + + get 'homepages/create' + + get 'homepages/edit' + + get 'homepages/update' + + get 'homepages/destroy' + get 'users/index' get 'users/show' diff --git a/test/controllers/homepages_controller_test.rb b/test/controllers/homepages_controller_test.rb new file mode 100644 index 0000000000..559922d863 --- /dev/null +++ b/test/controllers/homepages_controller_test.rb @@ -0,0 +1,39 @@ +require 'test_helper' + +class HomepagesControllerTest < ActionController::TestCase + test "should get index" do + get :index + assert_response :success + end + + test "should get show" do + get :show + assert_response :success + end + + test "should get new" do + get :new + assert_response :success + end + + test "should get create" do + get :create + assert_response :success + end + + test "should get edit" do + get :edit + assert_response :success + end + + test "should get update" do + get :update + assert_response :success + end + + test "should get destroy" do + get :destroy + assert_response :success + end + +end From 3b33a9e916ddfdd0681ea6f2c1fabe7fc17c976c Mon Sep 17 00:00:00 2001 From: Sassa Kitka Date: Tue, 18 Oct 2016 16:06:59 -0700 Subject: [PATCH 05/46] added user and product models --- app/models/product.rb | 3 +++ app/models/user.rb | 2 ++ db/migrate/20161018230557_create_users.rb | 17 +++++++++++++++ db/migrate/20161018230623_create_products.rb | 15 +++++++++++++ test/fixtures/products.yml | 19 ++++++++++++++++ test/fixtures/users.yml | 23 ++++++++++++++++++++ test/models/product_test.rb | 7 ++++++ test/models/user_test.rb | 7 ++++++ 8 files changed, 93 insertions(+) create mode 100644 app/models/product.rb create mode 100644 app/models/user.rb create mode 100644 db/migrate/20161018230557_create_users.rb create mode 100644 db/migrate/20161018230623_create_products.rb create mode 100644 test/fixtures/products.yml create mode 100644 test/fixtures/users.yml create mode 100644 test/models/product_test.rb create mode 100644 test/models/user_test.rb diff --git a/app/models/product.rb b/app/models/product.rb new file mode 100644 index 0000000000..e49bb4d974 --- /dev/null +++ b/app/models/product.rb @@ -0,0 +1,3 @@ +class Product < ActiveRecord::Base + belongs_to :user_id +end diff --git a/app/models/user.rb b/app/models/user.rb new file mode 100644 index 0000000000..4a57cf079b --- /dev/null +++ b/app/models/user.rb @@ -0,0 +1,2 @@ +class User < ActiveRecord::Base +end diff --git a/db/migrate/20161018230557_create_users.rb b/db/migrate/20161018230557_create_users.rb new file mode 100644 index 0000000000..4162768c25 --- /dev/null +++ b/db/migrate/20161018230557_create_users.rb @@ -0,0 +1,17 @@ +class CreateUsers < ActiveRecord::Migration + def change + create_table :users do |t| + t.string :first_name + t.string :last_name + t.string :email + t.string :street_address + t.string :city + t.string :state + t.integer :zip + t.integer :phone + t.boolean :merchant + + t.timestamps null: false + end + end +end diff --git a/db/migrate/20161018230623_create_products.rb b/db/migrate/20161018230623_create_products.rb new file mode 100644 index 0000000000..7ca39792a4 --- /dev/null +++ b/db/migrate/20161018230623_create_products.rb @@ -0,0 +1,15 @@ +class CreateProducts < ActiveRecord::Migration + def change + create_table :products do |t| + t.string :name + t.text :description + t.decimal :price + t.string :photo_url + t.integer :inventory + t.string :category + t.references :user_id, index: true, foreign_key: true + + t.timestamps null: false + end + end +end diff --git a/test/fixtures/products.yml b/test/fixtures/products.yml new file mode 100644 index 0000000000..31512c4de0 --- /dev/null +++ b/test/fixtures/products.yml @@ -0,0 +1,19 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + name: MyString + description: MyText + price: 9.99 + photo_url: MyString + inventory: 1 + category: MyString + user_id_id: + +two: + name: MyString + description: MyText + price: 9.99 + photo_url: MyString + inventory: 1 + category: MyString + user_id_id: diff --git a/test/fixtures/users.yml b/test/fixtures/users.yml new file mode 100644 index 0000000000..087443dd23 --- /dev/null +++ b/test/fixtures/users.yml @@ -0,0 +1,23 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + first_name: MyString + last_name: MyString + email: MyString + street_address: MyString + city: MyString + state: MyString + zip: 1 + phone: 1 + merchant: false + +two: + first_name: MyString + last_name: MyString + email: MyString + street_address: MyString + city: MyString + state: MyString + zip: 1 + phone: 1 + merchant: false diff --git a/test/models/product_test.rb b/test/models/product_test.rb new file mode 100644 index 0000000000..211cdd0b4a --- /dev/null +++ b/test/models/product_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class ProductTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/user_test.rb b/test/models/user_test.rb new file mode 100644 index 0000000000..82f61e0109 --- /dev/null +++ b/test/models/user_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class UserTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end From c003f25569e372536257d9a8d7f1dc1a6cb0f4a8 Mon Sep 17 00:00:00 2001 From: Sassa Kitka Date: Tue, 18 Oct 2016 16:12:29 -0700 Subject: [PATCH 06/46] added order, order_item, and review models --- app/models/order.rb | 4 +++ app/models/order_item.rb | 4 +++ app/models/review.rb | 3 +++ db/migrate/20161018231057_create_orders.rb | 19 +++++++++++++ .../20161018231137_create_order_items.rb | 12 +++++++++ db/migrate/20161018231156_create_reviews.rb | 11 ++++++++ test/fixtures/order_items.yml | 13 +++++++++ test/fixtures/orders.yml | 27 +++++++++++++++++++ test/fixtures/reviews.yml | 11 ++++++++ test/models/order_item_test.rb | 7 +++++ test/models/order_test.rb | 7 +++++ test/models/review_test.rb | 7 +++++ 12 files changed, 125 insertions(+) create mode 100644 app/models/order.rb create mode 100644 app/models/order_item.rb create mode 100644 app/models/review.rb create mode 100644 db/migrate/20161018231057_create_orders.rb create mode 100644 db/migrate/20161018231137_create_order_items.rb create mode 100644 db/migrate/20161018231156_create_reviews.rb create mode 100644 test/fixtures/order_items.yml create mode 100644 test/fixtures/orders.yml create mode 100644 test/fixtures/reviews.yml create mode 100644 test/models/order_item_test.rb create mode 100644 test/models/order_test.rb create mode 100644 test/models/review_test.rb diff --git a/app/models/order.rb b/app/models/order.rb new file mode 100644 index 0000000000..e97bbea173 --- /dev/null +++ b/app/models/order.rb @@ -0,0 +1,4 @@ +class Order < ActiveRecord::Base + belongs_to :product_id + belongs_to :user_id +end diff --git a/app/models/order_item.rb b/app/models/order_item.rb new file mode 100644 index 0000000000..274242f2c1 --- /dev/null +++ b/app/models/order_item.rb @@ -0,0 +1,4 @@ +class OrderItem < ActiveRecord::Base + belongs_to :product_id + belongs_to :order_id +end diff --git a/app/models/review.rb b/app/models/review.rb new file mode 100644 index 0000000000..148a3657cc --- /dev/null +++ b/app/models/review.rb @@ -0,0 +1,3 @@ +class Review < ActiveRecord::Base + belongs_to :user_id +end diff --git a/db/migrate/20161018231057_create_orders.rb b/db/migrate/20161018231057_create_orders.rb new file mode 100644 index 0000000000..a97d256705 --- /dev/null +++ b/db/migrate/20161018231057_create_orders.rb @@ -0,0 +1,19 @@ +class CreateOrders < ActiveRecord::Migration + def change + create_table :orders do |t| + t.references :product_id, index: true, foreign_key: true + t.references :user_id, index: true, foreign_key: true + t.boolean :status + t.string :first_name + t.string :last_name + t.string :email + t.string :street_address + t.string :city + t.string :state + t.integer :zip + t.integer :phone + + t.timestamps null: false + end + end +end diff --git a/db/migrate/20161018231137_create_order_items.rb b/db/migrate/20161018231137_create_order_items.rb new file mode 100644 index 0000000000..a765bb296f --- /dev/null +++ b/db/migrate/20161018231137_create_order_items.rb @@ -0,0 +1,12 @@ +class CreateOrderItems < ActiveRecord::Migration + def change + create_table :order_items do |t| + t.decimal :unit_price + t.integer :quantity + t.references :product_id, index: true, foreign_key: true + t.references :order_id, index: true, foreign_key: true + + t.timestamps null: false + end + end +end diff --git a/db/migrate/20161018231156_create_reviews.rb b/db/migrate/20161018231156_create_reviews.rb new file mode 100644 index 0000000000..648fa54135 --- /dev/null +++ b/db/migrate/20161018231156_create_reviews.rb @@ -0,0 +1,11 @@ +class CreateReviews < ActiveRecord::Migration + def change + create_table :reviews do |t| + t.references :user_id, index: true, foreign_key: true + t.text :description + t.integer :rank + + t.timestamps null: false + end + end +end diff --git a/test/fixtures/order_items.yml b/test/fixtures/order_items.yml new file mode 100644 index 0000000000..53e470b6e9 --- /dev/null +++ b/test/fixtures/order_items.yml @@ -0,0 +1,13 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + unit_price: 9.99 + quantity: 1 + product_id_id: + order_id_id: + +two: + unit_price: 9.99 + quantity: 1 + product_id_id: + order_id_id: diff --git a/test/fixtures/orders.yml b/test/fixtures/orders.yml new file mode 100644 index 0000000000..ad05469d2b --- /dev/null +++ b/test/fixtures/orders.yml @@ -0,0 +1,27 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + product_id_id: + user_id_id: + status: false + first_name: MyString + last_name: MyString + email: MyString + street_address: MyString + city: MyString + state: MyString + zip: 1 + phone: 1 + +two: + product_id_id: + user_id_id: + status: false + first_name: MyString + last_name: MyString + email: MyString + street_address: MyString + city: MyString + state: MyString + zip: 1 + phone: 1 diff --git a/test/fixtures/reviews.yml b/test/fixtures/reviews.yml new file mode 100644 index 0000000000..91a52b62fe --- /dev/null +++ b/test/fixtures/reviews.yml @@ -0,0 +1,11 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + user_id_id: + description: MyText + rank: 1 + +two: + user_id_id: + description: MyText + rank: 1 diff --git a/test/models/order_item_test.rb b/test/models/order_item_test.rb new file mode 100644 index 0000000000..e473b9e2e1 --- /dev/null +++ b/test/models/order_item_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class OrderItemTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/order_test.rb b/test/models/order_test.rb new file mode 100644 index 0000000000..15b8ed1348 --- /dev/null +++ b/test/models/order_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class OrderTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/review_test.rb b/test/models/review_test.rb new file mode 100644 index 0000000000..11aa5204f0 --- /dev/null +++ b/test/models/review_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class ReviewTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end From 9e9c4d48e5b9690a7c0f92a2a7258e1ad0f42cd1 Mon Sep 17 00:00:00 2001 From: Trish Griego Date: Tue, 18 Oct 2016 16:13:06 -0700 Subject: [PATCH 07/46] Created homepages routes rooting to index page. --- config/routes.rb | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/config/routes.rb b/config/routes.rb index b4c40aa031..7723146324 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,5 +1,9 @@ Rails.application.routes.draw do - get 'homepages/index' +##### homepages routes ##### +# why were these generated with index? + root to: 'homepages#index' + get 'homepages/index', as: 'index' + get 'homepages/show' @@ -13,6 +17,8 @@ get 'homepages/destroy' +##### user routes ##### + get 'users/index' get 'users/show' @@ -27,6 +33,8 @@ get 'users/destroy' + ##### products routes ##### + get 'products/index' get 'products/show' @@ -41,6 +49,8 @@ get 'products/destroy' +##### sessions routes ##### + get 'sessions/index' get 'sessions/show' @@ -55,6 +65,8 @@ get 'sessions/destroy' +##### orders routes ##### + get 'orders/index' get 'orders/show' From afecb66f661ba2038a8dc10ea3737b15389ce3c9 Mon Sep 17 00:00:00 2001 From: Sassa Kitka Date: Tue, 18 Oct 2016 16:23:46 -0700 Subject: [PATCH 08/46] added authentication gems: 'omniauth','omniauth-github', 'dotenv-rails'; debugging gems: 'pry', 'better-errors'; viewing gem 'awesome_print' --- Gemfile | 12 ++++++++++++ Gemfile.lock | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/Gemfile b/Gemfile index 8f60890a4f..c1b5d767ac 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,15 @@ source 'https://rubygems.org' ruby '2.3.1' + +#gem for aAuth github Authentication +gem 'omniauth' +gem 'omniauth-github' + +#make it easier to read +gem 'awesome_print' + + # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '4.2.6' # Use postgresql as the database for Active Record @@ -36,6 +45,8 @@ group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug' gem 'sqlite3' + gem 'dotenv-rails' + gem 'pry' end group :development do @@ -44,4 +55,5 @@ group :development do # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring gem 'spring' + gem 'better_errors' end diff --git a/Gemfile.lock b/Gemfile.lock index 89a9d13b3d..55d4c2d448 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -37,10 +37,16 @@ GEM thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) arel (6.0.3) + awesome_print (1.7.0) + better_errors (2.1.1) + coderay (>= 1.0.0) + erubis (>= 2.6.6) + rack (>= 0.9.0) binding_of_caller (0.7.2) debug_inspector (>= 0.0.1) builder (3.2.2) byebug (8.2.5) + coderay (1.1.1) coffee-rails (4.1.1) coffee-script (>= 2.2.0) railties (>= 4.0.0, < 5.1.x) @@ -50,10 +56,17 @@ GEM coffee-script-source (1.10.0) concurrent-ruby (1.0.1) debug_inspector (0.0.2) + dotenv (2.1.1) + dotenv-rails (2.1.1) + dotenv (= 2.1.1) + railties (>= 4.0, < 5.1) erubis (2.7.0) execjs (2.6.0) + faraday (0.9.2) + multipart-post (>= 1.2, < 3) globalid (0.3.6) activesupport (>= 4.1.0) + hashie (3.4.6) i18n (0.7.0) jbuilder (2.4.1) activesupport (>= 3.0.0, < 5.1) @@ -63,18 +76,41 @@ GEM railties (>= 4.2.0) thor (>= 0.14, < 2.0) json (1.8.3) + jwt (1.5.6) loofah (2.0.3) nokogiri (>= 1.5.9) mail (2.6.4) mime-types (>= 1.16, < 4) + method_source (0.8.2) mime-types (3.0) mime-types-data (~> 3.2015) mime-types-data (3.2016.0221) mini_portile2 (2.0.0) minitest (5.8.4) multi_json (1.11.3) + multi_xml (0.5.5) + multipart-post (2.0.0) nokogiri (1.6.7.2) mini_portile2 (~> 2.0.0.rc2) + oauth2 (1.2.0) + faraday (>= 0.8, < 0.10) + jwt (~> 1.0) + multi_json (~> 1.3) + multi_xml (~> 0.5) + rack (>= 1.2, < 3) + omniauth (1.3.1) + hashie (>= 1.2, < 4) + rack (>= 1.0, < 3) + omniauth-github (1.1.2) + omniauth (~> 1.0) + omniauth-oauth2 (~> 1.1) + omniauth-oauth2 (1.4.0) + oauth2 (~> 1.0) + omniauth (~> 1.2) + pry (0.10.4) + coderay (~> 1.1.0) + method_source (~> 0.8.1) + slop (~> 3.4) rack (1.6.4) rack-test (0.6.3) rack (>= 1.0) @@ -115,6 +151,7 @@ GEM sdoc (0.4.1) json (~> 1.7, >= 1.7.7) rdoc (~> 4.0) + slop (3.6.0) spring (1.7.1) sprockets (3.6.0) concurrent-ruby (~> 1.0) @@ -143,10 +180,16 @@ PLATFORMS ruby DEPENDENCIES + awesome_print + better_errors byebug coffee-rails (~> 4.1.0) + dotenv-rails jbuilder (~> 2.0) jquery-rails + omniauth + omniauth-github + pry rails (= 4.2.6) sass-rails (~> 5.0) sdoc (~> 0.4.0) From c0eb9c400336e31800190536422498d7687136fb Mon Sep 17 00:00:00 2001 From: Trish Griego Date: Tue, 18 Oct 2016 16:59:55 -0700 Subject: [PATCH 09/46] not sure where this change is coming from --- betsy_development | Bin 0 -> 61440 bytes db/schema.rb | 85 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 betsy_development create mode 100644 db/schema.rb diff --git a/betsy_development b/betsy_development new file mode 100644 index 0000000000000000000000000000000000000000..c7e7d64c7203d0eb006f253a0cdd5c5f683a1891 GIT binary patch literal 61440 zcmeI(Pfy!s0LSr|5X}G3Nt1;Tk{2$GN(BJ{+hNiei&|6&EdyyBrpQg6g4M(U+hMe~ z(C!WFCG4~H6U*u6k9KTd zm`@sR-SW-V)J#g#QlFS+DwWdZGb^9n$CO+c?!J+)nzDS=qMo|@*LcuyI`exf`%QLq z>ZhrvlOIj|Jiayd%h1z2d(4aDRJubN|SEP&_g>4-fXXOS0K+ zv2I3w8&1yj#f2}+T+4ZyQ`V`t!tzD6Z238} zDwlk_E+Sh#4N9-5&$mV=bz^ryYu!~`8*Vkw^hG_i?Ys?em71wRz)F3Piqf*Jtkeh6 zYJI*nJ)s+qh1Ot5gdEnT7`P8*5LZ&GycHOGU%+H#ZEuPq}=a(I;E+@;m zQ3MtF9N;!{HI*&K<3N zg7nU6@-w6CiL<6~DkAna6VZ!R-VQt#Wy}2K{j_cvhW4@%W)SSO7ycQJv=2Wp-|evb zpB^=J5gfpd{1opU;MWVMr4Q-G$4gpkDLj;#jxB>JdzBM;GAP&WW7i74Sa^K}>5lYa zY5URPt8Y+OHE$nMeH#gmigTG=@YN+>({y7=?uZ^{+P7|B!B8~ozIt`z-80v#?>zb7 z+B}o}E|vW|`)BsI?2mGh2LcEnfB*srAbF7iMC0R#|0 z009ILKmY**5I_Kde_i0cbY6>I`)A@ss~f|yB6;t5h8#90tg_000IagfB*srBwK*{|H;mu z(IbEW0tg_000IagfB*srBtwAv|H;UiQ6hi<0tg_000IagfB*srBwK*%|77RS=n+5w z0R#|0009ILKmY**k|DtF|C5n3qeK7!1Q0*~0R#|0009ILNVWj?|C60RqelP%1Q0*~ z0R#|0009ILNQMB{|H;UiQ6hi<0tg_000IagfB*srBwK*r|0g?tMvnjj2q1s}0tg_0 k00IagkPHFt|0g47Mu`9d2q1s}0tg_000IagkZgf}09U4@6aWAK literal 0 HcmV?d00001 diff --git a/db/schema.rb b/db/schema.rb new file mode 100644 index 0000000000..8c0a3f1a07 --- /dev/null +++ b/db/schema.rb @@ -0,0 +1,85 @@ +# encoding: UTF-8 +# This file is auto-generated from the current state of the database. Instead +# of editing this file, please use the migrations feature of Active Record to +# incrementally modify your database, and then regenerate this schema definition. +# +# Note that this schema.rb definition is the authoritative source for your +# database schema. If you need to create the application database on another +# system, you should be using db:schema:load, not running all the migrations +# from scratch. The latter is a flawed and unsustainable approach (the more migrations +# you'll amass, the slower it'll run and the greater likelihood for issues). +# +# It's strongly recommended that you check this file into your version control system. + +ActiveRecord::Schema.define(version: 20161018231156) do + + create_table "order_items", force: :cascade do |t| + t.decimal "unit_price" + t.integer "quantity" + t.integer "product_id_id" + t.integer "order_id_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + add_index "order_items", ["order_id_id"], name: "index_order_items_on_order_id_id" + add_index "order_items", ["product_id_id"], name: "index_order_items_on_product_id_id" + + create_table "orders", force: :cascade do |t| + t.integer "product_id_id" + t.integer "user_id_id" + t.boolean "status" + t.string "first_name" + t.string "last_name" + t.string "email" + t.string "street_address" + t.string "city" + t.string "state" + t.integer "zip" + t.integer "phone" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + add_index "orders", ["product_id_id"], name: "index_orders_on_product_id_id" + add_index "orders", ["user_id_id"], name: "index_orders_on_user_id_id" + + create_table "products", force: :cascade do |t| + t.string "name" + t.text "description" + t.decimal "price" + t.string "photo_url" + t.integer "inventory" + t.string "category" + t.integer "user_id_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + add_index "products", ["user_id_id"], name: "index_products_on_user_id_id" + + create_table "reviews", force: :cascade do |t| + t.integer "user_id_id" + t.text "description" + t.integer "rank" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + add_index "reviews", ["user_id_id"], name: "index_reviews_on_user_id_id" + + create_table "users", force: :cascade do |t| + t.string "first_name" + t.string "last_name" + t.string "email" + t.string "street_address" + t.string "city" + t.string "state" + t.integer "zip" + t.integer "phone" + t.boolean "merchant" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + +end From 66d56cd60710ec01e6cf748f2844ecc1224a9087 Mon Sep 17 00:00:00 2001 From: Trish Griego Date: Tue, 18 Oct 2016 17:11:32 -0700 Subject: [PATCH 10/46] Simply added h1 tags for different catagories in the homepage. As I created them, realized we might need a seperate index page for each catagory? --- app/views/homepages/index.html.erb | 22 +++++++++++++++++++++- app/views/layouts/application.html.erb | 2 +- betsy_development | 0 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 betsy_development diff --git a/app/views/homepages/index.html.erb b/app/views/homepages/index.html.erb index 37d3ce7099..bae3f96149 100644 --- a/app/views/homepages/index.html.erb +++ b/app/views/homepages/index.html.erb @@ -1,2 +1,22 @@ -

Homepages#index

+

VAMPAZON HOMEPAGE

Find me in app/views/homepages/index.html.erb

+ +
+ +
+

Minions

+
+ +
+

Housewares

+
+ +
+

Clothing

+
+ +
+

Personal Care

+
+ +
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 9b70e01c2e..1ddad22a63 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -1,7 +1,7 @@ - Betsy + Vampazon <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> <%= csrf_meta_tags %> diff --git a/betsy_development b/betsy_development new file mode 100644 index 0000000000..e69de29bb2 From eb09d061bd785f8a893eac24dca57f3c395b34b5 Mon Sep 17 00:00:00 2001 From: Maya Wang Date: Tue, 18 Oct 2016 17:31:24 -0700 Subject: [PATCH 11/46] completed model relationships --- app/models/order.rb | 1 + app/models/order_item.rb | 1 + app/models/product.rb | 3 +++ app/models/user.rb | 3 +++ 4 files changed, 8 insertions(+) diff --git a/app/models/order.rb b/app/models/order.rb index e97bbea173..d7e8771f13 100644 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -1,4 +1,5 @@ class Order < ActiveRecord::Base belongs_to :product_id belongs_to :user_id + has_many :order_item end diff --git a/app/models/order_item.rb b/app/models/order_item.rb index 274242f2c1..51bf7b0c75 100644 --- a/app/models/order_item.rb +++ b/app/models/order_item.rb @@ -1,4 +1,5 @@ class OrderItem < ActiveRecord::Base belongs_to :product_id belongs_to :order_id + end diff --git a/app/models/product.rb b/app/models/product.rb index e49bb4d974..2863e51e39 100644 --- a/app/models/product.rb +++ b/app/models/product.rb @@ -1,3 +1,6 @@ class Product < ActiveRecord::Base belongs_to :user_id + has_many :order_id + has_many :order_item + end diff --git a/app/models/user.rb b/app/models/user.rb index 4a57cf079b..8b0b45a38c 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1,2 +1,5 @@ class User < ActiveRecord::Base + has_many :review_id + has_many :product_id + has_many :user_id end From 8bd33cfdf116ba5616a54221b6fcb1594c830a18 Mon Sep 17 00:00:00 2001 From: Trish Griego Date: Tue, 18 Oct 2016 17:56:12 -0700 Subject: [PATCH 12/46] Created routes for orders, finished building logic for orders controller. --- app/controllers/orders_controller.rb | 48 ++++++++++++++++++++++++++++ betsy_development | 0 config/routes.rb | 16 +++++----- 3 files changed, 56 insertions(+), 8 deletions(-) create mode 100644 betsy_development diff --git a/app/controllers/orders_controller.rb b/app/controllers/orders_controller.rb index 27bfa788fd..a282151b34 100644 --- a/app/controllers/orders_controller.rb +++ b/app/controllers/orders_controller.rb @@ -1,22 +1,70 @@ class OrdersController < ApplicationController def index + # @products = Product.all + @orders = Order.all end def show + @myorder = Order.find(params[:id]) + if @myorder == nil + render :file 'public/404.html', :status => :not_found + end end def new + @myorder = Order.new + @order_method = :post + @order_path = orders_path end def create + @myorder = Order.new + # no idea if we need to link via foreignkey or primary + @myorder.status = params[:order][:status] + @myorder.first_name = params[:order][:first_name] + @myorder.last_name = params[:order][:last_name] + @myorder.email = params[:order][:email] + @myorder.street_address = params[:order][:street_address] + @myorder.city = params[:order][:city] + @myorder.state = params[:order][:state] + @myorder.zip = params[:order][:zip] + @myorder.phone = params[:order][:phone] + @myorder.save + redirect_to order_path(@myorder.id) end def edit + @myorder = Order.find(params[:id]) + # Should I use a patch here? + @order_method = :put + @order_path = album_path + if @myorder == nil + render :file => 'public/404.html', + :status => :not_found + end end def update + @myorder = Order.find(params[:id]) + if @myorder == nil + render :file => 'public/404.html', :status => :not_found + end + @myorder.status = params[:order][:status] + @myorder.first_name = params[:order][:first_name] + @myorder.last_name = params[:order][:last_name] + @myorder.email = params[:order][:email] + @myorder.street_address = params[:order][:street_address] + @myorder.city = params[:order][:city] + @myorder.state = params[:order][:state] + @myorder.zip = params[:order][:zip] + @myorder.phone = params[:order][:phone] + @myorder.save + redirect_to orders_path(@myorder.id) end def destroy + @myorder = Order.find(params[:id]) + @myorder.destroy + redirect_to orders_path(@myorder.id) end end diff --git a/betsy_development b/betsy_development new file mode 100644 index 0000000000..e69de29bb2 diff --git a/config/routes.rb b/config/routes.rb index 7723146324..75e83e1f1c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -66,20 +66,20 @@ get 'sessions/destroy' ##### orders routes ##### +# we chose to make the convention of having the as: be action + plural. + get 'orders/index' => 'orders#index', as: :index_orders - get 'orders/index' + get 'orders/show/:id' => 'orders#show', as: :show_orders - get 'orders/show' + post 'orders/new' => 'orders#new', as: :new_orders - get 'orders/new' + get 'orders/create' => 'orders#create', as: :create_orders - get 'orders/create' + get 'orders/:id/edit' => 'orders#edit', as: :edit_orders - get 'orders/edit' + patch 'orders/:id/update' => 'orders#update', as: :update_orders - get 'orders/update' - - get 'orders/destroy' + delete 'orders/:id/destroy' => 'orders#destroy', as: :destroy_orders # The priority is based upon order of creation: first created -> highest priority. # See how all your routes lay out with "rake routes". From 3e3f729fcda4d7a92c819b13be4b112f4426897a Mon Sep 17 00:00:00 2001 From: Maya Wang Date: Tue, 18 Oct 2016 18:08:35 -0700 Subject: [PATCH 13/46] run db:migrate on model generation --- betsy_development | Bin 0 -> 61440 bytes db/schema.rb | 85 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 betsy_development create mode 100644 db/schema.rb diff --git a/betsy_development b/betsy_development new file mode 100644 index 0000000000000000000000000000000000000000..66fe38da5041d7f7c711a3258f34a90444f7280b GIT binary patch literal 61440 zcmeI(-%i_B0LSr|5KQ=II%%>HLh`~*qf+rtz;-cdj72RfgqDFcE~dy$PQhy81lwV> zccI-2>=AacH<-4Y?RL}dceOpk-eA&>ouoMqp=yh?P52u%#5u>u$LI4qc49gG{LzjR z2ZoEeN4)Q;qDvxswvA?E$XSee>cL0Q<>jW#y7_3 zcl@~tl?b#r!B zdvPnUA6G?Zt~hFJ^4J`*;%mEJ}t)$#If*XX+`*D&uIis-OX8nI1gl*XS+{x$~t9F*ny~&>>y`V zgf$IdNhUb)pOjDGdnq8HdpEhkbaDr!Q?(v;fCPZf!!noA+uQyLlv%0xC zqqW}e&!+F_i#qqmu8gB^btMMB|Im9rs+;#@mmdu5GB*5nui4l48f($talA5rajxs; z%#8N+gI@H0yO+@cfk*rP)>+5ZPU^3(|4Vgd5bo*vX+RBRh`DdN~fBRo4sa;qZug=Z@As zLHegv`I%Aj#c5NxWzqLG6VvOfyd8Qh$d>tw`)S=YP3>hp${^fnKl(EqYae}JzT08< zKRs${B0PXy`6=Ezz^@lhOCQqBj~BJpVst1qT}K8}^2;akWKgO($DSR2vG6Yyq&w1w z#qCFjuf9QD)x3R3UD`-^RGi7|!mlp*s-~NZa!2$i(@X1KDj14qeW_mEc=ycp>N`(9 zyf)7m-=&Pdj6aRvj34D94+IcE009ILKmY**5I_I{1Q7U71g0}X`IV*R_2s4I4_8)~ zm)F*(hvOxy8`J4n$dlfB*srAbkpKVy literal 0 HcmV?d00001 diff --git a/db/schema.rb b/db/schema.rb new file mode 100644 index 0000000000..8c0a3f1a07 --- /dev/null +++ b/db/schema.rb @@ -0,0 +1,85 @@ +# encoding: UTF-8 +# This file is auto-generated from the current state of the database. Instead +# of editing this file, please use the migrations feature of Active Record to +# incrementally modify your database, and then regenerate this schema definition. +# +# Note that this schema.rb definition is the authoritative source for your +# database schema. If you need to create the application database on another +# system, you should be using db:schema:load, not running all the migrations +# from scratch. The latter is a flawed and unsustainable approach (the more migrations +# you'll amass, the slower it'll run and the greater likelihood for issues). +# +# It's strongly recommended that you check this file into your version control system. + +ActiveRecord::Schema.define(version: 20161018231156) do + + create_table "order_items", force: :cascade do |t| + t.decimal "unit_price" + t.integer "quantity" + t.integer "product_id_id" + t.integer "order_id_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + add_index "order_items", ["order_id_id"], name: "index_order_items_on_order_id_id" + add_index "order_items", ["product_id_id"], name: "index_order_items_on_product_id_id" + + create_table "orders", force: :cascade do |t| + t.integer "product_id_id" + t.integer "user_id_id" + t.boolean "status" + t.string "first_name" + t.string "last_name" + t.string "email" + t.string "street_address" + t.string "city" + t.string "state" + t.integer "zip" + t.integer "phone" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + add_index "orders", ["product_id_id"], name: "index_orders_on_product_id_id" + add_index "orders", ["user_id_id"], name: "index_orders_on_user_id_id" + + create_table "products", force: :cascade do |t| + t.string "name" + t.text "description" + t.decimal "price" + t.string "photo_url" + t.integer "inventory" + t.string "category" + t.integer "user_id_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + add_index "products", ["user_id_id"], name: "index_products_on_user_id_id" + + create_table "reviews", force: :cascade do |t| + t.integer "user_id_id" + t.text "description" + t.integer "rank" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + add_index "reviews", ["user_id_id"], name: "index_reviews_on_user_id_id" + + create_table "users", force: :cascade do |t| + t.string "first_name" + t.string "last_name" + t.string "email" + t.string "street_address" + t.string "city" + t.string "state" + t.integer "zip" + t.integer "phone" + t.boolean "merchant" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + +end From 280e7e2e5ed5e482883ceb36f5485dff92a2a405 Mon Sep 17 00:00:00 2001 From: Trish Griego Date: Tue, 18 Oct 2016 18:28:02 -0700 Subject: [PATCH 14/46] Created order table. Anticipated that we'd use foundations. Things rendering but not dynamically. --- app/controllers/orders_controller.rb | 2 +- app/views/orders/index.html.erb | 49 ++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/app/controllers/orders_controller.rb b/app/controllers/orders_controller.rb index a282151b34..193d521d96 100644 --- a/app/controllers/orders_controller.rb +++ b/app/controllers/orders_controller.rb @@ -7,7 +7,7 @@ def index def show @myorder = Order.find(params[:id]) if @myorder == nil - render :file 'public/404.html', :status => :not_found + # render :file 'public/404.html', :status => :not_found end end diff --git a/app/views/orders/index.html.erb b/app/views/orders/index.html.erb index d63a69fb54..b3abf1b0a5 100644 --- a/app/views/orders/index.html.erb +++ b/app/views/orders/index.html.erb @@ -1,2 +1,51 @@

Orders#index

Find me in app/views/orders/index.html.erb

+ +

ORDER PAGE

+
    +
  • Payment Info

  • +
  • Name: (order.first_name + order.last_name) <%=%>
  • +
  • email: (order.email)
  • +
  • Delivery Address: (order.street_address, order.city, order.state, order.zip)
  • +
  • Phone: (order.phone)
  • +
    +
+ +

CONTENTS OF ORDER

+ + + + + + + + + + + + + + + + + + + + + + + + + +
ItemQuantityPrice
Coffin14.99
Cape420.99
Minnion213.26
+ + From 2c7b2dfec9ea9031a2714c119563cf2a1b9bebab Mon Sep 17 00:00:00 2001 From: Sassa Kitka Date: Tue, 18 Oct 2016 22:46:09 -0700 Subject: [PATCH 15/46] more detailed gitignore, includes .env - among other things --- .gitignore | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/.gitignore b/.gitignore index 6db3c9a5bc..b52b09898f 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,60 @@ !/log/.keep /tmp +# Ignore this annoying MACOS file which is a caching file and keeps thumbnails .DS_Store + + + +# Ignore the default SQLite database. +/db/*.sqlite3 +/db/*.sqlite3-journal + + +# Ignore this annoying MACOS file which is a caching file and keeps thumbnails +.DS_store + +# See https://help.github.com/articles/ignoring-files for more about ignoring files. +#*.rbc +capybara-*.html +.rspec + +/public/system +/coverage/ +/spec/tmp +**.orig +rerun.txt +pickle-email-*.html + +# TODO Comment out this rule if you are OK with secrets being uploaded to the repo +config/initializers/secret_token.rb + +# Only include if you have production secrets in this file, which is no longer a Rails default +# config/secrets.yml + +# dotenv +# TODO Comment out this rule if environment variables can be committed + +# Hide the .env becuase of secrets +/.env + +## Environment normalization: +/.bundle +/vendor/bundle + +# these should all be checked in to normalize the environment: +# Gemfile.lock, .ruby-version, .ruby-gemset + +# unless supporting rvm < 1.11.0 or doing something fancy, ignore this: +.rvmrc + +# if using bower-rails ignore default bower_components path bower.json files +/vendor/assets/bower_components +*.bowerrc +bower.json + +# Ignore pow environment settings +.powenv + +# Ignore Byebug command history file. +.byebug_history \ No newline at end of file From fe2a0431eecd174e67f05b745e03f5afeaac552a Mon Sep 17 00:00:00 2001 From: Sassa Kitka Date: Tue, 18 Oct 2016 22:47:03 -0700 Subject: [PATCH 16/46] tell rails to use omniauth for authentication --- config/initializers/omniauth.rb | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 config/initializers/omniauth.rb diff --git a/config/initializers/omniauth.rb b/config/initializers/omniauth.rb new file mode 100644 index 0000000000..36073da138 --- /dev/null +++ b/config/initializers/omniauth.rb @@ -0,0 +1,4 @@ +Rails.application.config.middleware.use OmniAuth::Builder do + # binding.pry + provider :github, ENV["GITHUB_CLIENT_ID"], ENV["GITHUB_CLIENT_SECRET"], scope: "user:email" +end \ No newline at end of file From 47aeea3c903ccdefd80f9a7a8a62365f05fa77c5 Mon Sep 17 00:00:00 2001 From: Sassa Kitka Date: Tue, 18 Oct 2016 22:47:45 -0700 Subject: [PATCH 17/46] fleshes out create and destroy methods --- app/controllers/sessions_controller.rb | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index aff03666e0..cbbc2d8b3d 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -9,6 +9,31 @@ def new end def create + auth_hash = request.env['omniauth.auth'] + #below is us saying we don't know them (unless they have a uid) + return redirect to login_failure_path unless auth_hash['uid'] + + @user = User.find_by(uid: auth_hash[:uid], provider: 'github') + #github knows them, but do we? if not, let's make them an account + if @user.nil? + # User doesn't match anything in the DB. + # Attempt to create a new user. + @user = User.build_from_github(auth_hash) + flash[:notice] = "Unable to Save the User" +#using method below to save time + return redirect_to root_path unless @user.save + # render :creation_failure unless @user.save + end + + # Save the user ID in the session + session[:user_id] = @user.id + + + # redirect_to sessions_path +#doing this other thing to save time + flash[:notice] = "Successfully Logged in!" + redirect_to root_path + end def edit @@ -18,5 +43,6 @@ def update end def destroy + session[:user_id] = nil end end From 7d20d94565981c05b3619a7170cd4a3af7c4fd0e Mon Sep 17 00:00:00 2001 From: Sassa Kitka Date: Tue, 18 Oct 2016 22:48:29 -0700 Subject: [PATCH 18/46] requires minitest reporters and awesome print, defines omniauth setup method --- test/test_helper.rb | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/test/test_helper.rb b/test/test_helper.rb index 92e39b2d78..af7092126d 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -2,9 +2,29 @@ require File.expand_path('../../config/environment', __FILE__) require 'rails/test_help' +#add colors and make it more readable +require 'minitest/reporters' +require "awesome_print" + class ActiveSupport::TestCase # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order. fixtures :all +#tell it to use the thing to make it more readable + MiniTest::Reporters.use! # Add more helper methods to be used by all tests here... + +#omniauth setup method + def setup + # Once you have enabled test mode, all requests + # to OmniAuth will be short circuited to use the mock authentication hash. + # A request to /auth/provider will redirect immediately to /auth/provider/callback. + OmniAuth.config.test_mode = true + + # The mock_auth configuration allows you to set per-provider (or default) authentication + # hashes to return during testing. + OmniAuth.config.mock_auth[:github] = OmniAuth::AuthHash.new({ + provider: 'github', uid: '123545', info: { email: "a@b.com", name: "Ada" } + }) + end end From a1ac75721204f263783baf524053902899e03957 Mon Sep 17 00:00:00 2001 From: Sassa Kitka Date: Tue, 18 Oct 2016 22:50:04 -0700 Subject: [PATCH 19/46] detailed tests and helper method (login_a_user method, can create user and user logs in twice wo creating 2nd user tests) --- test/controllers/sessions_controller_test.rb | 24 ++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/test/controllers/sessions_controller_test.rb b/test/controllers/sessions_controller_test.rb index edb3fc6223..c66208b47b 100644 --- a/test/controllers/sessions_controller_test.rb +++ b/test/controllers/sessions_controller_test.rb @@ -36,4 +36,28 @@ class SessionsControllerTest < ActionController::TestCase assert_response :success end + def login_a_user + request.env['omniauth.auth'] = OmniAuth.config.mock_auth[:github] + get :create, {provider: "github"} + end + + test "Can Create a user" do + assert_difference('User.count', 1) do + login_a_user + assert_response :redirect + assert_redirected_to root_path + end + end + + test "If a user logs in twice it doesn't create a 2nd user" do + assert_difference('User.count', 1) do + login_a_user + end + assert_no_difference('User.count') do + login_a_user + assert_response :redirect + assert_redirected_to root_path + end + end + end From d847eba8ee39995a46cb60e16b7acce906572531 Mon Sep 17 00:00:00 2001 From: Sassa Kitka Date: Tue, 18 Oct 2016 22:55:35 -0700 Subject: [PATCH 20/46] includes tests to only allow users to see own products-orders and to not see other people's -- and to only see own if logged in --- test/controllers/orders_controller_test.rb | 27 +++++++++++++++++++ test/controllers/products_controller_test.rb | 28 ++++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/test/controllers/orders_controller_test.rb b/test/controllers/orders_controller_test.rb index ec871721c6..245d0b6887 100644 --- a/test/controllers/orders_controller_test.rb +++ b/test/controllers/orders_controller_test.rb @@ -36,4 +36,31 @@ class OrdersControllerTest < ActionController::TestCase assert_response :success end + #example used was in TaskRails Task Controller, needs fleshing out with fixture info + + test "If a user is not logged in they cannot see their task." do + session[:user_id] = nil # ensure no one is logged in + + get :show, id: orders(:SOMEORDER).id + # if they are not logged in they cannot see the resource and are redirected to login. + assert_redirected session_path + assert_equal "You must be logged in first", flash[:notice] + end + + test "Make sure a user can see their orders" do + session[:user_id] = users(:SOMENAME).id + get :show, id: orders(:SOMENAME).id + + assert_response :success + end + + test "Make Sure a User Cannot See Another User's Orders" do + session[:user_id] = users(:SOMENAME).id + get :show, id: orders(:SOMEORDER).id + get :show, id: orders(:SOMEORDER).id + + assert_response :redirect + assert_equal flash[:notice], "You do not have access to that information." + end + end diff --git a/test/controllers/products_controller_test.rb b/test/controllers/products_controller_test.rb index 5e7440a0d5..4498bf5426 100644 --- a/test/controllers/products_controller_test.rb +++ b/test/controllers/products_controller_test.rb @@ -36,4 +36,32 @@ class ProductsControllerTest < ActionController::TestCase assert_response :success end + #example used was in TaskRails Task Controller, needs fleshing out with fixture info + + test "If a user is not logged in they cannot see their product." do + session[:user_id] = nil # ensure no one is logged in + + get :show, id: products(:SOMEPRODUCT).id + # if they are not logged in they cannot see the resource and are redirected to login. + assert_redirected session_path + assert_equal "You must be logged in first", flash[:notice] + end + + test "Make sure a user can see their products" do + session[:user_id] = users(:SOMENAME).id + get :show, id: products(:SOMEPRODUCT).id + + assert_response :success + end + + test "Make Sure a User Cannot See Another User's products" do + session[:user_id] = users(:SOMENAME).id + get :show, id: products(:SOMEPRODUCT).id + get :show, id: products(:SOMEPRODUCT).id + + assert_response :redirect + assert_equal flash[:notice], "You do not have access to that information." + end + + end From f2f8f0de63cd8e0047db4a1e0b303e22b56e409d Mon Sep 17 00:00:00 2001 From: Maya Wang Date: Wed, 19 Oct 2016 00:51:31 -0700 Subject: [PATCH 21/46] completed homepage index and show_catagory mvc logic --- app/controllers/homepages_controller.rb | 20 +++------ app/controllers/products_controller.rb | 6 ++- app/views/homepages/index.html.erb | 12 ++++- app/views/homepages/show.html.erb | 2 - app/views/homepages/show_category.html.erb | 9 ++++ app/views/layouts/application.html.erb | 9 +++- ...index.html.erb => index_products.html.erb} | 2 +- .../{show.html.erb => show_product.html.erb} | 0 config/routes.rb | 29 +++++++----- test/controllers/homepages_controller_test.rb | 28 +++--------- test/fixtures/products.yml | 44 +++++++++++++------ 11 files changed, 91 insertions(+), 70 deletions(-) delete mode 100644 app/views/homepages/show.html.erb create mode 100644 app/views/homepages/show_category.html.erb rename app/views/products/{index.html.erb => index_products.html.erb} (61%) rename app/views/products/{show.html.erb => show_product.html.erb} (100%) diff --git a/app/controllers/homepages_controller.rb b/app/controllers/homepages_controller.rb index a01b4d1f45..2b69840fca 100644 --- a/app/controllers/homepages_controller.rb +++ b/app/controllers/homepages_controller.rb @@ -1,22 +1,12 @@ class HomepagesController < ApplicationController - def index - end - - def show - end - - def new - end - - def create - end - def edit + def root + @product_categories = Product.uniq.pluck(:category) end - def update + def show_category + @product_category = params[:category] + @products_in_category = Product.select(:category) end - def destroy - end end diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index 6cc58717c0..f24eb10312 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -1,8 +1,10 @@ class ProductsController < ApplicationController - def index + def index_products + @products = Product.all.order("name") end - def show + def show_products + end def new diff --git a/app/views/homepages/index.html.erb b/app/views/homepages/index.html.erb index 37d3ce7099..27a6519683 100644 --- a/app/views/homepages/index.html.erb +++ b/app/views/homepages/index.html.erb @@ -1,2 +1,10 @@ -

Homepages#index

-

Find me in app/views/homepages/index.html.erb

+

Welcome to Vampazon!

+ +

Shop by Category

+<% @product_categories.each do |product_category| %> + + <%= link_to "#{product_category}", show_category_path(product_category.category)%> +<% end %> + + +

<%= link_to "Browse All collections" index_products_path%>

diff --git a/app/views/homepages/show.html.erb b/app/views/homepages/show.html.erb deleted file mode 100644 index dea05df968..0000000000 --- a/app/views/homepages/show.html.erb +++ /dev/null @@ -1,2 +0,0 @@ -

Homepages#show

-

Find me in app/views/homepages/show.html.erb

diff --git a/app/views/homepages/show_category.html.erb b/app/views/homepages/show_category.html.erb new file mode 100644 index 0000000000..eef41de354 --- /dev/null +++ b/app/views/homepages/show_category.html.erb @@ -0,0 +1,9 @@ +

<%= @product_category %>

+ +<% @products_in_category.each do |product| %> + + <%= link_to image_tag("product.photo_url", :class => "product_img"), show_products_path %> + <%= link_to product.name, show_products_path %> + <%= product.price %> + +<% end %> diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 9b70e01c2e..b02f285015 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -1,13 +1,18 @@ - Betsy - <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> + Vampazon + <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> <%= csrf_meta_tags %> + + + <%= yield %> diff --git a/app/views/products/index.html.erb b/app/views/products/index_products.html.erb similarity index 61% rename from app/views/products/index.html.erb rename to app/views/products/index_products.html.erb index f8eeb82674..96699615b8 100644 --- a/app/views/products/index.html.erb +++ b/app/views/products/index_products.html.erb @@ -1,2 +1,2 @@ -

Products#index

+

Browse All Collections

Find me in app/views/products/index.html.erb

diff --git a/app/views/products/show.html.erb b/app/views/products/show_product.html.erb similarity index 100% rename from app/views/products/show.html.erb rename to app/views/products/show_product.html.erb diff --git a/config/routes.rb b/config/routes.rb index b4c40aa031..12fd4a1c8b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,17 +1,20 @@ Rails.application.routes.draw do - get 'homepages/index' + root to: 'homepages#index', as: 'root' - get 'homepages/show' + get 'homepages/:category/show' => 'homepages/show_category', as: 'show_category' - get 'homepages/new' - get 'homepages/create' - - get 'homepages/edit' - - get 'homepages/update' + # get 'homepages/new' + # + # get 'homepages/create' + # + # get 'homepages/edit' + # + # get 'homepages/update' + # + # get 'homepages/destroy' - get 'homepages/destroy' + #============== Users ================== get 'users/index' @@ -27,7 +30,9 @@ get 'users/destroy' - get 'products/index' + #============== Products ================== + + get 'products/index' => 'products#index_products', as: 'index_products' get 'products/show' @@ -41,6 +46,8 @@ get 'products/destroy' + #============== Sessions ================== + get 'sessions/index' get 'sessions/show' @@ -55,6 +62,8 @@ get 'sessions/destroy' + #============== Orders ================== + get 'orders/index' get 'orders/show' diff --git a/test/controllers/homepages_controller_test.rb b/test/controllers/homepages_controller_test.rb index 559922d863..ab068bca9e 100644 --- a/test/controllers/homepages_controller_test.rb +++ b/test/controllers/homepages_controller_test.rb @@ -1,3 +1,4 @@ + require 'test_helper' class HomepagesControllerTest < ActionController::TestCase @@ -6,34 +7,15 @@ class HomepagesControllerTest < ActionController::TestCase assert_response :success end - test "should get show" do - get :show - assert_response :success - end - - test "should get new" do - get :new - assert_response :success - end - - test "should get create" do - get :create - assert_response :success + test "assigns the @product_categories" do + expect(assigns(:product_categories).not_to be_nil end - test "should get edit" do - get :edit + test "should get show product categories" do + get :show, id: items(:album_sample).id assert_response :success end - test "should get update" do - get :update - assert_response :success - end - test "should get destroy" do - get :destroy - assert_response :success - end end diff --git a/test/fixtures/products.yml b/test/fixtures/products.yml index 31512c4de0..3faa8892b2 100644 --- a/test/fixtures/products.yml +++ b/test/fixtures/products.yml @@ -1,19 +1,37 @@ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html -one: - name: MyString - description: MyText +product1: + name: sunscreen + description: SPF10000 + price: 99.99 + photo_url: https://unsplash.it/200 + inventory: 20 + category: personal_care + user_id: 1 + +product2: + name: coffin + description: softest conforty bed... price: 9.99 - photo_url: MyString + photo_url: https://unsplash.it/200 + inventory: 2 + category: Houseware + user_id: 2 + +product3: + name: cape + description: why I am so handsome. + price: 229.99 + photo_url: https://unsplash.it/200 inventory: 1 - category: MyString - user_id_id: + category: clothing + user_id: 3 -two: - name: MyString - description: MyText +product4: + name: + description: I treat them as my family. price: 9.99 - photo_url: MyString - inventory: 1 - category: MyString - user_id_id: + photo_url: https://unsplash.it/200 + inventory: 1000 + category: minion + user_id: 4 From 14698ec9979a04a279efd078dd7c35e5c646adb3 Mon Sep 17 00:00:00 2001 From: Maya Wang Date: Wed, 19 Oct 2016 02:47:39 -0700 Subject: [PATCH 22/46] completed product index show mvc logic (include show average review) --- app/controllers/products_controller.rb | 5 ++++- app/models/product.rb | 7 ++++++- app/models/review.rb | 1 + app/views/homepages/index.html.erb | 2 +- app/views/homepages/show_category.html.erb | 2 -- app/views/products/index_products.html.erb | 7 ++++++- app/views/products/show_product.html.erb | 11 +++++++++-- config/routes.rb | 2 +- 8 files changed, 28 insertions(+), 9 deletions(-) diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index f24eb10312..50f2ea446a 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -4,7 +4,10 @@ def index_products end def show_products - + @product = Product.find(pramas[:id].to_i) + @seller = User.find(@product.user_id) + @reviews = Review.select(@product.id) + end def new diff --git a/app/models/product.rb b/app/models/product.rb index 2863e51e39..6a3c840063 100644 --- a/app/models/product.rb +++ b/app/models/product.rb @@ -2,5 +2,10 @@ class Product < ActiveRecord::Base belongs_to :user_id has_many :order_id has_many :order_item - + + def average_rating + product = Product.find(pramas[:id].to_i) + reviews = Review.select(product.id) + return reviews.average(:rank) + end end diff --git a/app/models/review.rb b/app/models/review.rb index 148a3657cc..77e10d0ac9 100644 --- a/app/models/review.rb +++ b/app/models/review.rb @@ -1,3 +1,4 @@ class Review < ActiveRecord::Base belongs_to :user_id + validates :rank, presence: true, only_integer: true, :inclusion => 1..10, message: "only allows integers 1-5" end diff --git a/app/views/homepages/index.html.erb b/app/views/homepages/index.html.erb index 27a6519683..6939c6e1b8 100644 --- a/app/views/homepages/index.html.erb +++ b/app/views/homepages/index.html.erb @@ -3,7 +3,7 @@

Shop by Category

<% @product_categories.each do |product_category| %> - <%= link_to "#{product_category}", show_category_path(product_category.category)%> + <%= link_to product_category, show_category_path(product_category.category)%> <% end %> diff --git a/app/views/homepages/show_category.html.erb b/app/views/homepages/show_category.html.erb index eef41de354..36e052db87 100644 --- a/app/views/homepages/show_category.html.erb +++ b/app/views/homepages/show_category.html.erb @@ -1,9 +1,7 @@

<%= @product_category %>

<% @products_in_category.each do |product| %> - <%= link_to image_tag("product.photo_url", :class => "product_img"), show_products_path %> <%= link_to product.name, show_products_path %> <%= product.price %> - <% end %> diff --git a/app/views/products/index_products.html.erb b/app/views/products/index_products.html.erb index 96699615b8..f5b2ea2fc9 100644 --- a/app/views/products/index_products.html.erb +++ b/app/views/products/index_products.html.erb @@ -1,2 +1,7 @@

Browse All Collections

-

Find me in app/views/products/index.html.erb

+ +<% @products.each do |product| %> + <%= link_to image_tag ("product.photo_url"), :class => "product_img", show_products_path(product.id) %> + <%= link_to product.name, show_products_path(product.id) %> + <%= product.price %> +<% end %> diff --git a/app/views/products/show_product.html.erb b/app/views/products/show_product.html.erb index 5f44ec44d2..cc1bf3aa53 100644 --- a/app/views/products/show_product.html.erb +++ b/app/views/products/show_product.html.erb @@ -1,2 +1,9 @@ -

Products#show

-

Find me in app/views/products/show.html.erb

+

@product.name

+<%= image_tag(@product.url), :class => "class_name" %> +Price: <%= @product.price %> +Description: <%= @product.description %> +Inventory: <%= @product.inventory %> +Category: <%= @product.category %> +Seller: <%= @seller.name %> +Average rating: <%= @product.average_rating %> +review: <%= @review.description %> diff --git a/config/routes.rb b/config/routes.rb index 12fd4a1c8b..742f01a52b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -34,7 +34,7 @@ get 'products/index' => 'products#index_products', as: 'index_products' - get 'products/show' + get 'products/id:/show' => 'products#show_products', as: 'show_products' get 'products/new' From fc52224cf61b76297914d7f88472eda112ea0a57 Mon Sep 17 00:00:00 2001 From: Maya Wang Date: Wed, 19 Oct 2016 03:11:02 -0700 Subject: [PATCH 23/46] working on Browse products by seller. Completed controller&router, designing views(search?drop_box+list?) --- app/controllers/products_controller.rb | 3 +++ app/views/products/by_seller_products.html.erb | 1 + app/views/products/index_products.html.erb | 2 ++ config/routes.rb | 2 ++ 4 files changed, 8 insertions(+) create mode 100644 app/views/products/by_seller_products.html.erb diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index 50f2ea446a..99a991d20f 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -7,7 +7,10 @@ def show_products @product = Product.find(pramas[:id].to_i) @seller = User.find(@product.user_id) @reviews = Review.select(@product.id) + end + def by_seller_products + @products = Product.select(:user_id) end def new diff --git a/app/views/products/by_seller_products.html.erb b/app/views/products/by_seller_products.html.erb new file mode 100644 index 0000000000..6660fdf399 --- /dev/null +++ b/app/views/products/by_seller_products.html.erb @@ -0,0 +1 @@ +

Browse by Seller

diff --git a/app/views/products/index_products.html.erb b/app/views/products/index_products.html.erb index f5b2ea2fc9..b55cdd33f3 100644 --- a/app/views/products/index_products.html.erb +++ b/app/views/products/index_products.html.erb @@ -5,3 +5,5 @@ <%= link_to product.name, show_products_path(product.id) %> <%= product.price %> <% end %> + +

<%= link_to "Browse by Seller", by_seller_products_path %>

diff --git a/config/routes.rb b/config/routes.rb index 742f01a52b..6cf98bccef 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -34,6 +34,8 @@ get 'products/index' => 'products#index_products', as: 'index_products' + get 'products/by_seller' => 'products#by_seller_products', as: 'by_seller_products' + get 'products/id:/show' => 'products#show_products', as: 'show_products' get 'products/new' From a9de5aa50ae3ebf6d5f09a9d16452e280fee967f Mon Sep 17 00:00:00 2001 From: Maya Wang Date: Wed, 19 Oct 2016 08:57:31 -0700 Subject: [PATCH 24/46] changed .select to .wherein homepages controller and product controller. also in product model --- app/controllers/homepages_controller.rb | 2 +- app/controllers/products_controller.rb | 4 ++-- app/models/product.rb | 2 +- app/views/products/index_products.html.erb | 2 -- app/views/products/show_product.html.erb | 2 +- 5 files changed, 5 insertions(+), 7 deletions(-) diff --git a/app/controllers/homepages_controller.rb b/app/controllers/homepages_controller.rb index 2b69840fca..230e0b3d0d 100644 --- a/app/controllers/homepages_controller.rb +++ b/app/controllers/homepages_controller.rb @@ -6,7 +6,7 @@ def root def show_category @product_category = params[:category] - @products_in_category = Product.select(:category) + @products_in_category = Product.where(:category) end end diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index 99a991d20f..b6a0a8ed84 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -6,11 +6,11 @@ def index_products def show_products @product = Product.find(pramas[:id].to_i) @seller = User.find(@product.user_id) - @reviews = Review.select(@product.id) + @reviews = Review.where(@product.id) end def by_seller_products - @products = Product.select(:user_id) + @products = Product.where(:user_id) end def new diff --git a/app/models/product.rb b/app/models/product.rb index 6a3c840063..e566147736 100644 --- a/app/models/product.rb +++ b/app/models/product.rb @@ -5,7 +5,7 @@ class Product < ActiveRecord::Base def average_rating product = Product.find(pramas[:id].to_i) - reviews = Review.select(product.id) + reviews = Review.where(product.id) return reviews.average(:rank) end end diff --git a/app/views/products/index_products.html.erb b/app/views/products/index_products.html.erb index b55cdd33f3..f5b2ea2fc9 100644 --- a/app/views/products/index_products.html.erb +++ b/app/views/products/index_products.html.erb @@ -5,5 +5,3 @@ <%= link_to product.name, show_products_path(product.id) %> <%= product.price %> <% end %> - -

<%= link_to "Browse by Seller", by_seller_products_path %>

diff --git a/app/views/products/show_product.html.erb b/app/views/products/show_product.html.erb index cc1bf3aa53..1088ffbb4d 100644 --- a/app/views/products/show_product.html.erb +++ b/app/views/products/show_product.html.erb @@ -4,6 +4,6 @@ Price: <%= @product.price %> Description: <%= @product.description %> Inventory: <%= @product.inventory %> Category: <%= @product.category %> -Seller: <%= @seller.name %> +Seller: <%= link_to @seller.name, by_seller_products_path %> Average rating: <%= @product.average_rating %> review: <%= @review.description %> From dd25b1470c8031f56891be8a10f7b15b5f05f6ee Mon Sep 17 00:00:00 2001 From: Elle Vargas Date: Wed, 19 Oct 2016 10:36:42 -0700 Subject: [PATCH 25/46] Delete .ruby-gemset --- .ruby-gemset | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .ruby-gemset diff --git a/.ruby-gemset b/.ruby-gemset deleted file mode 100644 index d5c660823f..0000000000 --- a/.ruby-gemset +++ /dev/null @@ -1 +0,0 @@ -betsy From d7f64a73b657476f8a56e2a50831b3acf4ecab47 Mon Sep 17 00:00:00 2001 From: Elle Vargas Date: Wed, 19 Oct 2016 10:36:59 -0700 Subject: [PATCH 26/46] Delete .ruby-version --- .ruby-version | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .ruby-version diff --git a/.ruby-version b/.ruby-version deleted file mode 100644 index 2bf1c1ccf3..0000000000 --- a/.ruby-version +++ /dev/null @@ -1 +0,0 @@ -2.3.1 From b86fee6d8e161a07cf549509f94d05647ce02236 Mon Sep 17 00:00:00 2001 From: Elle Vargas Date: Wed, 19 Oct 2016 10:45:00 -0700 Subject: [PATCH 27/46] everything got all donked up but Chris has approved this version --- Gemfile.lock | 50 ++++++++++++------------ betsy_development | Bin 0 -> 61440 bytes betsy_test | 0 db/schema.rb | 85 +++++++++++++++++++++++++++++++++++++++++ db/seeds.rb | 6 +++ seed_csvs/products.csv | 24 ++++++++++++ 6 files changed, 141 insertions(+), 24 deletions(-) create mode 100644 betsy_development create mode 100644 betsy_test create mode 100644 db/schema.rb create mode 100644 seed_csvs/products.csv diff --git a/Gemfile.lock b/Gemfile.lock index 55d4c2d448..1320ee2b37 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -45,7 +45,7 @@ GEM binding_of_caller (0.7.2) debug_inspector (>= 0.0.1) builder (3.2.2) - byebug (8.2.5) + byebug (9.0.6) coderay (1.1.1) coffee-rails (4.1.1) coffee-script (>= 2.2.0) @@ -54,24 +54,24 @@ GEM coffee-script-source execjs coffee-script-source (1.10.0) - concurrent-ruby (1.0.1) + concurrent-ruby (1.0.2) debug_inspector (0.0.2) dotenv (2.1.1) dotenv-rails (2.1.1) dotenv (= 2.1.1) railties (>= 4.0, < 5.1) erubis (2.7.0) - execjs (2.6.0) + execjs (2.7.0) faraday (0.9.2) multipart-post (>= 1.2, < 3) - globalid (0.3.6) + globalid (0.3.7) activesupport (>= 4.1.0) hashie (3.4.6) i18n (0.7.0) - jbuilder (2.4.1) + jbuilder (2.6.0) activesupport (>= 3.0.0, < 5.1) multi_json (~> 1.2) - jquery-rails (4.1.1) + jquery-rails (4.2.1) rails-dom-testing (>= 1, < 3) railties (>= 4.2.0) thor (>= 0.14, < 2.0) @@ -82,16 +82,16 @@ GEM mail (2.6.4) mime-types (>= 1.16, < 4) method_source (0.8.2) - mime-types (3.0) + mime-types (3.1) mime-types-data (~> 3.2015) - mime-types-data (3.2016.0221) - mini_portile2 (2.0.0) - minitest (5.8.4) - multi_json (1.11.3) + mime-types-data (3.2016.0521) + mini_portile2 (2.1.0) + minitest (5.9.1) + multi_json (1.12.1) multi_xml (0.5.5) multipart-post (2.0.0) - nokogiri (1.6.7.2) - mini_portile2 (~> 2.0.0.rc2) + nokogiri (1.6.8.1) + mini_portile2 (~> 2.1.0) oauth2 (1.2.0) faraday (>= 0.8, < 0.10) jwt (~> 1.0) @@ -138,37 +138,39 @@ GEM activesupport (= 4.2.6) rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) - rake (11.1.2) + rake (11.3.0) rdoc (4.2.2) json (~> 1.4) sass (3.4.22) - sass-rails (5.0.4) - railties (>= 4.0.0, < 5.0) + sass-rails (5.0.6) + railties (>= 4.0.0, < 6) sass (~> 3.1) sprockets (>= 2.8, < 4.0) sprockets-rails (>= 2.0, < 4.0) tilt (>= 1.1, < 3) - sdoc (0.4.1) + sdoc (0.4.2) json (~> 1.7, >= 1.7.7) rdoc (~> 4.0) slop (3.6.0) - spring (1.7.1) - sprockets (3.6.0) + spring (2.0.0) + activesupport (>= 4.2) + sprockets (3.7.0) concurrent-ruby (~> 1.0) rack (> 1, < 3) - sprockets-rails (3.0.4) + sprockets-rails (3.2.0) actionpack (>= 4.0) activesupport (>= 4.0) sprockets (>= 3.0.0) sqlite3 (1.3.12) thor (0.19.1) thread_safe (0.3.5) - tilt (2.0.2) - turbolinks (2.5.3) - coffee-rails + tilt (2.0.5) + turbolinks (5.0.1) + turbolinks-source (~> 5) + turbolinks-source (5.0.0) tzinfo (1.2.2) thread_safe (~> 0.1) - uglifier (3.0.0) + uglifier (3.0.2) execjs (>= 0.3.0, < 3) web-console (2.3.0) activemodel (>= 4.0) diff --git a/betsy_development b/betsy_development new file mode 100644 index 0000000000000000000000000000000000000000..c7e7d64c7203d0eb006f253a0cdd5c5f683a1891 GIT binary patch literal 61440 zcmeI(Pfy!s0LSr|5X}G3Nt1;Tk{2$GN(BJ{+hNiei&|6&EdyyBrpQg6g4M(U+hMe~ z(C!WFCG4~H6U*u6k9KTd zm`@sR-SW-V)J#g#QlFS+DwWdZGb^9n$CO+c?!J+)nzDS=qMo|@*LcuyI`exf`%QLq z>ZhrvlOIj|Jiayd%h1z2d(4aDRJubN|SEP&_g>4-fXXOS0K+ zv2I3w8&1yj#f2}+T+4ZyQ`V`t!tzD6Z238} zDwlk_E+Sh#4N9-5&$mV=bz^ryYu!~`8*Vkw^hG_i?Ys?em71wRz)F3Piqf*Jtkeh6 zYJI*nJ)s+qh1Ot5gdEnT7`P8*5LZ&GycHOGU%+H#ZEuPq}=a(I;E+@;m zQ3MtF9N;!{HI*&K<3N zg7nU6@-w6CiL<6~DkAna6VZ!R-VQt#Wy}2K{j_cvhW4@%W)SSO7ycQJv=2Wp-|evb zpB^=J5gfpd{1opU;MWVMr4Q-G$4gpkDLj;#jxB>JdzBM;GAP&WW7i74Sa^K}>5lYa zY5URPt8Y+OHE$nMeH#gmigTG=@YN+>({y7=?uZ^{+P7|B!B8~ozIt`z-80v#?>zb7 z+B}o}E|vW|`)BsI?2mGh2LcEnfB*srAbF7iMC0R#|0 z009ILKmY**5I_Kde_i0cbY6>I`)A@ss~f|yB6;t5h8#90tg_000IagfB*srBwK*{|H;mu z(IbEW0tg_000IagfB*srBtwAv|H;UiQ6hi<0tg_000IagfB*srBwK*%|77RS=n+5w z0R#|0009ILKmY**k|DtF|C5n3qeK7!1Q0*~0R#|0009ILNVWj?|C60RqelP%1Q0*~ z0R#|0009ILNQMB{|H;UiQ6hi<0tg_000IagfB*srBwK*r|0g?tMvnjj2q1s}0tg_0 k00IagkPHFt|0g47Mu`9d2q1s}0tg_000IagkZgf}09U4@6aWAK literal 0 HcmV?d00001 diff --git a/betsy_test b/betsy_test new file mode 100644 index 0000000000..e69de29bb2 diff --git a/db/schema.rb b/db/schema.rb new file mode 100644 index 0000000000..8c0a3f1a07 --- /dev/null +++ b/db/schema.rb @@ -0,0 +1,85 @@ +# encoding: UTF-8 +# This file is auto-generated from the current state of the database. Instead +# of editing this file, please use the migrations feature of Active Record to +# incrementally modify your database, and then regenerate this schema definition. +# +# Note that this schema.rb definition is the authoritative source for your +# database schema. If you need to create the application database on another +# system, you should be using db:schema:load, not running all the migrations +# from scratch. The latter is a flawed and unsustainable approach (the more migrations +# you'll amass, the slower it'll run and the greater likelihood for issues). +# +# It's strongly recommended that you check this file into your version control system. + +ActiveRecord::Schema.define(version: 20161018231156) do + + create_table "order_items", force: :cascade do |t| + t.decimal "unit_price" + t.integer "quantity" + t.integer "product_id_id" + t.integer "order_id_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + add_index "order_items", ["order_id_id"], name: "index_order_items_on_order_id_id" + add_index "order_items", ["product_id_id"], name: "index_order_items_on_product_id_id" + + create_table "orders", force: :cascade do |t| + t.integer "product_id_id" + t.integer "user_id_id" + t.boolean "status" + t.string "first_name" + t.string "last_name" + t.string "email" + t.string "street_address" + t.string "city" + t.string "state" + t.integer "zip" + t.integer "phone" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + add_index "orders", ["product_id_id"], name: "index_orders_on_product_id_id" + add_index "orders", ["user_id_id"], name: "index_orders_on_user_id_id" + + create_table "products", force: :cascade do |t| + t.string "name" + t.text "description" + t.decimal "price" + t.string "photo_url" + t.integer "inventory" + t.string "category" + t.integer "user_id_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + add_index "products", ["user_id_id"], name: "index_products_on_user_id_id" + + create_table "reviews", force: :cascade do |t| + t.integer "user_id_id" + t.text "description" + t.integer "rank" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + add_index "reviews", ["user_id_id"], name: "index_reviews_on_user_id_id" + + create_table "users", force: :cascade do |t| + t.string "first_name" + t.string "last_name" + t.string "email" + t.string "street_address" + t.string "city" + t.string "state" + t.integer "zip" + t.integer "phone" + t.boolean "merchant" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + +end diff --git a/db/seeds.rb b/db/seeds.rb index 4edb1e857e..497e7729f0 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -5,3 +5,9 @@ # # cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }]) # Mayor.create(name: 'Emanuel', city: cities.first) + +require 'csv' + + CSV.foreach ('seed_csvs/products.csv') do |csv_obj| + Product.create(name: csv_obj[1], description: csv_obj[2], price: csv_obj[3], photo_url: csv_obj[4], inventory: csv_obj[5], category: csv_obj[6]) + end diff --git a/seed_csvs/products.csv b/seed_csvs/products.csv new file mode 100644 index 0000000000..74c7fae60b --- /dev/null +++ b/seed_csvs/products.csv @@ -0,0 +1,24 @@ +1,"Spooky ghosts","They moan, they groan, they slam doors and squeak floorboards! Earplugs sold separately.",124.99,"http://imgur.com/UZWKl9F",7,"Minions",5 +2,"Igor","First-rate thrall with a pleasant attitude and half a century of experience. Contract involved - Igor is a MinUnion member.",95000.00,http://imgur.com/00513sD,1,"Minions",5 +3,"Chad","Chad is here for you with his winning smile! Chad is definitely not a plant sent by the Anti-Vampire Brigade. Chaaaaad.",350.00,"http://imgur.com/7cMaYEp",38,"Minions",4 +4,"Gargoyles","Like the kind from the popular children's television show",22.99,"http://imgur.com/ClxQerz",7,"Minions",6 +5,"Bats","A vicious swarm for protecting your home! Rabies shot sold separately.",500.00,"http://imgur.com/nCfjOJI",42,"Minions",8 +6,"Wolves","They travel in packs and howl at the moon and eat watermelon sometimes! A must-have for any foreboding castle.",250.00,"http://imgur.com/GcnolsB",14,"Minions",4 +7,"Coffins","Yass queen! Comes in marble, onyx, and artisanal oak, cherry, walnut, and maple.",799.00,"http://imgur.com/sHCDhw8",12,"Home Decor",5 +8,"Blackout Curtains","Perfect for a restful slumber uninterrupted by a scorching fiery death from mid-morning sunbeams",40.00,"http://imgur.com/BjlfVAV",3,"Home Decor",5 +9,"Goblets","We could all use more for hurling across the room in a fit of vampire drama. Pitchers are currently unavailable - we hurled our stock across the room because reasons.",22.00,"http://imgur.com/oCMETRz",6,"Home Decor",1 +10,"Candles","Nothing sets the mood quite like candlelight. Candelabra included!",39.99,"http://imgur.com/aKSJbaZ",17,"Home Decor",3 +11,"Snackles","Keep your next meal from becoming to-go!",19.99,"http://imgur.com/RyhAlu7",1,"Home Decor",2 +12,"Suspiciously Fresh Red Roses","Are they fake? Do you have a garden somewhere? Why don't they ever wilt??? Keep your guests guessing with these fabulous flowers!",12.99,"http://imgur.com/Xb1w1LW",317,"Home Decor",1 +13,"Capes","Is it hard work, looking so good? Available in all colors.",49.99,"http://imgur.com/7TXpk6B",5,"Fashion",6 +14,"Tuxedoes","Be mysterious - hand out free kittens. Pairs well with our cape selection.",69.99,"http://imgur.com/juAzdi9",14,"Fashion",8 +15,"Anti-Stake Armor","Everyone has bad days. Plan in advance for the Anti-Vampire Brigade. Worn here by the brilliant Aishwarya Rai Bachchan.",129.99,"http://imgur.com/1zvn5GQ",3,"Fashion",8 +16,"Pajamas","Perfect for the undead in your life who enjoys a night in. Also available in Elmo, Oscar, and Big Bird.",31.99,"http://imgur.com/6v8U5ra",15,"Fashion",6 +17,"Spandex","Just like it says on the tin. Nothing else withstands the bat transformation, let's be real here.",15.99,"http://imgur.com/ylii8DV",2,"Fashion",6 +18,"Bat Goggles","Keep the wind out of your eyes while flying! Worn here by Colonel Sassacre.",11.99,"http://imgur.com/kSTl41l",9,"Fashion",3 +19,"SPF 10,000 Sunscreen","Our own proprietary blend! * Note: Your results may vary.",7.99,"http://imgur.com/JhsEiQ4",10,"Personal Care",1 +20,"Toothbrushes","Keep those fangs strong! One tube of Tasty O- Toothpaste included.",3.99,"http://imgur.com/N7rovQH",5,"Personal Care",5 +21,"Hematophobia And You","A self-help book for those of us who have a more complicated relationships with blood.",16.99,"http://imgur.com/cxohklG",3,"Personal Care",2 +22,"Bronzer","Put a little color back in those cheeks! Available in all colors - we customize just for you! Mirror not included.",14.99,"http://imgur.com/1QLvuiK",9,"Personal Care",3 +23,"Bite Guard","Keep those fangs looking sharp while you sleep with this new chocolate-flavored bite guard! Definitely not just a piece of chocolate.",5.99,"http://imgur.com/yFdw7a0",4,"Personal Care",8 +24,"Anti-Garlic Mask","You're never too old for a classic. Guaranteed to keep that garlic smell and also the ocean out!",159.99,"http://imgur.com/fTR40HO",1,"Personal Care",6 From 69b8027ff2975208af2c4ada88b42f4f85eddaca Mon Sep 17 00:00:00 2001 From: Trish Griego Date: Wed, 19 Oct 2016 14:02:43 -0700 Subject: [PATCH 28/46] Deleted betsy dev --- betsy_development | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 betsy_development diff --git a/betsy_development b/betsy_development deleted file mode 100644 index e69de29bb2..0000000000 From 87b956b0141f53028da2060ec7a611959aa92c35 Mon Sep 17 00:00:00 2001 From: Trish Griego Date: Wed, 19 Oct 2016 14:05:53 -0700 Subject: [PATCH 29/46] Deletd betsy dev --- betsy_development | Bin 61440 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 betsy_development diff --git a/betsy_development b/betsy_development deleted file mode 100644 index c7e7d64c7203d0eb006f253a0cdd5c5f683a1891..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61440 zcmeI(Pfy!s0LSr|5X}G3Nt1;Tk{2$GN(BJ{+hNiei&|6&EdyyBrpQg6g4M(U+hMe~ z(C!WFCG4~H6U*u6k9KTd zm`@sR-SW-V)J#g#QlFS+DwWdZGb^9n$CO+c?!J+)nzDS=qMo|@*LcuyI`exf`%QLq z>ZhrvlOIj|Jiayd%h1z2d(4aDRJubN|SEP&_g>4-fXXOS0K+ zv2I3w8&1yj#f2}+T+4ZyQ`V`t!tzD6Z238} zDwlk_E+Sh#4N9-5&$mV=bz^ryYu!~`8*Vkw^hG_i?Ys?em71wRz)F3Piqf*Jtkeh6 zYJI*nJ)s+qh1Ot5gdEnT7`P8*5LZ&GycHOGU%+H#ZEuPq}=a(I;E+@;m zQ3MtF9N;!{HI*&K<3N zg7nU6@-w6CiL<6~DkAna6VZ!R-VQt#Wy}2K{j_cvhW4@%W)SSO7ycQJv=2Wp-|evb zpB^=J5gfpd{1opU;MWVMr4Q-G$4gpkDLj;#jxB>JdzBM;GAP&WW7i74Sa^K}>5lYa zY5URPt8Y+OHE$nMeH#gmigTG=@YN+>({y7=?uZ^{+P7|B!B8~ozIt`z-80v#?>zb7 z+B}o}E|vW|`)BsI?2mGh2LcEnfB*srAbF7iMC0R#|0 z009ILKmY**5I_Kde_i0cbY6>I`)A@ss~f|yB6;t5h8#90tg_000IagfB*srBwK*{|H;mu z(IbEW0tg_000IagfB*srBtwAv|H;UiQ6hi<0tg_000IagfB*srBwK*%|77RS=n+5w z0R#|0009ILKmY**k|DtF|C5n3qeK7!1Q0*~0R#|0009ILNVWj?|C60RqelP%1Q0*~ z0R#|0009ILNQMB{|H;UiQ6hi<0tg_000IagfB*srBwK*r|0g?tMvnjj2q1s}0tg_0 k00IagkPHFt|0g47Mu`9d2q1s}0tg_000IagkZgf}09U4@6aWAK From 0723743230a4971406566e0fcd1e6d253c72638b Mon Sep 17 00:00:00 2001 From: Trish Griego Date: Wed, 19 Oct 2016 14:12:10 -0700 Subject: [PATCH 30/46] Deleted stupid betsy files --- betsy_development | 0 betsy_test | 0 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 betsy_development delete mode 100644 betsy_test diff --git a/betsy_development b/betsy_development deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/betsy_test b/betsy_test deleted file mode 100644 index e69de29bb2..0000000000 From 451fc66254bff9e575ac1e9b4e5b2eed7f9103c4 Mon Sep 17 00:00:00 2001 From: Maya Wang Date: Wed, 19 Oct 2016 14:34:02 -0700 Subject: [PATCH 31/46] second merge conlict resolved --- config/routes.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/config/routes.rb b/config/routes.rb index c7f88d7400..921cf512cd 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,5 +1,5 @@ Rails.application.routes.draw do -##### homepages routes ##### + # why were these generated with index? root to: 'homepages#index' get 'homepages/index' @@ -19,7 +19,6 @@ #============== Users ================== -##### user routes ##### get 'users/index' From 20826fcaf5803b7222fde03d581768404bea606e Mon Sep 17 00:00:00 2001 From: Sassa Kitka Date: Wed, 19 Oct 2016 14:59:22 -0700 Subject: [PATCH 32/46] finalized routing, added actions, HTTP verbs, nicknames --- config/routes.rb | 119 ++++++++++++----------------------------------- 1 file changed, 29 insertions(+), 90 deletions(-) diff --git a/config/routes.rb b/config/routes.rb index af8a568f46..64d96f6fe7 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,12 +1,12 @@ Rails.application.routes.draw do -# why were these generated with index? +# we chose to make the convention of having the as: be action + plural. + root to: 'homepages#index' get 'homepages/index' get 'homepages/:category/show' => 'homepages/show_category', as: 'show_category' - # get 'homepages/new' # # get 'homepages/create' @@ -19,20 +19,19 @@ #============== Users ================== + get 'users/index' => 'users#index', as: 'index_users' - get 'users/index' - - get 'users/show' + get 'users/show/:id' => 'users#show', as: 'show_users' - get 'users/new' + get 'users/new' => 'users#new', as: 'new_users' - get 'users/create' + post 'users/create' => 'users#create', as: 'create_users' - get 'users/edit' + get 'users/:id/edit' => 'users#edit', as: 'edit_users' - get 'users/update' + patch 'users/:id/update' => 'users#update', as: 'update_users' - get 'users/destroy' + delete 'users/:id/destroy' => 'users#destroy', as: 'destroy_users' #============== Products ================== @@ -40,108 +39,48 @@ get 'products/by_seller' => 'products#by_seller_products', as: 'by_seller_products' + get 'products/show/id:' => 'products#show_products', as: 'show_products' - get 'products/id:/show' => 'products#show_products', as: 'show_products' + get 'products/new' => 'products#new', as: 'new_products' - get 'products/new' + post 'products/create' => 'products#create', as: 'create_products' - get 'products/create' + get 'products/:id/edit' => 'products#edit', as: 'edit_products' - get 'products/edit' - - get 'products/update' - - get 'products/destroy' + patch 'products/:id/update' => 'products#update', as: 'update_products' + delete 'products/:id/destroy' => 'products#destroy', as: 'destroy_products' #============== Sessions ================== - get 'sessions/index' - - get 'sessions/show' - - get 'sessions/new' + get 'sessions/index' => 'sessions#index', as: 'index_sessions' - get 'sessions/create' + get 'sessions/show/:id' => 'sessions#show', as: 'show_sessions' - get 'sessions/edit' + get 'sessions/new' => 'sessions#new', as: 'new_sessions' - get 'sessions/update' + post 'sessions/create' => 'sessions#create', as: 'create_sessions' - get 'sessions/destroy' + get 'sessions/:id/edit' => 'sessions#edit', as: 'edit_sessions' + patch 'sessions/:id/update' => 'sessions#update', as: 'update_sessions' + delete 'sessions/:id/destroy' => 'sessions#destroy', as: 'destroy_sessions' #============== Orders ================== -# we chose to make the convention of having the as: be action + plural. - get 'orders/index' => 'orders#index', as: :index_orders - - - get 'orders/show/:id' => 'orders#show', as: :show_orders - - post 'orders/new' => 'orders#new', as: :new_orders + get 'orders/index' => 'orders#index', as: 'index_orders' - get 'orders/create' => 'orders#create', as: :create_orders + get 'orders/show/:id' => 'orders#show', as: 'show_orders' - get 'orders/:id/edit' => 'orders#edit', as: :edit_orders + get 'orders/new' => 'orders#new', as: 'new_orders' - patch 'orders/:id/update' => 'orders#update', as: :update_orders + post 'orders/create' => 'orders#create', as: 'create_orders' - delete 'orders/:id/destroy' => 'orders#destroy', as: :destroy_orders + get 'orders/:id/edit' => 'orders#edit', as: 'edit_orders' - # The priority is based upon order of creation: first created -> highest priority. - # See how all your routes lay out with "rake routes". + patch 'orders/:id/update' => 'orders#update', as: 'update_orders' - # You can have the root of your site routed with "root" - # root 'welcome#index' + delete 'orders/:id/destroy' => 'orders#destroy', as: 'destroy_orders' - # Example of regular route: - # get 'products/:id' => 'catalog#view' - - # Example of named route that can be invoked with purchase_url(id: product.id) - # get 'products/:id/purchase' => 'catalog#purchase', as: :purchase - - # Example resource route (maps HTTP verbs to controller actions automatically): - # resources :products - - # Example resource route with options: - # resources :products do - # member do - # get 'short' - # post 'toggle' - # end - # - # collection do - # get 'sold' - # end - # end - - # Example resource route with sub-resources: - # resources :products do - # resources :comments, :sales - # resource :seller - # end - - # Example resource route with more complex sub-resources: - # resources :products do - # resources :comments - # resources :sales do - # get 'recent', on: :collection - # end - # end - - # Example resource route with concerns: - # concern :toggleable do - # post 'toggle' - # end - # resources :posts, concerns: :toggleable - # resources :photos, concerns: :toggleable - - # Example resource route within a namespace: - # namespace :admin do - # # Directs /admin/products/* to Admin::ProductsController - # # (app/controllers/admin/products_controller.rb) - # resources :products - # end end From 6358a6d316087fb6b0450e04a570355f6031f635 Mon Sep 17 00:00:00 2001 From: Trish Griego Date: Wed, 19 Oct 2016 14:59:55 -0700 Subject: [PATCH 33/46] Added Foundations.css to our file. I used @import to use it. --- app/assets/stylesheets/application.css | 1 + app/assets/stylesheets/foundation.css | 4194 ++++++++++++++++++++++++ app/views/layouts/application.html.erb | 8 +- 3 files changed, 4196 insertions(+), 7 deletions(-) create mode 100644 app/assets/stylesheets/foundation.css diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index f9cd5b3483..7d28bf9a81 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -13,3 +13,4 @@ *= require_tree . *= require_self */ + @import url('foundation.css'); diff --git a/app/assets/stylesheets/foundation.css b/app/assets/stylesheets/foundation.css new file mode 100644 index 0000000000..66aca962de --- /dev/null +++ b/app/assets/stylesheets/foundation.css @@ -0,0 +1,4194 @@ +@charset "UTF-8"; +/** + * Foundation for Sites by ZURB + * Version 6.2.3 + * foundation.zurb.com + * Licensed under MIT Open Source + */ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS and IE text size adjust after device orientation change, + * without disabling user zoom. + */ +html { + font-family: sans-serif; + /* 1 */ + -ms-text-size-adjust: 100%; + /* 2 */ + -webkit-text-size-adjust: 100%; + /* 2 */ } + +/** + * Remove default margin. + */ +body { + margin: 0; } + +/* HTML5 display definitions + ========================================================================== */ +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; } + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ +audio, +canvas, +progress, +video { + display: inline-block; + /* 1 */ + vertical-align: baseline; + /* 2 */ } + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ +audio:not([controls]) { + display: none; + height: 0; } + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22. + */ +[hidden], +template { + display: none; } + +/* Links + ========================================================================== */ +/** + * Remove the gray background color from active links in IE 10. + */ +a { + background-color: transparent; } + +/** + * Improve readability of focused elements when they are also in an + * active/hover state. + */ +a:active, +a:hover { + outline: 0; } + +/* Text-level semantics + ========================================================================== */ +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ +abbr[title] { + border-bottom: 1px dotted; } + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ +b, +strong { + font-weight: bold; } + +/** + * Address styling not present in Safari and Chrome. + */ +dfn { + font-style: italic; } + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ +h1 { + font-size: 2em; + margin: 0.67em 0; } + +/** + * Address styling not present in IE 8/9. + */ +mark { + background: #ff0; + color: #000; } + +/** + * Address inconsistent and variable font size in all browsers. + */ +small { + font-size: 80%; } + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; } + +sup { + top: -0.5em; } + +sub { + bottom: -0.25em; } + +/* Embedded content + ========================================================================== */ +/** + * Remove border when inside `a` element in IE 8/9/10. + */ +img { + border: 0; } + +/** + * Correct overflow not hidden in IE 9/10/11. + */ +svg:not(:root) { + overflow: hidden; } + +/* Grouping content + ========================================================================== */ +/** + * Address margin not present in IE 8/9 and Safari. + */ +figure { + margin: 1em 40px; } + +/** + * Address differences between Firefox and other browsers. + */ +hr { + box-sizing: content-box; + height: 0; } + +/** + * Contain overflow in all browsers. + */ +pre { + overflow: auto; } + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; } + +/* Forms + ========================================================================== */ +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ +button, +input, +optgroup, +select, +textarea { + color: inherit; + /* 1 */ + font: inherit; + /* 2 */ + margin: 0; + /* 3 */ } + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ +button { + overflow: visible; } + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ +button, +select { + text-transform: none; } + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + /* 2 */ + cursor: pointer; + /* 3 */ } + +/** + * Re-set default cursor for disabled elements. + */ +button[disabled], +html input[disabled] { + cursor: not-allowed; } + +/** + * Remove inner padding and border in Firefox 4+. + */ +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; } + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ +input { + line-height: normal; } + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ } + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; } + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome. + */ +input[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + box-sizing: content-box; + /* 2 */ } + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; } + +/** + * Define consistent border, margin, and padding. + * [NOTE] We don't enable this ruleset in Foundation, because we want the
element to have plain styling. + */ +/* fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; + } */ +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ +legend { + border: 0; + /* 1 */ + padding: 0; + /* 2 */ } + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ +textarea { + overflow: auto; } + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ +optgroup { + font-weight: bold; } + +/* Tables + ========================================================================== */ +/** + * Remove most spacing between table cells. + */ +table { + border-collapse: collapse; + border-spacing: 0; } + +td, +th { + padding: 0; } + +.foundation-mq { + font-family: "small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"; } + +html { + font-size: 100%; + box-sizing: border-box; } + +*, +*::before, +*::after { + box-sizing: inherit; } + +body { + padding: 0; + margin: 0; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-weight: normal; + line-height: 1.5; + color: #0a0a0a; + background: #fefefe; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } + +img { + max-width: 100%; + height: auto; + -ms-interpolation-mode: bicubic; + display: inline-block; + vertical-align: middle; } + +textarea { + height: auto; + min-height: 50px; + border-radius: 0; } + +select { + width: 100%; + border-radius: 0; } + +#map_canvas img, +#map_canvas embed, +#map_canvas object, +.map_canvas img, +.map_canvas embed, +.map_canvas object, +.mqa-display img, +.mqa-display embed, +.mqa-display object { + max-width: none !important; } + +button { + -webkit-appearance: none; + -moz-appearance: none; + background: transparent; + padding: 0; + border: 0; + border-radius: 0; + line-height: 1; } + [data-whatinput='mouse'] button { + outline: 0; } + +.is-visible { + display: block !important; } + +.is-hidden { + display: none !important; } + +.row { + max-width: 75rem; + margin-left: auto; + margin-right: auto; } + .row::before, .row::after { + content: ' '; + display: table; } + .row::after { + clear: both; } + .row.collapse > .column, .row.collapse > .columns { + padding-left: 0; + padding-right: 0; } + .row .row { + max-width: none; + margin-left: -0.625rem; + margin-right: -0.625rem; } + @media screen and (min-width: 40em) { + .row .row { + margin-left: -0.9375rem; + margin-right: -0.9375rem; } } + .row .row.collapse { + margin-left: 0; + margin-right: 0; } + .row.expanded { + max-width: none; } + .row.expanded .row { + margin-left: auto; + margin-right: auto; } + +.column, .columns { + width: 100%; + float: left; + padding-left: 0.625rem; + padding-right: 0.625rem; } + @media screen and (min-width: 40em) { + .column, .columns { + padding-left: 0.9375rem; + padding-right: 0.9375rem; } } + .column:last-child:not(:first-child), .columns:last-child:not(:first-child) { + float: right; } + .column.end:last-child:last-child, .end.columns:last-child:last-child { + float: left; } + +.column.row.row, .row.row.columns { + float: none; } + .row .column.row.row, .row .row.row.columns { + padding-left: 0; + padding-right: 0; + margin-left: 0; + margin-right: 0; } + +.small-1 { + width: 8.33333%; } + +.small-push-1 { + position: relative; + left: 8.33333%; } + +.small-pull-1 { + position: relative; + left: -8.33333%; } + +.small-offset-0 { + margin-left: 0%; } + +.small-2 { + width: 16.66667%; } + +.small-push-2 { + position: relative; + left: 16.66667%; } + +.small-pull-2 { + position: relative; + left: -16.66667%; } + +.small-offset-1 { + margin-left: 8.33333%; } + +.small-3 { + width: 25%; } + +.small-push-3 { + position: relative; + left: 25%; } + +.small-pull-3 { + position: relative; + left: -25%; } + +.small-offset-2 { + margin-left: 16.66667%; } + +.small-4 { + width: 33.33333%; } + +.small-push-4 { + position: relative; + left: 33.33333%; } + +.small-pull-4 { + position: relative; + left: -33.33333%; } + +.small-offset-3 { + margin-left: 25%; } + +.small-5 { + width: 41.66667%; } + +.small-push-5 { + position: relative; + left: 41.66667%; } + +.small-pull-5 { + position: relative; + left: -41.66667%; } + +.small-offset-4 { + margin-left: 33.33333%; } + +.small-6 { + width: 50%; } + +.small-push-6 { + position: relative; + left: 50%; } + +.small-pull-6 { + position: relative; + left: -50%; } + +.small-offset-5 { + margin-left: 41.66667%; } + +.small-7 { + width: 58.33333%; } + +.small-push-7 { + position: relative; + left: 58.33333%; } + +.small-pull-7 { + position: relative; + left: -58.33333%; } + +.small-offset-6 { + margin-left: 50%; } + +.small-8 { + width: 66.66667%; } + +.small-push-8 { + position: relative; + left: 66.66667%; } + +.small-pull-8 { + position: relative; + left: -66.66667%; } + +.small-offset-7 { + margin-left: 58.33333%; } + +.small-9 { + width: 75%; } + +.small-push-9 { + position: relative; + left: 75%; } + +.small-pull-9 { + position: relative; + left: -75%; } + +.small-offset-8 { + margin-left: 66.66667%; } + +.small-10 { + width: 83.33333%; } + +.small-push-10 { + position: relative; + left: 83.33333%; } + +.small-pull-10 { + position: relative; + left: -83.33333%; } + +.small-offset-9 { + margin-left: 75%; } + +.small-11 { + width: 91.66667%; } + +.small-push-11 { + position: relative; + left: 91.66667%; } + +.small-pull-11 { + position: relative; + left: -91.66667%; } + +.small-offset-10 { + margin-left: 83.33333%; } + +.small-12 { + width: 100%; } + +.small-offset-11 { + margin-left: 91.66667%; } + +.small-up-1 > .column, .small-up-1 > .columns { + width: 100%; + float: left; } + .small-up-1 > .column:nth-of-type(1n), .small-up-1 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-1 > .column:nth-of-type(1n+1), .small-up-1 > .columns:nth-of-type(1n+1) { + clear: both; } + .small-up-1 > .column:last-child, .small-up-1 > .columns:last-child { + float: left; } + +.small-up-2 > .column, .small-up-2 > .columns { + width: 50%; + float: left; } + .small-up-2 > .column:nth-of-type(1n), .small-up-2 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-2 > .column:nth-of-type(2n+1), .small-up-2 > .columns:nth-of-type(2n+1) { + clear: both; } + .small-up-2 > .column:last-child, .small-up-2 > .columns:last-child { + float: left; } + +.small-up-3 > .column, .small-up-3 > .columns { + width: 33.33333%; + float: left; } + .small-up-3 > .column:nth-of-type(1n), .small-up-3 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-3 > .column:nth-of-type(3n+1), .small-up-3 > .columns:nth-of-type(3n+1) { + clear: both; } + .small-up-3 > .column:last-child, .small-up-3 > .columns:last-child { + float: left; } + +.small-up-4 > .column, .small-up-4 > .columns { + width: 25%; + float: left; } + .small-up-4 > .column:nth-of-type(1n), .small-up-4 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-4 > .column:nth-of-type(4n+1), .small-up-4 > .columns:nth-of-type(4n+1) { + clear: both; } + .small-up-4 > .column:last-child, .small-up-4 > .columns:last-child { + float: left; } + +.small-up-5 > .column, .small-up-5 > .columns { + width: 20%; + float: left; } + .small-up-5 > .column:nth-of-type(1n), .small-up-5 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-5 > .column:nth-of-type(5n+1), .small-up-5 > .columns:nth-of-type(5n+1) { + clear: both; } + .small-up-5 > .column:last-child, .small-up-5 > .columns:last-child { + float: left; } + +.small-up-6 > .column, .small-up-6 > .columns { + width: 16.66667%; + float: left; } + .small-up-6 > .column:nth-of-type(1n), .small-up-6 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-6 > .column:nth-of-type(6n+1), .small-up-6 > .columns:nth-of-type(6n+1) { + clear: both; } + .small-up-6 > .column:last-child, .small-up-6 > .columns:last-child { + float: left; } + +.small-up-7 > .column, .small-up-7 > .columns { + width: 14.28571%; + float: left; } + .small-up-7 > .column:nth-of-type(1n), .small-up-7 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-7 > .column:nth-of-type(7n+1), .small-up-7 > .columns:nth-of-type(7n+1) { + clear: both; } + .small-up-7 > .column:last-child, .small-up-7 > .columns:last-child { + float: left; } + +.small-up-8 > .column, .small-up-8 > .columns { + width: 12.5%; + float: left; } + .small-up-8 > .column:nth-of-type(1n), .small-up-8 > .columns:nth-of-type(1n) { + clear: none; } + .small-up-8 > .column:nth-of-type(8n+1), .small-up-8 > .columns:nth-of-type(8n+1) { + clear: both; } + .small-up-8 > .column:last-child, .small-up-8 > .columns:last-child { + float: left; } + +.small-collapse > .column, .small-collapse > .columns { + padding-left: 0; + padding-right: 0; } + +.small-collapse .row, +.expanded.row .small-collapse.row { + margin-left: 0; + margin-right: 0; } + +.small-uncollapse > .column, .small-uncollapse > .columns { + padding-left: 0.625rem; + padding-right: 0.625rem; } + +.small-centered { + float: none; + margin-left: auto; + margin-right: auto; } + +.small-uncentered, +.small-push-0, +.small-pull-0 { + position: static; + margin-left: 0; + margin-right: 0; + float: left; } + +@media screen and (min-width: 40em) { + .medium-1 { + width: 8.33333%; } + .medium-push-1 { + position: relative; + left: 8.33333%; } + .medium-pull-1 { + position: relative; + left: -8.33333%; } + .medium-offset-0 { + margin-left: 0%; } + .medium-2 { + width: 16.66667%; } + .medium-push-2 { + position: relative; + left: 16.66667%; } + .medium-pull-2 { + position: relative; + left: -16.66667%; } + .medium-offset-1 { + margin-left: 8.33333%; } + .medium-3 { + width: 25%; } + .medium-push-3 { + position: relative; + left: 25%; } + .medium-pull-3 { + position: relative; + left: -25%; } + .medium-offset-2 { + margin-left: 16.66667%; } + .medium-4 { + width: 33.33333%; } + .medium-push-4 { + position: relative; + left: 33.33333%; } + .medium-pull-4 { + position: relative; + left: -33.33333%; } + .medium-offset-3 { + margin-left: 25%; } + .medium-5 { + width: 41.66667%; } + .medium-push-5 { + position: relative; + left: 41.66667%; } + .medium-pull-5 { + position: relative; + left: -41.66667%; } + .medium-offset-4 { + margin-left: 33.33333%; } + .medium-6 { + width: 50%; } + .medium-push-6 { + position: relative; + left: 50%; } + .medium-pull-6 { + position: relative; + left: -50%; } + .medium-offset-5 { + margin-left: 41.66667%; } + .medium-7 { + width: 58.33333%; } + .medium-push-7 { + position: relative; + left: 58.33333%; } + .medium-pull-7 { + position: relative; + left: -58.33333%; } + .medium-offset-6 { + margin-left: 50%; } + .medium-8 { + width: 66.66667%; } + .medium-push-8 { + position: relative; + left: 66.66667%; } + .medium-pull-8 { + position: relative; + left: -66.66667%; } + .medium-offset-7 { + margin-left: 58.33333%; } + .medium-9 { + width: 75%; } + .medium-push-9 { + position: relative; + left: 75%; } + .medium-pull-9 { + position: relative; + left: -75%; } + .medium-offset-8 { + margin-left: 66.66667%; } + .medium-10 { + width: 83.33333%; } + .medium-push-10 { + position: relative; + left: 83.33333%; } + .medium-pull-10 { + position: relative; + left: -83.33333%; } + .medium-offset-9 { + margin-left: 75%; } + .medium-11 { + width: 91.66667%; } + .medium-push-11 { + position: relative; + left: 91.66667%; } + .medium-pull-11 { + position: relative; + left: -91.66667%; } + .medium-offset-10 { + margin-left: 83.33333%; } + .medium-12 { + width: 100%; } + .medium-offset-11 { + margin-left: 91.66667%; } + .medium-up-1 > .column, .medium-up-1 > .columns { + width: 100%; + float: left; } + .medium-up-1 > .column:nth-of-type(1n), .medium-up-1 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-1 > .column:nth-of-type(1n+1), .medium-up-1 > .columns:nth-of-type(1n+1) { + clear: both; } + .medium-up-1 > .column:last-child, .medium-up-1 > .columns:last-child { + float: left; } + .medium-up-2 > .column, .medium-up-2 > .columns { + width: 50%; + float: left; } + .medium-up-2 > .column:nth-of-type(1n), .medium-up-2 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-2 > .column:nth-of-type(2n+1), .medium-up-2 > .columns:nth-of-type(2n+1) { + clear: both; } + .medium-up-2 > .column:last-child, .medium-up-2 > .columns:last-child { + float: left; } + .medium-up-3 > .column, .medium-up-3 > .columns { + width: 33.33333%; + float: left; } + .medium-up-3 > .column:nth-of-type(1n), .medium-up-3 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-3 > .column:nth-of-type(3n+1), .medium-up-3 > .columns:nth-of-type(3n+1) { + clear: both; } + .medium-up-3 > .column:last-child, .medium-up-3 > .columns:last-child { + float: left; } + .medium-up-4 > .column, .medium-up-4 > .columns { + width: 25%; + float: left; } + .medium-up-4 > .column:nth-of-type(1n), .medium-up-4 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-4 > .column:nth-of-type(4n+1), .medium-up-4 > .columns:nth-of-type(4n+1) { + clear: both; } + .medium-up-4 > .column:last-child, .medium-up-4 > .columns:last-child { + float: left; } + .medium-up-5 > .column, .medium-up-5 > .columns { + width: 20%; + float: left; } + .medium-up-5 > .column:nth-of-type(1n), .medium-up-5 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-5 > .column:nth-of-type(5n+1), .medium-up-5 > .columns:nth-of-type(5n+1) { + clear: both; } + .medium-up-5 > .column:last-child, .medium-up-5 > .columns:last-child { + float: left; } + .medium-up-6 > .column, .medium-up-6 > .columns { + width: 16.66667%; + float: left; } + .medium-up-6 > .column:nth-of-type(1n), .medium-up-6 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-6 > .column:nth-of-type(6n+1), .medium-up-6 > .columns:nth-of-type(6n+1) { + clear: both; } + .medium-up-6 > .column:last-child, .medium-up-6 > .columns:last-child { + float: left; } + .medium-up-7 > .column, .medium-up-7 > .columns { + width: 14.28571%; + float: left; } + .medium-up-7 > .column:nth-of-type(1n), .medium-up-7 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-7 > .column:nth-of-type(7n+1), .medium-up-7 > .columns:nth-of-type(7n+1) { + clear: both; } + .medium-up-7 > .column:last-child, .medium-up-7 > .columns:last-child { + float: left; } + .medium-up-8 > .column, .medium-up-8 > .columns { + width: 12.5%; + float: left; } + .medium-up-8 > .column:nth-of-type(1n), .medium-up-8 > .columns:nth-of-type(1n) { + clear: none; } + .medium-up-8 > .column:nth-of-type(8n+1), .medium-up-8 > .columns:nth-of-type(8n+1) { + clear: both; } + .medium-up-8 > .column:last-child, .medium-up-8 > .columns:last-child { + float: left; } + .medium-collapse > .column, .medium-collapse > .columns { + padding-left: 0; + padding-right: 0; } + .medium-collapse .row, + .expanded.row .medium-collapse.row { + margin-left: 0; + margin-right: 0; } + .medium-uncollapse > .column, .medium-uncollapse > .columns { + padding-left: 0.9375rem; + padding-right: 0.9375rem; } + .medium-centered { + float: none; + margin-left: auto; + margin-right: auto; } + .medium-uncentered, + .medium-push-0, + .medium-pull-0 { + position: static; + margin-left: 0; + margin-right: 0; + float: left; } } + +@media screen and (min-width: 64em) { + .large-1 { + width: 8.33333%; } + .large-push-1 { + position: relative; + left: 8.33333%; } + .large-pull-1 { + position: relative; + left: -8.33333%; } + .large-offset-0 { + margin-left: 0%; } + .large-2 { + width: 16.66667%; } + .large-push-2 { + position: relative; + left: 16.66667%; } + .large-pull-2 { + position: relative; + left: -16.66667%; } + .large-offset-1 { + margin-left: 8.33333%; } + .large-3 { + width: 25%; } + .large-push-3 { + position: relative; + left: 25%; } + .large-pull-3 { + position: relative; + left: -25%; } + .large-offset-2 { + margin-left: 16.66667%; } + .large-4 { + width: 33.33333%; } + .large-push-4 { + position: relative; + left: 33.33333%; } + .large-pull-4 { + position: relative; + left: -33.33333%; } + .large-offset-3 { + margin-left: 25%; } + .large-5 { + width: 41.66667%; } + .large-push-5 { + position: relative; + left: 41.66667%; } + .large-pull-5 { + position: relative; + left: -41.66667%; } + .large-offset-4 { + margin-left: 33.33333%; } + .large-6 { + width: 50%; } + .large-push-6 { + position: relative; + left: 50%; } + .large-pull-6 { + position: relative; + left: -50%; } + .large-offset-5 { + margin-left: 41.66667%; } + .large-7 { + width: 58.33333%; } + .large-push-7 { + position: relative; + left: 58.33333%; } + .large-pull-7 { + position: relative; + left: -58.33333%; } + .large-offset-6 { + margin-left: 50%; } + .large-8 { + width: 66.66667%; } + .large-push-8 { + position: relative; + left: 66.66667%; } + .large-pull-8 { + position: relative; + left: -66.66667%; } + .large-offset-7 { + margin-left: 58.33333%; } + .large-9 { + width: 75%; } + .large-push-9 { + position: relative; + left: 75%; } + .large-pull-9 { + position: relative; + left: -75%; } + .large-offset-8 { + margin-left: 66.66667%; } + .large-10 { + width: 83.33333%; } + .large-push-10 { + position: relative; + left: 83.33333%; } + .large-pull-10 { + position: relative; + left: -83.33333%; } + .large-offset-9 { + margin-left: 75%; } + .large-11 { + width: 91.66667%; } + .large-push-11 { + position: relative; + left: 91.66667%; } + .large-pull-11 { + position: relative; + left: -91.66667%; } + .large-offset-10 { + margin-left: 83.33333%; } + .large-12 { + width: 100%; } + .large-offset-11 { + margin-left: 91.66667%; } + .large-up-1 > .column, .large-up-1 > .columns { + width: 100%; + float: left; } + .large-up-1 > .column:nth-of-type(1n), .large-up-1 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-1 > .column:nth-of-type(1n+1), .large-up-1 > .columns:nth-of-type(1n+1) { + clear: both; } + .large-up-1 > .column:last-child, .large-up-1 > .columns:last-child { + float: left; } + .large-up-2 > .column, .large-up-2 > .columns { + width: 50%; + float: left; } + .large-up-2 > .column:nth-of-type(1n), .large-up-2 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-2 > .column:nth-of-type(2n+1), .large-up-2 > .columns:nth-of-type(2n+1) { + clear: both; } + .large-up-2 > .column:last-child, .large-up-2 > .columns:last-child { + float: left; } + .large-up-3 > .column, .large-up-3 > .columns { + width: 33.33333%; + float: left; } + .large-up-3 > .column:nth-of-type(1n), .large-up-3 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-3 > .column:nth-of-type(3n+1), .large-up-3 > .columns:nth-of-type(3n+1) { + clear: both; } + .large-up-3 > .column:last-child, .large-up-3 > .columns:last-child { + float: left; } + .large-up-4 > .column, .large-up-4 > .columns { + width: 25%; + float: left; } + .large-up-4 > .column:nth-of-type(1n), .large-up-4 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-4 > .column:nth-of-type(4n+1), .large-up-4 > .columns:nth-of-type(4n+1) { + clear: both; } + .large-up-4 > .column:last-child, .large-up-4 > .columns:last-child { + float: left; } + .large-up-5 > .column, .large-up-5 > .columns { + width: 20%; + float: left; } + .large-up-5 > .column:nth-of-type(1n), .large-up-5 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-5 > .column:nth-of-type(5n+1), .large-up-5 > .columns:nth-of-type(5n+1) { + clear: both; } + .large-up-5 > .column:last-child, .large-up-5 > .columns:last-child { + float: left; } + .large-up-6 > .column, .large-up-6 > .columns { + width: 16.66667%; + float: left; } + .large-up-6 > .column:nth-of-type(1n), .large-up-6 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-6 > .column:nth-of-type(6n+1), .large-up-6 > .columns:nth-of-type(6n+1) { + clear: both; } + .large-up-6 > .column:last-child, .large-up-6 > .columns:last-child { + float: left; } + .large-up-7 > .column, .large-up-7 > .columns { + width: 14.28571%; + float: left; } + .large-up-7 > .column:nth-of-type(1n), .large-up-7 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-7 > .column:nth-of-type(7n+1), .large-up-7 > .columns:nth-of-type(7n+1) { + clear: both; } + .large-up-7 > .column:last-child, .large-up-7 > .columns:last-child { + float: left; } + .large-up-8 > .column, .large-up-8 > .columns { + width: 12.5%; + float: left; } + .large-up-8 > .column:nth-of-type(1n), .large-up-8 > .columns:nth-of-type(1n) { + clear: none; } + .large-up-8 > .column:nth-of-type(8n+1), .large-up-8 > .columns:nth-of-type(8n+1) { + clear: both; } + .large-up-8 > .column:last-child, .large-up-8 > .columns:last-child { + float: left; } + .large-collapse > .column, .large-collapse > .columns { + padding-left: 0; + padding-right: 0; } + .large-collapse .row, + .expanded.row .large-collapse.row { + margin-left: 0; + margin-right: 0; } + .large-uncollapse > .column, .large-uncollapse > .columns { + padding-left: 0.9375rem; + padding-right: 0.9375rem; } + .large-centered { + float: none; + margin-left: auto; + margin-right: auto; } + .large-uncentered, + .large-push-0, + .large-pull-0 { + position: static; + margin-left: 0; + margin-right: 0; + float: left; } } + +div, +dl, +dt, +dd, +ul, +ol, +li, +h1, +h2, +h3, +h4, +h5, +h6, +pre, +form, +p, +blockquote, +th, +td { + margin: 0; + padding: 0; } + +p { + font-size: inherit; + line-height: 1.6; + margin-bottom: 1rem; + text-rendering: optimizeLegibility; } + +em, +i { + font-style: italic; + line-height: inherit; } + +strong, +b { + font-weight: bold; + line-height: inherit; } + +small { + font-size: 80%; + line-height: inherit; } + +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-weight: normal; + font-style: normal; + color: inherit; + text-rendering: optimizeLegibility; + margin-top: 0; + margin-bottom: 0.5rem; + line-height: 1.4; } + h1 small, + h2 small, + h3 small, + h4 small, + h5 small, + h6 small { + color: #cacaca; + line-height: 0; } + +h1 { + font-size: 1.5rem; } + +h2 { + font-size: 1.25rem; } + +h3 { + font-size: 1.1875rem; } + +h4 { + font-size: 1.125rem; } + +h5 { + font-size: 1.0625rem; } + +h6 { + font-size: 1rem; } + +@media screen and (min-width: 40em) { + h1 { + font-size: 3rem; } + h2 { + font-size: 2.5rem; } + h3 { + font-size: 1.9375rem; } + h4 { + font-size: 1.5625rem; } + h5 { + font-size: 1.25rem; } + h6 { + font-size: 1rem; } } + +a { + color: #2199e8; + text-decoration: none; + line-height: inherit; + cursor: pointer; } + a:hover, a:focus { + color: #1585cf; } + a img { + border: 0; } + +hr { + max-width: 75rem; + height: 0; + border-right: 0; + border-top: 0; + border-bottom: 1px solid #cacaca; + border-left: 0; + margin: 1.25rem auto; + clear: both; } + +ul, +ol, +dl { + line-height: 1.6; + margin-bottom: 1rem; + list-style-position: outside; } + +li { + font-size: inherit; } + +ul { + list-style-type: disc; + margin-left: 1.25rem; } + +ol { + margin-left: 1.25rem; } + +ul ul, ol ul, ul ol, ol ol { + margin-left: 1.25rem; + margin-bottom: 0; } + +dl { + margin-bottom: 1rem; } + dl dt { + margin-bottom: 0.3rem; + font-weight: bold; } + +blockquote { + margin: 0 0 1rem; + padding: 0.5625rem 1.25rem 0 1.1875rem; + border-left: 1px solid #cacaca; } + blockquote, blockquote p { + line-height: 1.6; + color: #8a8a8a; } + +cite { + display: block; + font-size: 0.8125rem; + color: #8a8a8a; } + cite:before { + content: '\2014 \0020'; } + +abbr { + color: #0a0a0a; + cursor: help; + border-bottom: 1px dotted #0a0a0a; } + +code { + font-family: Consolas, "Liberation Mono", Courier, monospace; + font-weight: normal; + color: #0a0a0a; + background-color: #e6e6e6; + border: 1px solid #cacaca; + padding: 0.125rem 0.3125rem 0.0625rem; } + +kbd { + padding: 0.125rem 0.25rem 0; + margin: 0; + background-color: #e6e6e6; + color: #0a0a0a; + font-family: Consolas, "Liberation Mono", Courier, monospace; } + +.subheader { + margin-top: 0.2rem; + margin-bottom: 0.5rem; + font-weight: normal; + line-height: 1.4; + color: #8a8a8a; } + +.lead { + font-size: 125%; + line-height: 1.6; } + +.stat { + font-size: 2.5rem; + line-height: 1; } + p + .stat { + margin-top: -1rem; } + +.no-bullet { + margin-left: 0; + list-style: none; } + +.text-left { + text-align: left; } + +.text-right { + text-align: right; } + +.text-center { + text-align: center; } + +.text-justify { + text-align: justify; } + +@media screen and (min-width: 40em) { + .medium-text-left { + text-align: left; } + .medium-text-right { + text-align: right; } + .medium-text-center { + text-align: center; } + .medium-text-justify { + text-align: justify; } } + +@media screen and (min-width: 64em) { + .large-text-left { + text-align: left; } + .large-text-right { + text-align: right; } + .large-text-center { + text-align: center; } + .large-text-justify { + text-align: justify; } } + +.show-for-print { + display: none !important; } + +@media print { + * { + background: transparent !important; + color: black !important; + box-shadow: none !important; + text-shadow: none !important; } + .show-for-print { + display: block !important; } + .hide-for-print { + display: none !important; } + table.show-for-print { + display: table !important; } + thead.show-for-print { + display: table-header-group !important; } + tbody.show-for-print { + display: table-row-group !important; } + tr.show-for-print { + display: table-row !important; } + td.show-for-print { + display: table-cell !important; } + th.show-for-print { + display: table-cell !important; } + a, + a:visited { + text-decoration: underline; } + a[href]:after { + content: " (" attr(href) ")"; } + .ir a:after, + a[href^='javascript:']:after, + a[href^='#']:after { + content: ''; } + abbr[title]:after { + content: " (" attr(title) ")"; } + pre, + blockquote { + border: 1px solid #8a8a8a; + page-break-inside: avoid; } + thead { + display: table-header-group; } + tr, + img { + page-break-inside: avoid; } + img { + max-width: 100% !important; } + @page { + margin: 0.5cm; } + p, + h2, + h3 { + orphans: 3; + widows: 3; } + h2, + h3 { + page-break-after: avoid; } } + +.button { + display: inline-block; + text-align: center; + line-height: 1; + cursor: pointer; + -webkit-appearance: none; + transition: background-color 0.25s ease-out, color 0.25s ease-out; + vertical-align: middle; + border: 1px solid transparent; + border-radius: 0; + padding: 0.85em 1em; + margin: 0 0 1rem 0; + font-size: 0.9rem; + background-color: #2199e8; + color: #fefefe; } + [data-whatinput='mouse'] .button { + outline: 0; } + .button:hover, .button:focus { + background-color: #1583cc; + color: #fefefe; } + .button.tiny { + font-size: 0.6rem; } + .button.small { + font-size: 0.75rem; } + .button.large { + font-size: 1.25rem; } + .button.expanded { + display: block; + width: 100%; + margin-left: 0; + margin-right: 0; } + .button.primary { + background-color: #2199e8; + color: #fefefe; } + .button.primary:hover, .button.primary:focus { + background-color: #147cc0; + color: #fefefe; } + .button.secondary { + background-color: #777; + color: #fefefe; } + .button.secondary:hover, .button.secondary:focus { + background-color: #5f5f5f; + color: #fefefe; } + .button.success { + background-color: #3adb76; + color: #fefefe; } + .button.success:hover, .button.success:focus { + background-color: #22bb5b; + color: #fefefe; } + .button.warning { + background-color: #ffae00; + color: #fefefe; } + .button.warning:hover, .button.warning:focus { + background-color: #cc8b00; + color: #fefefe; } + .button.alert { + background-color: #ec5840; + color: #fefefe; } + .button.alert:hover, .button.alert:focus { + background-color: #da3116; + color: #fefefe; } + .button.hollow { + border: 1px solid #2199e8; + color: #2199e8; } + .button.hollow, .button.hollow:hover, .button.hollow:focus { + background-color: transparent; } + .button.hollow:hover, .button.hollow:focus { + border-color: #0c4d78; + color: #0c4d78; } + .button.hollow.primary { + border: 1px solid #2199e8; + color: #2199e8; } + .button.hollow.primary:hover, .button.hollow.primary:focus { + border-color: #0c4d78; + color: #0c4d78; } + .button.hollow.secondary { + border: 1px solid #777; + color: #777; } + .button.hollow.secondary:hover, .button.hollow.secondary:focus { + border-color: #3c3c3c; + color: #3c3c3c; } + .button.hollow.success { + border: 1px solid #3adb76; + color: #3adb76; } + .button.hollow.success:hover, .button.hollow.success:focus { + border-color: #157539; + color: #157539; } + .button.hollow.warning { + border: 1px solid #ffae00; + color: #ffae00; } + .button.hollow.warning:hover, .button.hollow.warning:focus { + border-color: #805700; + color: #805700; } + .button.hollow.alert { + border: 1px solid #ec5840; + color: #ec5840; } + .button.hollow.alert:hover, .button.hollow.alert:focus { + border-color: #881f0e; + color: #881f0e; } + .button.disabled, .button[disabled] { + opacity: 0.25; + cursor: not-allowed; } + .button.disabled:hover, .button.disabled:focus, .button[disabled]:hover, .button[disabled]:focus { + background-color: #2199e8; + color: #fefefe; } + .button.dropdown::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 0.4em; + border-color: #fefefe transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + position: relative; + top: 0.4em; + float: right; + margin-left: 1em; + display: inline-block; } + .button.arrow-only::after { + margin-left: 0; + float: none; + top: -0.1em; } + +[type='text'], [type='password'], [type='date'], [type='datetime'], [type='datetime-local'], [type='month'], [type='week'], [type='email'], [type='number'], [type='search'], [type='tel'], [type='time'], [type='url'], [type='color'], +textarea { + display: block; + box-sizing: border-box; + width: 100%; + height: 2.4375rem; + padding: 0.5rem; + border: 1px solid #cacaca; + margin: 0 0 1rem; + font-family: inherit; + font-size: 1rem; + color: #0a0a0a; + background-color: #fefefe; + box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1); + border-radius: 0; + transition: box-shadow 0.5s, border-color 0.25s ease-in-out; + -webkit-appearance: none; + -moz-appearance: none; } + [type='text']:focus, [type='password']:focus, [type='date']:focus, [type='datetime']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='week']:focus, [type='email']:focus, [type='number']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='url']:focus, [type='color']:focus, + textarea:focus { + border: 1px solid #8a8a8a; + background-color: #fefefe; + outline: none; + box-shadow: 0 0 5px #cacaca; + transition: box-shadow 0.5s, border-color 0.25s ease-in-out; } + +textarea { + max-width: 100%; } + textarea[rows] { + height: auto; } + +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: #cacaca; } + +input::-moz-placeholder, +textarea::-moz-placeholder { + color: #cacaca; } + +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: #cacaca; } + +input::placeholder, +textarea::placeholder { + color: #cacaca; } + +input:disabled, input[readonly], +textarea:disabled, +textarea[readonly] { + background-color: #e6e6e6; + cursor: not-allowed; } + +[type='submit'], +[type='button'] { + border-radius: 0; + -webkit-appearance: none; + -moz-appearance: none; } + +input[type='search'] { + box-sizing: border-box; } + +[type='file'], +[type='checkbox'], +[type='radio'] { + margin: 0 0 1rem; } + +[type='checkbox'] + label, +[type='radio'] + label { + display: inline-block; + margin-left: 0.5rem; + margin-right: 1rem; + margin-bottom: 0; + vertical-align: baseline; } + [type='checkbox'] + label[for], + [type='radio'] + label[for] { + cursor: pointer; } + +label > [type='checkbox'], +label > [type='radio'] { + margin-right: 0.5rem; } + +[type='file'] { + width: 100%; } + +label { + display: block; + margin: 0; + font-size: 0.875rem; + font-weight: normal; + line-height: 1.8; + color: #0a0a0a; } + label.middle { + margin: 0 0 1rem; + padding: 0.5625rem 0; } + +.help-text { + margin-top: -0.5rem; + font-size: 0.8125rem; + font-style: italic; + color: #0a0a0a; } + +.input-group { + display: table; + width: 100%; + margin-bottom: 1rem; } + .input-group > :first-child { + border-radius: 0 0 0 0; } + .input-group > :last-child > * { + border-radius: 0 0 0 0; } + +.input-group-label, .input-group-field, .input-group-button { + margin: 0; + white-space: nowrap; + display: table-cell; + vertical-align: middle; } + +.input-group-label { + text-align: center; + padding: 0 1rem; + background: #e6e6e6; + color: #0a0a0a; + border: 1px solid #cacaca; + white-space: nowrap; + width: 1%; + height: 100%; } + .input-group-label:first-child { + border-right: 0; } + .input-group-label:last-child { + border-left: 0; } + +.input-group-field { + border-radius: 0; + height: 2.5rem; } + +.input-group-button { + padding-top: 0; + padding-bottom: 0; + text-align: center; + height: 100%; + width: 1%; } + .input-group-button a, + .input-group-button input, + .input-group-button button { + margin: 0; } + +.input-group .input-group-button { + display: table-cell; } + +fieldset { + border: 0; + padding: 0; + margin: 0; } + +legend { + margin-bottom: 0.5rem; + max-width: 100%; } + +.fieldset { + border: 1px solid #cacaca; + padding: 1.25rem; + margin: 1.125rem 0; } + .fieldset legend { + background: #fefefe; + padding: 0 0.1875rem; + margin: 0; + margin-left: -0.1875rem; } + +select { + height: 2.4375rem; + padding: 0.5rem; + border: 1px solid #cacaca; + margin: 0 0 1rem; + font-size: 1rem; + font-family: inherit; + line-height: normal; + color: #0a0a0a; + background-color: #fefefe; + border-radius: 0; + -webkit-appearance: none; + -moz-appearance: none; + background-image: url("data:image/svg+xml;utf8,"); + background-size: 9px 6px; + background-position: right -1rem center; + background-origin: content-box; + background-repeat: no-repeat; + padding-right: 1.5rem; } + @media screen and (min-width: 0\0) { + select { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg=="); } } + select:disabled { + background-color: #e6e6e6; + cursor: not-allowed; } + select::-ms-expand { + display: none; } + select[multiple] { + height: auto; + background-image: none; } + +.is-invalid-input:not(:focus) { + background-color: rgba(236, 88, 64, 0.1); + border-color: #ec5840; } + +.is-invalid-label { + color: #ec5840; } + +.form-error { + display: none; + margin-top: -0.5rem; + margin-bottom: 1rem; + font-size: 0.75rem; + font-weight: bold; + color: #ec5840; } + .form-error.is-visible { + display: block; } + +.accordion { + list-style-type: none; + background: #fefefe; + margin-left: 0; } + +.accordion-item:first-child > :first-child { + border-radius: 0 0 0 0; } + +.accordion-item:last-child > :last-child { + border-radius: 0 0 0 0; } + +.accordion-title { + display: block; + padding: 1.25rem 1rem; + line-height: 1; + font-size: 0.75rem; + color: #2199e8; + position: relative; + border: 1px solid #e6e6e6; + border-bottom: 0; } + :last-child:not(.is-active) > .accordion-title { + border-radius: 0 0 0 0; + border-bottom: 1px solid #e6e6e6; } + .accordion-title:hover, .accordion-title:focus { + background-color: #e6e6e6; } + .accordion-title::before { + content: '+'; + position: absolute; + right: 1rem; + top: 50%; + margin-top: -0.5rem; } + .is-active > .accordion-title::before { + content: '–'; } + +.accordion-content { + padding: 1rem; + display: none; + border: 1px solid #e6e6e6; + border-bottom: 0; + background-color: #fefefe; + color: #0a0a0a; } + :last-child > .accordion-content:last-child { + border-bottom: 1px solid #e6e6e6; } + +.is-accordion-submenu-parent > a { + position: relative; } + .is-accordion-submenu-parent > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 6px; + border-color: #2199e8 transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + position: absolute; + top: 50%; + margin-top: -4px; + right: 1rem; } + +.is-accordion-submenu-parent[aria-expanded='true'] > a::after { + -webkit-transform-origin: 50% 50%; + -ms-transform-origin: 50% 50%; + transform-origin: 50% 50%; + -webkit-transform: scaleY(-1); + -ms-transform: scaleY(-1); + transform: scaleY(-1); } + +.badge { + display: inline-block; + padding: 0.3em; + min-width: 2.1em; + font-size: 0.6rem; + text-align: center; + border-radius: 50%; + background: #2199e8; + color: #fefefe; } + .badge.secondary { + background: #777; + color: #fefefe; } + .badge.success { + background: #3adb76; + color: #fefefe; } + .badge.warning { + background: #ffae00; + color: #fefefe; } + .badge.alert { + background: #ec5840; + color: #fefefe; } + +.breadcrumbs { + list-style: none; + margin: 0 0 1rem 0; } + .breadcrumbs::before, .breadcrumbs::after { + content: ' '; + display: table; } + .breadcrumbs::after { + clear: both; } + .breadcrumbs li { + float: left; + color: #0a0a0a; + font-size: 0.6875rem; + cursor: default; + text-transform: uppercase; } + .breadcrumbs li:not(:last-child)::after { + color: #cacaca; + content: "/"; + margin: 0 0.75rem; + position: relative; + top: 1px; + opacity: 1; } + .breadcrumbs a { + color: #2199e8; } + .breadcrumbs a:hover { + text-decoration: underline; } + .breadcrumbs .disabled { + color: #cacaca; + cursor: not-allowed; } + +.button-group { + margin-bottom: 1rem; + font-size: 0; } + .button-group::before, .button-group::after { + content: ' '; + display: table; } + .button-group::after { + clear: both; } + .button-group .button { + margin: 0; + margin-right: 1px; + margin-bottom: 1px; + font-size: 0.9rem; } + .button-group .button:last-child { + margin-right: 0; } + .button-group.tiny .button { + font-size: 0.6rem; } + .button-group.small .button { + font-size: 0.75rem; } + .button-group.large .button { + font-size: 1.25rem; } + .button-group.expanded { + margin-right: -1px; } + .button-group.expanded::before, .button-group.expanded::after { + display: none; } + .button-group.expanded .button:first-child:nth-last-child(2), .button-group.expanded .button:first-child:nth-last-child(2):first-child:nth-last-child(2) ~ .button { + display: inline-block; + width: calc(50% - 1px); + margin-right: 1px; } + .button-group.expanded .button:first-child:nth-last-child(2):last-child, .button-group.expanded .button:first-child:nth-last-child(2):first-child:nth-last-child(2) ~ .button:last-child { + margin-right: -6px; } + .button-group.expanded .button:first-child:nth-last-child(3), .button-group.expanded .button:first-child:nth-last-child(3):first-child:nth-last-child(3) ~ .button { + display: inline-block; + width: calc(33.33333% - 1px); + margin-right: 1px; } + .button-group.expanded .button:first-child:nth-last-child(3):last-child, .button-group.expanded .button:first-child:nth-last-child(3):first-child:nth-last-child(3) ~ .button:last-child { + margin-right: -6px; } + .button-group.expanded .button:first-child:nth-last-child(4), .button-group.expanded .button:first-child:nth-last-child(4):first-child:nth-last-child(4) ~ .button { + display: inline-block; + width: calc(25% - 1px); + margin-right: 1px; } + .button-group.expanded .button:first-child:nth-last-child(4):last-child, .button-group.expanded .button:first-child:nth-last-child(4):first-child:nth-last-child(4) ~ .button:last-child { + margin-right: -6px; } + .button-group.expanded .button:first-child:nth-last-child(5), .button-group.expanded .button:first-child:nth-last-child(5):first-child:nth-last-child(5) ~ .button { + display: inline-block; + width: calc(20% - 1px); + margin-right: 1px; } + .button-group.expanded .button:first-child:nth-last-child(5):last-child, .button-group.expanded .button:first-child:nth-last-child(5):first-child:nth-last-child(5) ~ .button:last-child { + margin-right: -6px; } + .button-group.expanded .button:first-child:nth-last-child(6), .button-group.expanded .button:first-child:nth-last-child(6):first-child:nth-last-child(6) ~ .button { + display: inline-block; + width: calc(16.66667% - 1px); + margin-right: 1px; } + .button-group.expanded .button:first-child:nth-last-child(6):last-child, .button-group.expanded .button:first-child:nth-last-child(6):first-child:nth-last-child(6) ~ .button:last-child { + margin-right: -6px; } + .button-group.primary .button { + background-color: #2199e8; + color: #fefefe; } + .button-group.primary .button:hover, .button-group.primary .button:focus { + background-color: #147cc0; + color: #fefefe; } + .button-group.secondary .button { + background-color: #777; + color: #fefefe; } + .button-group.secondary .button:hover, .button-group.secondary .button:focus { + background-color: #5f5f5f; + color: #fefefe; } + .button-group.success .button { + background-color: #3adb76; + color: #fefefe; } + .button-group.success .button:hover, .button-group.success .button:focus { + background-color: #22bb5b; + color: #fefefe; } + .button-group.warning .button { + background-color: #ffae00; + color: #fefefe; } + .button-group.warning .button:hover, .button-group.warning .button:focus { + background-color: #cc8b00; + color: #fefefe; } + .button-group.alert .button { + background-color: #ec5840; + color: #fefefe; } + .button-group.alert .button:hover, .button-group.alert .button:focus { + background-color: #da3116; + color: #fefefe; } + .button-group.stacked .button, .button-group.stacked-for-small .button, .button-group.stacked-for-medium .button { + width: 100%; } + .button-group.stacked .button:last-child, .button-group.stacked-for-small .button:last-child, .button-group.stacked-for-medium .button:last-child { + margin-bottom: 0; } + @media screen and (min-width: 40em) { + .button-group.stacked-for-small .button { + width: auto; + margin-bottom: 0; } } + @media screen and (min-width: 64em) { + .button-group.stacked-for-medium .button { + width: auto; + margin-bottom: 0; } } + @media screen and (max-width: 39.9375em) { + .button-group.stacked-for-small.expanded { + display: block; } + .button-group.stacked-for-small.expanded .button { + display: block; + margin-right: 0; } } + +.callout { + margin: 0 0 1rem 0; + padding: 1rem; + border: 1px solid rgba(10, 10, 10, 0.25); + border-radius: 0; + position: relative; + color: #0a0a0a; + background-color: white; } + .callout > :first-child { + margin-top: 0; } + .callout > :last-child { + margin-bottom: 0; } + .callout.primary { + background-color: #def0fc; } + .callout.secondary { + background-color: #ebebeb; } + .callout.success { + background-color: #e1faea; } + .callout.warning { + background-color: #fff3d9; } + .callout.alert { + background-color: #fce6e2; } + .callout.small { + padding-top: 0.5rem; + padding-right: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0.5rem; } + .callout.large { + padding-top: 3rem; + padding-right: 3rem; + padding-bottom: 3rem; + padding-left: 3rem; } + +.close-button { + position: absolute; + color: #8a8a8a; + right: 1rem; + top: 0.5rem; + font-size: 2em; + line-height: 1; + cursor: pointer; } + [data-whatinput='mouse'] .close-button { + outline: 0; } + .close-button:hover, .close-button:focus { + color: #0a0a0a; } + +.menu { + margin: 0; + list-style-type: none; } + .menu > li { + display: table-cell; + vertical-align: middle; } + [data-whatinput='mouse'] .menu > li { + outline: 0; } + .menu > li > a { + display: block; + padding: 0.7rem 1rem; + line-height: 1; } + .menu input, + .menu a, + .menu button { + margin-bottom: 0; } + .menu > li > a img, + .menu > li > a i, + .menu > li > a svg { + vertical-align: middle; } + .menu > li > a img + span, + .menu > li > a i + span, + .menu > li > a svg + span { + vertical-align: middle; } + .menu > li > a img, + .menu > li > a i, + .menu > li > a svg { + margin-right: 0.25rem; + display: inline-block; } + .menu > li { + display: table-cell; } + .menu.vertical > li { + display: block; } + @media screen and (min-width: 40em) { + .menu.medium-horizontal > li { + display: table-cell; } + .menu.medium-vertical > li { + display: block; } } + @media screen and (min-width: 64em) { + .menu.large-horizontal > li { + display: table-cell; } + .menu.large-vertical > li { + display: block; } } + .menu.simple li { + line-height: 1; + display: inline-block; + margin-right: 1rem; } + .menu.simple a { + padding: 0; } + .menu.align-right::before, .menu.align-right::after { + content: ' '; + display: table; } + .menu.align-right::after { + clear: both; } + .menu.align-right > li { + float: right; } + .menu.expanded { + width: 100%; + display: table; + table-layout: fixed; } + .menu.expanded > li:first-child:last-child { + width: 100%; } + .menu.icon-top > li > a { + text-align: center; } + .menu.icon-top > li > a img, + .menu.icon-top > li > a i, + .menu.icon-top > li > a svg { + display: block; + margin: 0 auto 0.25rem; } + .menu.nested { + margin-left: 1rem; } + .menu .active > a { + color: #fefefe; + background: #2199e8; } + +.menu-text { + font-weight: bold; + color: inherit; + line-height: 1; + padding-top: 0; + padding-bottom: 0; + padding: 0.7rem 1rem; } + +.menu-centered { + text-align: center; } + .menu-centered > .menu { + display: inline-block; } + +.no-js [data-responsive-menu] ul { + display: none; } + +.menu-icon { + position: relative; + display: inline-block; + vertical-align: middle; + cursor: pointer; + width: 20px; + height: 16px; } + .menu-icon::after { + content: ''; + position: absolute; + display: block; + width: 100%; + height: 2px; + background: #fefefe; + top: 0; + left: 0; + box-shadow: 0 7px 0 #fefefe, 0 14px 0 #fefefe; } + .menu-icon:hover::after { + background: #cacaca; + box-shadow: 0 7px 0 #cacaca, 0 14px 0 #cacaca; } + +.menu-icon.dark { + position: relative; + display: inline-block; + vertical-align: middle; + cursor: pointer; + width: 20px; + height: 16px; } + .menu-icon.dark::after { + content: ''; + position: absolute; + display: block; + width: 100%; + height: 2px; + background: #0a0a0a; + top: 0; + left: 0; + box-shadow: 0 7px 0 #0a0a0a, 0 14px 0 #0a0a0a; } + .menu-icon.dark:hover::after { + background: #8a8a8a; + box-shadow: 0 7px 0 #8a8a8a, 0 14px 0 #8a8a8a; } + +.is-drilldown { + position: relative; + overflow: hidden; } + .is-drilldown li { + display: block !important; } + +.is-drilldown-submenu { + position: absolute; + top: 0; + left: 100%; + z-index: -1; + height: 100%; + width: 100%; + background: #fefefe; + transition: -webkit-transform 0.15s linear; + transition: transform 0.15s linear; } + .is-drilldown-submenu.is-active { + z-index: 1; + display: block; + -webkit-transform: translateX(-100%); + -ms-transform: translateX(-100%); + transform: translateX(-100%); } + .is-drilldown-submenu.is-closing { + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); } + +.is-drilldown-submenu-parent > a { + position: relative; } + .is-drilldown-submenu-parent > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 6px; + border-color: transparent transparent transparent #2199e8; + border-left-style: solid; + border-right-width: 0; + position: absolute; + top: 50%; + margin-top: -6px; + right: 1rem; } + +.js-drilldown-back > a::before { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 6px; + border-color: transparent #2199e8 transparent transparent; + border-right-style: solid; + border-left-width: 0; + border-left-width: 0; + display: inline-block; + vertical-align: middle; + margin-right: 0.75rem; } + +.dropdown-pane { + background-color: #fefefe; + border: 1px solid #cacaca; + border-radius: 0; + display: block; + font-size: 1rem; + padding: 1rem; + position: absolute; + visibility: hidden; + width: 300px; + z-index: 10; } + .dropdown-pane.is-open { + visibility: visible; } + +.dropdown-pane.tiny { + width: 100px; } + +.dropdown-pane.small { + width: 200px; } + +.dropdown-pane.large { + width: 400px; } + +.dropdown.menu > li.opens-left > .is-dropdown-submenu { + left: auto; + right: 0; + top: 100%; } + +.dropdown.menu > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 0; + top: 100%; } + +.dropdown.menu > li.is-dropdown-submenu-parent > a { + padding-right: 1.5rem; + position: relative; } + +.dropdown.menu > li.is-dropdown-submenu-parent > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: #2199e8 transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + right: 5px; + margin-top: -2px; } + +[data-whatinput='mouse'] .dropdown.menu a { + outline: 0; } + +.no-js .dropdown.menu ul { + display: none; } + +.dropdown.menu.vertical > li .is-dropdown-submenu { + top: 0; } + +.dropdown.menu.vertical > li.opens-left > .is-dropdown-submenu { + left: auto; + right: 100%; } + +.dropdown.menu.vertical > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 100%; } + +.dropdown.menu.vertical > li > a::after { + right: 14px; + margin-top: -3px; } + +.dropdown.menu.vertical > li.opens-left > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent #2199e8 transparent transparent; + border-right-style: solid; + border-left-width: 0; } + +.dropdown.menu.vertical > li.opens-right > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent transparent transparent #2199e8; + border-left-style: solid; + border-right-width: 0; } + +@media screen and (min-width: 40em) { + .dropdown.menu.medium-horizontal > li.opens-left > .is-dropdown-submenu { + left: auto; + right: 0; + top: 100%; } + .dropdown.menu.medium-horizontal > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 0; + top: 100%; } + .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a { + padding-right: 1.5rem; + position: relative; } + .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: #2199e8 transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + right: 5px; + margin-top: -2px; } + .dropdown.menu.medium-vertical > li .is-dropdown-submenu { + top: 0; } + .dropdown.menu.medium-vertical > li.opens-left > .is-dropdown-submenu { + left: auto; + right: 100%; } + .dropdown.menu.medium-vertical > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 100%; } + .dropdown.menu.medium-vertical > li > a::after { + right: 14px; + margin-top: -3px; } + .dropdown.menu.medium-vertical > li.opens-left > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent #2199e8 transparent transparent; + border-right-style: solid; + border-left-width: 0; } + .dropdown.menu.medium-vertical > li.opens-right > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent transparent transparent #2199e8; + border-left-style: solid; + border-right-width: 0; } } + +@media screen and (min-width: 64em) { + .dropdown.menu.large-horizontal > li.opens-left > .is-dropdown-submenu { + left: auto; + right: 0; + top: 100%; } + .dropdown.menu.large-horizontal > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 0; + top: 100%; } + .dropdown.menu.large-horizontal > li.is-dropdown-submenu-parent > a { + padding-right: 1.5rem; + position: relative; } + .dropdown.menu.large-horizontal > li.is-dropdown-submenu-parent > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: #2199e8 transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + right: 5px; + margin-top: -2px; } + .dropdown.menu.large-vertical > li .is-dropdown-submenu { + top: 0; } + .dropdown.menu.large-vertical > li.opens-left > .is-dropdown-submenu { + left: auto; + right: 100%; } + .dropdown.menu.large-vertical > li.opens-right > .is-dropdown-submenu { + right: auto; + left: 100%; } + .dropdown.menu.large-vertical > li > a::after { + right: 14px; + margin-top: -3px; } + .dropdown.menu.large-vertical > li.opens-left > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent #2199e8 transparent transparent; + border-right-style: solid; + border-left-width: 0; } + .dropdown.menu.large-vertical > li.opens-right > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent transparent transparent #2199e8; + border-left-style: solid; + border-right-width: 0; } } + +.dropdown.menu.align-right .is-dropdown-submenu.first-sub { + top: 100%; + left: auto; + right: 0; } + +.is-dropdown-menu.vertical { + width: 100px; } + .is-dropdown-menu.vertical.align-right { + float: right; } + +.is-dropdown-submenu-parent { + position: relative; } + .is-dropdown-submenu-parent a::after { + position: absolute; + top: 50%; + right: 5px; + margin-top: -2px; } + .is-dropdown-submenu-parent.opens-inner > .is-dropdown-submenu { + top: 100%; + left: auto; } + .is-dropdown-submenu-parent.opens-left > .is-dropdown-submenu { + left: auto; + right: 100%; } + .is-dropdown-submenu-parent.opens-right > .is-dropdown-submenu { + right: auto; + left: 100%; } + +.is-dropdown-submenu { + display: none; + position: absolute; + top: 0; + left: 100%; + min-width: 200px; + z-index: 1; + background: #fefefe; + border: 1px solid #cacaca; } + .is-dropdown-submenu .is-dropdown-submenu-parent > a::after { + right: 14px; + margin-top: -3px; } + .is-dropdown-submenu .is-dropdown-submenu-parent.opens-left > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent #2199e8 transparent transparent; + border-right-style: solid; + border-left-width: 0; } + .is-dropdown-submenu .is-dropdown-submenu-parent.opens-right > a::after { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 5px; + border-color: transparent transparent transparent #2199e8; + border-left-style: solid; + border-right-width: 0; } + .is-dropdown-submenu .is-dropdown-submenu { + margin-top: -1px; } + .is-dropdown-submenu > li { + width: 100%; } + .is-dropdown-submenu.js-dropdown-active { + display: block; } + +.flex-video { + position: relative; + height: 0; + padding-bottom: 75%; + margin-bottom: 1rem; + overflow: hidden; } + .flex-video iframe, + .flex-video object, + .flex-video embed, + .flex-video video { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; } + .flex-video.widescreen { + padding-bottom: 56.25%; } + .flex-video.vimeo { + padding-top: 0; } + +.label { + display: inline-block; + padding: 0.33333rem 0.5rem; + font-size: 0.8rem; + line-height: 1; + white-space: nowrap; + cursor: default; + border-radius: 0; + background: #2199e8; + color: #fefefe; } + .label.secondary { + background: #777; + color: #fefefe; } + .label.success { + background: #3adb76; + color: #fefefe; } + .label.warning { + background: #ffae00; + color: #fefefe; } + .label.alert { + background: #ec5840; + color: #fefefe; } + +.media-object { + margin-bottom: 1rem; + display: block; } + .media-object img { + max-width: none; } + @media screen and (max-width: 39.9375em) { + .media-object.stack-for-small .media-object-section { + padding: 0; + padding-bottom: 1rem; + display: block; } + .media-object.stack-for-small .media-object-section img { + width: 100%; } } + +.media-object-section { + display: table-cell; + vertical-align: top; } + .media-object-section:first-child { + padding-right: 1rem; } + .media-object-section:last-child:not(:nth-child(2)) { + padding-left: 1rem; } + .media-object-section > :last-child { + margin-bottom: 0; } + .media-object-section.middle { + vertical-align: middle; } + .media-object-section.bottom { + vertical-align: bottom; } + +html, +body { + height: 100%; } + +.off-canvas-wrapper { + width: 100%; + overflow-x: hidden; + position: relative; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-overflow-scrolling: auto; } + +.off-canvas-wrapper-inner { + position: relative; + width: 100%; + transition: -webkit-transform 0.5s ease; + transition: transform 0.5s ease; } + .off-canvas-wrapper-inner::before, .off-canvas-wrapper-inner::after { + content: ' '; + display: table; } + .off-canvas-wrapper-inner::after { + clear: both; } + +.off-canvas-content, +.off-canvas-content { + min-height: 100%; + background: #fefefe; + transition: -webkit-transform 0.5s ease; + transition: transform 0.5s ease; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; + padding-bottom: 0.1px; + box-shadow: 0 0 10px rgba(10, 10, 10, 0.5); } + +.js-off-canvas-exit { + display: none; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(254, 254, 254, 0.25); + cursor: pointer; + transition: background 0.5s ease; } + +.off-canvas { + position: absolute; + background: #e6e6e6; + z-index: -1; + max-height: 100%; + overflow-y: auto; + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); } + [data-whatinput='mouse'] .off-canvas { + outline: 0; } + .off-canvas.position-left { + left: -250px; + top: 0; + width: 250px; } + .is-open-left { + -webkit-transform: translateX(250px); + -ms-transform: translateX(250px); + transform: translateX(250px); } + .off-canvas.position-right { + right: -250px; + top: 0; + width: 250px; } + .is-open-right { + -webkit-transform: translateX(-250px); + -ms-transform: translateX(-250px); + transform: translateX(-250px); } + +@media screen and (min-width: 40em) { + .position-left.reveal-for-medium { + left: 0; + z-index: auto; + position: fixed; } + .position-left.reveal-for-medium ~ .off-canvas-content { + margin-left: 250px; } + .position-right.reveal-for-medium { + right: 0; + z-index: auto; + position: fixed; } + .position-right.reveal-for-medium ~ .off-canvas-content { + margin-right: 250px; } } + +@media screen and (min-width: 64em) { + .position-left.reveal-for-large { + left: 0; + z-index: auto; + position: fixed; } + .position-left.reveal-for-large ~ .off-canvas-content { + margin-left: 250px; } + .position-right.reveal-for-large { + right: 0; + z-index: auto; + position: fixed; } + .position-right.reveal-for-large ~ .off-canvas-content { + margin-right: 250px; } } + +.orbit { + position: relative; } + +.orbit-container { + position: relative; + margin: 0; + overflow: hidden; + list-style: none; } + +.orbit-slide { + width: 100%; + max-height: 100%; } + .orbit-slide.no-motionui.is-active { + top: 0; + left: 0; } + +.orbit-figure { + margin: 0; } + +.orbit-image { + margin: 0; + width: 100%; + max-width: 100%; } + +.orbit-caption { + position: absolute; + bottom: 0; + width: 100%; + padding: 1rem; + margin-bottom: 0; + color: #fefefe; + background-color: rgba(10, 10, 10, 0.5); } + +.orbit-previous, .orbit-next { + position: absolute; + top: 50%; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); + z-index: 10; + padding: 1rem; + color: #fefefe; } + [data-whatinput='mouse'] .orbit-previous, [data-whatinput='mouse'] .orbit-next { + outline: 0; } + .orbit-previous:hover, .orbit-next:hover, .orbit-previous:active, .orbit-next:active, .orbit-previous:focus, .orbit-next:focus { + background-color: rgba(10, 10, 10, 0.5); } + +.orbit-previous { + left: 0; } + +.orbit-next { + left: auto; + right: 0; } + +.orbit-bullets { + position: relative; + margin-top: 0.8rem; + margin-bottom: 0.8rem; + text-align: center; } + [data-whatinput='mouse'] .orbit-bullets { + outline: 0; } + .orbit-bullets button { + width: 1.2rem; + height: 1.2rem; + margin: 0.1rem; + background-color: #cacaca; + border-radius: 50%; } + .orbit-bullets button:hover { + background-color: #8a8a8a; } + .orbit-bullets button.is-active { + background-color: #8a8a8a; } + +.pagination { + margin-left: 0; + margin-bottom: 1rem; } + .pagination::before, .pagination::after { + content: ' '; + display: table; } + .pagination::after { + clear: both; } + .pagination li { + font-size: 0.875rem; + margin-right: 0.0625rem; + border-radius: 0; + display: none; } + .pagination li:last-child, .pagination li:first-child { + display: inline-block; } + @media screen and (min-width: 40em) { + .pagination li { + display: inline-block; } } + .pagination a, + .pagination button { + color: #0a0a0a; + display: block; + padding: 0.1875rem 0.625rem; + border-radius: 0; } + .pagination a:hover, + .pagination button:hover { + background: #e6e6e6; } + .pagination .current { + padding: 0.1875rem 0.625rem; + background: #2199e8; + color: #fefefe; + cursor: default; } + .pagination .disabled { + padding: 0.1875rem 0.625rem; + color: #cacaca; + cursor: not-allowed; } + .pagination .disabled:hover { + background: transparent; } + .pagination .ellipsis::after { + content: '\2026'; + padding: 0.1875rem 0.625rem; + color: #0a0a0a; } + +.pagination-previous a::before, +.pagination-previous.disabled::before { + content: '\00ab'; + display: inline-block; + margin-right: 0.5rem; } + +.pagination-next a::after, +.pagination-next.disabled::after { + content: '\00bb'; + display: inline-block; + margin-left: 0.5rem; } + +.progress { + background-color: #cacaca; + height: 1rem; + margin-bottom: 1rem; + border-radius: 0; } + .progress.primary .progress-meter { + background-color: #2199e8; } + .progress.secondary .progress-meter { + background-color: #777; } + .progress.success .progress-meter { + background-color: #3adb76; } + .progress.warning .progress-meter { + background-color: #ffae00; } + .progress.alert .progress-meter { + background-color: #ec5840; } + +.progress-meter { + position: relative; + display: block; + width: 0%; + height: 100%; + background-color: #2199e8; } + +.progress-meter-text { + position: absolute; + top: 50%; + left: 50%; + -webkit-transform: translate(-50%, -50%); + -ms-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + position: absolute; + margin: 0; + font-size: 0.75rem; + font-weight: bold; + color: #fefefe; + white-space: nowrap; } + +body.is-reveal-open { + overflow: hidden; } + +html.is-reveal-open, +html.is-reveal-open body { + height: 100%; + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + +.reveal-overlay { + display: none; + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 1005; + background-color: rgba(10, 10, 10, 0.45); + overflow-y: scroll; } + +.reveal { + display: none; + z-index: 1006; + padding: 1rem; + border: 1px solid #cacaca; + background-color: #fefefe; + border-radius: 0; + position: relative; + top: 100px; + margin-left: auto; + margin-right: auto; + overflow-y: auto; } + [data-whatinput='mouse'] .reveal { + outline: 0; } + @media screen and (min-width: 40em) { + .reveal { + min-height: 0; } } + .reveal .column, .reveal .columns, + .reveal .columns { + min-width: 0; } + .reveal > :last-child { + margin-bottom: 0; } + @media screen and (min-width: 40em) { + .reveal { + width: 600px; + max-width: 75rem; } } + @media screen and (min-width: 40em) { + .reveal .reveal { + left: auto; + right: auto; + margin: 0 auto; } } + .reveal.collapse { + padding: 0; } + @media screen and (min-width: 40em) { + .reveal.tiny { + width: 30%; + max-width: 75rem; } } + @media screen and (min-width: 40em) { + .reveal.small { + width: 50%; + max-width: 75rem; } } + @media screen and (min-width: 40em) { + .reveal.large { + width: 90%; + max-width: 75rem; } } + .reveal.full { + top: 0; + left: 0; + width: 100%; + height: 100%; + height: 100vh; + min-height: 100vh; + max-width: none; + margin-left: 0; + border: 0; + border-radius: 0; } + @media screen and (max-width: 39.9375em) { + .reveal { + top: 0; + left: 0; + width: 100%; + height: 100%; + height: 100vh; + min-height: 100vh; + max-width: none; + margin-left: 0; + border: 0; + border-radius: 0; } } + .reveal.without-overlay { + position: fixed; } + +.slider { + position: relative; + height: 0.5rem; + margin-top: 1.25rem; + margin-bottom: 2.25rem; + background-color: #e6e6e6; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -ms-touch-action: none; + touch-action: none; } + +.slider-fill { + position: absolute; + top: 0; + left: 0; + display: inline-block; + max-width: 100%; + height: 0.5rem; + background-color: #cacaca; + transition: all 0.2s ease-in-out; } + .slider-fill.is-dragging { + transition: all 0s linear; } + +.slider-handle { + position: absolute; + top: 50%; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); + position: absolute; + left: 0; + z-index: 1; + display: inline-block; + width: 1.4rem; + height: 1.4rem; + background-color: #2199e8; + transition: all 0.2s ease-in-out; + -ms-touch-action: manipulation; + touch-action: manipulation; + border-radius: 0; } + [data-whatinput='mouse'] .slider-handle { + outline: 0; } + .slider-handle:hover { + background-color: #1583cc; } + .slider-handle.is-dragging { + transition: all 0s linear; } + +.slider.disabled, +.slider[disabled] { + opacity: 0.25; + cursor: not-allowed; } + +.slider.vertical { + display: inline-block; + width: 0.5rem; + height: 12.5rem; + margin: 0 1.25rem; + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); } + .slider.vertical .slider-fill { + top: 0; + width: 0.5rem; + max-height: 100%; } + .slider.vertical .slider-handle { + position: absolute; + top: 0; + left: 50%; + width: 1.4rem; + height: 1.4rem; + -webkit-transform: translateX(-50%); + -ms-transform: translateX(-50%); + transform: translateX(-50%); } + +.sticky-container { + position: relative; } + +.sticky { + position: absolute; + z-index: 0; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + +.sticky.is-stuck { + position: fixed; + z-index: 5; } + .sticky.is-stuck.is-at-top { + top: 0; } + .sticky.is-stuck.is-at-bottom { + bottom: 0; } + +.sticky.is-anchored { + position: absolute; + left: auto; + right: auto; } + .sticky.is-anchored.is-at-bottom { + bottom: 0; } + +.switch { + margin-bottom: 1rem; + outline: 0; + position: relative; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #fefefe; + font-weight: bold; + font-size: 0.875rem; } + +.switch-input { + opacity: 0; + position: absolute; } + +.switch-paddle { + background: #cacaca; + cursor: pointer; + display: block; + position: relative; + width: 4rem; + height: 2rem; + transition: all 0.25s ease-out; + border-radius: 0; + color: inherit; + font-weight: inherit; } + input + .switch-paddle { + margin: 0; } + .switch-paddle::after { + background: #fefefe; + content: ''; + display: block; + position: absolute; + height: 1.5rem; + left: 0.25rem; + top: 0.25rem; + width: 1.5rem; + transition: all 0.25s ease-out; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + border-radius: 0; } + input:checked ~ .switch-paddle { + background: #2199e8; } + input:checked ~ .switch-paddle::after { + left: 2.25rem; } + [data-whatinput='mouse'] input:focus ~ .switch-paddle { + outline: 0; } + +.switch-active, .switch-inactive { + position: absolute; + top: 50%; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); } + +.switch-active { + left: 8%; + display: none; } + input:checked + label > .switch-active { + display: block; } + +.switch-inactive { + right: 15%; } + input:checked + label > .switch-inactive { + display: none; } + +.switch.tiny .switch-paddle { + width: 3rem; + height: 1.5rem; + font-size: 0.625rem; } + +.switch.tiny .switch-paddle::after { + width: 1rem; + height: 1rem; } + +.switch.tiny input:checked ~ .switch-paddle::after { + left: 1.75rem; } + +.switch.small .switch-paddle { + width: 3.5rem; + height: 1.75rem; + font-size: 0.75rem; } + +.switch.small .switch-paddle::after { + width: 1.25rem; + height: 1.25rem; } + +.switch.small input:checked ~ .switch-paddle::after { + left: 2rem; } + +.switch.large .switch-paddle { + width: 5rem; + height: 2.5rem; + font-size: 1rem; } + +.switch.large .switch-paddle::after { + width: 2rem; + height: 2rem; } + +.switch.large input:checked ~ .switch-paddle::after { + left: 2.75rem; } + +table { + width: 100%; + margin-bottom: 1rem; + border-radius: 0; } + table thead, + table tbody, + table tfoot { + border: 1px solid #f1f1f1; + background-color: #fefefe; } + table caption { + font-weight: bold; + padding: 0.5rem 0.625rem 0.625rem; } + table thead, + table tfoot { + background: #f8f8f8; + color: #0a0a0a; } + table thead tr, + table tfoot tr { + background: transparent; } + table thead th, + table thead td, + table tfoot th, + table tfoot td { + padding: 0.5rem 0.625rem 0.625rem; + font-weight: bold; + text-align: left; } + table tbody tr:nth-child(even) { + background-color: #f1f1f1; } + table tbody th, + table tbody td { + padding: 0.5rem 0.625rem 0.625rem; } + +@media screen and (max-width: 63.9375em) { + table.stack thead { + display: none; } + table.stack tfoot { + display: none; } + table.stack tr, + table.stack th, + table.stack td { + display: block; } + table.stack td { + border-top: 0; } } + +table.scroll { + display: block; + width: 100%; + overflow-x: auto; } + +table.hover tr:hover { + background-color: #f9f9f9; } + +table.hover tr:nth-of-type(even):hover { + background-color: #ececec; } + +.table-scroll { + overflow-x: auto; } + .table-scroll table { + width: auto; } + +.tabs { + margin: 0; + list-style-type: none; + background: #fefefe; + border: 1px solid #e6e6e6; } + .tabs::before, .tabs::after { + content: ' '; + display: table; } + .tabs::after { + clear: both; } + +.tabs.vertical > li { + width: auto; + float: none; + display: block; } + +.tabs.simple > li > a { + padding: 0; } + .tabs.simple > li > a:hover { + background: transparent; } + +.tabs.primary { + background: #2199e8; } + .tabs.primary > li > a { + color: #fefefe; } + .tabs.primary > li > a:hover, .tabs.primary > li > a:focus { + background: #1893e4; } + +.tabs-title { + float: left; } + .tabs-title > a { + display: block; + padding: 1.25rem 1.5rem; + line-height: 1; + font-size: 0.75rem; } + .tabs-title > a:hover { + background: #fefefe; } + .tabs-title > a:focus, .tabs-title > a[aria-selected='true'] { + background: #e6e6e6; } + +.tabs-content { + background: #fefefe; + transition: all 0.5s ease; + border: 1px solid #e6e6e6; + border-top: 0; } + +.tabs-content.vertical { + border: 1px solid #e6e6e6; + border-left: 0; } + +.tabs-panel { + display: none; + padding: 1rem; } + .tabs-panel.is-active { + display: block; } + +.thumbnail { + border: solid 4px #fefefe; + box-shadow: 0 0 0 1px rgba(10, 10, 10, 0.2); + display: inline-block; + line-height: 0; + max-width: 100%; + transition: box-shadow 200ms ease-out; + border-radius: 0; + margin-bottom: 1rem; } + .thumbnail:hover, .thumbnail:focus { + box-shadow: 0 0 6px 1px rgba(33, 153, 232, 0.5); } + +.title-bar { + background: #0a0a0a; + color: #fefefe; + padding: 0.5rem; } + .title-bar::before, .title-bar::after { + content: ' '; + display: table; } + .title-bar::after { + clear: both; } + .title-bar .menu-icon { + margin-left: 0.25rem; + margin-right: 0.25rem; } + +.title-bar-left { + float: left; } + +.title-bar-right { + float: right; + text-align: right; } + +.title-bar-title { + font-weight: bold; + vertical-align: middle; + display: inline-block; } + +.menu-icon.dark { + position: relative; + display: inline-block; + vertical-align: middle; + cursor: pointer; + width: 20px; + height: 16px; } + .menu-icon.dark::after { + content: ''; + position: absolute; + display: block; + width: 100%; + height: 2px; + background: #0a0a0a; + top: 0; + left: 0; + box-shadow: 0 7px 0 #0a0a0a, 0 14px 0 #0a0a0a; } + .menu-icon.dark:hover::after { + background: #8a8a8a; + box-shadow: 0 7px 0 #8a8a8a, 0 14px 0 #8a8a8a; } + +.has-tip { + border-bottom: dotted 1px #8a8a8a; + font-weight: bold; + position: relative; + display: inline-block; + cursor: help; } + +.tooltip { + background-color: #0a0a0a; + color: #fefefe; + font-size: 80%; + padding: 0.75rem; + position: absolute; + z-index: 10; + top: calc(100% + 0.6495rem); + max-width: 10rem !important; + border-radius: 0; } + .tooltip::before { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 0.75rem; + border-color: transparent transparent #0a0a0a; + border-bottom-style: solid; + border-top-width: 0; + bottom: 100%; + position: absolute; + left: 50%; + -webkit-transform: translateX(-50%); + -ms-transform: translateX(-50%); + transform: translateX(-50%); } + .tooltip.top::before { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 0.75rem; + border-color: #0a0a0a transparent transparent; + border-top-style: solid; + border-bottom-width: 0; + top: 100%; + bottom: auto; } + .tooltip.left::before { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 0.75rem; + border-color: transparent transparent transparent #0a0a0a; + border-left-style: solid; + border-right-width: 0; + bottom: auto; + left: 100%; + top: 50%; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); } + .tooltip.right::before { + content: ''; + display: block; + width: 0; + height: 0; + border: inset 0.75rem; + border-color: transparent #0a0a0a transparent transparent; + border-right-style: solid; + border-left-width: 0; + bottom: auto; + left: auto; + right: 100%; + top: 50%; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); } + +.top-bar { + padding: 0.5rem; } + .top-bar::before, .top-bar::after { + content: ' '; + display: table; } + .top-bar::after { + clear: both; } + .top-bar, + .top-bar ul { + background-color: #e6e6e6; } + .top-bar input { + max-width: 200px; + margin-right: 1rem; } + .top-bar .input-group-field { + width: 100%; + margin-right: 0; } + .top-bar input.button { + width: auto; } + .top-bar .top-bar-left, + .top-bar .top-bar-right { + width: 100%; } + @media screen and (min-width: 40em) { + .top-bar .top-bar-left, + .top-bar .top-bar-right { + width: auto; } } + @media screen and (max-width: 63.9375em) { + .top-bar.stacked-for-medium .top-bar-left, + .top-bar.stacked-for-medium .top-bar-right { + width: 100%; } } + @media screen and (max-width: 74.9375em) { + .top-bar.stacked-for-large .top-bar-left, + .top-bar.stacked-for-large .top-bar-right { + width: 100%; } } + +.top-bar-title { + float: left; + margin-right: 1rem; } + +.top-bar-left { + float: left; } + +.top-bar-right { + float: right; } + +.hide { + display: none !important; } + +.invisible { + visibility: hidden; } + +@media screen and (max-width: 39.9375em) { + .hide-for-small-only { + display: none !important; } } + +@media screen and (max-width: 0em), screen and (min-width: 40em) { + .show-for-small-only { + display: none !important; } } + +@media screen and (min-width: 40em) { + .hide-for-medium { + display: none !important; } } + +@media screen and (max-width: 39.9375em) { + .show-for-medium { + display: none !important; } } + +@media screen and (min-width: 40em) and (max-width: 63.9375em) { + .hide-for-medium-only { + display: none !important; } } + +@media screen and (max-width: 39.9375em), screen and (min-width: 64em) { + .show-for-medium-only { + display: none !important; } } + +@media screen and (min-width: 64em) { + .hide-for-large { + display: none !important; } } + +@media screen and (max-width: 63.9375em) { + .show-for-large { + display: none !important; } } + +@media screen and (min-width: 64em) and (max-width: 74.9375em) { + .hide-for-large-only { + display: none !important; } } + +@media screen and (max-width: 63.9375em), screen and (min-width: 75em) { + .show-for-large-only { + display: none !important; } } + +.show-for-sr, +.show-on-focus { + position: absolute !important; + width: 1px; + height: 1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); } + +.show-on-focus:active, .show-on-focus:focus { + position: static !important; + height: auto; + width: auto; + overflow: visible; + clip: auto; } + +.show-for-landscape, +.hide-for-portrait { + display: block !important; } + @media screen and (orientation: landscape) { + .show-for-landscape, + .hide-for-portrait { + display: block !important; } } + @media screen and (orientation: portrait) { + .show-for-landscape, + .hide-for-portrait { + display: none !important; } } + +.hide-for-landscape, +.show-for-portrait { + display: none !important; } + @media screen and (orientation: landscape) { + .hide-for-landscape, + .show-for-portrait { + display: none !important; } } + @media screen and (orientation: portrait) { + .hide-for-landscape, + .show-for-portrait { + display: block !important; } } + +.float-left { + float: left !important; } + +.float-right { + float: right !important; } + +.float-center { + display: block; + margin-left: auto; + margin-right: auto; } + +.clearfix::before, .clearfix::after { + content: ' '; + display: table; } + +.clearfix::after { + clear: both; } + +.slide-in-down.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + -webkit-transform: translateY(-100%); + -ms-transform: translateY(-100%); + transform: translateY(-100%); + transition-property: -webkit-transform, opacity; + transition-property: transform, opacity; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } + +.slide-in-down.mui-enter.mui-enter-active { + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); } + +.slide-in-left.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + -webkit-transform: translateX(-100%); + -ms-transform: translateX(-100%); + transform: translateX(-100%); + transition-property: -webkit-transform, opacity; + transition-property: transform, opacity; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } + +.slide-in-left.mui-enter.mui-enter-active { + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); } + +.slide-in-up.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + -webkit-transform: translateY(100%); + -ms-transform: translateY(100%); + transform: translateY(100%); + transition-property: -webkit-transform, opacity; + transition-property: transform, opacity; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } + +.slide-in-up.mui-enter.mui-enter-active { + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); } + +.slide-in-right.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); + transition-property: -webkit-transform, opacity; + transition-property: transform, opacity; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } + +.slide-in-right.mui-enter.mui-enter-active { + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); } + +.slide-out-down.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); + transition-property: -webkit-transform, opacity; + transition-property: transform, opacity; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } + +.slide-out-down.mui-leave.mui-leave-active { + -webkit-transform: translateY(100%); + -ms-transform: translateY(100%); + transform: translateY(100%); } + +.slide-out-right.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + transition-property: -webkit-transform, opacity; + transition-property: transform, opacity; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } + +.slide-out-right.mui-leave.mui-leave-active { + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); } + +.slide-out-up.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + -webkit-transform: translateY(0); + -ms-transform: translateY(0); + transform: translateY(0); + transition-property: -webkit-transform, opacity; + transition-property: transform, opacity; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } + +.slide-out-up.mui-leave.mui-leave-active { + -webkit-transform: translateY(-100%); + -ms-transform: translateY(-100%); + transform: translateY(-100%); } + +.slide-out-left.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + transition-property: -webkit-transform, opacity; + transition-property: transform, opacity; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; } + +.slide-out-left.mui-leave.mui-leave-active { + -webkit-transform: translateX(-100%); + -ms-transform: translateX(-100%); + transform: translateX(-100%); } + +.fade-in.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + opacity: 0; + transition-property: opacity; } + +.fade-in.mui-enter.mui-enter-active { + opacity: 1; } + +.fade-out.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + opacity: 1; + transition-property: opacity; } + +.fade-out.mui-leave.mui-leave-active { + opacity: 0; } + +.hinge-in-from-top.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + -webkit-transform: perspective(2000px) rotateX(-90deg); + transform: perspective(2000px) rotateX(-90deg); + -webkit-transform-origin: top; + -ms-transform-origin: top; + transform-origin: top; + transition-property: -webkit-transform, opacity; + transition-property: transform, opacity; + opacity: 0; } + +.hinge-in-from-top.mui-enter.mui-enter-active { + -webkit-transform: perspective(2000px) rotate(0deg); + transform: perspective(2000px) rotate(0deg); + opacity: 1; } + +.hinge-in-from-right.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + -webkit-transform: perspective(2000px) rotateY(-90deg); + transform: perspective(2000px) rotateY(-90deg); + -webkit-transform-origin: right; + -ms-transform-origin: right; + transform-origin: right; + transition-property: -webkit-transform, opacity; + transition-property: transform, opacity; + opacity: 0; } + +.hinge-in-from-right.mui-enter.mui-enter-active { + -webkit-transform: perspective(2000px) rotate(0deg); + transform: perspective(2000px) rotate(0deg); + opacity: 1; } + +.hinge-in-from-bottom.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + -webkit-transform: perspective(2000px) rotateX(90deg); + transform: perspective(2000px) rotateX(90deg); + -webkit-transform-origin: bottom; + -ms-transform-origin: bottom; + transform-origin: bottom; + transition-property: -webkit-transform, opacity; + transition-property: transform, opacity; + opacity: 0; } + +.hinge-in-from-bottom.mui-enter.mui-enter-active { + -webkit-transform: perspective(2000px) rotate(0deg); + transform: perspective(2000px) rotate(0deg); + opacity: 1; } + +.hinge-in-from-left.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + -webkit-transform: perspective(2000px) rotateY(90deg); + transform: perspective(2000px) rotateY(90deg); + -webkit-transform-origin: left; + -ms-transform-origin: left; + transform-origin: left; + transition-property: -webkit-transform, opacity; + transition-property: transform, opacity; + opacity: 0; } + +.hinge-in-from-left.mui-enter.mui-enter-active { + -webkit-transform: perspective(2000px) rotate(0deg); + transform: perspective(2000px) rotate(0deg); + opacity: 1; } + +.hinge-in-from-middle-x.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + -webkit-transform: perspective(2000px) rotateX(-90deg); + transform: perspective(2000px) rotateX(-90deg); + -webkit-transform-origin: center; + -ms-transform-origin: center; + transform-origin: center; + transition-property: -webkit-transform, opacity; + transition-property: transform, opacity; + opacity: 0; } + +.hinge-in-from-middle-x.mui-enter.mui-enter-active { + -webkit-transform: perspective(2000px) rotate(0deg); + transform: perspective(2000px) rotate(0deg); + opacity: 1; } + +.hinge-in-from-middle-y.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + -webkit-transform: perspective(2000px) rotateY(-90deg); + transform: perspective(2000px) rotateY(-90deg); + -webkit-transform-origin: center; + -ms-transform-origin: center; + transform-origin: center; + transition-property: -webkit-transform, opacity; + transition-property: transform, opacity; + opacity: 0; } + +.hinge-in-from-middle-y.mui-enter.mui-enter-active { + -webkit-transform: perspective(2000px) rotate(0deg); + transform: perspective(2000px) rotate(0deg); + opacity: 1; } + +.hinge-out-from-top.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + -webkit-transform: perspective(2000px) rotate(0deg); + transform: perspective(2000px) rotate(0deg); + -webkit-transform-origin: top; + -ms-transform-origin: top; + transform-origin: top; + transition-property: -webkit-transform, opacity; + transition-property: transform, opacity; + opacity: 1; } + +.hinge-out-from-top.mui-leave.mui-leave-active { + -webkit-transform: perspective(2000px) rotateX(-90deg); + transform: perspective(2000px) rotateX(-90deg); + opacity: 0; } + +.hinge-out-from-right.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + -webkit-transform: perspective(2000px) rotate(0deg); + transform: perspective(2000px) rotate(0deg); + -webkit-transform-origin: right; + -ms-transform-origin: right; + transform-origin: right; + transition-property: -webkit-transform, opacity; + transition-property: transform, opacity; + opacity: 1; } + +.hinge-out-from-right.mui-leave.mui-leave-active { + -webkit-transform: perspective(2000px) rotateY(-90deg); + transform: perspective(2000px) rotateY(-90deg); + opacity: 0; } + +.hinge-out-from-bottom.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + -webkit-transform: perspective(2000px) rotate(0deg); + transform: perspective(2000px) rotate(0deg); + -webkit-transform-origin: bottom; + -ms-transform-origin: bottom; + transform-origin: bottom; + transition-property: -webkit-transform, opacity; + transition-property: transform, opacity; + opacity: 1; } + +.hinge-out-from-bottom.mui-leave.mui-leave-active { + -webkit-transform: perspective(2000px) rotateX(90deg); + transform: perspective(2000px) rotateX(90deg); + opacity: 0; } + +.hinge-out-from-left.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + -webkit-transform: perspective(2000px) rotate(0deg); + transform: perspective(2000px) rotate(0deg); + -webkit-transform-origin: left; + -ms-transform-origin: left; + transform-origin: left; + transition-property: -webkit-transform, opacity; + transition-property: transform, opacity; + opacity: 1; } + +.hinge-out-from-left.mui-leave.mui-leave-active { + -webkit-transform: perspective(2000px) rotateY(90deg); + transform: perspective(2000px) rotateY(90deg); + opacity: 0; } + +.hinge-out-from-middle-x.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + -webkit-transform: perspective(2000px) rotate(0deg); + transform: perspective(2000px) rotate(0deg); + -webkit-transform-origin: center; + -ms-transform-origin: center; + transform-origin: center; + transition-property: -webkit-transform, opacity; + transition-property: transform, opacity; + opacity: 1; } + +.hinge-out-from-middle-x.mui-leave.mui-leave-active { + -webkit-transform: perspective(2000px) rotateX(-90deg); + transform: perspective(2000px) rotateX(-90deg); + opacity: 0; } + +.hinge-out-from-middle-y.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + -webkit-transform: perspective(2000px) rotate(0deg); + transform: perspective(2000px) rotate(0deg); + -webkit-transform-origin: center; + -ms-transform-origin: center; + transform-origin: center; + transition-property: -webkit-transform, opacity; + transition-property: transform, opacity; + opacity: 1; } + +.hinge-out-from-middle-y.mui-leave.mui-leave-active { + -webkit-transform: perspective(2000px) rotateY(-90deg); + transform: perspective(2000px) rotateY(-90deg); + opacity: 0; } + +.scale-in-up.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + -webkit-transform: scale(0.5); + -ms-transform: scale(0.5); + transform: scale(0.5); + transition-property: -webkit-transform, opacity; + transition-property: transform, opacity; + opacity: 0; } + +.scale-in-up.mui-enter.mui-enter-active { + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); + opacity: 1; } + +.scale-in-down.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + -webkit-transform: scale(1.5); + -ms-transform: scale(1.5); + transform: scale(1.5); + transition-property: -webkit-transform, opacity; + transition-property: transform, opacity; + opacity: 0; } + +.scale-in-down.mui-enter.mui-enter-active { + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); + opacity: 1; } + +.scale-out-up.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); + transition-property: -webkit-transform, opacity; + transition-property: transform, opacity; + opacity: 1; } + +.scale-out-up.mui-leave.mui-leave-active { + -webkit-transform: scale(1.5); + -ms-transform: scale(1.5); + transform: scale(1.5); + opacity: 0; } + +.scale-out-down.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); + transition-property: -webkit-transform, opacity; + transition-property: transform, opacity; + opacity: 1; } + +.scale-out-down.mui-leave.mui-leave-active { + -webkit-transform: scale(0.5); + -ms-transform: scale(0.5); + transform: scale(0.5); + opacity: 0; } + +.spin-in.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + -webkit-transform: rotate(-0.75turn); + -ms-transform: rotate(-0.75turn); + transform: rotate(-0.75turn); + transition-property: -webkit-transform, opacity; + transition-property: transform, opacity; + opacity: 0; } + +.spin-in.mui-enter.mui-enter-active { + -webkit-transform: rotate(0); + -ms-transform: rotate(0); + transform: rotate(0); + opacity: 1; } + +.spin-out.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + -webkit-transform: rotate(0); + -ms-transform: rotate(0); + transform: rotate(0); + transition-property: -webkit-transform, opacity; + transition-property: transform, opacity; + opacity: 1; } + +.spin-out.mui-leave.mui-leave-active { + -webkit-transform: rotate(0.75turn); + -ms-transform: rotate(0.75turn); + transform: rotate(0.75turn); + opacity: 0; } + +.spin-in-ccw.mui-enter { + transition-duration: 500ms; + transition-timing-function: linear; + -webkit-transform: rotate(0.75turn); + -ms-transform: rotate(0.75turn); + transform: rotate(0.75turn); + transition-property: -webkit-transform, opacity; + transition-property: transform, opacity; + opacity: 0; } + +.spin-in-ccw.mui-enter.mui-enter-active { + -webkit-transform: rotate(0); + -ms-transform: rotate(0); + transform: rotate(0); + opacity: 1; } + +.spin-out-ccw.mui-leave { + transition-duration: 500ms; + transition-timing-function: linear; + -webkit-transform: rotate(0); + -ms-transform: rotate(0); + transform: rotate(0); + transition-property: -webkit-transform, opacity; + transition-property: transform, opacity; + opacity: 1; } + +.spin-out-ccw.mui-leave.mui-leave-active { + -webkit-transform: rotate(-0.75turn); + -ms-transform: rotate(-0.75turn); + transform: rotate(-0.75turn); + opacity: 0; } + +.slow { + transition-duration: 750ms !important; } + +.fast { + transition-duration: 250ms !important; } + +.linear { + transition-timing-function: linear !important; } + +.ease { + transition-timing-function: ease !important; } + +.ease-in { + transition-timing-function: ease-in !important; } + +.ease-out { + transition-timing-function: ease-out !important; } + +.ease-in-out { + transition-timing-function: ease-in-out !important; } + +.bounce-in { + transition-timing-function: cubic-bezier(0.485, 0.155, 0.24, 1.245) !important; } + +.bounce-out { + transition-timing-function: cubic-bezier(0.485, 0.155, 0.515, 0.845) !important; } + +.bounce-in-out { + transition-timing-function: cubic-bezier(0.76, -0.245, 0.24, 1.245) !important; } + +.short-delay { + transition-delay: 300ms !important; } + +.long-delay { + transition-delay: 700ms !important; } + +.shake { + -webkit-animation-name: shake-7; + animation-name: shake-7; } + +@-webkit-keyframes shake-7 { + 0%, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90% { + -webkit-transform: translateX(7%); + transform: translateX(7%); } + 5%, 15%, 25%, 35%, 45%, 55%, 65%, 75%, 85%, 95% { + -webkit-transform: translateX(-7%); + transform: translateX(-7%); } } + +@keyframes shake-7 { + 0%, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90% { + -webkit-transform: translateX(7%); + transform: translateX(7%); } + 5%, 15%, 25%, 35%, 45%, 55%, 65%, 75%, 85%, 95% { + -webkit-transform: translateX(-7%); + transform: translateX(-7%); } } + +.spin-cw { + -webkit-animation-name: spin-cw-1turn; + animation-name: spin-cw-1turn; } + +@-webkit-keyframes spin-cw-1turn { + 0% { + -webkit-transform: rotate(-1turn); + transform: rotate(-1turn); } + 100% { + -webkit-transform: rotate(0); + transform: rotate(0); } } + +@keyframes spin-cw-1turn { + 0% { + -webkit-transform: rotate(-1turn); + transform: rotate(-1turn); } + 100% { + -webkit-transform: rotate(0); + transform: rotate(0); } } + +.spin-ccw { + -webkit-animation-name: spin-cw-1turn; + animation-name: spin-cw-1turn; } + +@keyframes spin-cw-1turn { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); } + 100% { + -webkit-transform: rotate(1turn); + transform: rotate(1turn); } } + +.wiggle { + -webkit-animation-name: wiggle-7deg; + animation-name: wiggle-7deg; } + +@-webkit-keyframes wiggle-7deg { + 40%, 50%, 60% { + -webkit-transform: rotate(7deg); + transform: rotate(7deg); } + 35%, 45%, 55%, 65% { + -webkit-transform: rotate(-7deg); + transform: rotate(-7deg); } + 0%, 30%, 70%, 100% { + -webkit-transform: rotate(0); + transform: rotate(0); } } + +@keyframes wiggle-7deg { + 40%, 50%, 60% { + -webkit-transform: rotate(7deg); + transform: rotate(7deg); } + 35%, 45%, 55%, 65% { + -webkit-transform: rotate(-7deg); + transform: rotate(-7deg); } + 0%, 30%, 70%, 100% { + -webkit-transform: rotate(0); + transform: rotate(0); } } + +.shake, +.spin-cw, +.spin-ccw, +.wiggle { + -webkit-animation-duration: 500ms; + animation-duration: 500ms; } + +.infinite { + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite; } + +.slow { + -webkit-animation-duration: 750ms !important; + animation-duration: 750ms !important; } + +.fast { + -webkit-animation-duration: 250ms !important; + animation-duration: 250ms !important; } + +.linear { + -webkit-animation-timing-function: linear !important; + animation-timing-function: linear !important; } + +.ease { + -webkit-animation-timing-function: ease !important; + animation-timing-function: ease !important; } + +.ease-in { + -webkit-animation-timing-function: ease-in !important; + animation-timing-function: ease-in !important; } + +.ease-out { + -webkit-animation-timing-function: ease-out !important; + animation-timing-function: ease-out !important; } + +.ease-in-out { + -webkit-animation-timing-function: ease-in-out !important; + animation-timing-function: ease-in-out !important; } + +.bounce-in { + -webkit-animation-timing-function: cubic-bezier(0.485, 0.155, 0.24, 1.245) !important; + animation-timing-function: cubic-bezier(0.485, 0.155, 0.24, 1.245) !important; } + +.bounce-out { + -webkit-animation-timing-function: cubic-bezier(0.485, 0.155, 0.515, 0.845) !important; + animation-timing-function: cubic-bezier(0.485, 0.155, 0.515, 0.845) !important; } + +.bounce-in-out { + -webkit-animation-timing-function: cubic-bezier(0.76, -0.245, 0.24, 1.245) !important; + animation-timing-function: cubic-bezier(0.76, -0.245, 0.24, 1.245) !important; } + +.short-delay { + -webkit-animation-delay: 300ms !important; + animation-delay: 300ms !important; } + +.long-delay { + -webkit-animation-delay: 700ms !important; + animation-delay: 700ms !important; } diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 89d45d120e..1ddad22a63 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -2,18 +2,12 @@ Vampazon - <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> - + <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> <%= csrf_meta_tags %> - - - <%= yield %> From 9e2217e12b0ac1725247d1a4f9aeade8484a8885 Mon Sep 17 00:00:00 2001 From: Sassa Kitka Date: Wed, 19 Oct 2016 15:04:20 -0700 Subject: [PATCH 34/46] fixed index routing --- config/routes.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/routes.rb b/config/routes.rb index 64d96f6fe7..0c9083f59a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -3,7 +3,7 @@ # we chose to make the convention of having the as: be action + plural. root to: 'homepages#index' - get 'homepages/index' + get 'homepages/index' => 'homepages#index', as: 'index' get 'homepages/:category/show' => 'homepages/show_category', as: 'show_category' From e6ff50c77d642681b6afcfbf7d4255553bf8dd9c Mon Sep 17 00:00:00 2001 From: Sassa Kitka Date: Wed, 19 Oct 2016 15:10:47 -0700 Subject: [PATCH 35/46] changed method names to RESTful names, show_products to show --- app/controllers/products_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index b6a0a8ed84..44c5a39024 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -1,9 +1,9 @@ class ProductsController < ApplicationController - def index_products + def index @products = Product.all.order("name") end - def show_products + def show @product = Product.find(pramas[:id].to_i) @seller = User.find(@product.user_id) @reviews = Review.where(@product.id) From 9a17c97aa924260c127df1f8685da3151111f818 Mon Sep 17 00:00:00 2001 From: Sassa Kitka Date: Wed, 19 Oct 2016 15:11:10 -0700 Subject: [PATCH 36/46] fixed routing typos --- config/routes.rb | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/config/routes.rb b/config/routes.rb index 0c9083f59a..5501d11d62 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -5,17 +5,17 @@ root to: 'homepages#index' get 'homepages/index' => 'homepages#index', as: 'index' - get 'homepages/:category/show' => 'homepages/show_category', as: 'show_category' + get 'homepages/show_category' => 'homepages#show_category', as: 'show_category' - # get 'homepages/new' + # get 'homepages/new' => 'homepages#new', as: 'new_homepages' # - # get 'homepages/create' + # post 'homepages/create' => 'homepages#create', as: 'create_homepages' # - # get 'homepages/edit' + # get 'homepages/edit' => 'homepages#edit', as: 'edit_homepages' # - # get 'homepages/update' + # patch 'homepages/update' => 'homepages#update', as: 'update_homepages' # - # get 'homepages/destroy' + # delete 'homepages/destroy' => 'homepages#destroy', as: 'destroy_homepages' #============== Users ================== From 2e2e1b1b80d0671f8d129d094bf68ce8e67819eb Mon Sep 17 00:00:00 2001 From: Elle Vargas Date: Wed, 19 Oct 2016 15:48:42 -0700 Subject: [PATCH 37/46] hopefully this destroyed the betsy files --- .gitignore | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index b52b09898f..5163a11e2c 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,8 @@ # Ignore the default SQLite database. /db/*.sqlite3 /db/*.sqlite3-journal +betsy_development +betsy_test # Ignore this annoying MACOS file which is a caching file and keeps thumbnails @@ -46,7 +48,7 @@ config/initializers/secret_token.rb # dotenv # TODO Comment out this rule if environment variables can be committed -# Hide the .env becuase of secrets +# Hide the .env becuase of secrets /.env ## Environment normalization: @@ -68,4 +70,4 @@ bower.json .powenv # Ignore Byebug command history file. -.byebug_history \ No newline at end of file +.byebug_history From 4c33e1c1774ade8f6357ed05476d93dbf58d117a Mon Sep 17 00:00:00 2001 From: Elle Vargas Date: Wed, 19 Oct 2016 16:26:47 -0700 Subject: [PATCH 38/46] updated two index and show product routes --- config/routes.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/routes.rb b/config/routes.rb index 5501d11d62..071358f8d0 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -35,11 +35,11 @@ #============== Products ================== - get 'products/index' => 'products#index_products', as: 'index_products' + get 'products/index' => 'products#index', as: 'index_products' get 'products/by_seller' => 'products#by_seller_products', as: 'by_seller_products' - get 'products/show/id:' => 'products#show_products', as: 'show_products' + get 'products/show/id:' => 'products#show', as: 'show_products' get 'products/new' => 'products#new', as: 'new_products' From e7e7867a268c65b2857a00bc9848d2e7e4df36f1 Mon Sep 17 00:00:00 2001 From: Trish Griego Date: Wed, 19 Oct 2016 18:46:06 -0700 Subject: [PATCH 39/46] fixing the route so that it pointed correctly to :id, istead of id:. --- config/routes.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/routes.rb b/config/routes.rb index 5501d11d62..2d8229c002 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -39,7 +39,7 @@ get 'products/by_seller' => 'products#by_seller_products', as: 'by_seller_products' - get 'products/show/id:' => 'products#show_products', as: 'show_products' + get 'products/show/:id' => 'products#show_products', as: 'show_products' get 'products/new' => 'products#new', as: 'new_products' From 41344aad414cd11e864195d7de71f3ee2cc1e46f Mon Sep 17 00:00:00 2001 From: Trish Griego Date: Wed, 19 Oct 2016 18:47:55 -0700 Subject: [PATCH 40/46] Changed file name and changed the view so product could render --- app/views/products/show_product.html.erb | 9 --------- app/views/products/show_products.html.erb | 9 +++++++++ 2 files changed, 9 insertions(+), 9 deletions(-) delete mode 100644 app/views/products/show_product.html.erb create mode 100644 app/views/products/show_products.html.erb diff --git a/app/views/products/show_product.html.erb b/app/views/products/show_product.html.erb deleted file mode 100644 index 1088ffbb4d..0000000000 --- a/app/views/products/show_product.html.erb +++ /dev/null @@ -1,9 +0,0 @@ -

@product.name

-<%= image_tag(@product.url), :class => "class_name" %> -Price: <%= @product.price %> -Description: <%= @product.description %> -Inventory: <%= @product.inventory %> -Category: <%= @product.category %> -Seller: <%= link_to @seller.name, by_seller_products_path %> -Average rating: <%= @product.average_rating %> -review: <%= @review.description %> diff --git a/app/views/products/show_products.html.erb b/app/views/products/show_products.html.erb new file mode 100644 index 0000000000..c1f2cf9c66 --- /dev/null +++ b/app/views/products/show_products.html.erb @@ -0,0 +1,9 @@ +

@product.name

+<%= image_tag(@product.photo_url, :class => "class_name") %> +Price: <%= @product.price %> +Description: <%= @product.description %> +Inventory: <%= @product.inventory %> +Category: <%= @product.category %> +Seller: <%#link_to @seller.name, by_seller_products_path %> +Average rating: <%# @product.average_rating %> +review: <%# @review.description %> From 28f5fbc1aa42b6a4ea5df5345d10c13af4699652 Mon Sep 17 00:00:00 2001 From: Trish Griego Date: Wed, 19 Oct 2016 18:48:48 -0700 Subject: [PATCH 41/46] added another method that is using same naming convention as route. --- app/controllers/products_controller.rb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index 44c5a39024..dc2af1e9a2 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -9,6 +9,15 @@ def show @reviews = Review.where(@product.id) end + def show_products + @product = Product.find(params[:id].to_i) + + end + + + + + def by_seller_products @products = Product.where(:user_id) end From e639eb9c49606837b759940ad64b9e7ae421081a Mon Sep 17 00:00:00 2001 From: Maya Wang Date: Wed, 19 Oct 2016 22:03:00 -0700 Subject: [PATCH 42/46] fix bugs on previous built features --- app/controllers/homepages_controller.rb | 4 ++-- app/views/homepages/index.html.erb | 4 ++-- app/views/homepages/show_category.html.erb | 4 ++-- app/views/layouts/application.html.erb | 3 +++ .../products/{index_products.html.erb => index.html.erb} | 2 +- config/routes.rb | 2 +- 6 files changed, 11 insertions(+), 8 deletions(-) rename app/views/products/{index_products.html.erb => index.html.erb} (59%) diff --git a/app/controllers/homepages_controller.rb b/app/controllers/homepages_controller.rb index 230e0b3d0d..ad63c99f9d 100644 --- a/app/controllers/homepages_controller.rb +++ b/app/controllers/homepages_controller.rb @@ -1,12 +1,12 @@ class HomepagesController < ApplicationController - def root + def index @product_categories = Product.uniq.pluck(:category) end def show_category @product_category = params[:category] - @products_in_category = Product.where(:category) + @products_in_category = Product.where(:category => @product_category) end end diff --git a/app/views/homepages/index.html.erb b/app/views/homepages/index.html.erb index 6939c6e1b8..1fbcc9cc7e 100644 --- a/app/views/homepages/index.html.erb +++ b/app/views/homepages/index.html.erb @@ -3,8 +3,8 @@

Shop by Category

<% @product_categories.each do |product_category| %> - <%= link_to product_category, show_category_path(product_category.category)%> + <%= link_to product_category, show_category_path(product_category)%> <% end %> -

<%= link_to "Browse All collections" index_products_path%>

+

<%= link_to "Browse All collections", index_products_path%>

diff --git a/app/views/homepages/show_category.html.erb b/app/views/homepages/show_category.html.erb index 36e052db87..91bcd6146a 100644 --- a/app/views/homepages/show_category.html.erb +++ b/app/views/homepages/show_category.html.erb @@ -1,7 +1,7 @@

<%= @product_category %>

<% @products_in_category.each do |product| %> - <%= link_to image_tag("product.photo_url", :class => "product_img"), show_products_path %> - <%= link_to product.name, show_products_path %> + <%= link_to image_tag("product.photo_url", :class => "product_img"), show_products_path(product.id) %> + <%= link_to product.name, show_products_path(product.id) %> <%= product.price %> <% end %> diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 1ddad22a63..9664925cc5 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -7,6 +7,9 @@ <%= csrf_meta_tags %> +
+ <%= link_to "home", root_path %> +
<%= yield %> diff --git a/app/views/products/index_products.html.erb b/app/views/products/index.html.erb similarity index 59% rename from app/views/products/index_products.html.erb rename to app/views/products/index.html.erb index f5b2ea2fc9..a24e822c06 100644 --- a/app/views/products/index_products.html.erb +++ b/app/views/products/index.html.erb @@ -1,7 +1,7 @@

Browse All Collections

<% @products.each do |product| %> - <%= link_to image_tag ("product.photo_url"), :class => "product_img", show_products_path(product.id) %> + <%= link_to image_tag("product.photo_url"), show_products_path(product.id), { :class => "product_img" } %> <%= link_to product.name, show_products_path(product.id) %> <%= product.price %> <% end %> diff --git a/config/routes.rb b/config/routes.rb index 2e3a87f016..7b1867617c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -5,7 +5,7 @@ root to: 'homepages#index' get 'homepages/index' => 'homepages#index', as: 'index' - get 'homepages/show_category' => 'homepages#show_category', as: 'show_category' + get 'homepages/:category/show_category' => 'homepages#show_category', as: 'show_category' # get 'homepages/new' => 'homepages#new', as: 'new_homepages' # From 9766915ef78b1bd11f4245e8b7a9a0c0c09c61be Mon Sep 17 00:00:00 2001 From: Maya Wang Date: Wed, 19 Oct 2016 22:38:57 -0700 Subject: [PATCH 43/46] fixed bugs on review feature --- app/models/product.rb | 3 +-- app/models/review.rb | 2 +- app/views/products/show.html.erb | 4 ++-- db/migrate/20161020052344_add_product_id_to_review.rb | 5 +++++ db/schema.rb | 4 +++- 5 files changed, 12 insertions(+), 6 deletions(-) create mode 100644 db/migrate/20161020052344_add_product_id_to_review.rb diff --git a/app/models/product.rb b/app/models/product.rb index e566147736..60ef388022 100644 --- a/app/models/product.rb +++ b/app/models/product.rb @@ -4,8 +4,7 @@ class Product < ActiveRecord::Base has_many :order_item def average_rating - product = Product.find(pramas[:id].to_i) - reviews = Review.where(product.id) + reviews = Review.where(:product_id => self.id) return reviews.average(:rank) end end diff --git a/app/models/review.rb b/app/models/review.rb index 77e10d0ac9..e707ac127d 100644 --- a/app/models/review.rb +++ b/app/models/review.rb @@ -1,4 +1,4 @@ class Review < ActiveRecord::Base belongs_to :user_id - validates :rank, presence: true, only_integer: true, :inclusion => 1..10, message: "only allows integers 1-5" + # validates :rank, presence: true, only_integer: true, :inclusion => 1..5, message: "only allows integers 1-5" end diff --git a/app/views/products/show.html.erb b/app/views/products/show.html.erb index c1f2cf9c66..87897738fb 100644 --- a/app/views/products/show.html.erb +++ b/app/views/products/show.html.erb @@ -1,9 +1,9 @@ -

@product.name

+

<%= @product.name %>

<%= image_tag(@product.photo_url, :class => "class_name") %> Price: <%= @product.price %> Description: <%= @product.description %> Inventory: <%= @product.inventory %> Category: <%= @product.category %> Seller: <%#link_to @seller.name, by_seller_products_path %> -Average rating: <%# @product.average_rating %> +Average rating: <%= @product.average_rating %> review: <%# @review.description %> diff --git a/db/migrate/20161020052344_add_product_id_to_review.rb b/db/migrate/20161020052344_add_product_id_to_review.rb new file mode 100644 index 0000000000..12dd055a5c --- /dev/null +++ b/db/migrate/20161020052344_add_product_id_to_review.rb @@ -0,0 +1,5 @@ +class AddProductIdToReview < ActiveRecord::Migration + def change + add_reference :reviews, :product, index: true, foreign_key: true + end +end diff --git a/db/schema.rb b/db/schema.rb index 8c0a3f1a07..ae46b26ec9 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20161018231156) do +ActiveRecord::Schema.define(version: 20161020052344) do create_table "order_items", force: :cascade do |t| t.decimal "unit_price" @@ -64,8 +64,10 @@ t.integer "rank" t.datetime "created_at", null: false t.datetime "updated_at", null: false + t.integer "product_id" end + add_index "reviews", ["product_id"], name: "index_reviews_on_product_id" add_index "reviews", ["user_id_id"], name: "index_reviews_on_user_id_id" create_table "users", force: :cascade do |t| From 2f7e4c551acc792ef65954b09465c2060c4a8c61 Mon Sep 17 00:00:00 2001 From: Maya Wang Date: Wed, 19 Oct 2016 22:43:02 -0700 Subject: [PATCH 44/46] fixed bugs on review views --- app/controllers/products_controller.rb | 2 +- app/views/products/show.html.erb | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index e11b50c69d..515bb0e098 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -6,7 +6,7 @@ def index def show @product = Product.find(params[:id].to_i) # @seller = User.find(@product.user_id) - # @reviews = Review.where(@product.id) + @reviews = Review.where(:product_id => @product.id) end def by_seller_products diff --git a/app/views/products/show.html.erb b/app/views/products/show.html.erb index 87897738fb..8da52b8afe 100644 --- a/app/views/products/show.html.erb +++ b/app/views/products/show.html.erb @@ -6,4 +6,7 @@ Inventory: <%= @product.inventory %> Category: <%= @product.category %> Seller: <%#link_to @seller.name, by_seller_products_path %> Average rating: <%= @product.average_rating %> -review: <%# @review.description %> + +review: <% @reviews.each do |review| %> + <%= review.description %> + <% end %> From 0a93b7124d824cf395da62c0ff8704fe0c20226d Mon Sep 17 00:00:00 2001 From: Maya Wang Date: Wed, 19 Oct 2016 22:49:40 -0700 Subject: [PATCH 45/46] improved layout on homepages and product controller --- app/views/homepages/index.html.erb | 2 +- app/views/homepages/show_category.html.erb | 6 +++--- app/views/products/index.html.erb | 6 +++--- app/views/products/show.html.erb | 16 ++++++++-------- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/app/views/homepages/index.html.erb b/app/views/homepages/index.html.erb index 1fbcc9cc7e..654c7a5c73 100644 --- a/app/views/homepages/index.html.erb +++ b/app/views/homepages/index.html.erb @@ -3,7 +3,7 @@

Shop by Category

<% @product_categories.each do |product_category| %> - <%= link_to product_category, show_category_path(product_category)%> +

<%= link_to product_category, show_category_path(product_category)%>

<% end %> diff --git a/app/views/homepages/show_category.html.erb b/app/views/homepages/show_category.html.erb index 91bcd6146a..fec2278e2f 100644 --- a/app/views/homepages/show_category.html.erb +++ b/app/views/homepages/show_category.html.erb @@ -1,7 +1,7 @@

<%= @product_category %>

<% @products_in_category.each do |product| %> - <%= link_to image_tag("product.photo_url", :class => "product_img"), show_products_path(product.id) %> - <%= link_to product.name, show_products_path(product.id) %> - <%= product.price %> +

<%= link_to image_tag("product.photo_url", :class => "product_img"), show_products_path(product.id) %>

+

<%= link_to product.name, show_products_path(product.id) %>

+

<%= product.price %>

<% end %> diff --git a/app/views/products/index.html.erb b/app/views/products/index.html.erb index a24e822c06..c3032bcb20 100644 --- a/app/views/products/index.html.erb +++ b/app/views/products/index.html.erb @@ -1,7 +1,7 @@

Browse All Collections

<% @products.each do |product| %> - <%= link_to image_tag("product.photo_url"), show_products_path(product.id), { :class => "product_img" } %> - <%= link_to product.name, show_products_path(product.id) %> - <%= product.price %> +

<%= link_to image_tag("product.photo_url"), show_products_path(product.id), { :class => "product_img" } %>

+

<%= link_to product.name, show_products_path(product.id) %>

+

<%= product.price %>

<% end %> diff --git a/app/views/products/show.html.erb b/app/views/products/show.html.erb index 8da52b8afe..f737cc465b 100644 --- a/app/views/products/show.html.erb +++ b/app/views/products/show.html.erb @@ -1,12 +1,12 @@

<%= @product.name %>

<%= image_tag(@product.photo_url, :class => "class_name") %> -Price: <%= @product.price %> -Description: <%= @product.description %> -Inventory: <%= @product.inventory %> -Category: <%= @product.category %> -Seller: <%#link_to @seller.name, by_seller_products_path %> -Average rating: <%= @product.average_rating %> +

Price: <%= @product.price %>

+

Description: <%= @product.description %>

+

Inventory: <%= @product.inventory %>

+

Category: <%= @product.category %>

+

Seller: <%#link_to @seller.name, by_seller_products_path %>

+

Average rating: <%= @product.average_rating %>

-review: <% @reviews.each do |review| %> - <%= review.description %> +

review: <% @reviews.each do |review| %>

+

<%= review.description %>

<% end %> From 0f51064436619a7bd97d91318334ac1d6a33ed76 Mon Sep 17 00:00:00 2001 From: Sassa Kitka Date: Thu, 20 Oct 2016 10:00:35 -0700 Subject: [PATCH 46/46] new fields for user --- db/schema.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/db/schema.rb b/db/schema.rb index ae46b26ec9..c7af4ef47d 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -82,6 +82,8 @@ t.boolean "merchant" t.datetime "created_at", null: false t.datetime "updated_at", null: false + t.string "provider" + t.boolean "status" end end