Skip to content

Commit

Permalink
workshop links
Browse files Browse the repository at this point in the history
  • Loading branch information
samipe committed Feb 26, 2024
1 parent ade1f28 commit 10d1500
Show file tree
Hide file tree
Showing 12 changed files with 127 additions and 31 deletions.
1 change: 0 additions & 1 deletion dist/css/app.b2e034fc.css

This file was deleted.

1 change: 1 addition & 0 deletions dist/css/app.ce791012.css

Large diffs are not rendered by default.

1 change: 0 additions & 1 deletion dist/js/app.59528dcb.js

This file was deleted.

1 change: 1 addition & 0 deletions dist/js/app.b138bf29.js

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([
"url": "dist/404.html"
},
{
"revision": "ac8e7153b6927a6605c9",
"url": "dist/css/app.b2e034fc.css"
"revision": "8004b250d7e1a5cec703",
"url": "dist/css/app.ce791012.css"
},
{
"revision": "27679e61bfd27e1093f4bf200900b8e7",
Expand Down Expand Up @@ -188,12 +188,12 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([
"url": "dist/img/ticket-depth.jpg"
},
{
"revision": "6f16db3afcd6e26cd43012caaa5caa89",
"revision": "4a7010aba05c726a46695f00c26229b8",
"url": "dist/index.html"
},
{
"revision": "ac8e7153b6927a6605c9",
"url": "dist/js/app.59528dcb.js"
"revision": "8004b250d7e1a5cec703",
"url": "dist/js/app.b138bf29.js"
},
{
"revision": "55879d9a3902f34e3b7b",
Expand Down
2 changes: 1 addition & 1 deletion dist/service-worker.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js");

importScripts(
"dist/precache-manifest.1e818559e670d494db33dbb12775d4bb.js"
"dist/precache-manifest.659e89948620230bb3f5d3175d9369af.js"
);

workbox.core.setCacheNameDetails({prefix: "robot-framework"});
Expand Down
2 changes: 1 addition & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,4 @@
l.pathname.slice(0, -1) + decoded + l.hash
);
}
}(window.location))</script><link href="dist/css/app.b2e034fc.css" rel="preload" as="style"><link href="dist/js/app.59528dcb.js" rel="preload" as="script"><link href="dist/js/chunk-vendors.56623bf9.js" rel="preload" as="script"><link href="dist/css/app.b2e034fc.css" rel="stylesheet"><link rel="icon" type="image/png" sizes="32x32" href="dist/img/icons/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="dist/img/icons/favicon-16x16.png"><link rel="manifest" href="dist/manifest.json"><meta name="theme-color" content="#4DBA87"><meta name="apple-mobile-web-app-capable" content="no"><meta name="apple-mobile-web-app-status-bar-style" content="default"><meta name="apple-mobile-web-app-title" content="robot-framework"><link rel="apple-touch-icon" href="dist/img/icons/apple-touch-icon-152x152.png"><link rel="mask-icon" href="dist/img/icons/safari-pinned-tab.svg" color="#4DBA87"><meta name="msapplication-TileImage" content="dist/img/icons/msapplication-icon-144x144.png"><meta name="msapplication-TileColor" content="#000000"></head><body><noscript><strong>We're sorry but robot-framework doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="dist/js/chunk-vendors.56623bf9.js"></script><script src="dist/js/app.59528dcb.js"></script></body></html>
}(window.location))</script><link href="dist/css/app.ce791012.css" rel="preload" as="style"><link href="dist/js/app.b138bf29.js" rel="preload" as="script"><link href="dist/js/chunk-vendors.56623bf9.js" rel="preload" as="script"><link href="dist/css/app.ce791012.css" rel="stylesheet"><link rel="icon" type="image/png" sizes="32x32" href="dist/img/icons/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="dist/img/icons/favicon-16x16.png"><link rel="manifest" href="dist/manifest.json"><meta name="theme-color" content="#4DBA87"><meta name="apple-mobile-web-app-capable" content="no"><meta name="apple-mobile-web-app-status-bar-style" content="default"><meta name="apple-mobile-web-app-title" content="robot-framework"><link rel="apple-touch-icon" href="dist/img/icons/apple-touch-icon-152x152.png"><link rel="mask-icon" href="dist/img/icons/safari-pinned-tab.svg" color="#4DBA87"><meta name="msapplication-TileImage" content="dist/img/icons/msapplication-icon-144x144.png"><meta name="msapplication-TileColor" content="#000000"></head><body><noscript><strong>We're sorry but robot-framework doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="dist/js/chunk-vendors.56623bf9.js"></script><script src="dist/js/app.b138bf29.js"></script></body></html>
10 changes: 0 additions & 10 deletions src/App.vue
Original file line number Diff line number Diff line change
Expand Up @@ -11,21 +11,11 @@
class="color-white col-sm-5 col-md-3 mt-3xsmall mb-3xsmall type-no-underline font-title router-link type-small" style="margin-left: -2rem;">
#TUTORIALS
</button>
<button
@click="scrollTo('workshops')"
class="color-white col-sm-5 col-md-3 mt-3xsmall mb-3xsmall type-no-underline font-title router-link type-small">
#WORKSHOPS
</button>
<button
@click="scrollTo('talks')"
class="color-white col-sm-4 col-md-3 mt-3xsmall mb-3xsmall type-no-underline font-title router-link type-small">
#TALKS
</button>
<button
@click="scrollTo('hotels')"
class="color-white col-sm-4 col-md-3 mt-3xsmall mb-3xsmall type-no-underline font-title router-link type-small">
#HOTELS
</button>
</div>
<router-view />
<page-footer v-if="!fullScreen" />
Expand Down
21 changes: 19 additions & 2 deletions src/components/Talks24.vue
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<template>
<div class="mt-small w-100">
<div class="bg-background p-xsmall sticky pl-2xlarge">
<div class="bg-background p-xsmall sticky pl-2xlarge" :class="isStreamRoute ? 'stream' : ''">
<button
v-for="type in ['online', 'helsinki']"
:key="type"
Expand All @@ -12,7 +12,7 @@
</button>
</div>
<div v-for="(day, i) in shownTalks" :key="i">
<h3 class="sticky type-large" :style="i !== 0 ? 'margin-top: 4rem' : ''">
<h3 class="sticky type-large" :class="isStreamRoute ? 'stream' : ''" :style="i !== 0 ? 'margin-top: 4rem' : ''">
Day {{ i + 1 }}
</h3>
<div
Expand Down Expand Up @@ -151,12 +151,14 @@ export default {
})
}
})
this.isStreamRoute = this.$route?.name === 'Stream'
},
data: () => ({
publicPath: process.env.BASE_URL,
selectedTrack: 'online',
talksLive: [],
talksOnline: [],
isStreamRoute: false,
recordings: {
TQTQQN: 'U2FsdGVkX1+CuAVK2bcpvFpHfbJL/3RWV1OaTvAL20I=',
SSECGZ: 'U2FsdGVkX1/9Jn9MfQ0ws09fTcXUmdFnIqgTkIEUdto=',
Expand Down Expand Up @@ -253,19 +255,34 @@ details summary.bio::-webkit-details-marker {
position: sticky;
top: 3.5rem;
z-index: 2;
margin-left: -0.5rem;
margin-right: -0.5rem;
}
.sticky.stream {
top: 3.7rem;
}
h3.sticky {
top: 4.75rem;
margin-top: -2.5rem;
margin-left: 0.25rem;
pointer-events: none;
}
h3.sticky.stream {
top: 4.6rem;
}
@media screen and (max-width: 1280px) {
.sticky {
top: 6rem;
}
.sticky.stream {
top: 3.4rem;
}
h3.sticky {
top: 7rem;
margin-top: -3rem;
}
h3.sticky.stream {
top: 4.8rem;
}
}
</style>
59 changes: 57 additions & 2 deletions src/components/Tutorials24.vue
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,16 @@
<p class="type-small m-none">
{{ format(new Date(tutorial.Start), 'MMM dd') }} {{ getShownTime(tutorial.Start) }} - {{ getShownTime(tutorial.End) }} ({{Intl.DateTimeFormat().resolvedOptions().timeZone}})
</p>
<div v-if="shownTutorials === 'online' && hashKey && getVideoUrl(tutorial.ID)" class="col-sm-12 col-md-10 col-md-offset-1 type-center mt-large mb-large">
<a :href="getVideoUrl(tutorial.ID).zoom">
<button class="theme">
Join via Zoom (recommended)
</button>
</a>
<p>
If you can't use Zoom, you may also join via <a :href="getVideoUrl(tutorial.ID).yt">YouTube</a>
</p>
</div>
<div v-html="parseText(tutorial.Abstract)" />
<details class="details">
<summary>
Expand Down Expand Up @@ -83,6 +93,7 @@ import { marked } from 'marked'
import { format, isWithinInterval } from 'date-fns'
import LinkIcon from './icons/LinkIcon.vue'
import talksStatic from '../robocon-2024_sessions.json'
import CryptoJS from 'crypto-js'
export default {
name: 'Tutorials24',
Expand All @@ -93,6 +104,10 @@ export default {
speakers: {
type: Array,
required: true
},
hashKey: {
type: String,
required: false
}
},
computed: {
Expand Down Expand Up @@ -136,7 +151,29 @@ export default {
publicPath: process.env.BASE_URL,
tutorials: [],
tutorialsOnline: [],
shownTutorials: 'online'
shownTutorials: 'online',
links: {
JRSGDD: {
zoom: 'U2FsdGVkX1/a7R+ILu3mD5Ex//6EvTCFhnksvljfR6YYH5/nuoVUoNRljC2dSQnLCZVKXSwOOandi/Ay7JGMLwuI048zxq9PO741Zqmbw6auTvS4dhRIpMJzFYmv1gOk',
yt: 'U2FsdGVkX1/K0JNyUobljtt/JREqJuNa3lLyb6BF0cM='
},
LF8DXX: {
zoom: '',
yt: 'U2FsdGVkX1/OnCitBHedMLY7GWBE/EFJI8Ml13RQgYY='
},
L977MQ: {
zoom: '',
yt: 'U2FsdGVkX197uJViTiWUY06kDG3+aPBVP8RhQDDlycE='
},
PQUXLU: {
zoom: '',
yt: 'U2FsdGVkX1/BynVPGIQyDSR4fEVGx22efczSssYWy0E='
},
RKDPWC: {
zoom: '',
yt: 'U2FsdGVkX19T/DMVtuPB+/e/LfvGzqGhpfR2K5tmXGM='
}
}
}),
methods: {
format,
Expand All @@ -153,7 +190,6 @@ export default {
getSlug(title, tab) {
if (!title) return ''
let tabPrefix = 'online'
console.log(tab)
if (tab === 'Helsinki') tabPrefix = 'live'
return `${tabPrefix}-${title.replace(/[ ]/g, '-').replace(/[^a-zA-Z0-9-]/g, '').toLowerCase()}`
},
Expand All @@ -163,6 +199,25 @@ export default {
},
getSpeaker(speakerId) {
return this.speakers.find(({ code }) => code === speakerId)
},
getVideoUrl(code) {
if (typeof code === 'undefined') return undefined
const recording = this.links[code]
if (!recording) {
// console.error(`Code ${code} did not have a recording.`)
return undefined
}
try {
const zoom = CryptoJS.AES.decrypt(recording.zoom, this.hashKey).toString(CryptoJS.enc.Utf8)
const yt = CryptoJS.AES.decrypt(recording.yt, this.hashKey).toString(CryptoJS.enc.Utf8)
return {
zoom,
yt: `https://www.youtube.com/watch?v=${yt}`
}
} catch (e) {
// console.error(`Code ${code} did not have a valid recording.`)
return undefined
}
}
}
}
Expand Down
48 changes: 41 additions & 7 deletions src/views/Home.vue
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@
<p>
Moreover, a wide array of exceptional online tutorials will be spread across the days before and after the online conference, <span class="type-underline-theme weight-bold">accessible exclusively to ticket holders.</span> Don't miss this opportunity to enhance your skills and knowledge in a tailored, engaging environment.
</p>
<tutorials24 :speakers="speakers" />
<tutorials24 :speakers="speakers" :hashKey="token.hashKey" />
</page-section>
<!-- <page-section title-id="workshops" :title="'Workshops'">
<p>
Expand All @@ -153,7 +153,7 @@ Moreover, a wide array of exceptional online tutorials will be spread across the
<workshops24 :speakers="speakers" />
</page-section> -->
<page-section title-id="talks" :title="'Talks'">
<talks24 :speakers="speakers" />
<talks24 :speakers="speakers" :hashKey="token.hashKey" />
</page-section>
<!-- <page-section title-id="hotels" :title="'Hotels'">
<p>
Expand All @@ -176,6 +176,7 @@ Moreover, a wide array of exceptional online tutorials will be spread across the
<script>
// import { PageSection, NewsBanner, Ticket, Talks24, Workshops24, Tutorials24, Sponsors, GlobeRbcn } from 'Components'
import { PageSection, NewsBanner, Ticket, Talks24, Tutorials24, Sponsors, GlobeRbcn } from 'Components'
import * as jose from 'jose'
export default {
name: 'App',
Expand All @@ -192,16 +193,49 @@ export default {
data: () => ({
// FF renders different height for rbcn font for some reason
isFirefox: false,
speakers: []
speakers: [],
token: {},
public: `-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA1RHu1qgXJ81+2tlBy4UF
B8OdRsBjWhswMQaS/NhA2yWBaQiQ1YG4Tzen2aNmlTIkTBhSR3hqOnkzPQq77nMs
KP9HD1WHz/UNici/a/2UwXFy9bOyX+GKnPCtdcvZrIougvW5K7EBeUWcgY68xNQk
V9vFq4GSczOud7juk62eqqV26esV5tE2c4/J714SYwUl6NqLc7XeQNZMrsRHabIL
Bzg+A+2kw1jiJpJsJliPCT9T/NiAMrbZk1KR/NQ7uHARclAk13LwLwm5JfOhyKSs
Qkdfr8rVYuj3DDQCitea269Xy5RsFW/Cqyh3gHzt7bB9auU3UFaAXWPvnPURhTO4
Yf3c7YrizmpTfDGPIG/7zkegx9nPiBPNIGPq/LpmCC9iawNH7ixOH8ZC5Ijrti0b
8rMnuJBKysZxIowJAFvd7Zh+soekUei90qQnYwhFO49h7fwXXSq2sGeRfpg99Nu/
RdqqxM2zCMPpVMWHjxAVIubgNW5ZA33PW1wS075npC3oK+YUh2xt/9A6Ll4AcAOt
oaCmENEyeZEnHlaEWeXhNPQv1/nZN5Z3Fq3uKWCQRry1HMoOGKrdATfUUIXc6vvk
nRPuT57RDafiyxjektPLx0z2LvRZZb7lU5G9/+rO2yJ1f65Sd5k0drIb48YZ+OBj
6IrJDlqg3BaMV5Hr8LdQtY8CAwEAAQ==
-----END PUBLIC KEY-----`
}),
created() {
async created() {
if (navigator.userAgent && navigator.userAgent.match(/firefox|fxios/i)) {
this.isFirefox = true
}
const params = new URLSearchParams(window.location.search)
const entries = Object.fromEntries(params.entries())
if (entries.auth) {
this.$router.replace({ name: 'Robocon2023', query: entries })
const auth = Object.fromEntries(params.entries()).auth || window.localStorage.getItem('auth')
const attendee = Object.fromEntries(params.entries()).attendee || window.localStorage.getItem('attendee')
if (auth && attendee) {
window.history.replaceState({}, '', '/' + window.location.hash)
if (attendee !== 'gather') {
window.localStorage.setItem('auth', auth)
window.localStorage.setItem('attendee', attendee)
}
try {
const { payload } = await jose.jwtVerify(auth, await jose.importSPKI(this.public, 'RS256'), {
issuer: 'pretix'
})
this.token = payload
if (payload.name !== attendee) {
console.log('invalid Attendee')
this.error = true
}
} catch (error) {
this.error = true
console.error(error)
}
}
Promise.all([
fetch('https://cfp.robocon.io/api/events/robocon-2024/submissions/'),
Expand Down
2 changes: 1 addition & 1 deletion src/views/Stream.vue
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ nRPuT57RDafiyxjektPLx0z2LvRZZb7lU5G9/+rO2yJ1f65Sd5k0drIb48YZ+OBj
const auth = Object.fromEntries(params.entries()).auth || window.localStorage.getItem('auth')
const attendee = Object.fromEntries(params.entries()).attendee || window.localStorage.getItem('attendee')
if (typeof auth !== 'undefined' && typeof attendee !== 'undefined') {
// window.history.replaceState({}, document.title, '/stream' + window.location.hash)
window.history.replaceState({}, document.title, '/stream' + window.location.hash)
if (attendee !== 'gather') {
window.localStorage.setItem('auth', auth)
window.localStorage.setItem('attendee', attendee)
Expand Down

0 comments on commit 10d1500

Please sign in to comment.