function topicFormatter(day) {
if (day.slides) {
return htl.html`<td><a href="${day.slides}">${day.topic}</a></td>`;
} else {
return htl.html`<td>${day.topic}</td>`;
}
}
function assignmentFormatter(assigned) {
if (assigned) {
return htl.html`<td>${assigned.map(a => htl.html`${a.link && a.published !== false ? htl.html`<a href="${a.link}">${a.label}</a><br>` : htl.html`${a.label}<br>`}`)}</td>`;
} else {
return htl.html`<td></td>`;
}
}
function readingFormatter(readings) {
const buildReadingNote = reading => {
if (!reading.note) {
return null;
} else if (reading.note_href) {
return htl.html` (<a href=${reading.note_href}>${reading.note}</a>)`;
} else {
return htl.html` (${reading.note})`;
}
}
const readingMain = readings.map(reading => {
if (reading.topic) {
return htl.html`📚 <a href="${reading.link}">${reading.topic}</a> (${reading.sections})${buildReadingNote(reading)}<br>`;
} else if (reading.label){
return htl.html`📚 <a href="${reading.link}">${reading.label}</a>${buildReadingNote(reading)}<br>`;
} else {
// from a paper
return htl.html`📚 ${reading.authors} (${reading.year}), <a href="${reading.link}">${reading.title}</a>${buildReadingNote(reading)}<br>`;
}
});
return htl.html`${readingMain}`;
}
function activityFormatter(activities) {
if (!activities) {
return null;
}
const lis = activities.map(activity => htl.html`<li><a href="${activity.link}">${activity.label}</a></li>`);
return htl.html`Activities:<ul>${lis}</ul>`;
}
function buildTableRows(week) {
const scheduleData = [week];
return scheduleData.map(week => {
// const headerText = week.week == "Holiday" ? week.week : `Week ${week.week}`;
// const header = htl.html`<tr><th colspan="6"><center>${headerText}</center></th></tr>`;
const body = week.days.map(day => {
const main = htl.html`<tr>
<td>${day.day}</td>
<td>${day.date}</td>
${topicFormatter(day)}
${assignmentFormatter(day.assigned)}
${assignmentFormatter(day.due)}
</tr>`;
let readingActivities = null;
if (day.reading || day.activities) {
readingActivities = htl.html`<tr><td colspan="5">${readingFormatter(day.reading)}${activityFormatter(day.activities)}</td></tr>`;
}
return htl.html.fragment`${main}${readingActivities}`;
});
return htl.html.fragment`${body}`;
});
}
htl.html`<h1>CS 457: Week ${week.week}</h1>
<table class="table">
<thead>
<tr>
<th></th>
<th>Date</th>
<th>Topic</th>
<th>Assigned</th>
<th>Due</th>
</tr>
</thead>
<tbody>${buildTableRows(week)}</tbody>
</table>`