in js/utils.js [149:253]
function parseICSData(icsdata) {
let triageData = {};
// Download calendar and parse into bugqueries.
let ics = ical.parseICS(icsdata);
let years = [];
let maxDate = null, minDate = null;
for (let k in ics) {
if (!ics.hasOwnProperty(k)) {
console.log('no Own Property', k)
}
if (ics[k].type != 'VEVENT') {
console.log('Not a VEVENT', ics[k])
continue;
}
var ev = ics[k];
//console.log(ev.summary, ev.location, ev.start.getDate(), MONTHS[ev.start.getMonth()], ev.start.getFullYear());
// Filter entries based on team name:
// teams - webrtc, media, graphics
let team = getTeam()
let summary = ev.summary.toLowerCase()
if (team == 'webrtc' && summary.indexOf('webrtc') == -1) {
continue;
}
if (team == 'media' &&
(summary.indexOf('playback') == -1 && summary.indexOf('media') == -1)
) {
continue;
}
var who = ev.summary;
var startDate = dateToBz(ev.start);
var endDate = dateToBz(ev.end);
var year = `${ev.start.getFullYear()}`;
var endyear = `${ev.end.getFullYear()}`;
if (parseInt(year) < 2022) {
continue;
}
years.push(year);
if (maxDate < ev.end || maxDate == null)
maxDate = ev.end;
if (minDate > ev.start || minDate == null)
minDate = ev.start;
// Cleanup summaries a bit
who = who.replace('webrtc triage', '');
who = who.replace('playback triage', '');
who = who.replace('[Incoming Triage] ', '');
who = who.replace('WebRTC Triage', '');
who = who.replace('Media Triage', '');
//console.log('parseICS event:', '"' + who + '"', startDate, endDate, notAfterBz, year, endyear);
if (!triageData[year]) {
triageData[year] = {
data: [],
search: '',
updayebot: ''
}
}
if (!triageData[endyear]) {
triageData[endyear] = {
data: [],
search: '',
updayebot: ''
}
}
const query = {
who: who,
from: startDate,
to: endDate
};
triageData[year].data.push(query);
if (year != endyear) {
triageData[endyear].data.push(query);
}
}
triageData['min'] = dateToBz(minDate);
triageData['max'] = dateToBz(maxDate);
//console.log(triageData.min, triageData.max);
// Sort
years.forEach(function (date) {
triageData[date].data.sort(
function(a, b){
return new Date(a.from) > new Date(b.from);
});
});
return triageData;
}