summaryrefslogtreecommitdiff
path: root/js/curriculum.js
blob: a93b2e4761ce19183583591f87f6dbb1c5d42b93 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
define(['courses'], function(courses) {
    'use strict';

    function makeCoursesList(courseCallback) {
        var years_list = document.createElement('ul');
        years_list.className = 'year';
        // courses.schedule[YEAR][quartile][coursesIdx]
        courses.schedule.forEach(function(year) {
            var year_item = document.createElement('li');
            years_list.appendChild(year_item);
            var quartiles_list = document.createElement('ul');
            quartiles_list.className = 'quartile';
            year_item.appendChild(quartiles_list);

            // [year][QUARTILE][coursesIdx]
            year.forEach(function(quartile) {
                var quartile_item = document.createElement('li');
                quartiles_list.appendChild(quartile_item);
                var courses_list = document.createElement('ul');
                courses_list.className = 'courses';
                quartile_item.appendChild(courses_list);

                // [year][quartile][COURSESIDX]
                quartile.forEach(function(course) {
                    var course_item = document.createElement('li');
                    courses_list.appendChild(course_item);

                    // display course information
                    courseCallback(course_item, course);
                });
            });
        });
        return years_list;
    }

    return function() {
        // navigation
        var cmenu = document.getElementById("curriculum-menu");
        cmenu.appendChild(makeCoursesList(function(course_item, course) {
            // types: bc, major, bep
            course_item.dataset.type = course.type || 'major';
            course_item.title = course.name;

            // display link for courses which have a description block
            if (course.id) {
                var link = document.createElement('a');
                link.href = '#/curriculum/' + course.id;
                link.textContent = course.name;
                course_item.appendChild(link);
            } else {
                course_item.textContent = course.name;
            }
        }));

        var citems = document.getElementById('curriculum-items');
        courses.courses.forEach(function(course) {
            var header = document.createElement('h2');
            //header.id = 'course-' + course.id;
            header.id = '/curriculum/' + course.id;
            header.textContent = course.name + ' (' + course.when + ')';
            citems.appendChild(header);

            var text_block = document.createElement('p');
            text_block.textContent = course.description;
            citems.appendChild(text_block);

            var links_block = document.createElement('p');
            var back_to_top = document.createElement('a');
            back_to_top.href = '#top';
            back_to_top.textContent = 'Back to top';
            links_block.appendChild(back_to_top);
            citems.appendChild(links_block);
        });
    };
});