Compare commits
4 Commits
5e3f67c237
...
a1f871bcae
Author | SHA1 | Date |
---|---|---|
Luca | a1f871bcae | |
Luca | 93a8558589 | |
Luca | e221902815 | |
Luca | 3bf6313f8a |
|
@ -0,0 +1,123 @@
|
||||||
|
@import 'colors';
|
||||||
|
|
||||||
|
$timeslot-height: 0.65em;
|
||||||
|
|
||||||
|
.schedule {
|
||||||
|
display: flex;
|
||||||
|
overflow-x: auto;
|
||||||
|
|
||||||
|
.schedule-date {
|
||||||
|
height: 0;
|
||||||
|
position: relative;
|
||||||
|
top: calc(-3rem - 1px);
|
||||||
|
visibility: hidden;
|
||||||
|
width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.schedule-event {
|
||||||
|
border: 1px solid $color-highlight;
|
||||||
|
border-radius: 0.5em;
|
||||||
|
color: currentColor;
|
||||||
|
display: flex;
|
||||||
|
grid-row: calc(var(--start) + 1) / calc(var(--end) + 1);
|
||||||
|
overflow: hidden;
|
||||||
|
text-decoration: none;
|
||||||
|
|
||||||
|
&:hover .schedule-event-detail {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
& > div {
|
||||||
|
padding: 0.5em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.schedule-event-detail {
|
||||||
|
border-left: 1px solid $color-highlight;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
.schedule-speaker, .schedule-title {
|
||||||
|
overflow-x: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.schedule-event-time {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
:nth-child(2) {
|
||||||
|
line-height: 1.1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.schedule-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-auto-rows: $timeslot-height;
|
||||||
|
grid-template-rows: auto;
|
||||||
|
|
||||||
|
&.schedule-room {
|
||||||
|
grid-template-columns: 400px;
|
||||||
|
}
|
||||||
|
|
||||||
|
& > * {
|
||||||
|
grid-column: 1 / 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.schedule-room {
|
||||||
|
margin: 0 0.5em;
|
||||||
|
|
||||||
|
& > .schedule-title {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.schedule-time {
|
||||||
|
border-top: 1px solid $color-highlight;
|
||||||
|
grid-row: calc(var(--start) + 1) / span var(--span);
|
||||||
|
}
|
||||||
|
|
||||||
|
.schedule-timeline {
|
||||||
|
background: $color-background;
|
||||||
|
padding-right: 0.5em;
|
||||||
|
position: sticky;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.schedule-days {
|
||||||
|
background: $color-background;
|
||||||
|
display: flex;
|
||||||
|
font-size: 1rem;
|
||||||
|
line-height: 1;
|
||||||
|
overflow-x: auto;
|
||||||
|
padding: 1em 0;
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
z-index: 42;
|
||||||
|
|
||||||
|
a {
|
||||||
|
padding: 0 0.5em;
|
||||||
|
white-space: nowrap;
|
||||||
|
|
||||||
|
&:first-child {
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.schedule-info {
|
||||||
|
.schedule-timezone {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.schedule-version {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,6 +1,7 @@
|
||||||
@import 'breakpoints';
|
@import 'breakpoints';
|
||||||
@import 'colors';
|
@import 'colors';
|
||||||
@import 'fonts';
|
@import 'fonts';
|
||||||
|
@import 'schedule';
|
||||||
@import 'vars';
|
@import 'vars';
|
||||||
|
|
||||||
* {
|
* {
|
||||||
|
@ -89,6 +90,10 @@ header {
|
||||||
|
|
||||||
main {
|
main {
|
||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
|
|
||||||
|
.tldr {
|
||||||
|
margin-top: -0.8rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
footer {
|
footer {
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
---
|
||||||
|
slug: "iger-loading"
|
||||||
|
title: "IGER Loading..."
|
||||||
|
date: 2022-08-18
|
||||||
|
menu:
|
||||||
|
main:
|
||||||
|
parent: Aktuelles
|
||||||
|
---
|
||||||
|
|
||||||
|
Auch wenn der (verlängerte) [Call for Participation](https://cfp.fairydust.reisen/iger-2022/cfp) und die Programmgestaltung noch laufen, möchten wir euch jetzt schon einen kleinen Ausblick geben, was Mitte September auf der Intergalaktischen Erfahrungsreise geboten wird:
|
||||||
|
|
||||||
|
## Talks, Workshops & Lounge
|
||||||
|
|
||||||
|
Vom Hacken und Befreien eigener Hardware, über Informationssicherheit bei der Bahn bis hin zur „digitalen Didaktik“ haben wir ein breites Vortragsprogramm.
|
||||||
|
|
||||||
|
Nicht nur zuhören, sondern auch etwas machen könnt ihr bei den Workshops wie z. B. Alu- und Bronzeguss.
|
||||||
|
|
||||||
|
Einige Programmpunkte bilden einen Track zum Thema "Smart City Bamberg".
|
||||||
|
|
||||||
|
Jeweils nach dem Tagesprogramm geht es Freitag und Samstag in der Lounge [bis in die frühen Morgenstunden](https://www.gesetze-bayern.de/Content/Document/BayGastV-7) weiter.
|
||||||
|
|
||||||
|
## CTF
|
||||||
|
|
||||||
|
Es wird ein [Capture The Flag (CTF)](https://ctftime.org/ctf-wtf) über die Dauer des Events und mindestens einen Vortrag für CTF-Neulinge geben.
|
||||||
|
|
||||||
|
## Hackcenter
|
||||||
|
|
||||||
|
Um an Projekten zu arbeiten oder beim CTF mitzumachen, stehen unsere zwei Hackcenter, mit und ohne Musik, bereit. Für mitgebrachte Server (denkt an den Stromverbrauch!) haben wir eine kleine Colo.
|
||||||
|
|
||||||
|
## Hack the Track
|
||||||
|
|
||||||
|
Neben den bereits genannten „Attraktionen“ bietet die IGER auch die Möglichkeit, kleine und größere Fahrzeuge zu testen.
|
||||||
|
|
||||||
|
### Teststrecke für große Fahrzeuge
|
||||||
|
|
||||||
|
Ob fahrende Mate-Kästen, motorisierte Sofas, DriftCarts oder andere Dinge, die fahren -- wir haben eine dedizierte Teststrecke für euch.
|
||||||
|
|
||||||
|
### Rennstrecke für kleine Fahrzeuge (NerdyDerby)
|
||||||
|
|
||||||
|
Disziplinen: Schnellstes Fahrzeug, langsamstes Fahrzeug, Synchron (Team), Gleichmäßigkeitsfahren (jeweils unmotorisiert und motorisiert)
|
||||||
|
|
||||||
|
Technische Limits für die NerdyDerby-Fahrzeuge: Spurbreite 4cm; Maximalmaße: 13cm breit, 23cm lang, 23 cm hoch; das Fahrzeug darf keine bleibenen Schäden an der Rennstrecke hinterlassen.
|
||||||
|
|
||||||
|
Wir haben eine kleine Sammlung an Bauteilen und Werkzeug; Bau- und Gartenmärkte sind zu Fuß erreichbar.
|
||||||
|
|
||||||
|
Talks zur Konstruktion eurer Fahrzeuge sind gerne gesehen!
|
||||||
|
|
||||||
|
## Kommt vorbei!
|
||||||
|
|
||||||
|
Wir freuen uns über euren Besuch und über eure [Ticketbestellungen](https://tickets.fairydust.reisen/iger-2022/), mit denen ihr uns dabei unterstützt, ein neues Chaosevent zu etablieren.
|
|
@ -37,6 +37,10 @@
|
||||||
</nav>
|
</nav>
|
||||||
</header>
|
</header>
|
||||||
<main>
|
<main>
|
||||||
|
<h4 class="tldr">
|
||||||
|
16. bis 18. September 2022 in Bamberg
|
||||||
|
<br>Beginn/Ende: 17 Uhr
|
||||||
|
</h4>
|
||||||
{{ block "main" . }}
|
{{ block "main" . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</main>
|
</main>
|
||||||
|
|
|
@ -0,0 +1,100 @@
|
||||||
|
{{ $data := getJSON (.Get "url") }}
|
||||||
|
{{ with $data.schedule }}
|
||||||
|
|
||||||
|
{{ $timeslotDuration := 0 }}
|
||||||
|
{{ range split .conference.timeslot_duration ":" }}
|
||||||
|
{{ $timeslotDuration = add (mul $timeslotDuration 60) (int .) }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ $rooms := dict }}
|
||||||
|
{{ range $day := .conference.days }}
|
||||||
|
{{ range $room := $data.schedule.conference.rooms }}
|
||||||
|
{{ if index $rooms $room.name }}
|
||||||
|
{{ $rooms = merge $rooms (dict $room.name ((index $rooms $room.name) | append (index $day.rooms .name))) }}
|
||||||
|
{{ else }}
|
||||||
|
{{ $rooms = merge $rooms (dict $room.name (index $day.rooms .name)) }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ $events := slice }}
|
||||||
|
{{ range $rooms }}
|
||||||
|
{{ with . }}
|
||||||
|
{{ if $events }}
|
||||||
|
{{ $events = $events | append . }}
|
||||||
|
{{ else }}
|
||||||
|
{{ $events = . }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ $events = sort $events "date" }}
|
||||||
|
{{ $startDate := time (index $events 0).date }}
|
||||||
|
{{ $endDate := 0 }}
|
||||||
|
{{ with index $events (sub (len $events) 1) }}
|
||||||
|
{{ $lastDuration := 0 }}
|
||||||
|
{{ range split .duration ":" }}
|
||||||
|
{{ $lastDuration = add (mul $lastDuration 60) (int .) }}
|
||||||
|
{{ end }}
|
||||||
|
{{ $endDate = time (add (time .date).Unix (mul $lastDuration 60)) }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
<p class="schedule-info">
|
||||||
|
Version: <span class="schedule-version">{{ .version }}</span>
|
||||||
|
<br>Zeitangaben in <span class="schedule-timezone">{{ $startDate.Format "MST" }}</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="schedule-days">
|
||||||
|
{{ range .conference.days }}
|
||||||
|
<a href="#{{ .date }}">{{ .date }}</a>·
|
||||||
|
{{ end }}
|
||||||
|
<a href="#">zurück nach oben</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="schedule">
|
||||||
|
<div class="schedule-grid schedule-timeline" style="--span: {{ div 30 $timeslotDuration }}">
|
||||||
|
<h3 class="schedule-title"></h3>
|
||||||
|
{{ $lastDate := 0 }}
|
||||||
|
{{ range seq 1 (div 30 $timeslotDuration) (div ($endDate.Sub $startDate).Minutes $timeslotDuration) }}
|
||||||
|
{{ $date := time (add $startDate.Unix (mul (sub . 1) (mul $timeslotDuration 60))) }}
|
||||||
|
<div class="schedule-time" style="--start: {{ . }}">
|
||||||
|
{{ if or (not $lastDate) (ne ($date.Format "2006-01-02") ($lastDate.Format "2006-01-02")) }}
|
||||||
|
<div class="schedule-date" id="{{ $date.Format "2006-01-02" }}">{{ $date.Format "2006-01-02" }}</div>
|
||||||
|
{{ end }}
|
||||||
|
{{ $date.Format "15:04" }}
|
||||||
|
</div>
|
||||||
|
{{ $lastDate = $date }}
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
{{ range sort $data.schedule.conference.rooms "name" }}
|
||||||
|
{{ $name := .name }}
|
||||||
|
{{ $room := index $rooms $name }}
|
||||||
|
{{ with $room }}
|
||||||
|
<div class="schedule-grid schedule-room">
|
||||||
|
<h3 class="schedule-title">{{ $name }}</h3>
|
||||||
|
{{ range . }}
|
||||||
|
{{ $start := add (div ((time .date).Sub $startDate).Minutes $timeslotDuration) 1 }}
|
||||||
|
{{ $duration := 0 }}
|
||||||
|
{{ range split .duration ":" }}
|
||||||
|
{{ $duration = add (mul $duration 60) (int .) }}
|
||||||
|
{{ end }}
|
||||||
|
{{ $end := add $start (div $duration $timeslotDuration) }}
|
||||||
|
<a class="schedule-event" href="{{ .url }}" style="--start: {{ $start }};--end: {{ $end }}" target="_blank">
|
||||||
|
<div class="schedule-event-time">
|
||||||
|
<span>{{ (time .date).Format "15:04" }}</span>
|
||||||
|
<span>–</span>
|
||||||
|
<span>{{ (time (int (add $startDate.Unix (mul (sub $end 1) (mul $timeslotDuration 60))))).Format "15:04" }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="schedule-event-detail">
|
||||||
|
<h4 class="schedule-title" title="{{ .title }}">{{ .title }}</h4>
|
||||||
|
{{ $speaker := delimit (apply .persons "index" "." "public_name") ", " }}
|
||||||
|
<p class="schedule-speaker" title="{{ $speaker }}">{{ $speaker }}</p>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{ end }}
|
Loading…
Reference in New Issue