interlude/schedule.js

138 lines
4.1 KiB
JavaScript
Raw Normal View History

2014-05-13 07:27:47 +03:00
function Schedule() {
var events = [];
this.addEvent = function(event) {
events.push(event);
events = _.sortBy(events, function(event) {
return event.startTime.unix()
});
}
this.upcomingEvents = function() {
return _.select(events, function(event) {
return event.startTime.isAfter(moment());
});
}
this.nextEvent = function() {
return _.first(this.upcomingEvents());
}
2014-06-21 05:08:15 +03:00
this.currentEvent = function() {
2014-06-21 10:55:38 +03:00
var latestEvent = _.last(this.pastEvents());
2014-06-21 05:08:15 +03:00
var nextEvent = this.nextEvent();
2014-08-20 14:36:12 +03:00
if (typeof nextEvent != 'undefined' && moment(nextEvent.startTime).subtract('minutes', 10).isAfter(moment())) {
2014-06-21 10:55:38 +03:00
return latestEvent;
} else {
return undefined;
}
2014-06-21 05:08:15 +03:00
}
2014-05-13 15:43:58 +03:00
this.futureEvents = function() {
return this.upcomingEvents().splice(1);
}
this.pastEvents = function() {
return _.select(events, function(event) {
return event.startTime.isBefore(moment());
});
}
this.allEvents = function() {
2014-05-13 07:27:47 +03:00
return events;
}
this.addDelay = function(time) {
_.each(this.upcomingEvents(), function(event, index, agenda) {
event.startTime.add(time);
});
}
}
var schedule = new Schedule();
2014-06-21 04:28:41 +03:00
schedule.addEvent({
2014-08-20 14:16:53 +03:00
title: 'Registration and Attendees Meet and Greet',
2014-06-21 04:28:41 +03:00
startTime: moment({hour: 9, minute: 30})
});
2014-05-13 07:27:47 +03:00
schedule.addEvent({
2014-08-20 14:16:53 +03:00
title: 'Welcome to YAPC',
startTime: moment({hour: 11})
2014-05-13 07:27:47 +03:00
});
schedule.addEvent({
2014-08-20 14:16:53 +03:00
title: 'How The Camel Is De-Cocooning',
startTime: moment({hour: 11, minute: 30}),
2014-07-10 13:25:55 +03:00
speakers: [
{
2014-08-20 14:16:53 +03:00
name: 'liz',
description: 'Made some interesting modules, to be found at CPAN. Co-organiser YAPC::Europe::2001 in Amsterdam. Chairman of YAPC::Europe::Foundation (YEF)'
2014-07-10 13:25:55 +03:00
}
]
2014-05-13 07:27:47 +03:00
});
schedule.addEvent({
2014-08-20 14:16:53 +03:00
title: 'Lunch',
startTime: moment({hour: 12, minute: 20})
2014-05-13 07:27:47 +03:00
});
2014-06-21 12:13:55 +03:00
schedule.addEvent({
2014-08-20 14:16:53 +03:00
title: 'Code I\'m proud of',
startTime: moment({hour: 13, minute: 20}),
2014-07-10 13:25:55 +03:00
speakers: [
{
2014-08-20 14:16:53 +03:00
name: 'Thomas Klausner (domm)',
description: 'Currently full-time father of 2 kids, half-time Perl hacker, sort-of DJ, bicyclist, no longer dreadlocked and more than 34 years old but too lazy to update his profile once a year.'
2014-07-10 13:25:55 +03:00
}
]
2014-06-21 12:13:55 +03:00
});
2014-05-13 07:27:47 +03:00
schedule.addEvent({
2014-08-20 14:16:53 +03:00
title: 'How to Fake a Database Design',
startTime: moment({hour: 13, minute: 50}),
2014-07-10 13:25:55 +03:00
speakers: [
{
2014-08-20 14:16:53 +03:00
name: 'Curtis Poe (Ovid)',
description: 'Freelance Perl guru for hire. Perl Foundation Board Committee member. Former Perl Foundation Grant Committee chair. Testing zealot. Professional expat. Beer lover.'
2014-07-10 13:25:55 +03:00
}
]
2014-05-13 07:27:47 +03:00
});
schedule.addEvent({
2014-08-20 14:16:53 +03:00
title: 'Rakudo Perl 6 and MoarVM Performance Advances',
startTime: moment({hour: 14, minute: 50}),
2014-07-10 13:25:55 +03:00
speakers: [
{
2014-08-20 14:16:53 +03:00
name: 'Jonathan Worthington (jnthn)',
description: 'In the Perl world, Jonathan is best known as one of the key developers of the Rakudo Perl 6 compiler. His work has focused on the object model, type system, multiple dispatch and signatures. He\'s a regular speaker in the European Perl Conference and Workshop scene, and finds any invite to come and speak and enjoy a few beers with the local Perl hackers hard to resist.'
2014-07-10 13:25:55 +03:00
}
]
2014-05-13 07:27:47 +03:00
});
schedule.addEvent({
2014-08-20 14:16:53 +03:00
title: 'Coffee Break ☕',
startTime: moment({hour: 15, minute: 40})
2014-05-13 07:27:47 +03:00
});
schedule.addEvent({
2014-08-20 14:16:53 +03:00
title: 'Lightning Talks',
startTime: moment({hour: 16, minute: 10}),
2014-05-13 07:27:47 +03:00
});
schedule.addEvent({
2014-08-20 14:16:53 +03:00
title: 'Day 1 Keynote - You\'re Killing Managers (Keep It Up)',
startTime: moment({hour: 17, minute: 10}),
2014-07-10 13:25:55 +03:00
speakers: [
{
2014-08-20 14:16:53 +03:00
name: 'Curtis Poe (Ovid)',
description: 'Freelance Perl guru for hire. Perl Foundation Board Committee member. Former Perl Foundation Grant Committee chair. Testing zealot. Professional expat. Beer lover.'
2014-07-10 13:25:55 +03:00
}
]
2014-05-13 07:27:47 +03:00
});
2014-06-21 04:28:41 +03:00
schedule.addEvent({
2014-08-20 14:16:53 +03:00
title: 'Official conference dinner',
startTime: moment({hour: 19, minute: 00})
2014-05-13 07:27:47 +03:00
});