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>
<head>
<title>The IT Tour</title>
<title>OpenFest 2014 Interlude</title>
<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/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/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/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>
</head>
<body>
@ -24,8 +24,6 @@
</div>
</div>
<video id="background_video" src="background.mp4" loop autoplay />
<script id="agenda_template" type="text/ractive">
<section id="agenda">
<table class="reveal">
@ -78,7 +76,7 @@
</section>
</script>
<script id="speaker_template" type="text/ractive">
<script id="current_speaker_template" type="text/ractive">
<section>
<h3>Лектор</h3>
<h1>{{name}}</h1>
@ -86,6 +84,14 @@
</section>
</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">
<section id="next_talk">
<h3>Следва</h3>
@ -97,7 +103,8 @@
<script id="slides_template" type="text/ractive">
<section data-state="update-safe">
<img src="logo.png">
<h1>OpenFest</h1>
<h2>2014</h2>
</section>
{{#eventCount}}
@ -109,7 +116,7 @@
{{/currentEvent}}
{{#currentEvent.speakers}}
{{> speaker_template}}
{{> current_speaker_template}}
{{/currentEvent.speakers}}
{{#nextEvent}}
@ -117,21 +124,14 @@
{{/nextEvent}}
{{#nextEvent.speakers}}
{{> speaker_template}}
{{> next_speaker_template}}
{{/nextEvent.speakers}}
</section>
{{/eventCount}}
<!-- <section> -->
<!-- <h1>Обратна връзка</h1> -->
<!-- <h2>http://bit.ly/burgasconf-2014-feedback</h2> -->
<!-- </section> -->
<section>
<h1>#VarnaConf</h1>
<h2>В Twitter и IRC на irc.it-tour.bg</h2>
<!-- <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> -->
<h2>Tweet</h2>
<h1>#OpenFest</h1>
</section>
</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() {
schedule.update();
reactive.set({pastEvents: schedule.pastEvents(),
currentEvent: schedule.currentEvent(),
nextEvent: schedule.nextEvent(),

View File

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

View File

@ -1,10 +1,14 @@
function Schedule() {
function Schedule(hallId) {
var events = [];
this.addEvent = function(event) {
events.push(event);
events = _.sortBy(events, function(event) {
return event.startTime.unix()
this.update = function() {
$.getJSON("https://cfp.openfest.org/schedule.json", function(data) {
var scheduleEvents = $.map(data[hallId], function(event) {
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() {
var latestEvent = _.last(this.pastEvents());
var nextEvent = this.nextEvent();
if (typeof nextEvent != 'undefined' && (latestEvent.displayNext || moment(nextEvent.startTime).subtract('minutes', 10).isAfter(moment()))) {
if (typeof(latestEvent) != 'undefined' && latestEvent.endTime.isAfter(moment())) {
return latestEvent;
} else {
return undefined;
@ -41,123 +44,16 @@ function Schedule() {
this.allEvents = function() {
return events;
}
}
this.addDelay = function(time) {
_.each(this.upcomingEvents(), function(event, index, agenda) {
event.startTime.add(time);
});
$.urlParam = function(name){
var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
if (results==null){
return null;
}
else{
return results[1] || 0;
}
}
var schedule = new Schedule();
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})
});
var schedule = new Schedule(parseInt($.urlParam('roomId')));

View File

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