deploy 'bauchbinde' update
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
This commit is contained in:
parent
919a957d0d
commit
5048e21a6b
|
@ -1,21 +1,67 @@
|
||||||
(() => {
|
(() => {
|
||||||
|
const mainTrackRooms = ['rc1', 'rc2', 'chaosstudio-hamburg', 'restrealitaet'];
|
||||||
|
const mainTrackUrl = 'https://fahrplan.events.ccc.de/rc3/2020/Fahrplan/schedule.json';
|
||||||
|
const assemblyUrl = 'https://pretalx.rc3.studio/rc3-channels-2020/schedule/export/schedule.json';
|
||||||
|
|
||||||
let textEl;
|
let textEl;
|
||||||
let headline = 'Headline Headline,';
|
let headline = '¯\\_(ツ)_/¯';
|
||||||
let speaker = 'Speaker Speaker';
|
let speaker = '';
|
||||||
let isIntro = false;
|
let isIntro = false;
|
||||||
let holdDuration = 4000;
|
let holdDuration = 4000;
|
||||||
|
let room = null;
|
||||||
|
let time = null;
|
||||||
|
|
||||||
function init() {
|
async function getCurrentTalkByRoomName(roomName) {
|
||||||
|
let now = Date.now();
|
||||||
|
if (time) {
|
||||||
|
now = Date.parse(time)
|
||||||
|
}
|
||||||
|
let url;
|
||||||
|
if (mainTrackRooms.includes(roomName)) {
|
||||||
|
url = mainTrackUrl;
|
||||||
|
} else {
|
||||||
|
url = assemblyUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
const response = await fetch(url);
|
||||||
|
const data = await response.json();
|
||||||
|
const days = data.schedule.conference.days;
|
||||||
|
const today = days.find(day => {
|
||||||
|
const start = Date.parse(day.day_start);
|
||||||
|
const end = Date.parse(day.day_end);
|
||||||
|
return now >= start && now <= end;
|
||||||
|
});
|
||||||
|
if (!today) return false;
|
||||||
|
|
||||||
|
const room = today.rooms[roomName];
|
||||||
|
if (!room) return false;
|
||||||
|
|
||||||
|
const talk = room.find(talk => {
|
||||||
|
const start = Date.parse(talk.date);
|
||||||
|
const [hours, minutes] = talk.duration.split(':');
|
||||||
|
const duration = (hours * 60 + minutes) * 60 * 1000;
|
||||||
|
const end = start + duration;
|
||||||
|
return now >= start && now <= end;
|
||||||
|
})
|
||||||
|
if (!talk) return false;
|
||||||
|
return talk;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function init() {
|
||||||
textEl = document.querySelector('.text');
|
textEl = document.querySelector('.text');
|
||||||
textEl.innerHTML = '';
|
textEl.innerHTML = '';
|
||||||
|
|
||||||
if (window.location.search) {
|
if (window.location.search) {
|
||||||
window.location.search.slice(1).split('&').map(x => x.split('=')).forEach(([key, value]) => {
|
const pairs = window.location.search.slice(1).split('&').map(x => x.split('='));
|
||||||
|
for (let pair of pairs) {
|
||||||
|
const key = pair.shift();
|
||||||
|
const value = decodeURIComponent(pair.join('='));
|
||||||
|
|
||||||
if (key === 'headline') {
|
if (key === 'headline') {
|
||||||
headline = decodeURIComponent(value) + ',';
|
headline = value + ',';
|
||||||
}
|
}
|
||||||
if (key === 'speaker') {
|
if (key === 'speaker') {
|
||||||
speaker = decodeURIComponent(value);
|
speaker = value;
|
||||||
}
|
}
|
||||||
if (key === 'intro') {
|
if (key === 'intro') {
|
||||||
isIntro = !!parseInt(value, 10)
|
isIntro = !!parseInt(value, 10)
|
||||||
|
@ -26,9 +72,33 @@
|
||||||
if (key === 'theme') {
|
if (key === 'theme') {
|
||||||
const root = document.querySelector('html');
|
const root = document.querySelector('html');
|
||||||
root.className = '';
|
root.className = '';
|
||||||
root.classList.add(`theme-${decodeURIComponent(value)}`)
|
root.classList.add(`theme-${value}`)
|
||||||
|
}
|
||||||
|
if (key === 'theme') {
|
||||||
|
const root = document.querySelector('html');
|
||||||
|
root.className = '';
|
||||||
|
root.classList.add(`theme-${value}`)
|
||||||
|
}
|
||||||
|
if (key === 'room') {
|
||||||
|
room = value;
|
||||||
|
}
|
||||||
|
if (key === 'time') {
|
||||||
|
time = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (room) {
|
||||||
|
const talk = await getCurrentTalkByRoomName(room);
|
||||||
|
if (!talk) {
|
||||||
|
headline = '¯\\_(ツ)_/¯';
|
||||||
|
speaker = '';
|
||||||
|
} else {
|
||||||
|
headline = talk.title;
|
||||||
|
if (talk.persons) {
|
||||||
|
speaker = talk.persons.map(person => person.public_name).join(' / ');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const headlineEl = document.createElement('span');
|
const headlineEl = document.createElement('span');
|
||||||
|
@ -103,7 +173,7 @@
|
||||||
tile.style.animationName = `slide-in-${Math.floor(Math.random() * 10)}`;
|
tile.style.animationName = `slide-in-${Math.floor(Math.random() * 10)}`;
|
||||||
tile.style.animationDelay = `${Math.random() * 0.4}s`;
|
tile.style.animationDelay = `${Math.random() * 0.4}s`;
|
||||||
tile.style.animationDuration = `${0.8 + Math.random() * 0.4}s`;
|
tile.style.animationDuration = `${0.8 + Math.random() * 0.4}s`;
|
||||||
tile.style.animationIterationCount = 1;
|
tile.style.animationIterationCount = '1';
|
||||||
tile.style.animationTimingFunction = 'ease-in';
|
tile.style.animationTimingFunction = 'ease-in';
|
||||||
}
|
}
|
||||||
await new Promise(r => setTimeout(r, 600));
|
await new Promise(r => setTimeout(r, 600));
|
||||||
|
@ -120,7 +190,7 @@
|
||||||
tile.style.animationName = `fade-in`;
|
tile.style.animationName = `fade-in`;
|
||||||
tile.style.animationDelay = `${Math.random() * 0.4}s`;
|
tile.style.animationDelay = `${Math.random() * 0.4}s`;
|
||||||
tile.style.animationDuration = `${0.8 + Math.random() * 0.4}s`;
|
tile.style.animationDuration = `${0.8 + Math.random() * 0.4}s`;
|
||||||
tile.style.animationIterationCount = 1;
|
tile.style.animationIterationCount = '1';
|
||||||
tile.style.animationTimingFunction = 'ease-in';
|
tile.style.animationTimingFunction = 'ease-in';
|
||||||
}
|
}
|
||||||
await new Promise(r => setTimeout(r, 600));
|
await new Promise(r => setTimeout(r, 600));
|
||||||
|
@ -137,7 +207,7 @@
|
||||||
tile.style.animationName = `fade-out`;
|
tile.style.animationName = `fade-out`;
|
||||||
tile.style.animationDelay = `${Math.random() * 0.4}s`;
|
tile.style.animationDelay = `${Math.random() * 0.4}s`;
|
||||||
tile.style.animationDuration = `${0.8 + Math.random() * 0.4}s`;
|
tile.style.animationDuration = `${0.8 + Math.random() * 0.4}s`;
|
||||||
tile.style.animationIterationCount = 1;
|
tile.style.animationIterationCount = '1';
|
||||||
tile.style.animationTimingFunction = 'ease-in';
|
tile.style.animationTimingFunction = 'ease-in';
|
||||||
}
|
}
|
||||||
await new Promise(r => setTimeout(r, 600));
|
await new Promise(r => setTimeout(r, 600));
|
||||||
|
@ -171,7 +241,7 @@
|
||||||
letter.style.animationName = `fade-out`;
|
letter.style.animationName = `fade-out`;
|
||||||
letter.style.animationDelay = `${Math.random() * 0.4}s`;
|
letter.style.animationDelay = `${Math.random() * 0.4}s`;
|
||||||
letter.style.animationDuration = `${0.8 + Math.random() * 0.4}s`;
|
letter.style.animationDuration = `${0.8 + Math.random() * 0.4}s`;
|
||||||
letter.style.animationIterationCount = 1;
|
letter.style.animationIterationCount = '1';
|
||||||
letter.style.animationTimingFunction = 'ease-in';
|
letter.style.animationTimingFunction = 'ease-in';
|
||||||
}
|
}
|
||||||
await new Promise(r => setTimeout(r, 600));
|
await new Promise(r => setTimeout(r, 600));
|
||||||
|
@ -182,9 +252,9 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
window.addEventListener('load', async () => {
|
window.addEventListener('load', async () => {
|
||||||
init();
|
await init();
|
||||||
await new Promise(r => setTimeout(r, 1000));
|
await new Promise(r => setTimeout(r, 1000));
|
||||||
animate();
|
await animate();
|
||||||
});
|
});
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue