Compare commits

...

18 Commits

Author SHA1 Message Date
Petko Bordjukov 839c1afe9d Remove unused methods and optimise current event detection 2014-11-01 05:04:57 +02:00
Petko Bordjukov 60f068c20e Workaround wrong dates in the database 2014-11-01 04:55:30 +02:00
Petko Bordjukov 64bcc6800b Autoupdate the schedule 2014-11-01 04:33:48 +02:00
Petko Bordjukov a8bae839e7 Styling for OpenFest 2014-11-01 04:33:12 +02:00
Petko Bordjukov 88ef6a0ece Hook up interlude with Clarion 2014-11-01 04:00:16 +02:00
Petko Bordjukov c9ceb8407a Add schedule for day 3 for Vitosha 2014-08-24 08:58:07 +03:00
Petko Bordjukov a67e2795b1 Add schedule for Musala 2014-08-23 12:21:17 +03:00
Petko Bordjukov faa536a7d3 Add schedule for Rodopi 2014-08-23 12:09:34 +03:00
Petko Bordjukov 575d359fe3 Second day schedule for Vitosha 2014-08-23 09:48:32 +03:00
Petko Bordjukov 1c4bfa72f3 Schedule fixes 2014-08-22 12:50:59 +03:00
Petko Bordjukov efdab41b1a Add schedules for the other halls 2014-08-22 08:55:42 +03:00
Petko Bordjukov 038b8099fc Add a lightning emoji, too 2014-08-20 16:11:37 +03:00
Petko Bordjukov 0d1322fac4 More emoji!!! 2014-08-20 16:07:00 +03:00
Petko Bordjukov c7ea4fb8a7 Bump the background to full hd 2014-08-20 15:58:01 +03:00
Petko Bordjukov 221258f723 Tweak headings to work with coffee breaks/lunches etc 2014-08-20 14:54:05 +03:00
Petko Bordjukov fc09fef53c Turn on kerning and ligatures 2014-08-20 14:52:34 +03:00
Petko Bordjukov e5ac8c178a Tweak js and css 2014-08-20 14:36:12 +03:00
Petko Bordjukov 06e2a9d2bd Update for YAPC::EU 2014 2014-08-20 14:16:53 +03:00
9 changed files with 44 additions and 151 deletions

Binary file not shown.

Binary file not shown.

View File

@ -1,6 +1,6 @@
<html> <html>
<head> <head>
<title>The IT Tour</title> <title>OpenFest 2014 Interlude</title>
<meta charset="utf-8"> <meta charset="utf-8">
@ -13,9 +13,9 @@
<script src="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/2.6.2/lib/js/head.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/2.6.2/lib/js/head.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/2.6.2/js/reveal.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/2.6.2/js/reveal.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.6.0/moment.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.6.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.6.0/lang/bg.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ractive.js/0.3.7/ractive.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/ractive.js/0.3.7/ractive.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.6.0/underscore-min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.6.0/underscore-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.6.0/lang/bg.min.js"></script>
<script src="schedule.js"></script> <script src="schedule.js"></script>
</head> </head>
<body> <body>
@ -24,8 +24,6 @@
</div> </div>
</div> </div>
<video id="background_video" src="background.mp4" loop autoplay />
<script id="agenda_template" type="text/ractive"> <script id="agenda_template" type="text/ractive">
<section id="agenda"> <section id="agenda">
<table class="reveal"> <table class="reveal">
@ -78,7 +76,7 @@
</section> </section>
</script> </script>
<script id="speaker_template" type="text/ractive"> <script id="current_speaker_template" type="text/ractive">
<section> <section>
<h3>Лектор</h3> <h3>Лектор</h3>
<h1>{{name}}</h1> <h1>{{name}}</h1>
@ -86,6 +84,14 @@
</section> </section>
</script> </script>
<script id="next_speaker_template" type="text/ractive">
<section>
<h3>Следващ лектор</h3>
<h1>{{name}}</h1>
<p>{{description}}</p>
</section>
</script>
<script id="next_talk_template" type="text/ractive"> <script id="next_talk_template" type="text/ractive">
<section id="next_talk"> <section id="next_talk">
<h3>Следва</h3> <h3>Следва</h3>
@ -97,7 +103,8 @@
<script id="slides_template" type="text/ractive"> <script id="slides_template" type="text/ractive">
<section data-state="update-safe"> <section data-state="update-safe">
<img src="logo.png"> <h1>OpenFest</h1>
<h2>2014</h2>
</section> </section>
{{#eventCount}} {{#eventCount}}
@ -109,7 +116,7 @@
{{/currentEvent}} {{/currentEvent}}
{{#currentEvent.speakers}} {{#currentEvent.speakers}}
{{> speaker_template}} {{> current_speaker_template}}
{{/currentEvent.speakers}} {{/currentEvent.speakers}}
{{#nextEvent}} {{#nextEvent}}
@ -117,21 +124,14 @@
{{/nextEvent}} {{/nextEvent}}
{{#nextEvent.speakers}} {{#nextEvent.speakers}}
{{> speaker_template}} {{> next_speaker_template}}
{{/nextEvent.speakers}} {{/nextEvent.speakers}}
</section> </section>
{{/eventCount}} {{/eventCount}}
<!-- <section> -->
<!-- <h1>Обратна връзка</h1> -->
<!-- <h2>http://bit.ly/burgasconf-2014-feedback</h2> -->
<!-- </section> -->
<section> <section>
<h1>#VarnaConf</h1> <h2>Tweet</h2>
<h2>В Twitter и IRC на irc.it-tour.bg</h2> <h1>#OpenFest</h1>
<!-- <a class="twitter-timeline" href="https://twitter.com/search?q=%23BurgasConf" data-widget-id="466029214940925952">Tweets about "#BurgasConf"</a> -->
<!-- <script src="https://platform.twitter.com/widgets.js" id="twitter-wjs"></script> -->
</section> </section>
</script> </script>

BIN
logo.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

BIN
openfest.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

View File

@ -15,6 +15,7 @@ var reactive = new Ractive({
}); });
function refreshEvent() { function refreshEvent() {
schedule.update();
reactive.set({pastEvents: schedule.pastEvents(), reactive.set({pastEvents: schedule.pastEvents(),
currentEvent: schedule.currentEvent(), currentEvent: schedule.currentEvent(),
nextEvent: schedule.nextEvent(), nextEvent: schedule.nextEvent(),

View File

@ -42,7 +42,7 @@ Reveal.initialize({
autoSlide: 10000, autoSlide: 10000,
// Stop auto-sliding after user input // Stop auto-sliding after user input
autoSlideStoppable: true, autoSlideStoppable: false,
// Enable slide navigation via mouse wheel // Enable slide navigation via mouse wheel
mouseWheel: false, mouseWheel: false,
@ -72,7 +72,10 @@ Reveal.initialize({
// Bounds for smallest/largest possible scale to apply to content // Bounds for smallest/largest possible scale to apply to content
minScale: 0.2, minScale: 0.2,
maxScale: 8.0 maxScale: 8.0,
parallaxBackgroundImage: 'openfest.png',
parallaxBackgroundSize: '1920px 1080px'
}); });
Reveal.addEventListener('update-safe', function() { Reveal.addEventListener('update-safe', function() {

View File

@ -1,10 +1,14 @@
function Schedule() { function Schedule(hallId) {
var events = []; var events = [];
this.addEvent = function(event) { this.update = function() {
events.push(event); $.getJSON("https://cfp.openfest.org/schedule.json", function(data) {
events = _.sortBy(events, function(event) { var scheduleEvents = $.map(data[hallId], function(event) {
return event.startTime.unix() event['startTime'] = moment(event['startTime']).subtract(2, 'hours');
event['endTime'] = moment(event['endTime']).subtract(2, 'hours');
return event;
});
events = scheduleEvents;
}); });
} }
@ -20,8 +24,7 @@ function Schedule() {
this.currentEvent = function() { this.currentEvent = function() {
var latestEvent = _.last(this.pastEvents()); var latestEvent = _.last(this.pastEvents());
var nextEvent = this.nextEvent(); if (typeof(latestEvent) != 'undefined' && latestEvent.endTime.isAfter(moment())) {
if (typeof nextEvent != 'undefined' && (latestEvent.displayNext || moment(nextEvent.startTime).subtract('minutes', 10).isAfter(moment()))) {
return latestEvent; return latestEvent;
} else { } else {
return undefined; return undefined;
@ -41,123 +44,16 @@ function Schedule() {
this.allEvents = function() { this.allEvents = function() {
return events; return events;
} }
}
this.addDelay = function(time) { $.urlParam = function(name){
_.each(this.upcomingEvents(), function(event, index, agenda) { var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
event.startTime.add(time); if (results==null){
}); return null;
}
else{
return results[1] || 0;
} }
} }
var schedule = new Schedule(); var schedule = new Schedule(parseInt($.urlParam('roomId')));
schedule.addEvent({
title: 'Кафе',
startTime: moment({hour: 9, minute: 30})
});
schedule.addEvent({
title: 'Откриване',
startTime: moment({hour: 9, minute: 50})
});
schedule.addEvent({
title: 'Node.js and Open Source Software Development on Microsoft Azure',
startTime: moment({hour: 10}),
speakers: [
{
name: 'Михаил Матеев',
description: 'Михаил е разработчик в Infragistics. Работил е в различни области, свързани с технологии на Microsoft, като Silverlight, WPF, Windows Phone, Visual Studio LightSwitch, Windows Store приложения, WCF RIA Services, MS SQL Server и Microsoft Azure. През последните десет години, Михаил е писал статии за Computer World и различни блогове за .NET технологии. Той е сътрудник и технически редактор на PACKT Publishing and Wiley. Повече от пет години е работил в ESRI България. Няколко години Михаил е бил лектор в ФМИ на Софийския университет "Св. за Климент Охридски ". Също така е и преподавател по компютърни системи в Университет по Архитектура, Строителство и Геодезия в София.'
}
]
});
schedule.addEvent({
title: 'Редизайн на „държавата“ и препрограмиране на „системата“',
startTime: moment({hour: 11, minute: 10}),
speakers: [
{
name: 'Антон Стойчев',
description: 'Антон е прекарал последните 2 години във Великобритания, работейки като разработчик, предимно на саморегулиращи се системи за извличане и анализ на данни, достигащи на размер стотици сървъри на AWS. Сега е тук и иска да добави смисъл и желание за неизбежния, целодневен престой пред монитор; Чрез “Civic Hacking” нещо започващо с работещите в дигиталната сфера, но обхващащо всички други. Живее живота си майсторейки и обичайки, в опити за рисуване, писане, четене и прекарвайки часове в сглобяване на извинения за честите си пътувания.'
}
]
});
schedule.addEvent({
title: 'iOS Development - Tips & Tricks',
startTime: moment({hour: 12, minute: 10}),
speakers: [
{
name: 'Галин Кърджилов',
description: 'Галин е проактивен и творчески настроен софтуерен инженер с повече от 10 години опит. В момента е посветен на мобилните разработки и работи като Senior iOS Developer в MentorMate София. Неговият стремеж е да генерира максимално въздействие към потребителите.'
},
{
name: 'Стефан Цвятков',
description: 'Стефан е започнал кариерата си като разработчик за Mac. През 2008 г. Apple пуска iOS SDK и това е началото на една ера. Оттогава, той работи по създаването iOS приложения. В MentorMate той успява да изгради най-големия екип от iOS програмисти в България. Стефан е известен с желанието си да подобри мобилните приложения, за да бъдат по-интерактивни, ефективни и оптимизирани за нуждите на бизнеса.'
}
]
});
schedule.addEvent({
title: 'Обяд',
startTime: moment({hour: 12, minute: 40})
});
schedule.addEvent({
title: 'The Cloud Beyond the Buzzword',
startTime: moment({hour: 13, minute: 30}),
speakers: [
{
name: 'Божидар Божанов',
description: 'Божидар Божанов е програмист, а понякога и архитект. От скука е направил http://computoser.com - компютърен композитор, а друго негово хоби е лингвистиката. Притежател на "дебел" stackoverflow профил.'
}
]
});
schedule.addEvent({
title: 'Мета-програмиране с Nimrod',
startTime: moment({hour: 14, minute: 20}),
speakers: [
{
name: 'Захари Караджов',
description: 'Захари е C++ ветеран от гейм-индустрията, а понастоящем технически директор в Даркиум Студио, където с помощта на кофейн и CoffeeScript се разработва нов социално ориентиран уеб браузър. Твърдо убеден е, че използваните в момента езици за програмиране ще бъдат изместени от нови по-бързи, по-мощни и по-красиви такива и от нетърпение сам се е захванал да допринесе за това, участвайки в разработката на Nimrod.'
}
]
});
schedule.addEvent({
title: 'File editing on the client side (Javascript)',
startTime: moment({hour: 15, minute: 10}),
speakers: [
{
name: 'Росен Колев',
description: 'Росен работи като софтуерен разработчик повече от 5 години. В моментът е Senior .NET Developer в MentorMate Варна. Пише главно на .NET, C#, JavaScript и от време на време Objective-C. Обича добре подредед код и мрази лошата архитектура.'
}
]
});
schedule.addEvent({
title: 'Кафе пауза ☕',
startTime: moment({hour: 15, minute: 50})
});
schedule.addEvent({
title: 'Екстремно програмиране',
startTime: moment({hour: 16, minute: 10}),
speakers: [
{
name: 'Стефан Кънев',
description: 'Стефан се занимава с програмиране откакто се помни. Сред любимите му неща са Ruby, Vim, автоматизирани тестове, папийонки, Apple продуктите и всевъзможни екзотични езици за програмиране. В заетото си време програмира на Rails, а в свободното - води един-два курса във ФМИ към СУ, пише много код, който после трие и се опитва да не се нарани с планинското си колело. Никак не обича PHP и е амбивалентен към Java.'
}
]
});
schedule.addEvent({
title: 'Lightning Talks',
startTime: moment({hour: 17, minute: 00})
});
schedule.addEvent({
title: 'Закриване',
startTime: moment({hour: 18, minute: 00})
});

View File

@ -13,14 +13,7 @@ body,
.reveal h5, .reveal h5,
.reveal h6 { .reveal h6 {
font-family: "Roboto Condensed", tahoma, verdana, arial, sans-serif; font-family: "Roboto Condensed", tahoma, verdana, arial, sans-serif;
} text-rendering: optimizeLegibility;
#background_video {
position: absolute;
top: 0;
left: 0;
z-index: -10000;
opacity: 0.4;
} }
.reveal section img { .reveal section img {
@ -34,7 +27,7 @@ tr.past_event {
} }
tr.next_event { tr.next_event {
color: #FFFF00; color: #EEEEEE;
} }
tr.future_event { tr.future_event {