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()
...