Published
Edited
Nov 14, 2018
Insert cell
Insert cell
Insert cell
Insert cell
learnerGroups = {
const learnerGroups = {
g1: ['JB', 'AB', 'CD'],
g2: ['AB'],
};
return learnerGroups;
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
grouped = lodash.groupBy(expandedEvents, grouper)
Insert cell
Insert cell
Insert cell
{
function makeNotification(events) {
const [event] = events;
// assume only COMPLETED for now
const lgSize = (learnerGroups[event.learnerGroup] || []).length;
if (events.length === lgSize) {
return `Everybody in ${event.learnerGroup} finished ${event.object.resourceId}`;
}
if (events.length === 1) {
return `${event.learnerId} finished ${event.object.resourceId} | ${event.learnerGroup}`;
}
if (events.length === 2) {
return `${event.learnerId} and 1 other finished ${event.object.resourceId} | ${event.learnerGroup}`;
}
if (events.length > 2) {
return `${event.learnerId} and ${events.length - 1} others finished ${event.object.resourceId} | ${event.learnerGroup}`;
}
}
return lodash.map(grouped, makeNotification);
}
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more