Skip to content

Commit 0914e7a

Browse files
committed
models are working
1 parent 06db11d commit 0914e7a

File tree

11 files changed

+277
-145
lines changed

11 files changed

+277
-145
lines changed

app/javascript/packs/myjs.js

Lines changed: 65 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,58 @@
11
$(function(){
2-
console.log("got here");
3-
$.get("plans/1.json", function(data){
4-
console.log(data);
2+
$.get("plans.json", function(plans){
3+
console.log(plans);
4+
plan = false;
5+
$(".dropdown-content").empty();
6+
for (let i in plans){
7+
if (plans[i].major === selectedMajor && plans[i].catalog.year === selectedCatalogYear){
8+
plan = plans[i];
9+
}
10+
else{
11+
// Put other plan options in dropdown menu on nav bar
12+
$(".dropdown-content").append("<a onclick='changePlan(this.text)'>" + plans[i].major + ", " + plans[i].catalog.year + "</a>");
13+
}
14+
}
15+
if (plan === false){
16+
console.log("Error: did not find selected plan");
17+
}
18+
19+
currPlan = new Plan(plan.user.login, plan.plan_name, plan.major, plan.curr_year, plan.curr_term, plan.courses, plan.catalog.year);
20+
currPlan.sortCourses();
21+
currPlan.generateHTML();
22+
$("#major").html(plan.major);
23+
$("#catYear").html(plan.catalog.year);
24+
25+
$("#hrsCompleted").html("Hours Completed: " + currPlan.hrsCompleted);
26+
$("#hrsCurrent").html("Current Hours: " + currPlan.hrsCurrent);
27+
$("#hrsPlanned").html("Total Hours Planned: " + currPlan.hrsPlanned);
28+
29+
$("#catalogTable").DataTable( {
30+
"dom": '<"top"if>t',
31+
"data": plan.catalog.courses,
32+
"columns": [
33+
{ "data": "designator" },
34+
{ "data": "name" },
35+
{ "data": "description" },
36+
{ "data": "credits"}
37+
],
38+
"scrollY": "95px",
39+
"paging": false,
40+
"scrollCollapse": false
41+
});
42+
$('.dataTables_scrollHeadInner').css('padding', '0');
43+
44+
45+
var requirements = plan.requirements;
46+
47+
$('#accordion').empty();
48+
for (let i in requirements){
49+
let courses = requirements[i].courses;
50+
let itemHtml = "";
51+
for (let c in courses){
52+
itemHtml += '<li>' + courses[c] + ': ' + plan.catalog.courses[courses[c]].name + '</li>';
53+
}
54+
$('#accordion').append('<h3><a href="#">' + requirements[i].name + '</a></h3><div>' + itemHtml + '</div>').accordion('refresh');
55+
}
556
});
657
});
758

@@ -10,8 +61,8 @@ class Course {
1061
this.term = term;
1162
this.year = year;
1263
this.id = desig;
13-
this.name = catalog.courses[desig].name;
14-
this.hours = catalog.courses[desig].credits;
64+
this.name = plan.catalog.courses[desig].name;
65+
this.hours = plan.catalog.courses[desig].credits;
1566
}
1667
}
1768

@@ -178,75 +229,37 @@ class Year {
178229
}
179230

180231
var currPlan = false;
181-
var catalog = false;
182-
var planRequest = false;
183-
var accordionRequest = false;
232+
var plan = false;
184233
var selectedMajor = "Comp. Sci.";
185234
var selectedCatalogYear = 2017;
186235
var catalogLoaded = false;
187236

188-
function createRequest(){
189-
let request = false;
190-
if(window.XMLHttpRequest && !(window.ActiveXObject)){
191-
try{
192-
request = new XMLHttpRequest();
193-
}
194-
catch(e){
195-
request = false;
196-
}
197-
}
198-
else if(window.ActiveXObject){
199-
try{
200-
request = new ActiveXObject("Msxml2.XMLHTTP");
201-
}
202-
catch(e){
203-
try{
204-
request = new ActiveXObject("Microsoft.XMLHTTP");
205-
}
206-
catch(e){
207-
request = false;
208-
}
209-
}
210-
}
211-
return request;
212-
}
213-
214-
function sendRequest(Method, URL, callback) {
215-
request = createRequest();
216-
if (request){
217-
request.open(Method, URL, true);
218-
request.onreadystatechange = callback;
219-
request.send(null);
220-
}
221-
return request;
222-
}
223-
224237
function planCallback(){
225238
if (planRequest.readyState == 4){
226239
var jsonResponse = JSON.parse(planRequest.responseText);
227240
var plans = jsonResponse.plan;
228241
catalog = jsonResponse.catalog;
229-
var planObject = false;
242+
var plan = false;
230243
$(".dropdown-content").empty();
231244
for (let i in plans){
232245
if (plans[i].major === selectedMajor && plans[i].catalog_year === selectedCatalogYear){
233-
planObject = plans[i];
246+
plan = plans[i];
234247
}
235248
else{
236249
// Put other plan options in dropdown menu on nav bar
237250
$(".dropdown-content").append("<a onclick='changePlan(this.text)'>" + plans[i].major + ", " + plans[i].catalog_year + "</a>");
238251
}
239252
}
240-
if (planObject === false){
253+
if (plan === false){
241254
console.log("Error: did not find selected plan");
242255
}
243256

244-
currPlan = new Plan(planObject.student, planObject.plan_name, planObject.major, planObject.currYear, planObject.currTerm, planObject.courses, planObject.catalog_year);
257+
currPlan = new Plan(plan.student, plan.plan_name, plan.major, plan.currYear, plan.currTerm, plan.courses, plan.catalog_year);
245258
currPlan.sortCourses();
246259
currPlan.generateHTML();
247-
$("#username").html(planObject.student);
248-
$("#major").html(planObject.major);
249-
$("#catYear").html(planObject.catalog_year);
260+
$("#username").html(plan.student);
261+
$("#major").html(plan.major);
262+
$("#catYear").html(plan.catalog_year);
250263

251264
$("#hrsCompleted").html("Hours Completed: " + currPlan.hrsCompleted);
252265
$("#hrsCurrent").html("Current Hours: " + currPlan.hrsCurrent);
@@ -257,7 +270,7 @@ function planCallback(){
257270
courses.push(catalog.courses[i]);
258271
}
259272

260-
if (!catalogLoaded) {
273+
if (!catalogLoaded) {
261274
$("#catalogTable").DataTable( {
262275
"dom": '<"top"if>t',
263276
"data": courses,

app/models/category.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
class Category < ApplicationRecord
2-
belongs_to :requirements
2+
belongs_to :requirement
33
has_many :category_courses
44
has_many :courses, through: :category_courses
55
end

app/models/requirement.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
class Requirement < ApplicationRecord
22
belongs_to :major
33
belongs_to :catalog
4+
has_many :categories
45
end

app/views/layouts/application.html.erb

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,20 @@
99

1010
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
1111
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
12-
<%= yield %>
12+
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css"/>
13+
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
14+
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
15+
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
16+
<script type="text/javascript" src="https://cdn.datatables.net/1.10.20/js/jquery.dataTables.min.js"></script>
17+
<script>
18+
$( function() {
19+
$( "#accordion" ).accordion({collapsible: true, active: false});
20+
});
21+
</script>
1322
</head>
1423

1524
<body>
25+
<%= yield %>
1626
</body>
1727

1828
</html>

app/views/plans/_plan.json.jbuilder

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,34 @@
1-
json.extract! plan, :id, :name, :created_at, :updated_at
2-
json.url plan_url(plan, format: :json)
1+
json.user do
2+
json.id plan.user.id
3+
json.login plan.user.login
4+
json.role plan.user.role
5+
end
6+
json.plan_name plan.name
7+
json.major plan.major.name
8+
json.curr_year plan.curr_year
9+
json.curr_term plan.curr_term
10+
json.courses do
11+
plan.plan_courses.each{ |planCourse| json.set! planCourse.course.designator do
12+
json.year planCourse.year
13+
json.term planCourse.term
14+
end
15+
}
16+
end
17+
18+
json.catalog do
19+
json.year plan.catalog.year
20+
json.courses do
21+
plan.catalog.catalog_courses.each{ |catalogCourse| json.set! catalogCourse.course.designator do
22+
json.name catalogCourse.course.name
23+
json.description catalogCourse.course.description
24+
json.credits catalogCourse.course.credits
25+
end
26+
}
27+
end
28+
end
29+
30+
json.requirements plan.major.requirements.where(catalog_id: plan.catalog.id)[0].categories do |category|
31+
json.name category.name
32+
json.courses category.category_courses.collect{ |cc| cc.course.designator}
33+
end
34+

app/views/plans/index.html.erb

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,3 @@
1-
<html lang="en">
2-
<head>
3-
<title>Project4</title>
4-
<meta charset="utf-8">
5-
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css"/>
6-
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
7-
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
8-
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
9-
<script type="text/javascript" src="https://cdn.datatables.net/1.10.20/js/jquery.dataTables.min.js"></script>
10-
11-
<script>
12-
$( function() {
13-
$( "#accordion" ).accordion({collapsible: true, active: false});
14-
});
15-
</script>
16-
</head>
17-
<body>
18-
191
<nav id="header">
202
<div>
213
<% if user_signed_in?%>
@@ -122,6 +104,4 @@
122104

123105
<br>
124106

125-
<%= link_to 'New Plan', new_plan_path %>
126-
127-
</body>
107+
<%= link_to 'New Plan', new_plan_path %>

app/views/plans/show.json.jbuilder

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1 @@
1-
json.plan do
2-
json.id @plan.id
3-
json.courses @plan.plan_courses do |planCourse|
4-
json.designator planCourse.course.designator
5-
json.year planCourse.year
6-
json.term planCourse.term
7-
end
8-
end
1+
json.partial! "plans/plan", plan: @plan

db/migrate/20200423020044_create_categories.rb renamed to db/migrate/20200423191646_create_categories.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ class CreateCategories < ActiveRecord::Migration[6.0]
22
def change
33
create_table :categories do |t|
44
t.string :name
5-
t.references :requirements, null: false, foreign_key: true
5+
t.references :requirement, null: false, foreign_key: true
66

77
t.timestamps
88
end

db/schema.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
#
1111
# It's strongly recommended that you check this file into your version control system.
1212

13-
ActiveRecord::Schema.define(version: 2020_04_23_021526) do
13+
ActiveRecord::Schema.define(version: 2020_04_23_191646) do
1414

1515
create_table "catalog_courses", force: :cascade do |t|
1616
t.integer "catalog_id", null: false
@@ -29,10 +29,10 @@
2929

3030
create_table "categories", force: :cascade do |t|
3131
t.string "name"
32-
t.integer "requirements_id", null: false
32+
t.integer "requirement_id", null: false
3333
t.datetime "created_at", precision: 6, null: false
3434
t.datetime "updated_at", precision: 6, null: false
35-
t.index ["requirements_id"], name: "index_categories_on_requirements_id"
35+
t.index ["requirement_id"], name: "index_categories_on_requirement_id"
3636
end
3737

3838
create_table "category_courses", force: :cascade do |t|
@@ -110,7 +110,7 @@
110110

111111
add_foreign_key "catalog_courses", "catalogs"
112112
add_foreign_key "catalog_courses", "courses"
113-
add_foreign_key "categories", "requirements", column: "requirements_id"
113+
add_foreign_key "categories", "requirements"
114114
add_foreign_key "category_courses", "categories"
115115
add_foreign_key "category_courses", "courses"
116116
add_foreign_key "plan_courses", "courses"

0 commit comments

Comments
 (0)