146 lines
4.2 KiB
JavaScript
146 lines
4.2 KiB
JavaScript
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}),
|
||
});
|