interlude/schedule.js

145 lines
3.6 KiB
JavaScript
Raw 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: 'Regex 101',
startTime: moment({hour: 10, minute: 00}),
speakers: [
{
name: 'Bradley Andersen (elohmrow)',
description: 'Je n\'avais pas besoin de cette hypothese-la'
}
]
});
schedule.addEvent({
title: 'HTTP Clients and Perl',
startTime: moment({hour: 11}),
speakers: [
{
name: 'Tom Hukins',
description: ''
}
]
});
schedule.addEvent({
title: 'Dancer and DBIx::Class',
startTime: moment({hour: 11, minute: 30}),
speakers: [
{
name: 'Stefan Hornburg (racke)',
description: 'Open source consultant since 1998, with the focus on E-Commerce, Perl and Debian. Started using Dancer in 2011 and is now part of the Dancer development team.'
}
]
});
schedule.addEvent({
title: 'Lunch',
startTime: moment({hour: 12, minute: 20})
});
schedule.addEvent({
title: 'Reading the layercake, an introduction to PerlIO',
startTime: moment({hour: 13, minute: 20}),
speakers: [
{
name: 'Leon Timmermans (leont)',
description: 'He\'s a Dutch perl hacker, mainly known for File::Map, Module::Build::Tiny, libperl++ and threads::lite, as well as some contributions to core.'
}
]
});
schedule.addEvent({
title: 'Devops Logique',
startTime: moment({hour: 13, minute: 50}),
speakers: [
{
name: 'Matt S Trout (mst)',
description: ''
}
]
});
schedule.addEvent({
title: 'Functional Pe(a)rls: Huey\'s Zipper',
startTime: moment({hour: 14, minute: 50}),
speakers: [
{
name: 'osfameron',
description: 'mySociety, DoES Liverpool (coworking/hackspace), co-author of Designing the Internet of Things'
}
]
});
schedule.addEvent({
title: 'Coffee Break',
startTime: moment({hour: 15, minute: 40})
});
schedule.addEvent({
title: 'Lightning Talks',
startTime: moment({hour: 16, minute: 10}),
});
schedule.addEvent({
title: 'Day 2 Keynote - State of the Velociraptor',
startTime: moment({hour: 17, minute: 10}),
speakers: [
{
name: 'Matt S Trout (mst)',
description: ''
}
]
});