Skip to content

Commit

Permalink
added content
Browse files Browse the repository at this point in the history
  • Loading branch information
samipe committed Nov 30, 2023
1 parent bcdbdcc commit a337a43
Show file tree
Hide file tree
Showing 20 changed files with 1,298 additions and 158 deletions.
1 change: 0 additions & 1 deletion dist/css/app.310bb4c2.css

This file was deleted.

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

Large diffs are not rendered by default.

Binary file modified dist/img/speaker_img_placeholder.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions dist/js/app.958cb403.js

Large diffs are not rendered by default.

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

This file was deleted.

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": "03301c016abdc3ed86e1",
"url": "dist/css/app.310bb4c2.css"
"revision": "a05bccae454323628594",
"url": "dist/css/app.8bcc719d.css"
},
{
"revision": "27679e61bfd27e1093f4bf200900b8e7",
Expand Down Expand Up @@ -92,7 +92,7 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([
"url": "dist/img/social_image.png"
},
{
"revision": "f4af51677bb5fda0e9df64bb3da9dd37",
"revision": "552487daf48a5e5febba9b9e778e4ec7",
"url": "dist/img/speaker_img_placeholder.jpg"
},
{
Expand Down Expand Up @@ -124,7 +124,7 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([
"url": "dist/img/sponsors/eficode.png"
},
{
"revision": "bf9fd9b1082bfece3e6092af6352e373",
"revision": "b6e81d4718964f324037d8ff34492708",
"url": "dist/img/sponsors/enqore.png"
},
{
Expand Down Expand Up @@ -188,16 +188,16 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([
"url": "dist/img/ticket-depth.jpg"
},
{
"revision": "e3ebbabf2d738483e139795563eae91c",
"revision": "baacaf987434b9443e85770f6a861481",
"url": "dist/index.html"
},
{
"revision": "03301c016abdc3ed86e1",
"url": "dist/js/app.f3cc0ff3.js"
"revision": "a05bccae454323628594",
"url": "dist/js/app.958cb403.js"
},
{
"revision": "1aa08cce370c6cb71086",
"url": "dist/js/chunk-vendors.f31d4987.js"
"revision": "71fe642c6ceae86d8cdc",
"url": "dist/js/chunk-vendors.6e0fb070.js"
},
{
"revision": "ae69c76f0db87375aa82706bd2ce675f",
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.4743f090fb320c7f1606272dbcc79afd.js"
"dist/precache-manifest.c8412d9cb97f1e6b72b275cbc02e31f4.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.310bb4c2.css" rel="preload" as="style"><link href="dist/js/app.f3cc0ff3.js" rel="preload" as="script"><link href="dist/js/chunk-vendors.f31d4987.js" rel="preload" as="script"><link href="dist/css/app.310bb4c2.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.f31d4987.js"></script><script src="dist/js/app.f3cc0ff3.js"></script></body></html>
}(window.location))</script><link href="dist/css/app.8bcc719d.css" rel="preload" as="style"><link href="dist/js/app.958cb403.js" rel="preload" as="script"><link href="dist/js/chunk-vendors.6e0fb070.js" rel="preload" as="script"><link href="dist/css/app.8bcc719d.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.6e0fb070.js"></script><script src="dist/js/app.958cb403.js"></script></body></html>
Binary file modified public/img/speaker_img_placeholder.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions src/assets/css/text.css
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,9 @@ li {
.type-underline {
text-decoration: underline;
}
.type-underline-theme {
border-bottom: 1px solid var(--color-theme);
}

.type-no-underline {
text-decoration: none;
Expand Down
22 changes: 22 additions & 0 deletions src/components/NavMobile.vue
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,28 @@
<div
v-if="isOpen"
class="menu bg-black p-small pb-large pt-2xlarge">
<div v-if="$route.name === 'Home'" class="row mb-large">
<a
href="#tutorials"
class="color-white col-sm-5 mt-2xsmall mb-3xsmall type-no-underline font-title router-link type-small">
#TUTORIALS
</a>
<a
href="#talks"
class="color-white col-sm-5 mt-2xsmall mb-3xsmall type-no-underline font-title router-link type-small">
#TALKS
</a>
<a
href="#workshops"
class="color-white col-sm-5 mt-2xsmall mb-3xsmall type-no-underline font-title router-link type-small">
#WORKSHOPS
</a>
<a
href="#hotels"
class="color-white col-sm-5 mt-2xsmall mb-3xsmall type-no-underline font-title router-link type-small">
#HOTELS
</a>
</div>
<router-link
v-for="{ name, text } in $tm('navbar.links')"
:to="{ name }"
Expand Down
9 changes: 7 additions & 2 deletions src/components/Navbar.vue
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,20 @@
<div class="flex middle">
<div v-if="$route.name === 'Home'" class="flex">
<a
href="#talks"
href="#tutorials"
class="color-white mx-2xsmall type-no-underline font-title router-link type-small">
#TALKS
#TUTORIALS
</a>
<a
href="#workshops"
class="color-white mx-2xsmall type-no-underline font-title router-link type-small">
#WORKSHOPS
</a>
<a
href="#talks"
class="color-white mx-2xsmall type-no-underline font-title router-link type-small">
#TALKS
</a>
<a
href="#hotels"
class="color-white mx-2xsmall type-no-underline font-title router-link type-small">
Expand Down
54 changes: 40 additions & 14 deletions src/components/Talks24.vue
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,35 @@
<p class="type-small m-none">
{{ format(new Date(talk.slot.start), 'MMM dd') }} {{ getShownTime(talk.slot.start) }} - {{ getShownTime(talk.slot.end) }} ({{Intl.DateTimeFormat().resolvedOptions().timeZone}})
</p>
<div class="mb-small">
{{ talk.speakers.map((speaker) => speaker.name).join(', ') }}
</div>
<div v-html="parseText(talk.abstract)" />
<details class="details">
<summary>
Full description
</summary>
<div v-html="parseText(talk.description)" />
<div v-html="parseText(talk.description)" class="p-small" />
</details>
<h3 class="mt-xlarge">Presenters</h3>
<details
v-for="speaker in talk.speakers"
:key="speaker.code"
class="card sharper mb-medium mt-medium">
<summary class="bio">
<div class="middle" style="display: inline-flex">
<div class="mr-small">
<img :src="speaker.avatar || `${publicPath}/img/speaker_img_placeholder.jpg`" class="rounded-small block" style="width: 5rem; aspect-ratio: 1; object-fit: cover;" />
</div>
<div class="">
<h4 class="type-small type-underline">
{{ getSpeaker(speaker.code)?.name || speaker.name }}
</h4>
</div>
</div>
</summary>
<div class="col-sm-12 p-medium pl-large pr-small">
<p
class="type-small m-none pl-2xsmall"
v-html="parseText(getSpeaker(speaker.code)?.biography) || '-'" />
</div>
</details>
</div>
</div>
Expand All @@ -51,20 +71,19 @@
import { marked } from 'marked'
import { format, isWithinInterval } from 'date-fns'
import LinkIcon from './icons/LinkIcon.vue'
import talks24 from '../robocon-2024_sessions.json'
export default {
name: 'Talks24',
props: {
speakers: {
type: Array,
required: true
}
},
components: {
LinkIcon
},
computed: {
talks() {
return {
live: talks24.filter((talk) => talk['Session type'].en === 'Talk'),
online: talks24.filter((talk) => talk['Session type'].en === 'PreRecorded-Talk')
}
},
shownTalks() {
if (this.selectedTrack === 'live') return this.talksLive
if (this.selectedTrack === 'online') return this.talksOnline
Expand All @@ -90,9 +109,7 @@ export default {
const hash = window.location.hash
if (hash.includes('online')) this.selectedTrack = 'online'
this.$nextTick(() => {
console.log(hash)
const el = document.getElementById(hash.slice(1))
console.log(el)
if (el) el.scrollIntoView()
})
})
Expand Down Expand Up @@ -124,6 +141,9 @@ export default {
getIsNow(start, end) {
if (!start || !end) return false
return isWithinInterval(this.dateNow, { start: new Date(start), end: new Date(end) })
},
getSpeaker(speakerId) {
return this.speakers.find(({ code }) => code === speakerId)
}
}
}
Expand All @@ -143,9 +163,15 @@ details summary {
font-weight: 600;
}
details[open] > summary {
list-style-type: '';
list-style-type: '';
}
details summary.bio {
list-style-type: '';
}
details.details >>> p {
display: inline;
}
details.details >>> ol {
padding-left: 2rem;
}
</style>
150 changes: 150 additions & 0 deletions src/components/Tutorials24.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
<template>
<div class="mt-small w-100">
<div
v-for="tutorial in tutorials"
:key="tutorial.id"
class=" mt-large card p-small"
>
<a
class="anchor"
:id="getSlug(tutorial.title)"
></a>
<div class="flex between">
<h3>
{{ tutorial.title }}
</h3>
<a
v-if="!$store.state.isMobile"
title="get link to tutorial"
:href="`#${getSlug(tutorial.title)}`"
>
<link-icon style="transform: translateY(2px)" />
</a>
</div>
<p class="type-small m-none">
{{ format(new Date(tutorial.slot.start), 'MMM dd') }} {{ getShownTime(tutorial.slot.start) }} - {{ getShownTime(tutorial.slot.end) }} ({{Intl.DateTimeFormat().resolvedOptions().timeZone}})
</p>
<div v-html="parseText(tutorial.abstract)" />
<details class="details">
<summary>
Full description
</summary>
<div v-html="parseText(tutorial.description)" />
</details>
<h3 class="mt-xlarge">Presenters</h3>
<details
v-for="speaker in tutorial.speakers"
:key="speaker.code"
class="card sharper mb-medium mt-medium">
<summary class="bio">
<div class="middle" style="display: inline-flex">
<div class="mr-small">
<img :src="speaker.avatar || `${publicPath}/img/speaker_img_placeholder.jpg`" class="rounded-small block" style="width: 5rem; aspect-ratio: 1; object-fit: cover;" />
</div>
<div class="">
<h4 class="type-small type-underline">
{{ getSpeaker(speaker.code)?.name || speaker.name }}
</h4>
</div>
</div>
</summary>
<div class="col-sm-12 p-medium pl-large pr-small">
<p
class="type-small m-none pl-2xsmall"
v-html="parseText(getSpeaker(speaker.code)?.biography) || '-'" />
</div>
</details>
</div>
</div>
</template>

<script>
import { marked } from 'marked'
import { format, isWithinInterval } from 'date-fns'
import LinkIcon from './icons/LinkIcon.vue'
export default {
name: 'Tutorials24',
components: {
LinkIcon
},
props: {
speakers: {
type: Array,
required: true
}
},
created() {
fetch('https://pretalx.com/api/events/robocon-2024/schedules/latest/')
.then((res) => res.json())
.then((res) => {
this.tutorials = res?.slots?.filter((talk) => talk?.slot?.room?.en === 'Eficode')
.sort((a, b) => {
if (new Date(a.slot?.start) < new Date(b.slot?.start)) return -1
return 1
})
})
.then(() => {
const hash = window.location.hash
this.$nextTick(() => {
const el = document.getElementById(hash.slice(1))
if (el) el.scrollIntoView()
})
})
},
data: () => ({
publicPath: process.env.BASE_URL,
tutorials: []
}),
methods: {
format,
getShownTime(time) {
const date = new Date(time)
const hours = date.getHours()
let minutes = date.getMinutes()
if (`${minutes}`.length === 1) minutes = `0${minutes}`
return `${hours}:${minutes === 0 ? '00' : minutes}`
},
parseText(description) {
return marked.parse(description || '')
},
getSlug(title, tab) {
if (!title) return ''
let tabPrefix = 'live'
if (tab === 'online') tabPrefix = 'online'
return `${tabPrefix}-${title.replace(/[ ]/g, '-').replace(/[^a-zA-Z0-9-]/g, '').toLowerCase()}`
},
getIsNow(start, end) {
if (!start || !end) return false
return isWithinInterval(this.dateNow, { start: new Date(start), end: new Date(end) })
},
getSpeaker(speakerId) {
return this.speakers.find(({ code }) => code === speakerId)
}
}
}
</script>
<style scoped>
a.anchor {
display: block;
position: relative;
top: -15vh;
visibility: hidden;
}
details summary {
cursor: pointer;
list-style-type: ">";
color: var(--color-theme);
font-weight: 600;
}
details[open] > summary {
list-style-type: '';
}
details summary.bio {
list-style-type: '';
}
details.details >>> p {
display: inline;
}
</style>
Loading

0 comments on commit a337a43

Please sign in to comment.