interlude/schedule.js

146 lines
4.2 KiB
JavaScript
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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());
}
this.currentEvent = function() {
var latestEvent = _.last(this.pastEvents());
var nextEvent = this.nextEvent();
if (typeof nextEvent != 'undefined' && moment(nextEvent.startTime).subtract('minutes', 10).isAfter(moment())) {
return latestEvent;
} else {
return undefined;
}
}
this.futureEvents = function() {
return this.upcomingEvents().splice(1);
}
this.pastEvents = function() {
return _.select(events, function(event) {
return event.startTime.isBefore(moment());
});
}
this.allEvents = function() {
return events;
}
this.addDelay = function(time) {
_.each(this.upcomingEvents(), function(event, index, agenda) {
event.startTime.add(time);
});
}
}
var schedule = new Schedule();
schedule.addEvent({
title: 'Behind the scenes of a grown-up web application',
startTime: moment({hour: 10, minute: 00}),
speakers: [
{
name: 'Kerstin Puschke (titanoboa)',
description: 'Kerstin Puschke is a software engineer living in Hamburg. As part of an awesome team, she contributes to the backend of XING, a social network for business professionals with about 14 million users.'
}
]
});
schedule.addEvent({
title: 'GOTO statement considered awesome',
startTime: moment({hour: 10, minute: 30}),
speakers: [
{
name: 'Carl Mäsak (masak)',
description: 'Has been programming Perl since 2001. Found Perl 6 somewhere around 2004, and fell in love. Now doing a number of projects in Perl 5 and 6. A regular at #perl6, he often helps newcomers and does smallish tasks on the Perl 6 specs, test suite and on Rakudo and Niecza.'
}
]
});
schedule.addEvent({
title: 'C-Day Is Coming',
startTime: moment({hour: 11}),
speakers: [
{
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)'
}
]
});
schedule.addEvent({
title: 'Lunch',
startTime: moment({hour: 12, minute: 20})
});
schedule.addEvent({
title: 'Digest:SHA is broken',
startTime: moment({hour: 13, minute: 20}),
speakers: [
{
name: 'Mark Overmeer (markov)',
description: 'Perl, Perl and UNIX'
}
]
});
schedule.addEvent({
title: 'Asynchronous Programming with Futures',
startTime: moment({hour: 13, minute: 50}),
speakers: [
{
name: 'Paul Evans (LeoNerd)',
description: ''
}
]
});
schedule.addEvent({
title: 'Adventures in Perl 6 Asynchrony',
startTime: moment({hour: 14, minute: 50}),
speakers: [
{
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.'
}
]
});
schedule.addEvent({
title: 'Coffee Break',
startTime: moment({hour: 15, minute: 40})
});
schedule.addEvent({
title: 'Day 3 Keynote - The Joy In What We Do',
startTime: moment({hour: 16, minute: 10}),
speakers: [
{
name: 'Sawyer X',
description: ''
}
]
});
schedule.addEvent({
title: 'Lightning Talks',
startTime: moment({hour: 17, minute: 00}),
});