in js/tabs/schedule/F8ScheduleGantt.js [81:131]
filterSessions(all) {
let grouped = this.groupSessionsIntoRows(all);
let filtered = [];
let earliest = null,
latest = null;
(Object.keys(grouped) || []).map(title => {
let session = { title, startTime: null, endTime: null, times: [] };
(grouped[title] || []).map(each => {
// find the earliest and latest start/end times
if (!earliest || each.startTime < earliest) {
earliest = each.startTime;
}
if (!latest || each.endTime > latest) {
latest = each.endTime;
}
// update grouped session start/end times (if necessary)
if (!session.startTime || each.startTime < session.startTime) {
session.startTime = each.startTime;
}
if (!session.endTime || each.endTime > session.endTime) {
session.endTime = each.endTime;
}
// pass through multiple times, deprecated
if (title !== "Sessions" && each.times && each.times.length) {
session.times = [...session.times, ...each.times];
}
// set the location (if necessary)
if (!session.location) {
session.location = each.location;
}
});
filtered.push(session);
});
const roundedDownStart = moment
.utc(earliest)
.startOf("hour")
.valueOf(),
endMoment = moment.utc(latest),
roundedUpEnd =
endMoment.minute() || endMoment.second() || endMoment.millisecond()
? endMoment.add(1, "hour").startOf("hour")
: endMoment.startOf("hour");
return {
filtered,
earliest: roundedDownStart,
latest: roundedUpEnd
};
}