function parseICSData()

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;
}