1129 lines
28 KiB
HTML
1129 lines
28 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<title>Course Activity Report</title>
|
|
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
|
<style>
|
|
body {
|
|
font-family: sans-serif;
|
|
margin: 2em;
|
|
}
|
|
.course {
|
|
margin-bottom: 4em;
|
|
border-bottom: 1px solid #ccc;
|
|
padding-bottom: 2em;
|
|
}
|
|
canvas {
|
|
max-width: 100%;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<h1>Course Activity Report</h1>
|
|
<div id="reports"></div>
|
|
|
|
<script>
|
|
function getAllDates(start, end, maxMonths = 7) {
|
|
const dates = [];
|
|
const current = new Date(start);
|
|
const endLimit = new Date(start);
|
|
endLimit.setMonth(endLimit.getMonth() + maxMonths);
|
|
const last = new Date(end);
|
|
const endDate = last < endLimit ? last : endLimit;
|
|
while (current <= endDate) {
|
|
dates.push(current.toISOString().slice(0, 10));
|
|
current.setDate(current.getDate() + 1);
|
|
}
|
|
return dates;
|
|
}
|
|
|
|
async function loadData() {
|
|
//const response = await fetch('cache/users/logs/12345_summary.json');
|
|
//const data = await response.json();
|
|
const data = {
|
|
"courses": {
|
|
"770": {
|
|
"course_code": "GUID999 SP17 41059",
|
|
"first_seen": "2021-06-16",
|
|
"last_seen": "2021-06-16",
|
|
"daily_hits": {
|
|
"2021-06-16": 1
|
|
},
|
|
"participated_count": 0
|
|
},
|
|
"6731": {
|
|
"course_code": "GUID6 SP19 40416",
|
|
"first_seen": "2023-06-17",
|
|
"last_seen": "2023-06-17",
|
|
"daily_hits": {
|
|
"2023-06-17": 1
|
|
},
|
|
"participated_count": 0
|
|
},
|
|
"10262": {
|
|
"course_code": "ENGL1C FA20 10658/60",
|
|
"first_seen": "2022-06-14",
|
|
"last_seen": "2022-06-20",
|
|
"daily_hits": {
|
|
"2022-06-14": 12,
|
|
"2022-06-17": 6,
|
|
"2022-06-19": 12,
|
|
"2022-06-20": 6
|
|
},
|
|
"participated_count": 0
|
|
},
|
|
"11015": {
|
|
"course_code": "STEM",
|
|
"first_seen": "2021-06-15",
|
|
"last_seen": "2023-06-09",
|
|
"daily_hits": {
|
|
"2021-06-15": 3,
|
|
"2021-07-01": 1,
|
|
"2022-03-01": 6,
|
|
"2022-03-21": 4,
|
|
"2022-04-23": 1,
|
|
"2022-05-04": 3,
|
|
"2022-06-17": 1,
|
|
"2023-06-09": 3
|
|
},
|
|
"participated_count": 0
|
|
},
|
|
"11866": {
|
|
"course_code": "SOC1A SP21 40475/83",
|
|
"first_seen": "2021-02-01",
|
|
"last_seen": "2021-04-24",
|
|
"daily_hits": {
|
|
"2021-02-01": 22,
|
|
"2021-02-02": 5,
|
|
"2021-02-05": 9,
|
|
"2021-02-06": 12,
|
|
"2021-02-09": 35,
|
|
"2021-02-19": 24,
|
|
"2021-02-20": 5,
|
|
"2021-02-22": 32,
|
|
"2021-02-27": 4,
|
|
"2021-03-06": 1,
|
|
"2021-03-08": 3,
|
|
"2021-03-10": 87,
|
|
"2021-03-13": 4,
|
|
"2021-03-20": 4,
|
|
"2021-04-03": 2,
|
|
"2021-04-13": 3,
|
|
"2021-04-17": 5,
|
|
"2021-04-21": 2,
|
|
"2021-04-22": 69,
|
|
"2021-04-24": 2
|
|
},
|
|
"participated_count": 11
|
|
},
|
|
"12102": {
|
|
"course_code": "CMUN1A SP21 40747",
|
|
"first_seen": "2021-02-01",
|
|
"last_seen": "2021-05-19",
|
|
"daily_hits": {
|
|
"2021-02-01": 25,
|
|
"2021-02-02": 1,
|
|
"2021-02-03": 57,
|
|
"2021-02-04": 6,
|
|
"2021-02-05": 3,
|
|
"2021-02-06": 16,
|
|
"2021-02-08": 48,
|
|
"2021-02-10": 36,
|
|
"2021-02-11": 160,
|
|
"2021-02-19": 6,
|
|
"2021-02-21": 1,
|
|
"2021-02-22": 11,
|
|
"2021-02-25": 3,
|
|
"2021-03-01": 8,
|
|
"2021-03-03": 6,
|
|
"2021-03-06": 24,
|
|
"2021-03-07": 30,
|
|
"2021-03-08": 11,
|
|
"2021-03-10": 9,
|
|
"2021-03-11": 8,
|
|
"2021-03-12": 9,
|
|
"2021-03-14": 5,
|
|
"2021-03-15": 28,
|
|
"2021-03-17": 8,
|
|
"2021-03-18": 21,
|
|
"2021-03-20": 17,
|
|
"2021-03-22": 5,
|
|
"2021-03-24": 7,
|
|
"2021-03-29": 34,
|
|
"2021-03-31": 1,
|
|
"2021-04-12": 12,
|
|
"2021-04-13": 6,
|
|
"2021-04-14": 10,
|
|
"2021-04-17": 2,
|
|
"2021-04-19": 19,
|
|
"2021-04-21": 5,
|
|
"2021-04-22": 1,
|
|
"2021-04-24": 2,
|
|
"2021-04-28": 1,
|
|
"2021-05-01": 1,
|
|
"2021-05-03": 12,
|
|
"2021-05-19": 90
|
|
},
|
|
"participated_count": 22
|
|
},
|
|
"12112": {
|
|
"course_code": "CD/PSYC3 SP21 40146",
|
|
"first_seen": "2021-01-24",
|
|
"last_seen": "2021-04-28",
|
|
"daily_hits": {
|
|
"2021-01-24": 9,
|
|
"2021-02-01": 7,
|
|
"2021-02-02": 12,
|
|
"2021-02-04": 42,
|
|
"2021-02-08": 16,
|
|
"2021-02-22": 2,
|
|
"2021-03-01": 75,
|
|
"2021-03-02": 3,
|
|
"2021-03-06": 4,
|
|
"2021-03-08": 17,
|
|
"2021-03-11": 2,
|
|
"2021-03-12": 3,
|
|
"2021-03-15": 3,
|
|
"2021-03-29": 6,
|
|
"2021-04-12": 68,
|
|
"2021-04-20": 2,
|
|
"2021-04-28": 118
|
|
},
|
|
"participated_count": 7
|
|
},
|
|
"12321": {
|
|
"course_code": "HIST1 SP21 40389",
|
|
"first_seen": "2021-02-01",
|
|
"last_seen": "2021-05-01",
|
|
"daily_hits": {
|
|
"2021-02-01": 56,
|
|
"2021-02-02": 11,
|
|
"2021-02-05": 5,
|
|
"2021-02-06": 65,
|
|
"2021-02-07": 16,
|
|
"2021-02-20": 14,
|
|
"2021-02-21": 24,
|
|
"2021-02-27": 8,
|
|
"2021-03-06": 3,
|
|
"2021-03-13": 3,
|
|
"2021-03-17": 1,
|
|
"2021-03-20": 4,
|
|
"2021-03-29": 6,
|
|
"2021-04-03": 3,
|
|
"2021-04-17": 5,
|
|
"2021-04-24": 3,
|
|
"2021-05-01": 3
|
|
},
|
|
"participated_count": 11
|
|
},
|
|
"12337": {
|
|
"course_code": "ART6 SP21 40529",
|
|
"first_seen": "2021-01-28",
|
|
"last_seen": "2021-04-17",
|
|
"daily_hits": {
|
|
"2021-01-28": 5,
|
|
"2021-02-01": 32,
|
|
"2021-02-02": 22,
|
|
"2021-02-05": 8,
|
|
"2021-02-06": 49,
|
|
"2021-02-08": 27,
|
|
"2021-02-09": 3,
|
|
"2021-02-19": 45,
|
|
"2021-02-20": 20,
|
|
"2021-02-21": 39,
|
|
"2021-02-27": 12,
|
|
"2021-03-06": 18,
|
|
"2021-03-13": 48,
|
|
"2021-03-20": 45,
|
|
"2021-03-29": 3,
|
|
"2021-04-03": 3,
|
|
"2021-04-17": 5
|
|
},
|
|
"participated_count": 17
|
|
},
|
|
"12664": {
|
|
"course_code": "PSYC11 SU21 80397",
|
|
"first_seen": "2021-06-14",
|
|
"last_seen": "2022-01-04",
|
|
"daily_hits": {
|
|
"2021-06-14": 28,
|
|
"2021-06-15": 9,
|
|
"2021-06-16": 10,
|
|
"2021-06-17": 24,
|
|
"2021-06-18": 8,
|
|
"2021-06-20": 7,
|
|
"2021-06-21": 16,
|
|
"2021-06-26": 13,
|
|
"2021-06-27": 1,
|
|
"2021-06-28": 26,
|
|
"2021-07-01": 19,
|
|
"2021-07-05": 1,
|
|
"2021-07-07": 2,
|
|
"2021-07-12": 4,
|
|
"2021-07-19": 1,
|
|
"2021-07-20": 1,
|
|
"2021-07-24": 2,
|
|
"2021-07-26": 3,
|
|
"2021-07-27": 1,
|
|
"2021-07-28": 10,
|
|
"2021-08-03": 2,
|
|
"2021-08-05": 2,
|
|
"2022-01-04": 1
|
|
},
|
|
"participated_count": 5
|
|
},
|
|
"12717": {
|
|
"course_code": "ENGL1A SU21 80210",
|
|
"first_seen": "2021-06-06",
|
|
"last_seen": "2021-08-11",
|
|
"daily_hits": {
|
|
"2021-06-06": 2,
|
|
"2021-06-09": 1,
|
|
"2021-06-14": 41,
|
|
"2021-06-15": 13,
|
|
"2021-06-16": 30,
|
|
"2021-06-17": 72,
|
|
"2021-06-18": 33,
|
|
"2021-06-19": 75,
|
|
"2021-06-21": 27,
|
|
"2021-06-22": 1,
|
|
"2021-06-23": 28,
|
|
"2021-06-25": 30,
|
|
"2021-06-26": 69,
|
|
"2021-06-29": 26,
|
|
"2021-06-30": 63,
|
|
"2021-07-02": 8,
|
|
"2021-07-03": 11,
|
|
"2021-07-06": 44,
|
|
"2021-07-07": 4,
|
|
"2021-07-09": 6,
|
|
"2021-07-10": 4,
|
|
"2021-07-14": 4,
|
|
"2021-07-16": 6,
|
|
"2021-07-17": 19,
|
|
"2021-07-18": 3,
|
|
"2021-07-21": 39,
|
|
"2021-07-22": 1,
|
|
"2021-07-23": 5,
|
|
"2021-07-24": 16,
|
|
"2021-07-26": 4,
|
|
"2021-07-28": 14,
|
|
"2021-07-31": 19,
|
|
"2021-08-03": 10,
|
|
"2021-08-05": 15,
|
|
"2021-08-06": 13,
|
|
"2021-08-07": 18,
|
|
"2021-08-08": 16,
|
|
"2021-08-09": 5,
|
|
"2021-08-11": 15
|
|
},
|
|
"participated_count": 20
|
|
},
|
|
"12730": {
|
|
"course_code": "MATH5 SU21 80021",
|
|
"first_seen": "2021-06-09",
|
|
"last_seen": "2021-07-19",
|
|
"daily_hits": {
|
|
"2021-06-09": 20,
|
|
"2021-06-14": 120,
|
|
"2021-06-15": 12,
|
|
"2021-06-16": 58,
|
|
"2021-06-17": 3,
|
|
"2021-06-19": 1,
|
|
"2021-06-20": 1,
|
|
"2021-06-21": 88,
|
|
"2021-06-24": 11,
|
|
"2021-06-26": 10,
|
|
"2021-06-27": 19,
|
|
"2021-06-28": 101,
|
|
"2021-07-05": 16,
|
|
"2021-07-11": 1,
|
|
"2021-07-12": 21,
|
|
"2021-07-19": 1
|
|
},
|
|
"participated_count": 14
|
|
},
|
|
"12756": {
|
|
"course_code": "MATH240 SU21 80013",
|
|
"first_seen": "2021-06-15",
|
|
"last_seen": "2021-06-15",
|
|
"daily_hits": {
|
|
"2021-06-15": 1
|
|
},
|
|
"participated_count": 0
|
|
},
|
|
"12837": {
|
|
"course_code": "El Centro SU & FA 2021",
|
|
"first_seen": "2021-09-21",
|
|
"last_seen": "2022-04-01",
|
|
"daily_hits": {
|
|
"2021-09-21": 31,
|
|
"2021-10-04": 2,
|
|
"2022-01-31": 2,
|
|
"2022-04-01": 5
|
|
},
|
|
"participated_count": 0
|
|
},
|
|
"13102": {
|
|
"course_code": "POLS1 FA21 10194",
|
|
"first_seen": "2021-08-23",
|
|
"last_seen": "2022-01-04",
|
|
"daily_hits": {
|
|
"2021-08-23": 3,
|
|
"2021-08-24": 24,
|
|
"2021-08-25": 7,
|
|
"2021-08-26": 1,
|
|
"2021-09-01": 1,
|
|
"2021-09-02": 13,
|
|
"2021-09-03": 9,
|
|
"2021-09-06": 32,
|
|
"2021-09-10": 1,
|
|
"2021-09-11": 6,
|
|
"2021-09-12": 8,
|
|
"2021-09-13": 5,
|
|
"2021-09-19": 14,
|
|
"2021-09-20": 3,
|
|
"2021-09-21": 12,
|
|
"2021-09-22": 1,
|
|
"2021-09-23": 1,
|
|
"2021-09-26": 22,
|
|
"2021-09-27": 11,
|
|
"2021-10-04": 36,
|
|
"2021-10-05": 23,
|
|
"2021-10-06": 4,
|
|
"2021-10-09": 2,
|
|
"2021-10-11": 7,
|
|
"2021-10-14": 1,
|
|
"2021-10-17": 7,
|
|
"2021-10-19": 2,
|
|
"2021-10-24": 4,
|
|
"2021-10-25": 10,
|
|
"2021-10-28": 24,
|
|
"2021-10-31": 11,
|
|
"2021-11-01": 24,
|
|
"2021-11-05": 1,
|
|
"2021-11-07": 7,
|
|
"2021-11-08": 3,
|
|
"2021-11-12": 1,
|
|
"2021-11-13": 5,
|
|
"2021-11-15": 7,
|
|
"2021-11-16": 18,
|
|
"2021-11-21": 3,
|
|
"2021-11-22": 15,
|
|
"2021-11-25": 3,
|
|
"2021-11-30": 28,
|
|
"2021-12-01": 2,
|
|
"2021-12-03": 1,
|
|
"2021-12-04": 3,
|
|
"2021-12-06": 75,
|
|
"2021-12-07": 4,
|
|
"2021-12-08": 36,
|
|
"2021-12-09": 20,
|
|
"2021-12-11": 39,
|
|
"2021-12-12": 30,
|
|
"2021-12-14": 13,
|
|
"2022-01-04": 5
|
|
},
|
|
"participated_count": 40
|
|
},
|
|
"13108": {
|
|
"course_code": "SOC21 FA21 10291",
|
|
"first_seen": "2021-08-23",
|
|
"last_seen": "2021-12-13",
|
|
"daily_hits": {
|
|
"2021-08-23": 23,
|
|
"2021-08-24": 9,
|
|
"2021-08-25": 4,
|
|
"2021-08-26": 2,
|
|
"2021-08-28": 10,
|
|
"2021-08-30": 18,
|
|
"2021-08-31": 10,
|
|
"2021-09-03": 2,
|
|
"2021-09-04": 4,
|
|
"2021-09-06": 13,
|
|
"2021-09-11": 12,
|
|
"2021-09-12": 5,
|
|
"2021-09-14": 8,
|
|
"2021-09-17": 1,
|
|
"2021-09-18": 3,
|
|
"2021-09-20": 4,
|
|
"2021-09-25": 6,
|
|
"2021-09-27": 4,
|
|
"2021-09-30": 7,
|
|
"2021-10-02": 4,
|
|
"2021-10-03": 1,
|
|
"2021-10-04": 9,
|
|
"2021-10-08": 9,
|
|
"2021-10-09": 7,
|
|
"2021-10-10": 1,
|
|
"2021-10-11": 11,
|
|
"2021-10-12": 1,
|
|
"2021-10-13": 29,
|
|
"2021-10-14": 19,
|
|
"2021-10-15": 18,
|
|
"2021-10-16": 1,
|
|
"2021-10-18": 7,
|
|
"2021-10-19": 4,
|
|
"2021-10-23": 8,
|
|
"2021-10-28": 2,
|
|
"2021-10-30": 13,
|
|
"2021-10-31": 10,
|
|
"2021-11-01": 4,
|
|
"2021-11-04": 3,
|
|
"2021-11-05": 3,
|
|
"2021-11-06": 2,
|
|
"2021-11-08": 4,
|
|
"2021-11-12": 4,
|
|
"2021-11-15": 4,
|
|
"2021-11-16": 2,
|
|
"2021-11-20": 10,
|
|
"2021-11-21": 11,
|
|
"2021-11-22": 5,
|
|
"2021-11-24": 25,
|
|
"2021-11-25": 1,
|
|
"2021-11-26": 6,
|
|
"2021-11-27": 13,
|
|
"2021-11-28": 56,
|
|
"2021-11-29": 3,
|
|
"2021-11-30": 11,
|
|
"2021-12-01": 3,
|
|
"2021-12-02": 1,
|
|
"2021-12-03": 13,
|
|
"2021-12-04": 27,
|
|
"2021-12-05": 38,
|
|
"2021-12-07": 14,
|
|
"2021-12-08": 23,
|
|
"2021-12-09": 40,
|
|
"2021-12-12": 6,
|
|
"2021-12-13": 6
|
|
},
|
|
"participated_count": 45
|
|
},
|
|
"13153": {
|
|
"course_code": "ANTH/POLS/PSYC32 FA21 11584",
|
|
"first_seen": "2021-08-23",
|
|
"last_seen": "2021-08-24",
|
|
"daily_hits": {
|
|
"2021-08-23": 31,
|
|
"2021-08-24": 3
|
|
},
|
|
"participated_count": 3
|
|
},
|
|
"13486": {
|
|
"course_code": "ART2A FA21 10327",
|
|
"first_seen": "2021-08-23",
|
|
"last_seen": "2022-01-04",
|
|
"daily_hits": {
|
|
"2021-08-23": 42,
|
|
"2021-08-24": 14,
|
|
"2021-08-25": 8,
|
|
"2021-08-26": 4,
|
|
"2021-08-28": 2,
|
|
"2021-08-30": 45,
|
|
"2021-08-31": 50,
|
|
"2021-09-02": 22,
|
|
"2021-09-04": 7,
|
|
"2021-09-06": 39,
|
|
"2021-09-07": 3,
|
|
"2021-09-08": 13,
|
|
"2021-09-09": 7,
|
|
"2021-09-11": 26,
|
|
"2021-09-12": 2,
|
|
"2021-09-13": 33,
|
|
"2021-09-14": 8,
|
|
"2021-09-16": 17,
|
|
"2021-09-17": 2,
|
|
"2021-09-18": 5,
|
|
"2021-09-20": 8,
|
|
"2021-09-21": 4,
|
|
"2021-09-23": 20,
|
|
"2021-09-26": 1,
|
|
"2021-09-27": 5,
|
|
"2021-09-28": 5,
|
|
"2021-09-30": 11,
|
|
"2021-10-04": 25,
|
|
"2021-10-05": 10,
|
|
"2021-10-06": 19,
|
|
"2021-10-07": 5,
|
|
"2021-10-08": 8,
|
|
"2021-10-09": 5,
|
|
"2021-10-11": 4,
|
|
"2021-10-12": 4,
|
|
"2021-10-14": 8,
|
|
"2021-10-19": 11,
|
|
"2021-10-23": 2,
|
|
"2021-10-28": 1,
|
|
"2021-10-30": 1,
|
|
"2021-10-31": 1,
|
|
"2021-11-01": 1,
|
|
"2021-11-03": 6,
|
|
"2021-11-04": 21,
|
|
"2021-11-05": 20,
|
|
"2021-11-06": 4,
|
|
"2021-11-08": 33,
|
|
"2021-11-09": 2,
|
|
"2021-11-10": 26,
|
|
"2021-11-11": 6,
|
|
"2021-11-16": 38,
|
|
"2021-11-20": 10,
|
|
"2021-11-21": 1,
|
|
"2021-11-22": 4,
|
|
"2021-11-23": 1,
|
|
"2021-11-24": 6,
|
|
"2021-11-25": 55,
|
|
"2021-11-26": 8,
|
|
"2021-11-27": 6,
|
|
"2021-11-28": 13,
|
|
"2021-11-29": 4,
|
|
"2021-11-30": 9,
|
|
"2021-12-03": 16,
|
|
"2021-12-04": 6,
|
|
"2021-12-06": 16,
|
|
"2021-12-07": 23,
|
|
"2021-12-08": 238,
|
|
"2021-12-09": 3,
|
|
"2022-01-04": 5
|
|
},
|
|
"participated_count": 38
|
|
},
|
|
"14030": {
|
|
"course_code": "ENGL1A SP22 40093",
|
|
"first_seen": "2022-01-30",
|
|
"last_seen": "2023-07-22",
|
|
"daily_hits": {
|
|
"2022-01-30": 31,
|
|
"2022-01-31": 99,
|
|
"2022-02-01": 33,
|
|
"2022-02-02": 4,
|
|
"2022-02-03": 4,
|
|
"2022-02-05": 2,
|
|
"2022-02-06": 18,
|
|
"2022-02-07": 13,
|
|
"2022-02-08": 8,
|
|
"2022-02-10": 1,
|
|
"2022-02-12": 16,
|
|
"2022-02-13": 8,
|
|
"2022-02-14": 49,
|
|
"2022-02-15": 27,
|
|
"2022-02-16": 4,
|
|
"2022-02-17": 22,
|
|
"2022-02-18": 21,
|
|
"2022-02-19": 16,
|
|
"2022-02-20": 40,
|
|
"2022-02-21": 20,
|
|
"2022-02-22": 7,
|
|
"2022-02-25": 29,
|
|
"2022-02-26": 28,
|
|
"2022-02-27": 12,
|
|
"2022-02-28": 16,
|
|
"2022-03-03": 20,
|
|
"2022-03-04": 9,
|
|
"2022-03-05": 17,
|
|
"2022-03-06": 3,
|
|
"2022-03-07": 60,
|
|
"2022-03-08": 6,
|
|
"2022-03-09": 20,
|
|
"2022-03-10": 26,
|
|
"2022-03-11": 10,
|
|
"2022-03-12": 13,
|
|
"2022-03-13": 32,
|
|
"2022-03-14": 25,
|
|
"2022-03-15": 9,
|
|
"2022-03-16": 26,
|
|
"2022-03-17": 10,
|
|
"2022-03-20": 36,
|
|
"2022-03-21": 21,
|
|
"2022-03-22": 12,
|
|
"2022-03-23": 3,
|
|
"2022-03-26": 21,
|
|
"2022-03-27": 1,
|
|
"2022-03-28": 10,
|
|
"2022-03-31": 24,
|
|
"2022-04-01": 31,
|
|
"2022-04-02": 30,
|
|
"2022-04-04": 45,
|
|
"2022-04-09": 13,
|
|
"2022-04-16": 20,
|
|
"2022-04-17": 10,
|
|
"2022-04-18": 35,
|
|
"2022-04-19": 18,
|
|
"2022-04-20": 22,
|
|
"2022-04-21": 1,
|
|
"2022-04-23": 4,
|
|
"2022-04-25": 7,
|
|
"2022-04-26": 22,
|
|
"2022-04-27": 1,
|
|
"2022-05-01": 6,
|
|
"2022-05-02": 12,
|
|
"2022-05-03": 11,
|
|
"2022-05-04": 25,
|
|
"2022-05-05": 3,
|
|
"2022-05-08": 20,
|
|
"2022-05-09": 35,
|
|
"2022-05-11": 17,
|
|
"2022-05-12": 34,
|
|
"2022-05-15": 18,
|
|
"2022-05-16": 11,
|
|
"2022-05-19": 9,
|
|
"2022-05-20": 25,
|
|
"2022-05-21": 1,
|
|
"2022-05-22": 4,
|
|
"2022-05-23": 24,
|
|
"2022-05-25": 16,
|
|
"2022-05-29": 10,
|
|
"2022-05-30": 42,
|
|
"2022-06-01": 47,
|
|
"2022-06-06": 19,
|
|
"2023-06-22": 2,
|
|
"2023-06-25": 10,
|
|
"2023-06-26": 2,
|
|
"2023-07-01": 2,
|
|
"2023-07-02": 3,
|
|
"2023-07-03": 2,
|
|
"2023-07-09": 3,
|
|
"2023-07-16": 3,
|
|
"2023-07-17": 1,
|
|
"2023-07-22": 2
|
|
},
|
|
"participated_count": 45
|
|
},
|
|
"14459": {
|
|
"course_code": "ASTR1 SP22 41082",
|
|
"first_seen": "2022-01-31",
|
|
"last_seen": "2022-06-02",
|
|
"daily_hits": {
|
|
"2022-01-31": 64,
|
|
"2022-02-01": 24,
|
|
"2022-02-05": 5,
|
|
"2022-02-10": 12,
|
|
"2022-02-12": 11,
|
|
"2022-02-13": 8,
|
|
"2022-02-14": 23,
|
|
"2022-02-15": 3,
|
|
"2022-02-17": 8,
|
|
"2022-02-21": 1,
|
|
"2022-02-23": 12,
|
|
"2022-02-26": 1,
|
|
"2022-02-27": 3,
|
|
"2022-02-28": 81,
|
|
"2022-03-01": 11,
|
|
"2022-03-03": 11,
|
|
"2022-03-04": 41,
|
|
"2022-03-05": 2,
|
|
"2022-03-06": 10,
|
|
"2022-03-07": 20,
|
|
"2022-03-08": 10,
|
|
"2022-03-11": 21,
|
|
"2022-03-12": 55,
|
|
"2022-03-16": 30,
|
|
"2022-03-18": 11,
|
|
"2022-03-20": 1,
|
|
"2022-03-21": 36,
|
|
"2022-03-27": 9,
|
|
"2022-03-29": 9,
|
|
"2022-04-04": 4,
|
|
"2022-04-16": 12,
|
|
"2022-04-17": 25,
|
|
"2022-04-18": 31,
|
|
"2022-04-20": 2,
|
|
"2022-04-23": 2,
|
|
"2022-04-25": 18,
|
|
"2022-05-02": 4,
|
|
"2022-05-04": 1,
|
|
"2022-05-05": 2,
|
|
"2022-05-07": 5,
|
|
"2022-05-08": 4,
|
|
"2022-05-21": 4,
|
|
"2022-05-29": 4,
|
|
"2022-06-02": 2
|
|
},
|
|
"participated_count": 18
|
|
},
|
|
"14506": {
|
|
"course_code": "ENGL1A SP22 40055",
|
|
"first_seen": "2022-03-09",
|
|
"last_seen": "2022-03-09",
|
|
"daily_hits": {
|
|
"2022-03-09": 6
|
|
},
|
|
"participated_count": 0
|
|
},
|
|
"14631": {
|
|
"course_code": "El Centro SP & SU 2022",
|
|
"first_seen": "2022-02-01",
|
|
"last_seen": "2022-06-07",
|
|
"daily_hits": {
|
|
"2022-02-01": 1,
|
|
"2022-02-15": 3,
|
|
"2022-03-30": 1,
|
|
"2022-06-07": 4
|
|
},
|
|
"participated_count": 0
|
|
},
|
|
"14787": {
|
|
"course_code": "ENGL1C SU22 80214",
|
|
"first_seen": "2022-06-14",
|
|
"last_seen": "2022-06-29",
|
|
"daily_hits": {
|
|
"2022-06-14": 5,
|
|
"2022-06-17": 2,
|
|
"2022-06-19": 13,
|
|
"2022-06-20": 27,
|
|
"2022-06-21": 31,
|
|
"2022-06-27": 4,
|
|
"2022-06-28": 8,
|
|
"2022-06-29": 34
|
|
},
|
|
"participated_count": 3
|
|
},
|
|
"14922": {
|
|
"course_code": "HIST1 SU22 80036",
|
|
"first_seen": "2022-06-13",
|
|
"last_seen": "2022-07-23",
|
|
"daily_hits": {
|
|
"2022-06-13": 5,
|
|
"2022-06-14": 12,
|
|
"2022-06-16": 10,
|
|
"2022-06-17": 2,
|
|
"2022-06-19": 90,
|
|
"2022-06-20": 31,
|
|
"2022-06-21": 56,
|
|
"2022-06-22": 13,
|
|
"2022-06-27": 71,
|
|
"2022-06-28": 24,
|
|
"2022-06-29": 18,
|
|
"2022-07-03": 5,
|
|
"2022-07-04": 136,
|
|
"2022-07-12": 130,
|
|
"2022-07-19": 127,
|
|
"2022-07-22": 10,
|
|
"2022-07-23": 149
|
|
},
|
|
"participated_count": 46
|
|
},
|
|
"14938": {
|
|
"course_code": "CSIS42 SU22 80108",
|
|
"first_seen": "2022-05-09",
|
|
"last_seen": "2022-07-03",
|
|
"daily_hits": {
|
|
"2022-05-09": 6,
|
|
"2022-06-02": 15,
|
|
"2022-06-08": 5,
|
|
"2022-06-13": 5,
|
|
"2022-06-14": 4,
|
|
"2022-06-15": 32,
|
|
"2022-06-16": 136,
|
|
"2022-06-17": 27,
|
|
"2022-06-21": 1,
|
|
"2022-06-22": 20,
|
|
"2022-06-24": 25,
|
|
"2022-06-25": 28,
|
|
"2022-06-28": 23,
|
|
"2022-06-29": 37,
|
|
"2022-06-30": 5,
|
|
"2022-07-01": 29,
|
|
"2022-07-02": 15,
|
|
"2022-07-03": 19
|
|
},
|
|
"participated_count": 9
|
|
},
|
|
"15696": {
|
|
"course_code": "CMUN10 FA22 11477",
|
|
"first_seen": "2022-08-20",
|
|
"last_seen": "2022-08-20",
|
|
"daily_hits": {
|
|
"2022-08-20": 11
|
|
},
|
|
"participated_count": 0
|
|
},
|
|
"17031": {
|
|
"course_code": "ANTH/PSYC32 11584/11586",
|
|
"first_seen": "2023-08-28",
|
|
"last_seen": "2025-07-29",
|
|
"daily_hits": {
|
|
"2023-08-28": 45,
|
|
"2023-08-29": 2,
|
|
"2023-09-01": 10,
|
|
"2023-09-02": 2,
|
|
"2023-09-08": 31,
|
|
"2023-09-09": 3,
|
|
"2023-09-12": 1,
|
|
"2023-09-14": 6,
|
|
"2023-09-15": 10,
|
|
"2023-09-16": 4,
|
|
"2023-09-21": 20,
|
|
"2023-09-22": 1,
|
|
"2023-09-23": 31,
|
|
"2023-09-25": 10,
|
|
"2023-10-02": 95,
|
|
"2023-10-03": 3,
|
|
"2023-10-04": 29,
|
|
"2023-10-07": 17,
|
|
"2023-10-08": 27,
|
|
"2023-10-11": 4,
|
|
"2023-10-15": 12,
|
|
"2023-10-18": 1,
|
|
"2023-10-19": 33,
|
|
"2023-10-20": 9,
|
|
"2023-10-27": 7,
|
|
"2023-10-28": 4,
|
|
"2023-10-29": 10,
|
|
"2023-11-04": 5,
|
|
"2023-11-05": 12,
|
|
"2023-11-10": 6,
|
|
"2023-11-11": 13,
|
|
"2023-11-12": 4,
|
|
"2023-11-15": 11,
|
|
"2023-11-17": 5,
|
|
"2023-11-19": 3,
|
|
"2023-11-23": 4,
|
|
"2023-11-26": 4,
|
|
"2023-11-27": 6,
|
|
"2023-12-04": 9,
|
|
"2023-12-07": 4,
|
|
"2023-12-08": 8,
|
|
"2023-12-09": 1,
|
|
"2023-12-10": 6,
|
|
"2023-12-12": 8,
|
|
"2023-12-14": 18,
|
|
"2023-12-15": 3,
|
|
"2023-12-16": 10,
|
|
"2023-12-18": 9,
|
|
"2023-12-21": 12,
|
|
"2025-07-29": 4
|
|
},
|
|
"participated_count": 38
|
|
},
|
|
"17443": {
|
|
"course_code": "PHIL4 FA23 10629",
|
|
"first_seen": "2023-08-29",
|
|
"last_seen": "2023-12-21",
|
|
"daily_hits": {
|
|
"2023-08-29": 12,
|
|
"2023-09-01": 14,
|
|
"2023-09-02": 18,
|
|
"2023-09-08": 1,
|
|
"2023-09-09": 6,
|
|
"2023-09-12": 28,
|
|
"2023-09-16": 7,
|
|
"2023-09-21": 1,
|
|
"2023-09-22": 14,
|
|
"2023-09-25": 14,
|
|
"2023-10-02": 35,
|
|
"2023-10-04": 5,
|
|
"2023-10-05": 11,
|
|
"2023-10-07": 30,
|
|
"2023-10-08": 16,
|
|
"2023-10-10": 8,
|
|
"2023-10-15": 10,
|
|
"2023-10-18": 7,
|
|
"2023-10-19": 9,
|
|
"2023-10-20": 6,
|
|
"2023-10-21": 2,
|
|
"2023-10-22": 21,
|
|
"2023-10-28": 21,
|
|
"2023-11-15": 4,
|
|
"2023-11-16": 3,
|
|
"2023-11-17": 10,
|
|
"2023-11-18": 2,
|
|
"2023-11-22": 15,
|
|
"2023-11-23": 1,
|
|
"2023-11-27": 6,
|
|
"2023-12-04": 37,
|
|
"2023-12-07": 5,
|
|
"2023-12-08": 8,
|
|
"2023-12-09": 6,
|
|
"2023-12-12": 17,
|
|
"2023-12-21": 10
|
|
},
|
|
"participated_count": 13
|
|
},
|
|
"17453": {
|
|
"course_code": "ART/HIST21 10312/11561",
|
|
"first_seen": "2023-08-28",
|
|
"last_seen": "2023-09-09",
|
|
"daily_hits": {
|
|
"2023-08-28": 14,
|
|
"2023-08-29": 12,
|
|
"2023-09-01": 11,
|
|
"2023-09-02": 5,
|
|
"2023-09-09": 8
|
|
},
|
|
"participated_count": 6
|
|
},
|
|
"17773": {
|
|
"course_code": "GUID1 SU23 80060",
|
|
"first_seen": "2023-06-12",
|
|
"last_seen": "2023-07-22",
|
|
"daily_hits": {
|
|
"2023-06-12": 30,
|
|
"2023-06-13": 4,
|
|
"2023-06-15": 9,
|
|
"2023-06-16": 13,
|
|
"2023-06-17": 73,
|
|
"2023-06-19": 2,
|
|
"2023-06-23": 27,
|
|
"2023-06-25": 66,
|
|
"2023-06-26": 101,
|
|
"2023-07-02": 8,
|
|
"2023-07-03": 44,
|
|
"2023-07-07": 9,
|
|
"2023-07-09": 18,
|
|
"2023-07-10": 30,
|
|
"2023-07-16": 2,
|
|
"2023-07-17": 65,
|
|
"2023-07-18": 2,
|
|
"2023-07-21": 19,
|
|
"2023-07-22": 25
|
|
},
|
|
"participated_count": 49
|
|
},
|
|
"17815": {
|
|
"course_code": "AJ10 SU23 80090",
|
|
"first_seen": "2023-06-12",
|
|
"last_seen": "2023-09-09",
|
|
"daily_hits": {
|
|
"2023-06-12": 20,
|
|
"2023-06-16": 5,
|
|
"2023-06-18": 12,
|
|
"2023-06-19": 89,
|
|
"2023-06-20": 15,
|
|
"2023-06-25": 26,
|
|
"2023-06-27": 18,
|
|
"2023-07-01": 11,
|
|
"2023-07-02": 20,
|
|
"2023-07-03": 1,
|
|
"2023-07-04": 9,
|
|
"2023-07-09": 22,
|
|
"2023-07-16": 14,
|
|
"2023-07-17": 1,
|
|
"2023-07-21": 8,
|
|
"2023-07-22": 24,
|
|
"2023-07-24": 16,
|
|
"2023-08-28": 1,
|
|
"2023-09-01": 1,
|
|
"2023-09-09": 2
|
|
},
|
|
"participated_count": 42
|
|
},
|
|
"17821": {
|
|
"course_code": "CD/PSYC2 80137/80138",
|
|
"first_seen": "2023-06-09",
|
|
"last_seen": "2023-09-08",
|
|
"daily_hits": {
|
|
"2023-06-09": 3,
|
|
"2023-06-12": 59,
|
|
"2023-06-13": 3,
|
|
"2023-06-15": 12,
|
|
"2023-06-16": 31,
|
|
"2023-06-17": 4,
|
|
"2023-06-18": 113,
|
|
"2023-06-19": 103,
|
|
"2023-06-20": 42,
|
|
"2023-06-22": 40,
|
|
"2023-06-23": 6,
|
|
"2023-06-25": 25,
|
|
"2023-06-26": 16,
|
|
"2023-07-02": 46,
|
|
"2023-07-03": 35,
|
|
"2023-07-04": 25,
|
|
"2023-07-05": 14,
|
|
"2023-07-07": 3,
|
|
"2023-07-09": 59,
|
|
"2023-07-10": 10,
|
|
"2023-07-12": 10,
|
|
"2023-07-16": 21,
|
|
"2023-07-17": 37,
|
|
"2023-07-18": 59,
|
|
"2023-07-22": 59,
|
|
"2023-07-23": 13,
|
|
"2023-07-24": 46,
|
|
"2023-07-25": 3,
|
|
"2023-08-29": 2,
|
|
"2023-09-02": 1,
|
|
"2023-09-08": 1
|
|
},
|
|
"participated_count": 38
|
|
},
|
|
"18037": {
|
|
"course_code": "El Centro FA23",
|
|
"first_seen": "2023-09-02",
|
|
"last_seen": "2023-09-02",
|
|
"daily_hits": {
|
|
"2023-09-02": 2
|
|
},
|
|
"participated_count": 0
|
|
}
|
|
},
|
|
"app_name_counts": {
|
|
"None": 7054,
|
|
"Canvas for Android": 4176,
|
|
"Canvas for iOS": 1431
|
|
}
|
|
};
|
|
const dataCourses = data.courses;
|
|
|
|
const container = document.getElementById("reports");
|
|
const sortedCourses = Object.entries(dataCourses).sort(([, a], [, b]) => new Date(a.first_seen) - new Date(b.first_seen));
|
|
|
|
sortedCourses.forEach(([courseId, course], index) => {
|
|
const section = document.createElement("div");
|
|
section.className = "course";
|
|
|
|
const title = document.createElement("h2");
|
|
title.textContent = `${course.course_code || courseId} (Course ID: ${courseId})`;
|
|
|
|
const dateRange = document.createElement("p");
|
|
dateRange.textContent = `First seen: ${course.first_seen} — Last seen: ${course.last_seen}`;
|
|
|
|
const participation = document.createElement("p");
|
|
participation.textContent = `Participation count: ${course.participated_count}`;
|
|
|
|
const canvas = document.createElement("canvas");
|
|
canvas.id = `chart-${index}`;
|
|
section.appendChild(title);
|
|
section.appendChild(dateRange);
|
|
section.appendChild(participation);
|
|
section.appendChild(canvas);
|
|
|
|
container.appendChild(section);
|
|
|
|
const fullLabels = getAllDates(course.first_seen, course.last_seen);
|
|
const hitsMap = course.daily_hits;
|
|
const hits = fullLabels.map(d => hitsMap[d] || 0);
|
|
|
|
new Chart(canvas.getContext("2d"), {
|
|
type: 'bar',
|
|
data: {
|
|
labels: fullLabels,
|
|
datasets: [{
|
|
label: 'Daily Hits',
|
|
data: hits,
|
|
backgroundColor: 'rgba(75, 192, 192, 0.7)',
|
|
}]
|
|
},
|
|
options: {
|
|
scales: {
|
|
x: {
|
|
ticks: {
|
|
maxRotation: 90,
|
|
minRotation: 45,
|
|
autoSkip: true,
|
|
maxTicksLimit: 20
|
|
}
|
|
},
|
|
y: {
|
|
beginAtZero: true
|
|
}
|
|
}
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
const data = { /* full object will be injected manually */ };
|
|
loadData();
|
|
</script>
|
|
</body>
|
|
</html> |