Skip to content
Snippets Groups Projects
Commit cec571d2 authored by Kevin Lin's avatar Kevin Lin :sparkles:
Browse files

Refactor schedule data into separate data files

parent 3b937add
No related branches found
No related tags found
No related merge requests found
weekly:
timeline: [
'9:00 AM', '9:30 AM', '10:00 AM', '10:30 AM', '11:00 AM', '11:30 AM',
'12:00 PM', '12:30 PM', '1:00 PM', '1:30 PM', '2:00 PM', '2:30 PM',
'3:00 PM', '3:30 PM', '4:00 PM', '4:30 PM', '5:00 PM', '5:30 PM',
'6:00 PM', '6:30 PM', '7:00 PM', '7:30 PM', '8:00 PM', '8:30 PM',
]
schedule:
- name: Monday
events:
- name: Lecture
class: lecture
start: 9:30 AM
end: 10:30 AM
location: 150 Wheeler
- name: Section
class: section
start: 11:30 AM
end: 12:30 PM
location: 310 Soda
- name: Lab
class: lab
start: 12:30 PM
end: 2:00 PM
location: 271 Soda
- name: Tuesday
- name: Wednesday
events:
- name: Lecture
class: lecture
start: 9:30 AM
end: 10:30 AM
location: 150 Wheeler
- name: Section
class: section
start: 11:30 AM
end: 12:30 PM
location: 310 Soda
- name: Lab
class: lab
start: 12:30 PM
end: 2:00 PM
location: 271 Soda
- name: Thursday
- name: Friday
events:
- name: Lecture
class: lecture
start: 9:30 AM
end: 10:30 AM
location: 150 Wheeler
- name: Section
class: section
start: 11:30 AM
end: 12:30 PM
location: 310 Soda
- name: Lab
class: lab
start: 12:30 PM
end: 2:00 PM
location: 271 Soda
office-hours:
timeline: [
'9:00 AM', '9:30 AM', '10:00 AM', '10:30 AM', '11:00 AM', '11:30 AM',
'12:00 PM', '12:30 PM', '1:00 PM', '1:30 PM', '2:00 PM', '2:30 PM',
'3:00 PM', '3:30 PM', '4:00 PM', '4:30 PM', '5:00 PM', '5:30 PM',
'6:00 PM', '6:30 PM', '7:00 PM', '7:30 PM', '8:00 PM', '8:30 PM',
]
schedule:
- name: Monday
events:
- name: Office Hours
class: office-hours
start: 12:00 PM
end: 4:00 PM
location: 109 Morgan
- name: Tuesday
events:
- name: Office Hours
class: office-hours
start: 12:00 PM
end: 4:00 PM
location: 109 Morgan
- name: Wednesday
events:
- name: Office Hours
class: office-hours
start: 12:00 PM
end: 4:00 PM
location: 109 Morgan
- name: Thursday
events:
- name: Office Hours
class: office-hours
start: 12:00 PM
end: 4:00 PM
location: 109 Morgan
- name: Friday
events:
- name: Office Hours
class: office-hours
start: 12:00 PM
end: 4:00 PM
location: 109 Morgan
timeline: [
'12:00 PM', '12:30 PM', '1:00 PM', '1:30 PM', '2:00 PM', '2:30 PM',
'3:00 PM', '3:30 PM', '4:00 PM', '4:30 PM', '5:00 PM', '5:30 PM',
'6:00 PM', '6:30 PM', '7:00 PM', '7:30 PM', '8:00 PM', '8:30 PM',
]
schedule:
- name: Monday
events:
- name: Office Hours
class: office-hours
start: 12:00 PM
end: 4:00 PM
location: 109 Morgan
- name: Tuesday
events:
- name: Office Hours
class: office-hours
start: 12:00 PM
end: 4:00 PM
location: 109 Morgan
- name: Wednesday
events:
- name: Office Hours
class: office-hours
start: 12:00 PM
end: 4:00 PM
location: 109 Morgan
- name: Thursday
events:
- name: Office Hours
class: office-hours
start: 12:00 PM
end: 4:00 PM
location: 109 Morgan
- name: Friday
events:
- name: Office Hours
class: office-hours
start: 12:00 PM
end: 4:00 PM
location: 109 Morgan
timeline: [
'9:00 AM', '9:30 AM', '10:00 AM', '10:30 AM', '11:00 AM', '11:30 AM',
'12:00 PM', '12:30 PM', '1:00 PM', '1:30 PM', '2:00 PM', '2:30 PM',
'3:00 PM', '3:30 PM', '4:00 PM', '4:30 PM', '5:00 PM', '5:30 PM',
]
schedule:
- name: Monday
events:
- name: Lecture
class: lecture
start: 9:30 AM
end: 10:30 AM
location: 150 Wheeler
- name: Section
class: section
start: 11:30 AM
end: 12:30 PM
location: 310 Soda
- name: Lab
class: lab
start: 12:30 PM
end: 2:00 PM
location: 271 Soda
- name: Tuesday
- name: Wednesday
events:
- name: Lecture
class: lecture
start: 9:30 AM
end: 10:30 AM
location: 150 Wheeler
- name: Section
class: section
start: 11:30 AM
end: 12:30 PM
location: 310 Soda
- name: Lab
class: lab
start: 12:30 PM
end: 2:00 PM
location: 271 Soda
- name: Thursday
- name: Friday
events:
- name: Lecture
class: lecture
start: 9:30 AM
end: 10:30 AM
location: 150 Wheeler
- name: Section
class: section
start: 11:30 AM
end: 12:30 PM
location: 310 Soda
- name: Lab
class: lab
start: 12:30 PM
end: 2:00 PM
location: 271 Soda
{% capture schedule_workspace %}
{% comment %}
Return the HTML for the schedule corresponding to the given key.
Return the HTML for the schedule corresponding to the given data.
Parameters:
`key` (string): key into `_data/schedule.yml` containing the requested schedule.
`data` (site data): site data file containing the requested schedule.
`interval` (integer): time in minutes between each timeline tick.
`row_height` (integer): row height in pixels.
{% endcomment %}
{% assign timeline = site.data.schedule[include.key].timeline %}
{% assign timeline_first = timeline | first %}
{% assign timeline_first = include.data.timeline | first %}
{% capture offset %}{% include _minutes.html time=timeline_first %}{% endcapture %}
{% endcapture %}{% assign schedule_workspace = '' %}
<div class="schedule">
<ul class="schedule-timeline" style="margin-top: {{ include.row_height }}px">
{% for time in timeline %}
{% for time in include.data.timeline %}
<li class="schedule-time" style="height: {{ include.row_height }}px">
{{- time -}}
</li>
{% endfor %}
</ul>
<ul class="schedule-group">
{% for day in site.data.schedule[include.key].schedule %}
{% for day in include.data.schedule %}
<li class="schedule-day">
<h3 class="schedule-header" style="height: {{ include.row_height }}px">
{{- day.name -}}
</h3>
{% if day.events %}
<ul class="schedule-events" style="height: {{ timeline | size | times: include.row_height }}px">
<ul class="schedule-events" style="height: {{ include.data.timeline | size | times: include.row_height }}px">
{% for event in day.events %}
{%- capture start -%}{% include _minutes.html time=event.start %}{%- endcapture -%}
{%- capture end -%}{% include _minutes.html time=event.end %}{%- endcapture -%}
......
......@@ -7,6 +7,14 @@ description: The weekly event schedule.
# Schedule
Schedule data is defined as a YAML [data file](https://jekyllrb.com/docs/datafiles/) located in `_data/schedule.yml`.
Schedule data are defined as YAML [data files](https://jekyllrb.com/docs/datafiles/) following the example format in `_data/schedule`.
{% include schedule.html key='weekly' interval=30 row_height=40 %}
Multiple schedules can be rendered on a page, each with their own events and hour range.
## Weekly Schedule
{% include schedule.html data=site.data.schedule.weekly interval=30 row_height=40 %}
## Office Hours Schedule
{% include schedule.html data=site.data.schedule.office-hours interval=30 row_height=40 %}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment