JSFiddle - React, Tailwind, and code Playground

by Trevor Dixon

JavaScript

function removeTime(openTimes, time) {
    var i = openTimes.indexOf(time);
    if (i > -1) openTimes.splice(i, 1);
}

$.get("http://crossorigin.me/https://www.google.com/calendar/ical/lco848f23l3ch712o5uldmposg%40group.calendar.google.com/private-d7894f2499e194d639f1a85db961d478/basic.ics", function(response) {
    var lines = response.split('\n');
    var eventlist = [];
    var insideEvent = false;
    for (var i = 0; i < lines.length; i++) {
        var line = lines[i];         // 'BEGIN:VEVENT'
        var parts = line.split(':'); // ['BEGIN', 'VEVENT']
        
        if (parts.length < 2) {
            continue;
        }
        
        parts[1] = parts[1].trim();

        if (parts[0] == 'BEGIN' && parts[1] == 'VEVENT') {
            insideEvent = true;
            continue;
        }
        
        if (parts[0] == 'END' && parts[1] == 'VEVENT') {
            insideEvent = false;
            continue;
        }
        
        if (!insideEvent) {
            continue;
        }
        
        if (parts[0] == 'DTSTART') {
            var matches = parts[1].match(/^(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})/);
            var year = matches[1];
            var month = matches[2];
            var day = matches[3];
            var hour = matches[4];
            var mins = matches[5];
            var date = new Date(year, month-1, day, hour-8, mins);
            eventlist.push(date);
        }
    }
    
    var eveningOf = new Date('July 29, 2015');
    var openTimes = [1800, 1815, 1830, 1845, 1900, 1915, 1930, 1945, 2000, 2015];
    
    for (var i = 0; i < eventlist.length; i++) {
        var start = eventlist[i];
        if (start.getYear() != eveningOf.getYear()) {
            continue;
        }
        if (start.getMonth() != eveningOf.getMonth()) {
            continue;
        }
        if (start.getDate() != eveningOf.getDate()) {
            continue;
        }
        var time = start.getHours()*100 + start.getMinutes()
       ...