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

Merge branch 'dev-v2' into 26-model-filters

parents fc66554a ea5409e8
......@@ -4,7 +4,7 @@
class Schedule {
constructor() {
this.isOpen = false;
this._ids = Array.from(document.getElementById('schedule').children).map(e => Number(e.id.split('-')[1]));
this._ids = Array.from(document.getElementById('schedule').children).map(e => e.dataset.crn);
}
get ids() {
......@@ -51,7 +51,7 @@ class Schedule {
const section = cart.querySelector(`#section-${id}`);
cart.removeChild(section);
this.ids = this.ids.filter(_id => _id != Number(id));
this.ids = this.ids.filter(_id => _id != id);
}
_constructSectionCard(section) {
......@@ -70,8 +70,8 @@ class Schedule {
}
class Search {
sectionWithId(sectionId) {
return document.getElementById('search-list').querySelector(`#${sectionId}`);
sectionWithCrn(crn) {
return document.getElementById('search-list').querySelector(`[data-crn="${crn}"]`);
}
}
......@@ -80,14 +80,13 @@ const toggleSchedule = () => this.schedule.toggle();
const addToSchedule = (event, section) => {
section.classList.add('selected');
// this.schedule.addToSchedule(JSON.parse(section.dataset.section));
this.schedule.addToSchedule(section.cloneNode(true));
event.stopPropagation();
};
const removeFromSchedule = section => {
this.search.sectionWithId(section.id).classList.remove('selected');
this.search.sectionWithCrn(section.dataset.crn).classList.remove('selected');
this.schedule.removeFromSchedule(section.id.split('-')[1]);
};
......@@ -115,8 +114,3 @@ const addToSystemCalendar = async () => {
const url = `webcal://${window.location.hostname}/api/schedule?crns=${this.schedule.ids.join(',')}`;
window.open(url, '_self');
};
document.addEventListener('DOMContentLoaded', () => {
this.schedule = new Schedule();
this.search = new Search();
});
......@@ -6,7 +6,6 @@ class SearchController < ApplicationController
end
def update
puts params[:ids]
cookies[:ids] = params[:ids]
end
end
<%= render partial: 'shared/navbar' %>
<h1>Home#index</h1>
<p>Find me in app/views/home/index.html.erb</p>
......@@ -12,6 +12,8 @@
</head>
<body>
<%= render partial: 'shared/navbar' %>
<%= yield %>
<%= render partial: 'shared/cart'%>
</body>
</html>
<%= render partial: 'shared/navbar' %>
<div class="container-fluid">
<!-- The main screen consists of a row with two columns: the search results, and the cart -->
<div class="row">
<!-- Search result, List of Courses -->
<div class="col-lg-7 col-md-10 mx-auto order-2 order-lg-0" id="search-list">
<% if @courses.any? %>
<% if @courses.any? %>
<%= render partial: 'shared/course', collection: @courses %>
<% else %>
<% else %>
<h1>Sorry, we couldn't find anything matching your search.</h1>
<p>Please try again!</p>
<% end %>
</div>
<!-- List of sections in the cart -->
<div class="col order-1 order-lg-1" id="cart">
<div class="card">
<div class="card-body">
<h3 class="card-title">Your Schedule</h3>
</div>
<ul class="list-group list-group-flush" id="schedule">
<%= render partial: 'shared/section', collection: @cart, locals: { in_cart: true } %>
</ul>
<div class="card-body">
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" onclick="setUrlInModal()">
Export schedule
</button>
</div>
</div>
</div>
</div>
</div>
<% end %>
<!-- Export Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
......@@ -71,3 +43,10 @@
</div>
</div>
</div>
<%= javascript_tag do %>
document.addEventListener('DOMContentLoaded', () => {
this.schedule = new Schedule();
this.search = new Search();
});
<% end %>
</div>
<!-- List of sections in the cart -->
<div class="col order-1 order-lg-1" id="cart">
<div class="card">
<div class="card-body">
<h3 class="card-title">Your Schedule</h3>
</div>
<ul class="list-group list-group-flush" id="schedule">
<%= render partial: 'shared/section', collection: @cart, locals: { in_cart: true } %>
</ul>
<div class="card-body">
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" onclick="setUrlInModal()">
Export schedule
</button>
</div>
</div>
</div>
</div>
</div>
<div class="container-fluid">
<div class="row align-left align-sm-center align-md-right" id="navbar">
<div class="col-8 col-sm align-center">
<a href="/search" id="logo">
<a href="/" id="logo">
<i class="fas fa-calendar-alt"></i>
Schedules
</a>
......@@ -9,7 +9,6 @@
<div class="col-4 col-sm align-center order-0 order-sm-1" onclick="toggleSchedule()">
<h1 style="margin-top:24px">
<!-- <h2><i class="fas fa-shopping-cart" id="schedule-icon"></i></h2> -->
<span class="fa-layers fa-fw" id="schedule-icon">
<i class="fas fa-shopping-cart"></i>
<span class="fa-layers fa-fw">
......@@ -38,3 +37,10 @@
</div>
</div>
</div>
<div class="container-fluid">
<!-- The main screen consists of a row with two columns: the search results, and the cart -->
<div class="row">
<!-- Search result, List of Courses -->
<div class="col-lg-7 col-md-10 mx-auto order-2 order-lg-0" id="search-list">
This diff is collapsed.
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