Commit d213fe83 authored by Zac Wood's avatar Zac Wood
Browse files

Merge branch 'dev-v3' into 'master'

Version 3

See merge request !51
parents b6309e4e 80cf9394
Pipeline #4473 passed with stage
in 2 minutes and 47 seconds
{
"printWidth": 120,
"tabWidth": 4,
"singleQuote": true,
"useTabs": false,
"jsxBracketSameLine": true,
"trailingComma": "es5"
}
{
"presets": [
["env", {
"modules": false,
"targets": {
"browsers": "> 1%",
"uglify": true
},
"useBuiltIns": true
}]
[
"env",
{
"modules": false,
"targets": {
"browsers": "> 1%",
"uglify": true
},
"useBuiltIns": true
}
],
"react"
],
"plugins": [
"syntax-dynamic-import",
"transform-object-rest-spread",
["transform-class-properties", { "spec": true }]
[
"transform-class-properties",
{
"spec": true
}
]
]
}
......@@ -14,3 +14,4 @@ RUN export SECRET_KEY_BASE=$(rails secret)
RUN rails assets:precompile
RUN rails db:migrate
RUN rails db:seed
RUN rails runner db/load_course_ratings.rb
......@@ -21,6 +21,9 @@ gem 'uglifier'
gem 'webpacker', '~> 3.5'
# Access Ruby data from JavaScript
gem 'gon'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 4.0'
# Use ActiveModel has_secure_password
......@@ -74,7 +77,3 @@ gem 'apipie-rails'
# Markdown for API docs
gem 'maruku'
# gem 'jquery-rails'
# gem 'font-awesome-sass', '~> 5.3.1'
......@@ -64,6 +64,10 @@ GEM
ffi (1.9.25)
globalid (0.4.1)
activesupport (>= 4.2.0)
gon (6.2.1)
actionpack (>= 3.0)
multi_json
request_store (>= 1.0)
httparty (0.16.3)
mime-types (~> 3.0)
multi_xml (>= 0.5.2)
......@@ -144,6 +148,8 @@ GEM
rb-fsevent (0.10.3)
rb-inotify (0.9.10)
ffi (>= 0.5.0, < 2)
request_store (1.4.1)
rack (>= 1.4)
rubocop (0.58.2)
jaro_winkler (~> 1.5.1)
parallel (~> 1.10)
......@@ -216,6 +222,7 @@ DEPENDENCIES
apipie-rails
byebug
capybara (~> 2.13)
gon
httparty
icalendar
jbuilder (~> 2.5)
......
// Place all the behaviors and hooks related to the matching controller here.
// All this logic will automatically be available in application.js.
// Place all the behaviors and hooks related to the matching controller here.
// All this logic will automatically be available in application.js.
// Place all the styles related to the about controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/
......@@ -20,6 +20,11 @@ body {
background-color: #E4E4E4;
}
#page {
padding-top: 16px;
padding-bottom: 16px;
}
.card {
margin-bottom: 12px;
......@@ -90,3 +95,39 @@ body {
.quick-add-header {
margin-top: 32px;
}
%flex-display {
display: inline-flex;
}
.star-rating {
@extend %flex-display;
align-items: center;
font-size: 1em;
justify-content: flex-start;
}
.back-stars {
@extend %flex-display;
position: relative;
text-shadow: 4px 4px 10px #843a3a;
}
.front-stars {
@extend %flex-display;
color: #FFBC0B;
overflow: hidden;
position: absolute;
text-shadow: 2px 2px 5px #d29b09;
top: 0;
}
.full-width {
width: 90vw;
position: relative;
left: 50%;
right: 50%;
margin-left: -45vw;
margin-right: -45vw;
}
// .jumbotron {
// color: #FFFFFF
// }
// Place all the styles related to the course_sections controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/
......@@ -18,6 +18,7 @@
#semester-select {
min-width: 100px;
margin-right: 8px;
}
#cart-button {
......
......@@ -18,3 +18,10 @@
#share-header {
margin-top: 16px;
}
.btn-variant{
background-color: transparent;
text-align: left;
border: none;
padding: 0px;
}
class AboutController < ApplicationController
def index; end
end
......@@ -28,7 +28,6 @@ class API::CourseSectionsController < ApplicationController
@sections = @sections.where('UPPER(instructors.name) LIKE UPPER(?)', "%#{params[:instructor]}%")
end
# @sections = CourseSection.fetch(params).all
res = @sections.map do |s|
{
id: s.id,
......@@ -38,6 +37,9 @@ class API::CourseSectionsController < ApplicationController
crn: s.crn,
title: s.title,
instructor_name: s.instructor_name,
instructor_url: instructor_url(s.instructor),
teaching_rating: s.instructor.rating,
course_rating: s.course_rating,
section_type: s.section_type,
start_date: s.start_date,
end_date: s.end_date,
......
......@@ -8,7 +8,7 @@ class API::SchedulesController < ApplicationController
param :crns, String, desc: 'Comma separated list of crns to include as events in the calendar', required: true
def index
crns = params["crns"].split ','
@schedule = Schedule.new crns
@schedule = Schedule.new(crns, @semester.season)
render plain: @schedule.to_ical # render a plaintext iCal file
end
end
# Configures the application.
class ApplicationController < ActionController::Base
protect_from_forgery with: :null_session
# On each request, set the semester and cart.
before_action :set_semester, :set_cart
# Every page needs to know what semester it should load data from.
# set_semester checks both the semester_id query parameter and the user's cookies
# to look for a semester id and loads whatever it finds into @semester.
#
# By default, load the most recent semester.
def set_semester
if params.key?(:semester_id)
@semester = Semester.find_by_id params[:semester_id]
cookies[:semester_id] = @semester.id
elsif cookies[:semester_id].nil?
@semester = Semester.first
cookies[:semester_id] = @semester.id
else
@semester = Semester.find_by_id cookies[:semester_id]
end
end
# The user's cart is stored as a JSON-encoded list of CRNs.
# set_cart sets the @cart variable, which is a list of the sections represented by the CRNs.
def set_cart
# set the cart cookie to be empty if it doesn't already exist
cookies.permanent[:cart] = "[]" if cookies.permanent[:cart].nil?
# decode the JSON list into an array
@cart = JSON.parse(cookies.permanent[:cart])
# get rid of any invalid CRNs
@cart = @cart.reject { |crn| CourseSection.find_by_crn(crn).nil? }
# set the cookie to the JSON-encoded list of valid sections
cookies.permanent[:cart] = @cart.to_json
end
include BySemester
end
# BySemester contains logic for setting the current request's Semester.
module BySemester
extend ActiveSupport::Concern
included do
before_action :set_semester
end
# This page needs to know what semester it should load data from.
# set_semester checks both the semester_id query parameter and the current session
# to look for a semester id and loads whatever it finds into @semester.
#
# By default, load the most recent semester.
def set_semester
if params.key?(:semester_id)
@semester = Semester.find_by_id(params[:semester_id])
session[:semester_id] = @semester.id
elsif session[:semester_id].nil?
@semester = Semester.first
session[:semester_id] = @semester.id
else
@semester = Semester.find_by_id(session[:semester_id])
end
end
end
class CourseSectionsController < ApplicationController
def show
@section = CourseSection.find_by_id(params[:id])
end
end
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment