RC2.5
This commit is contained in:
parent
bde8143c94
commit
2df36a0564
|
@ -4,8 +4,8 @@
|
||||||
<meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no">
|
<meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no">
|
||||||
<title>rC3 NOWHERE</title>
|
<title>rC3 NOWHERE</title>
|
||||||
<link href=/fork-awesome/css/fork-awesome.min.css rel=stylesheet type=text/css>
|
<link href=/fork-awesome/css/fork-awesome.min.css rel=stylesheet type=text/css>
|
||||||
<link rel=stylesheet href=https://infobeamer.montage2.de/main.min.818792ab7049f79cb65101e4c8c34d90986ecabe38b739d82ab5b7be19d1923e.css>
|
<link rel=stylesheet href=https://infobeamer.montage2.de/main.min.b34cf8f32ebf8158101dc492d21641a7a52c484c65ce5c4bfbd0df55d3455d1d.css>
|
||||||
<script src=https://infobeamer.montage2.de/js/config.fa1a162e62b8d5f3f40c8812d30b5289c5792ff26c0843426d8c109a00621389.js integrity="sha256-+hoWLmK41fP0DIgS0wtSicV5L/JsCENCbYwQmgBiE4k="></script>
|
<script src=https://infobeamer.montage2.de/js/config.c3055781f00111fd050e1e5732c9e6dbd2dce21204e90b02975e9983a4c367f7.js integrity="sha256-wwVXgfABEf0FDh5XMsnm29Lc4hIE6QsCl16Zg6TDZ/c="></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<main id=main>
|
<main id=main>
|
||||||
|
@ -13,6 +13,6 @@
|
||||||
<script src=https://infobeamer.montage2.de/js/moment/moment.min.73de4254959530e4d1d9bec586379184f96b4953dacf9cd5e5e2bdd7bfeceef7.js integrity="sha256-c95CVJWVMOTR2b7FhjeRhPlrSVPaz5zV5eK917/s7vc="></script>
|
<script src=https://infobeamer.montage2.de/js/moment/moment.min.73de4254959530e4d1d9bec586379184f96b4953dacf9cd5e5e2bdd7bfeceef7.js integrity="sha256-c95CVJWVMOTR2b7FhjeRhPlrSVPaz5zV5eK917/s7vc="></script>
|
||||||
<script src=https://infobeamer.montage2.de/js/preact/preact.min.0c204e20934f1e09cfe86fbcf1d069d842f988fc71efe3a923021c08892c71c8.js integrity="sha256-DCBOIJNPHgnP6G+88dBp2EL5iPxx7+OpIwIcCIksccg="></script>
|
<script src=https://infobeamer.montage2.de/js/preact/preact.min.0c204e20934f1e09cfe86fbcf1d069d842f988fc71efe3a923021c08892c71c8.js integrity="sha256-DCBOIJNPHgnP6G+88dBp2EL5iPxx7+OpIwIcCIksccg="></script>
|
||||||
<script src=https://infobeamer.montage2.de/js/htm/htm.80e39afe20fd61183412eda89efa10532d57945e6364642aceacd50eb2384b4b.js integrity="sha256-gOOa/iD9YRg0Eu2onvoQUy1XlF5jZGQqzqzVDrI4S0s="></script>
|
<script src=https://infobeamer.montage2.de/js/htm/htm.80e39afe20fd61183412eda89efa10532d57945e6364642aceacd50eb2384b4b.js integrity="sha256-gOOa/iD9YRg0Eu2onvoQUy1XlF5jZGQqzqzVDrI4S0s="></script>
|
||||||
<script src=https://infobeamer.montage2.de/main.c6cb62188f7b5dc001704b60fcb1a1b0b38510b5bed7b27311053c13fc63333d.js integrity="sha256-xstiGI97XcABcEtg/LGhsLOFELW+17JzEQU8E/xjMz0=" type=module></script>
|
<script src=https://infobeamer.montage2.de/main.7b9386a5aed538c367cecbb578d8b458be6fcb679fa7b83c00402918b7b123aa.js integrity="sha256-e5OGpa7VOMNnzsu1eNi0WL5vy2efp7g8AEApGLexI6o=" type=module></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
|
@ -5,11 +5,11 @@
|
||||||
window.infoBeamerConfig.set("scheduleURL", "/everything.schedule.json");
|
window.infoBeamerConfig.set("scheduleURL", "/everything.schedule.json");
|
||||||
window.infoBeamerConfig.set("scheduleFetchInterval", 60);
|
window.infoBeamerConfig.set("scheduleFetchInterval", 60);
|
||||||
window.infoBeamerConfig.set("twitterURL", "/tweets-rc3.json");
|
window.infoBeamerConfig.set("twitterURL", "/tweets-rc3.json");
|
||||||
window.infoBeamerConfig.set("twitterFetchInterval", 60);
|
window.infoBeamerConfig.set("twitterFetchInterval", 120);
|
||||||
window.infoBeamerConfig.set("mastodonURL", "/toots-rc3-chaos.social.json");
|
window.infoBeamerConfig.set("mastodonURL", "/toots-rc3-chaos.social.json");
|
||||||
window.infoBeamerConfig.set("mastodonFetchInterval", 60);
|
window.infoBeamerConfig.set("mastodonFetchInterval", 120);
|
||||||
window.infoBeamerConfig.set("musicURL", "/music.json");
|
window.infoBeamerConfig.set("musicURL", "/music.json");
|
||||||
window.infoBeamerConfig.set("musicFetchInterval", 3);
|
window.infoBeamerConfig.set("musicFetchInterval", 5);
|
||||||
console.log("Info Beamer Configuration: ");
|
console.log("Info Beamer Configuration: ");
|
||||||
console.log(window.infoBeamerConfig);
|
console.log(window.infoBeamerConfig);
|
||||||
})();
|
})();
|
|
@ -1,29 +1,26 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
(() => {
|
(() => {
|
||||||
// ns-hugo:/home/raoul-web/rc3_2021/html-infobeamer-content/assets/js/services.js
|
// ns-hugo:/home/raoul-web/rc3_2021/html-infobeamer-content/assets/js/services.js
|
||||||
|
var delay = 3 * 5 * 60 * 1e3;
|
||||||
|
var postsLimit = 20;
|
||||||
|
var defaultUrlSet = [
|
||||||
|
"https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png",
|
||||||
|
"https://chaos.social/avatars/original/missing.png"
|
||||||
|
];
|
||||||
|
var default_profile_image_url = () => "./nounicorn.png";
|
||||||
var social_limiter = (tweets, toots) => {
|
var social_limiter = (tweets, toots) => {
|
||||||
const numberTweets = 20;
|
|
||||||
let posts = tweets.concat(toots);
|
let posts = tweets.concat(toots);
|
||||||
let byDate = (fst, snd) => Date.parse(fst.time) - Date.parse(snd.time);
|
let byDate = (fst, snd) => Date.parse(fst.time) - Date.parse(snd.time);
|
||||||
let postsSorted = posts.sort(byDate);
|
let postsSorted = posts.sort(byDate);
|
||||||
if (postsSorted.length > 0) {
|
if (postsSorted.length > 0) {
|
||||||
while (postsSorted.length < numberTweets) {
|
while (postsSorted.length < postsLimit) {
|
||||||
postsSorted = postsSorted.concat(postsSorted);
|
postsSorted = postsSorted.concat(postsSorted);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
postsSorted = postsSorted.reverse().slice(0, numberTweets);
|
postsSorted = postsSorted.reverse().slice(0, postsLimit);
|
||||||
return postsSorted;
|
return postsSorted;
|
||||||
};
|
};
|
||||||
var default_profile_image = () => "./nounicorn.png";
|
var replace_default_image_url = (url) => defaultUrlSet.includes(url) === true ? default_profile_image_url() : url;
|
||||||
var replace_default_image = (url) => {
|
|
||||||
let newUrl;
|
|
||||||
if (url === "https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png" || url === "https://chaos.social/avatars/original/missing.png") {
|
|
||||||
newUrl = default_profile_image();
|
|
||||||
} else {
|
|
||||||
newUrl = url;
|
|
||||||
}
|
|
||||||
return newUrl;
|
|
||||||
};
|
|
||||||
var tweet_author = (data, tweet) => {
|
var tweet_author = (data, tweet) => {
|
||||||
let authorId = tweet.author_id;
|
let authorId = tweet.author_id;
|
||||||
let users = data.includes.users;
|
let users = data.includes.users;
|
||||||
|
@ -35,7 +32,7 @@
|
||||||
let authorId = tweet.author_id;
|
let authorId = tweet.author_id;
|
||||||
let users = data.includes.users;
|
let users = data.includes.users;
|
||||||
let author = users.find((item) => item.id === authorId);
|
let author = users.find((item) => item.id === authorId);
|
||||||
let profileImageUrl = replace_default_image(author.profile_image_url);
|
let profileImageUrl = replace_default_image_url(author.profile_image_url);
|
||||||
return profileImageUrl;
|
return profileImageUrl;
|
||||||
};
|
};
|
||||||
var tweet_text = (tweet) => tweet.text;
|
var tweet_text = (tweet) => tweet.text;
|
||||||
|
@ -54,7 +51,7 @@
|
||||||
return tweets;
|
return tweets;
|
||||||
};
|
};
|
||||||
var toot_author = (toot) => toot.account.username;
|
var toot_author = (toot) => toot.account.username;
|
||||||
var toot_profile_image = (toot) => replace_default_image(toot.account.avatar_static);
|
var toot_profile_image = (toot) => replace_default_image_url(toot.account.avatar_static);
|
||||||
var toot_text = (toot) => toot.content;
|
var toot_text = (toot) => toot.content;
|
||||||
var toot_time = (toot) => toot.created_at;
|
var toot_time = (toot) => toot.created_at;
|
||||||
var html_plainify = (html2) => {
|
var html_plainify = (html2) => {
|
||||||
|
@ -94,24 +91,21 @@
|
||||||
let talksDataSorted = talksData.sort(byDate);
|
let talksDataSorted = talksData.sort(byDate);
|
||||||
return talksDataSorted;
|
return talksDataSorted;
|
||||||
};
|
};
|
||||||
var future_events = (schedule, datetime) => {
|
var future_events = (schedule, now) => schedule.filter((e) => Date.parse(e.date) >= now - delay);
|
||||||
let scheduleFiltered = schedule.filter((e) => Date.parse(e.date) > datetime);
|
var same_music_track = (track1, track2) => track1.artist === track2.artist && track1.title === track2.title;
|
||||||
return scheduleFiltered;
|
|
||||||
};
|
|
||||||
var is_new_music = (musicA, musicB) => {
|
var is_new_music = (musicA, musicB) => {
|
||||||
let isSame;
|
let isNewMusic;
|
||||||
if (musicA.length !== 0 && musicB.length !== 0) {
|
if (musicA.length !== 0 && musicB.length !== 0) {
|
||||||
isSame = musicA[0].artist === musicB[0].artist && musicA[0].title === musicB[0].title;
|
isNewMusic = same_music_track(musicA[0], musicB[0]);
|
||||||
} else if (musicA.length === 0 && musicB.length === 0) {
|
} else if (musicA.length === 0 && musicB.length === 0) {
|
||||||
isSame = true;
|
isNewMusic = true;
|
||||||
} else {
|
} else {
|
||||||
isSame = false;
|
isNewMusic = false;
|
||||||
}
|
}
|
||||||
return !isSame;
|
return !isNewMusic;
|
||||||
};
|
};
|
||||||
var music_update = (musicA, musicB) => {
|
var music_update = (musicA, musicB) => {
|
||||||
let isNew = is_new_music(musicA, musicB);
|
if (is_new_music(musicA, musicB) === true) {
|
||||||
if (isNew === true) {
|
|
||||||
musicB.forEach((m) => m.since = Date.now());
|
musicB.forEach((m) => m.since = Date.now());
|
||||||
}
|
}
|
||||||
return musicB;
|
return musicB;
|
||||||
|
@ -119,16 +113,38 @@
|
||||||
|
|
||||||
// ns-hugo:/home/raoul-web/rc3_2021/html-infobeamer-content/assets/js/dom.js
|
// ns-hugo:/home/raoul-web/rc3_2021/html-infobeamer-content/assets/js/dom.js
|
||||||
var html = htm.bind(preact.h);
|
var html = htm.bind(preact.h);
|
||||||
var here_room = "Chaos-West TV";
|
var hereRoom = "Chaos-West TV";
|
||||||
|
var number_events_all = 7;
|
||||||
var musicAge = 5 * 1e3;
|
var musicAge = 5 * 1e3;
|
||||||
var urgency = 5 * 60 * 1e3;
|
var urgent = 5 * 60 * 1e3;
|
||||||
var is_own_talk = (talk) => talk.room === here_room;
|
var stale = 3 * 5 * 60 * 1e3;
|
||||||
|
var lapse = 5 * 1e3;
|
||||||
|
var talk_day = (talk) => {
|
||||||
|
const lut = {
|
||||||
|
1: "I",
|
||||||
|
2: "II",
|
||||||
|
3: "III",
|
||||||
|
4: "IV"
|
||||||
|
};
|
||||||
|
return lut[talk.day];
|
||||||
|
};
|
||||||
|
var is_own_talk = (talk) => talk.room === hereRoom;
|
||||||
|
var talk_start_time = (talk) => Date.parse(talk.date);
|
||||||
var is_urgent = (talk, time) => {
|
var is_urgent = (talk, time) => {
|
||||||
let talkStart = Date.parse(talk.date);
|
let timeDelta = talk_start_time(talk) - time;
|
||||||
let timeDelta = talkStart - time;
|
return timeDelta >= 0 && timeDelta <= urgent;
|
||||||
return timeDelta <= urgency;
|
};
|
||||||
|
var is_stale = (talk, time) => {
|
||||||
|
let timeDelta = talk_start_time(talk) - time;
|
||||||
|
return timeDelta < 0;
|
||||||
|
};
|
||||||
|
var is_lapse = (talk, time) => {
|
||||||
|
let timeDelta = talk_start_time(talk) - time;
|
||||||
|
return timeDelta <= -(stale - lapse);
|
||||||
};
|
};
|
||||||
var urgent_class = (talk, time) => is_urgent(talk, time) ? "urgent" : "";
|
var urgent_class = (talk, time) => is_urgent(talk, time) ? "urgent" : "";
|
||||||
|
var stale_class = (talk, time) => is_stale(talk, time) ? "stale" : "";
|
||||||
|
var lapse_class = (talk, time) => is_lapse(talk, time) ? "lapse" : "";
|
||||||
var speaker_names = (talk) => talk.persons.map((p) => p.public_name);
|
var speaker_names = (talk) => talk.persons.map((p) => p.public_name);
|
||||||
var speaker_dom = (talk) => {
|
var speaker_dom = (talk) => {
|
||||||
const separator = ", ";
|
const separator = ", ";
|
||||||
|
@ -142,23 +158,48 @@
|
||||||
}
|
}
|
||||||
return inner;
|
return inner;
|
||||||
};
|
};
|
||||||
|
var starting_dom = (talk, time) => {
|
||||||
|
const hrs3 = 3 * 60 * 60 * 1e3;
|
||||||
|
const min15 = 3 * 5 * 60 * 1e3;
|
||||||
|
const min2 = 2 * 60 * 1e3;
|
||||||
|
const min1 = 60 * 1e3;
|
||||||
|
let timeDelta = talk_start_time(talk) - time;
|
||||||
|
let minutes = Math.ceil(Math.abs(timeDelta / 1e3 / 60));
|
||||||
|
let inner;
|
||||||
|
if (timeDelta > hrs3) {
|
||||||
|
inner = html`<span class="start">Day ${talk_day(talk)} at ${talk.start}</span>`;
|
||||||
|
} else if (timeDelta > min15) {
|
||||||
|
inner = html`<span class="start">Starting at ${talk.start}</span>`;
|
||||||
|
} else if (timeDelta <= min15 && timeDelta > min1) {
|
||||||
|
inner = html`<span class="start">Starting in ${minutes} minutes</span>`;
|
||||||
|
} else if (timeDelta <= min1 && timeDelta >= 0) {
|
||||||
|
inner = html`<span class="start">Starting now!</span>`;
|
||||||
|
} else if (timeDelta < 0 && timeDelta >= -min1) {
|
||||||
|
inner = html`<span class="start">Just started!</span>`;
|
||||||
|
} else if (timeDelta < -min1 && timeDelta >= -min15) {
|
||||||
|
inner = html`<span class="start">Started ${minutes} minutes ago</span>`;
|
||||||
|
} else if (timeDelta < -min15) {
|
||||||
|
inner = html`<span class="start">Seriously missed</span>`;
|
||||||
|
}
|
||||||
|
return inner;
|
||||||
|
};
|
||||||
var to_minutes = (duration) => {
|
var to_minutes = (duration) => {
|
||||||
const timeFormat = "hh:mm";
|
const timeFormat = "hh:mm";
|
||||||
let dt = moment(duration, timeFormat);
|
let dt = moment(duration, timeFormat);
|
||||||
let minutes = 60 * dt.hours() + dt.minutes();
|
let minutes = 60 * dt.hours() + dt.minutes();
|
||||||
return minutes;
|
return minutes;
|
||||||
};
|
};
|
||||||
var duration_dom = (duration) => {
|
var duration_dom = (talk) => {
|
||||||
return html`<span class="duration">${to_minutes(duration)} minutes</span>`;
|
return html`<span class="duration">${to_minutes(talk.duration)} minutes</span>`;
|
||||||
};
|
};
|
||||||
var meta_here_dom = (schedule, time) => {
|
var meta_here_dom = (schedule, time) => {
|
||||||
let inner = html`${schedule.map((talk) => html`
|
let inner = html`${schedule.map((talk) => html`
|
||||||
<div class="talk-here-meta-box ${urgent_class(talk, time)}">
|
<div class="talk-here-meta-box ${urgent_class(talk, time)} ${stale_class(talk, time)}">
|
||||||
<div class="speaker">${speaker_dom(talk)}</div>
|
<div class="speaker">${speaker_dom(talk)}</div>
|
||||||
<div class="title"><span class="titletext">${talk.title}</span></div>
|
<div class="title"><span class="titletext">${talk.title}</span></div>
|
||||||
<div class="start-duration">
|
<div class="start-duration">
|
||||||
<span class="start">Starting at ${talk.start}</span>
|
${starting_dom(talk, time)}
|
||||||
${duration_dom(talk.duration)}
|
${duration_dom(talk)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
`)}`;
|
`)}`;
|
||||||
|
@ -193,17 +234,8 @@
|
||||||
});
|
});
|
||||||
return inner;
|
return inner;
|
||||||
};
|
};
|
||||||
var talk_day = (talk) => {
|
|
||||||
const lut = {
|
|
||||||
1: "I",
|
|
||||||
2: "II",
|
|
||||||
3: "III",
|
|
||||||
4: "IV"
|
|
||||||
};
|
|
||||||
return lut[talk.day];
|
|
||||||
};
|
|
||||||
var talk_day_dom = (talk) => html`<span class="day">Day ${talk_day(talk)}</span>`;
|
var talk_day_dom = (talk) => html`<span class="day">Day ${talk_day(talk)}</span>`;
|
||||||
var highlight_class = (talk) => is_own_talk(talk) === true ? "item-highlight" : "";
|
var highlight_class = (talk) => is_own_talk(talk) === true ? "highlight" : "";
|
||||||
var do_not_record_dom = (talk) => {
|
var do_not_record_dom = (talk) => {
|
||||||
let icon = "fa-microphone-slash";
|
let icon = "fa-microphone-slash";
|
||||||
let inner;
|
let inner;
|
||||||
|
@ -217,7 +249,7 @@
|
||||||
var list_all_dom = (schedule, time) => {
|
var list_all_dom = (schedule, time) => {
|
||||||
let inner = html`
|
let inner = html`
|
||||||
${schedule.map((talk) => html`
|
${schedule.map((talk) => html`
|
||||||
<div class="item ${highlight_class(talk)} ${urgent_class(talk, time)}">
|
<div class="item ${highlight_class(talk)} ${urgent_class(talk, time)} ${stale_class(talk, time)} ${lapse_class(talk, time)}">
|
||||||
<div>
|
<div>
|
||||||
<div class="title">${talk.title}</div>
|
<div class="title">${talk.title}</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -230,41 +262,71 @@
|
||||||
</div>`)}`;
|
</div>`)}`;
|
||||||
return inner;
|
return inner;
|
||||||
};
|
};
|
||||||
|
var next_up_here_dom = (talks, time) => {
|
||||||
|
let inner;
|
||||||
|
if (talks.length > 0) {
|
||||||
|
inner = html`
|
||||||
|
<div class="panel meta">
|
||||||
|
<div class="header">Next Up Here</div>
|
||||||
|
<div class="content">${meta_here_dom(talks, time)}</div>
|
||||||
|
</div>`;
|
||||||
|
} else {
|
||||||
|
inner = html`
|
||||||
|
<div class="panel meta">
|
||||||
|
<div class="header">Next Up Here</div>
|
||||||
|
</div>`;
|
||||||
|
}
|
||||||
|
return inner;
|
||||||
|
};
|
||||||
|
var next_up_abstract_dom = (talks, time) => {
|
||||||
|
let inner;
|
||||||
|
if (talks.length > 0) {
|
||||||
|
inner = html`
|
||||||
|
<div class="panel abstract">
|
||||||
|
<div class="header">Abstract</div>
|
||||||
|
<div class="content">${abstract_here_dom(talks)}</div>
|
||||||
|
</div>`;
|
||||||
|
} else {
|
||||||
|
inner = html``;
|
||||||
|
}
|
||||||
|
return inner;
|
||||||
|
};
|
||||||
|
var next_up_list_all_dom = (talks, time) => {
|
||||||
|
let inner;
|
||||||
|
if (talks.length > 0) {
|
||||||
|
inner = html`
|
||||||
|
<div class="panel list">
|
||||||
|
<div class="header">Next Up at rC3</div>
|
||||||
|
<div class="content">${list_all_dom(talks, time)}</div>
|
||||||
|
</div>`;
|
||||||
|
} else {
|
||||||
|
inner = html`
|
||||||
|
<div class="panel list">
|
||||||
|
<div class="header">Next Up at rC3</div>
|
||||||
|
</div>`;
|
||||||
|
}
|
||||||
|
return inner;
|
||||||
|
};
|
||||||
var schedule_dom = (schedule, time) => {
|
var schedule_dom = (schedule, time) => {
|
||||||
const here_number_events = 1;
|
let allTalks = schedule.slice(0, number_events_all);
|
||||||
const all_number_events = 7;
|
|
||||||
let allTalks = schedule.slice(0, all_number_events);
|
|
||||||
let nextTalkHere = schedule.filter(is_own_talk).slice(0, 1);
|
let nextTalkHere = schedule.filter(is_own_talk).slice(0, 1);
|
||||||
let nextHereMetaDom = meta_here_dom(nextTalkHere, time);
|
return html`
|
||||||
let nextHereAbstractDom = abstract_here_dom(nextTalkHere);
|
|
||||||
let nextAllMetaDom = list_all_dom(allTalks, time);
|
|
||||||
let inner = html`
|
|
||||||
<div class="slide">
|
<div class="slide">
|
||||||
<div class="schedule">
|
<div class="schedule">
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<div class="panel meta">
|
${next_up_here_dom(nextTalkHere, time)}
|
||||||
<div class="header">Next Up Here</div>
|
${next_up_abstract_dom(nextTalkHere, time)}
|
||||||
<div class="content">${nextHereMetaDom}</div>
|
|
||||||
</div>
|
|
||||||
<div class="panel abstract">
|
|
||||||
<div class="header">Abstract</div>
|
|
||||||
<div class="content">${nextHereAbstractDom}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<div class="panel list">
|
${next_up_list_all_dom(allTalks, time)}
|
||||||
<div class="header">Next Up at rC3</div>
|
|
||||||
<div class="content">${nextAllMetaDom}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>`;
|
</div>`;
|
||||||
return inner;
|
|
||||||
};
|
};
|
||||||
var music_changed = (current, time) => time - current.since <= musicAge;
|
var music_changed = (current, time) => time - current.since <= musicAge;
|
||||||
var changed_music_class = (current, time) => music_changed(current, time) ? "changed" : "";
|
var changed_music_class = (current, time) => music_changed(current, time) ? "changed" : "";
|
||||||
var music_playing_now_dom = (music, time) => {
|
var music_playing_now_dom = (music, time) => {
|
||||||
let inner = html`
|
return html`
|
||||||
<div class="music-box">
|
<div class="music-box">
|
||||||
${music.map((current) => html`
|
${music.map((current) => html`
|
||||||
<div class="music ${changed_music_class(current, time)}">
|
<div class="music ${changed_music_class(current, time)}">
|
||||||
|
@ -284,7 +346,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>`)}
|
</div>`)}
|
||||||
</div>`;
|
</div>`;
|
||||||
return inner;
|
|
||||||
};
|
};
|
||||||
var post_time = (date) => moment(date).format("H:mm, D. MMMM YYYY");
|
var post_time = (date) => moment(date).format("H:mm, D. MMMM YYYY");
|
||||||
var social_network_dom = (post) => {
|
var social_network_dom = (post) => {
|
||||||
|
@ -338,15 +399,11 @@
|
||||||
let schedule = data.schedule;
|
let schedule = data.schedule;
|
||||||
let music = data.music;
|
let music = data.music;
|
||||||
let postings = data.posts;
|
let postings = data.posts;
|
||||||
let scheduleDom = schedule_dom(schedule, time);
|
|
||||||
let hashtagDom = hashtag_dom();
|
|
||||||
let musicDom = music_playing_now_dom(music, time);
|
|
||||||
let postingsDom = social_container_dom(postings);
|
|
||||||
let inner = html`
|
let inner = html`
|
||||||
${scheduleDom}
|
${schedule_dom(schedule, time)}
|
||||||
${hashtagDom}
|
${hashtag_dom()}
|
||||||
${musicDom}
|
${music_playing_now_dom(music, time)}
|
||||||
${postingsDom}
|
${social_container_dom(postings)}
|
||||||
`;
|
`;
|
||||||
const anchorElId = "main";
|
const anchorElId = "main";
|
||||||
const el = document.getElementById(anchorElId);
|
const el = document.getElementById(anchorElId);
|
||||||
|
@ -435,10 +492,12 @@
|
||||||
} else {
|
} else {
|
||||||
console.log("Your browser doesn't support web workers.");
|
console.log("Your browser doesn't support web workers.");
|
||||||
}
|
}
|
||||||
|
var fakeNow = 0;
|
||||||
|
var fakeTimeDelta = fakeNow - Date.now();
|
||||||
function update_screen() {
|
function update_screen() {
|
||||||
let realTime = new Date();
|
let realTime = new Date();
|
||||||
console.log("Updating screen at at: " + realTime);
|
console.log("Updating screen at at: " + realTime);
|
||||||
let now = Date.now();
|
let now = Date.now() + fakeTimeDelta;
|
||||||
console.log("Using 'now': " + now);
|
console.log("Using 'now': " + now);
|
||||||
update_main_slide({
|
update_main_slide({
|
||||||
schedule: future_events(scheduleData, now),
|
schedule: future_events(scheduleData, now),
|
||||||
|
@ -448,7 +507,7 @@
|
||||||
}
|
}
|
||||||
function main_loop() {
|
function main_loop() {
|
||||||
update_screen();
|
update_screen();
|
||||||
setTimeout(main_loop, 10 * 1e3);
|
setTimeout(main_loop, 5 * 1e3);
|
||||||
}
|
}
|
||||||
main_loop();
|
main_loop();
|
||||||
})();
|
})();
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -5,7 +5,7 @@
|
||||||
<title>rC3 NOWHERE</title>
|
<title>rC3 NOWHERE</title>
|
||||||
<link href=/fork-awesome/css/fork-awesome.min.css rel=stylesheet type=text/css>
|
<link href=/fork-awesome/css/fork-awesome.min.css rel=stylesheet type=text/css>
|
||||||
<link rel=stylesheet href=https://infobeamer.montage2.de/main.min.1a1572716ba819c6a8125645f805d12ca6b6a47e2a1dbce5507702bdd79d9aa5.css>
|
<link rel=stylesheet href=https://infobeamer.montage2.de/main.min.1a1572716ba819c6a8125645f805d12ca6b6a47e2a1dbce5507702bdd79d9aa5.css>
|
||||||
<script src=https://infobeamer.montage2.de/js/config.fa1a162e62b8d5f3f40c8812d30b5289c5792ff26c0843426d8c109a00621389.js integrity="sha256-+hoWLmK41fP0DIgS0wtSicV5L/JsCENCbYwQmgBiE4k="></script>
|
<script src=https://infobeamer.montage2.de/js/config.c3055781f00111fd050e1e5732c9e6dbd2dce21204e90b02975e9983a4c367f7.js integrity="sha256-wwVXgfABEf0FDh5XMsnm29Lc4hIE6QsCl16Zg6TDZ/c="></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<main id=main>
|
<main id=main>
|
||||||
|
@ -13,6 +13,6 @@
|
||||||
<script src=https://infobeamer.montage2.de/js/moment/moment.min.73de4254959530e4d1d9bec586379184f96b4953dacf9cd5e5e2bdd7bfeceef7.js integrity="sha256-c95CVJWVMOTR2b7FhjeRhPlrSVPaz5zV5eK917/s7vc="></script>
|
<script src=https://infobeamer.montage2.de/js/moment/moment.min.73de4254959530e4d1d9bec586379184f96b4953dacf9cd5e5e2bdd7bfeceef7.js integrity="sha256-c95CVJWVMOTR2b7FhjeRhPlrSVPaz5zV5eK917/s7vc="></script>
|
||||||
<script src=https://infobeamer.montage2.de/js/preact/preact.min.0c204e20934f1e09cfe86fbcf1d069d842f988fc71efe3a923021c08892c71c8.js integrity="sha256-DCBOIJNPHgnP6G+88dBp2EL5iPxx7+OpIwIcCIksccg="></script>
|
<script src=https://infobeamer.montage2.de/js/preact/preact.min.0c204e20934f1e09cfe86fbcf1d069d842f988fc71efe3a923021c08892c71c8.js integrity="sha256-DCBOIJNPHgnP6G+88dBp2EL5iPxx7+OpIwIcCIksccg="></script>
|
||||||
<script src=https://infobeamer.montage2.de/js/htm/htm.80e39afe20fd61183412eda89efa10532d57945e6364642aceacd50eb2384b4b.js integrity="sha256-gOOa/iD9YRg0Eu2onvoQUy1XlF5jZGQqzqzVDrI4S0s="></script>
|
<script src=https://infobeamer.montage2.de/js/htm/htm.80e39afe20fd61183412eda89efa10532d57945e6364642aceacd50eb2384b4b.js integrity="sha256-gOOa/iD9YRg0Eu2onvoQUy1XlF5jZGQqzqzVDrI4S0s="></script>
|
||||||
<script src=https://infobeamer.montage2.de/main.c6cb62188f7b5dc001704b60fcb1a1b0b38510b5bed7b27311053c13fc63333d.js integrity="sha256-xstiGI97XcABcEtg/LGhsLOFELW+17JzEQU8E/xjMz0=" type=module></script>
|
<script src=https://infobeamer.montage2.de/main.7b9386a5aed538c367cecbb578d8b458be6fcb679fa7b83c00402918b7b123aa.js integrity="sha256-e5OGpa7VOMNnzsu1eNi0WL5vy2efp7g8AEApGLexI6o=" type=module></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
Loading…
Reference in New Issue