mirror of
https://github.com/web3privacy/web
synced 2024-10-15 18:26:27 +02:00
event filter
This commit is contained in:
parent
437fdf92fb
commit
dc5b78b1ba
8 changed files with 623 additions and 436 deletions
|
@ -31,6 +31,7 @@ const status = eventStatus(item)
|
|||
</div>
|
||||
</div>
|
||||
<div class="flex gap-2">
|
||||
{item.type !== 'online-summit' &&
|
||||
<img src={`/flags/${item.country}.svg`} class="w-4" />
|
||||
<div>
|
||||
{item.city}, {item.country.toUpperCase()}
|
||||
|
@ -38,6 +39,11 @@ const status = eventStatus(item)
|
|||
<span> - {ccRenderer(item)}</span>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
{item.type === 'online-summit' &&
|
||||
<img src="/flags/other/earth.svg" class="w-4" />
|
||||
<div>Online</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<div class="py-1 grow text-right items-center flex gap-4">
|
||||
|
|
129
src/components/EventsPage.astro
Normal file
129
src/components/EventsPage.astro
Normal file
|
@ -0,0 +1,129 @@
|
|||
---
|
||||
|
||||
import BaseLayout from '../layouts/base.astro';
|
||||
import core from '../core.json';
|
||||
import EventItem from '../components/EventItem.astro';
|
||||
import { isFuture } from 'date-fns';
|
||||
import { types, countryNames } from '../lib/events.js';
|
||||
|
||||
const { type: selectedType } = Astro.props;
|
||||
const { country: selectedCountry } = Astro.props;
|
||||
|
||||
let typeObj = selectedType ? types.find(t => t.id === selectedType) : null
|
||||
let events = core.events;
|
||||
|
||||
if (selectedType) {
|
||||
events = core.events.filter(ev => ev.type === selectedType)
|
||||
}
|
||||
if (selectedCountry) {
|
||||
events = core.events.filter(ev => ev.country === selectedCountry)
|
||||
}
|
||||
|
||||
function eventsFilter (year, future=true) {
|
||||
return function (x) {
|
||||
if (!x.date.match(new RegExp(`^${year}`))) {
|
||||
return false
|
||||
}
|
||||
const isDate = x.date.match(/^\d{4}-\d{2}-\d{2}$/)
|
||||
if (!isDate) {
|
||||
return false
|
||||
}
|
||||
return future ? isFuture(new Date(x.date)) : !isFuture(new Date(x.date))
|
||||
}
|
||||
}
|
||||
|
||||
const currentYear = "2024";
|
||||
const pastYears = [ 2023, 2024 ];
|
||||
const upcoming = events.filter(x => x.date.match(/^2024/))
|
||||
|
||||
const past = {}
|
||||
for (const year of pastYears.reverse()) {
|
||||
past[year] = events.filter(eventsFilter(year, false)).reverse()
|
||||
}
|
||||
|
||||
let places = [{ id: '', country: 'All countries', num: core.events.length }];
|
||||
for (const ev of core.events) {
|
||||
const found = places.find(p => p.country === ev.country)
|
||||
if (found) {
|
||||
found.num++;
|
||||
continue;
|
||||
}
|
||||
if (!ev.country) {
|
||||
continue;
|
||||
}
|
||||
places.push({
|
||||
id: ev.country?.toLowerCase(),
|
||||
country: ev.country,
|
||||
num: 1,
|
||||
})
|
||||
}
|
||||
places = places.sort((x, y) => x.num < y.num ? 1 : -1)
|
||||
---
|
||||
|
||||
<BaseLayout title="Events" image="og_events">
|
||||
|
||||
<div class="middle-pane-medium mt-10">
|
||||
|
||||
<div class="mb-8 sm:mb-14">
|
||||
<div class="flex flex-wrap gap-3 uppercase mb-4">
|
||||
{types.map((type) => (
|
||||
<a href={`/events/${type.id}`} class="px-2 py-0 border border-white/15 rounded-xl" class:list={[ (type.id === selectedType) || (!type.id && !selectedType)? 'text-black bg-white' : 'hover:bg-white/20']}>{type.plural} ({type.id ? core.events.filter(obj => obj.type === type.id).length : core.events.length})</a>
|
||||
))}
|
||||
</div>
|
||||
<div class="flex flex-wrap gap-2 uppercase text-sm">
|
||||
{places.map((place) => (
|
||||
<a href={place.id ? `/events/country/${place.id}` : `/events`} class="px-2 py-0.5 border border-white/15 rounded-xl flex gap-2" class:list={[ (place.id === selectedCountry) || (!place.id && !selectedCountry)? 'text-black bg-white' : 'hover:bg-white/20']}>
|
||||
{place.id &&
|
||||
<img src={`/flags/${place.country}.svg`} class="w-4 inline-block" />
|
||||
}
|
||||
{countryNames[place.country] || place.country} ({place.num})
|
||||
</a>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--div class="mb-10">
|
||||
<img src="/events-map.svg" class="w-full" />
|
||||
</div-->
|
||||
|
||||
<h1 id="upcoming">Upcoming {selectedType ? ` ${typeObj.plural} ` : ''}({upcoming.length})</h1>
|
||||
|
||||
<div class="mb-10">
|
||||
{upcoming.map((event) => (
|
||||
<EventItem item={event} />
|
||||
))}
|
||||
</div>
|
||||
|
||||
<h1 id="past">Past {selectedType ? ` ${typeObj.plural} ` : ''}({events.length-upcoming.length})</h1>
|
||||
{pastYears.map((year) => (
|
||||
past[year].length > 0 &&
|
||||
<h2>{year} ({past[year].length})</h2>
|
||||
<div class="mt-4 mb-10">
|
||||
{past[year]?.map((event) => (
|
||||
<EventItem item={event} />
|
||||
))}
|
||||
</div>
|
||||
))}
|
||||
|
||||
<p>
|
||||
<a href="https://github.com/web3privacy/data/tree/main/src/events" class="hover:underline">Source repository</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<script is:inline>
|
||||
document.querySelectorAll('.event-header .header-base').forEach((el) => {
|
||||
el.addEventListener('click', (ev) => {
|
||||
if (ev.target.tagName === "BUTTON") {
|
||||
return false;
|
||||
}
|
||||
if (ev.target.tagName === "A") {
|
||||
return false;
|
||||
}
|
||||
const detail = el.parentElement.parentElement.querySelector('.detail')
|
||||
document.querySelectorAll('.detail:not(.hidden)').forEach(e => (detail !== e ? e.classList.add('hidden') : null));
|
||||
detail.classList.toggle('hidden');
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
</BaseLayout>
|
745
src/core.json
745
src/core.json
|
@ -135,136 +135,10 @@
|
|||
],
|
||||
"people": [
|
||||
{
|
||||
"id": "coinmandeer",
|
||||
"name": "Coinmandeer",
|
||||
"refs": {
|
||||
"twitter": "KeenOfCoin",
|
||||
"github": "coinmandeer"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/coinmandeer.png"
|
||||
},
|
||||
{
|
||||
"id": "jaromil",
|
||||
"name": "Denis Roio",
|
||||
"nickname": "Jaromil",
|
||||
"caption": "Founder of [Dyne.org](https://dyne.org/)",
|
||||
"refs": {
|
||||
"twitter": "jaromil"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/jaromil.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "vaclav-pavlin",
|
||||
"name": "Václav Pavlín",
|
||||
"caption": "Core contributor @ [Status](https://status.app/), [Logos](https://logos.co/about), [Waku](https://waku.org/)",
|
||||
"country": "cz",
|
||||
"refs": {
|
||||
"twitter": "vpavlin"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/vaclav-pavlin.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "max-hampshire",
|
||||
"name": "Max Hampshire",
|
||||
"caption": "Senior devrel of [Nym](https://nymtech.net/), Co-founder of [terra0](https://terra0.org/)",
|
||||
"country": "at",
|
||||
"refs": {
|
||||
"twitter": "_wjth"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/max-hampshire.jpg"
|
||||
},
|
||||
{
|
||||
"id": "alex-kampa",
|
||||
"name": "Alex Kampa",
|
||||
"caption": "Director at [Aragon ZK Research](https://research.aragon.org/)",
|
||||
"country": "lu",
|
||||
"refs": {
|
||||
"linkedin": "alex-kampa"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/alex-kampa.jpg"
|
||||
},
|
||||
{
|
||||
"id": "dcbuilder",
|
||||
"name": "dcbuilder.eth",
|
||||
"caption": "Research engineer at [Worldcoin](https://worldcoin.org/), ZKML & Rust enthusiast",
|
||||
"country": "cz",
|
||||
"refs": {
|
||||
"twitter": "DCbuild3r"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/dcbuilder.jpg"
|
||||
},
|
||||
{
|
||||
"id": "tree",
|
||||
"name": "Tree",
|
||||
"caption": "Orchestrating lunarpunk events [ETHBrno](https://ethbrno.cz) & [w3ps](https://github.com/web3privacy/w3ps) w/ [gwei.cz](https://gwei.cz)",
|
||||
"country": "cz",
|
||||
"refs": {
|
||||
"bsky": "tree.fail"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/tree.jpg"
|
||||
},
|
||||
{
|
||||
"id": "guy-zyskind",
|
||||
"name": "Guy Zyskind",
|
||||
"caption": "Founder of [Secret Network](https://scrt.network/), CEO [SCRT Labs](https://www.scrtlabs.com/)",
|
||||
"country": "is",
|
||||
"refs": {
|
||||
"twitter": "GuyZys"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/guy-zyskind.jpg"
|
||||
},
|
||||
{
|
||||
"id": "marcel-kolaja",
|
||||
"name": "Marcel Kolaja",
|
||||
"caption": "Member of the European Parliament",
|
||||
"country": "cz",
|
||||
"refs": {
|
||||
"twitter": "PiratKolaja"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/marcel-kolaja.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "oliver-gale",
|
||||
"name": "Oliver Gale",
|
||||
"caption": "CEO of [Panther Protocol](https://www.pantherprotocol.io/)",
|
||||
"refs": {
|
||||
"twitter": "OriginalOlii"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/oliver-gale.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "gabari",
|
||||
"name": "Bryce",
|
||||
"nickname": "gabari",
|
||||
"caption": "[Brume Wallet](https://brume.money/) co-founder & [MangroveDAO](https://mangrovedao.earth/) Core",
|
||||
"refs": {
|
||||
"twitter": "bryce_gabari"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/gabari.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "merula",
|
||||
"name": "Merula",
|
||||
"caption": "Software engineer and cryptographer Circles Entropy",
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/merula.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "wslyvh",
|
||||
"name": "Wesley",
|
||||
"caption": "Events @ Ethereum 🛠️ Indie Maker",
|
||||
"refs": {
|
||||
"twitter": "wslyvh"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/wslyvh.png"
|
||||
},
|
||||
{
|
||||
"id": "steffen-kux",
|
||||
"name": "Steffen Kux",
|
||||
"caption": "CEO dm3",
|
||||
"refs": {
|
||||
"twitter": "SteffenKux"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/steffen-kux.jpeg"
|
||||
"id": "andrea-togni",
|
||||
"name": "Andrea Togni",
|
||||
"caption": "Philosopher, Monero policy workgroup",
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/andrea-togni.jpg"
|
||||
},
|
||||
{
|
||||
"id": "vincenzo-iovino",
|
||||
|
@ -276,6 +150,224 @@
|
|||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/vincenzo-iovino.jpg"
|
||||
},
|
||||
{
|
||||
"id": "pg",
|
||||
"name": "PG",
|
||||
"caption": "Organizing [ETHRome](https://ethrome.org) w/ [urbe.eth](https://linktr.ee/urbe.eth), making sauce w/ [SpaghettETH](https://linktr.ee/spaghetteth)",
|
||||
"country": "it",
|
||||
"refs": {
|
||||
"twitter": "PG_CDG"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/pg.jpg"
|
||||
},
|
||||
{
|
||||
"id": "carlo-chialastri",
|
||||
"name": "Carlo Avv. Chialastri",
|
||||
"caption": "Urbe.eth lawyer",
|
||||
"country": "it",
|
||||
"refs": {
|
||||
"linkedin": "carlo-avv-chialastri-8456a544"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/carlo-chialastri.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "limone-eth",
|
||||
"name": "limone.eth",
|
||||
"caption": "Serial hacker and community builder | core [urbeEth](https://twitter.com/urbeeth) & [ETHRome](https://www.ethrome.org/)",
|
||||
"country": "it",
|
||||
"refs": {
|
||||
"twitter": "limone_eth"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/limone-eth.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "tim-bansemer",
|
||||
"name": "Tim Bansemer",
|
||||
"caption": "[Aqua Protocol](https://aqua-protocol.org/)",
|
||||
"refs": {
|
||||
"twitter": "tim_bansemer"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/tim-bansemer.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "steffen-kux",
|
||||
"name": "Steffen Kux",
|
||||
"caption": "CEO dm3",
|
||||
"refs": {
|
||||
"twitter": "SteffenKux"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/steffen-kux.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "nick-almond",
|
||||
"name": "Nick Almond",
|
||||
"caption": "Building next generation DAOs with [FactoryDAO](https://www.factorydao.xyz/)",
|
||||
"country": "gb",
|
||||
"refs": {
|
||||
"twitter": "DrNickA"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/nick-almond.jpg"
|
||||
},
|
||||
{
|
||||
"id": "radek-svarz",
|
||||
"name": "Radek Švarz",
|
||||
"country": "cz",
|
||||
"caption": "Visionary, architect, connecting business and IT",
|
||||
"refs": {
|
||||
"twitter": "radk"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/radek-svarz.webp"
|
||||
},
|
||||
{
|
||||
"id": "eleanore-blanc",
|
||||
"name": "Eléonore Blanc",
|
||||
"caption": "Crypto Educator & Founder of [CryptoCanal](https://www.cryptocanal.org/), [ETHDam](https://www.ethdam.com/) organiser",
|
||||
"country": "nl",
|
||||
"refs": {
|
||||
"twitter": "blockblanc"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/eleanore-blanc.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "oliver-gale",
|
||||
"name": "Oliver Gale",
|
||||
"caption": "CEO of [Panther Protocol](https://www.pantherprotocol.io/)",
|
||||
"refs": {
|
||||
"twitter": "OriginalOlii"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/oliver-gale.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "vaclav-pavlin",
|
||||
"name": "Václav Pavlín",
|
||||
"caption": "Core contributor @ [Status](https://status.app/), [Logos](https://logos.co/about), [Waku](https://waku.org/)",
|
||||
"country": "cz",
|
||||
"refs": {
|
||||
"twitter": "vpavlin"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/vaclav-pavlin.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "alan-scott",
|
||||
"name": "Alan Scott",
|
||||
"caption": "Co-founder of [Railgun](https://www.railgun.org/)",
|
||||
"country": "us",
|
||||
"refs": {
|
||||
"twitter": "tsu_kareta"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/alan-scott.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "alex-zaidelson",
|
||||
"name": "Alex Zaidelson",
|
||||
"caption": "CEO [SCRT Labs](https://www.scrtlabs.com/)",
|
||||
"refs": {
|
||||
"twitter": "azaidelson"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/alex-zaidelson.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "merula",
|
||||
"name": "Merula",
|
||||
"caption": "Software engineer and cryptographer Circles Entropy",
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/merula.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "jaromil",
|
||||
"name": "Denis Roio",
|
||||
"nickname": "Jaromil",
|
||||
"caption": "Founder of [Dyne.org](https://dyne.org/)",
|
||||
"refs": {
|
||||
"twitter": "jaromil"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/jaromil.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "antoni-zolciak",
|
||||
"name": "Antoni Zolciak",
|
||||
"caption": "Co-founder of [Aleph Zero](https://alephzero.org/) & [Cardinal](https://cardinal.co/)",
|
||||
"country": "pl",
|
||||
"refs": {
|
||||
"twitter": "AntoniZolciak"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/antoni-zolciak.jpg"
|
||||
},
|
||||
{
|
||||
"id": "coinmandeer",
|
||||
"name": "Coinmandeer",
|
||||
"refs": {
|
||||
"twitter": "KeenOfCoin",
|
||||
"github": "coinmandeer"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/coinmandeer.png"
|
||||
},
|
||||
{
|
||||
"id": "guy-zyskind",
|
||||
"name": "Guy Zyskind",
|
||||
"caption": "Founder of [Secret Network](https://scrt.network/), CEO [SCRT Labs](https://www.scrtlabs.com/)",
|
||||
"country": "is",
|
||||
"refs": {
|
||||
"twitter": "GuyZys"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/guy-zyskind.jpg"
|
||||
},
|
||||
{
|
||||
"id": "r-prokh",
|
||||
"name": "Roma",
|
||||
"nickname": "r_prokh",
|
||||
"caption": "Growth Lead @ [Questbook](https://questbook.app/)",
|
||||
"country": "pt",
|
||||
"refs": {
|
||||
"twitter": "r_prokh"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/r-prokh.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "tibor-csoka",
|
||||
"name": "Tibor Csóka",
|
||||
"caption": "Software Engineer at [HOPR](https://hoprnet.org/)",
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/tibor-csoka.jpg"
|
||||
},
|
||||
{
|
||||
"id": "catsnaks",
|
||||
"name": "Catsnaks",
|
||||
"caption": "[PSE](https://pse.dev/)"
|
||||
},
|
||||
{
|
||||
"id": "serinko",
|
||||
"name": "Serinko",
|
||||
"caption": "Privacy Researcher",
|
||||
"refs": {
|
||||
"twitter": "serinko13"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/serinko.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "marcel-kolaja",
|
||||
"name": "Marcel Kolaja",
|
||||
"caption": "Member of the European Parliament",
|
||||
"country": "cz",
|
||||
"refs": {
|
||||
"twitter": "PiratKolaja"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/marcel-kolaja.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "althea",
|
||||
"name": "Althea",
|
||||
"caption": "Head of Comms, Privacy & Scaling Exploration",
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/althea.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "dcbuilder",
|
||||
"name": "dcbuilder.eth",
|
||||
"caption": "Research engineer at [Worldcoin](https://worldcoin.org/), ZKML & Rust enthusiast",
|
||||
"country": "cz",
|
||||
"refs": {
|
||||
"twitter": "DCbuild3r"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/dcbuilder.jpg"
|
||||
},
|
||||
{
|
||||
"id": "mario-havel",
|
||||
"name": "Mario Havel",
|
||||
|
@ -286,6 +378,25 @@
|
|||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/mario-havel.jpg"
|
||||
},
|
||||
{
|
||||
"id": "kieran-mesquita",
|
||||
"name": "Kieran Mesquita",
|
||||
"caption": "Chief scientist [Railgun DAO](https://www.railgun.org/)",
|
||||
"refs": {
|
||||
"twitter": "mesquka"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/kieran-mesquita.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "manu-alzuru",
|
||||
"name": "Manu Alzuru",
|
||||
"caption": "Humanist, solarpunk, Founder of [DoinGud](https://doingud.com/) & [ETH Barcelona](https://ethbarcelona.com/)",
|
||||
"country": "es",
|
||||
"refs": {
|
||||
"twitter": "ManuAlzuru"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/manu-alzuru.jpg"
|
||||
},
|
||||
{
|
||||
"id": "ameen-soleimani",
|
||||
"name": "Ameen Soleimani",
|
||||
|
@ -296,6 +407,114 @@
|
|||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/ameen-soleimani.jpg"
|
||||
},
|
||||
{
|
||||
"id": "alona-shevchenko",
|
||||
"name": "Alona Shevchenko",
|
||||
"caption": "Unapologetic Ukrainian behind [Ukraine DAO](https://ukrainedao.love/) & [Kyiv Tech Summit](https://www.kyivtechsummit.com/)",
|
||||
"country": "ua",
|
||||
"refs": {
|
||||
"twitter": "cryptodrftng"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/alona-shevchenko.jpg"
|
||||
},
|
||||
{
|
||||
"id": "wslyvh",
|
||||
"name": "Wesley",
|
||||
"caption": "Events @ Ethereum 🛠️ Indie Maker",
|
||||
"refs": {
|
||||
"twitter": "wslyvh"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/wslyvh.png"
|
||||
},
|
||||
{
|
||||
"id": "juraj-bednar",
|
||||
"name": "Juraj Bednar",
|
||||
"caption": "Educator, writer, cryptoanarchist & biohacker ([blog](https://juraj.bednar.io/))",
|
||||
"country": "sk",
|
||||
"refs": {
|
||||
"twitter": "jurbed"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/juraj-bednar.jpg"
|
||||
},
|
||||
{
|
||||
"id": "alex-kampa",
|
||||
"name": "Alex Kampa",
|
||||
"caption": "Director at [Aragon ZK Research](https://research.aragon.org/)",
|
||||
"country": "lu",
|
||||
"refs": {
|
||||
"linkedin": "alex-kampa"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/alex-kampa.jpg"
|
||||
},
|
||||
{
|
||||
"id": "tree",
|
||||
"name": "Tree",
|
||||
"caption": "Orchestrating lunarpunk events [ETHBrno](https://ethbrno.cz) & [w3ps](https://github.com/web3privacy/w3ps) w/ [gwei.cz](https://gwei.cz)",
|
||||
"country": "cz",
|
||||
"refs": {
|
||||
"bsky": "tree.fail"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/tree.jpg"
|
||||
},
|
||||
{
|
||||
"id": "edward-fricker",
|
||||
"name": "Edward P. Fricker",
|
||||
"caption": "right to privacy foundation, deficon, railgun dao, lobsterdao",
|
||||
"refs": {
|
||||
"twitter": "itsthefuture"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/edward-fricker.jpg"
|
||||
},
|
||||
{
|
||||
"id": "rik-krieger",
|
||||
"name": "Rik Krieger",
|
||||
"nickname": "rikzrh",
|
||||
"caption": "Co-founder of [HOPR](https://hoprnet.org/)",
|
||||
"country": "ch",
|
||||
"refs": {
|
||||
"twitter": "rikzrh"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/rik-krieger.jpg"
|
||||
},
|
||||
{
|
||||
"id": "rachel-rose-oleary",
|
||||
"name": "Rachel-Rose O'Leary",
|
||||
"caption": "[DarkFi](https://dark.fi/) core dev, writer",
|
||||
"refs": {
|
||||
"twitter": "lunar_mining"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/rachel-rose-oleary.jpg"
|
||||
},
|
||||
{
|
||||
"id": "gabari",
|
||||
"name": "Bryce",
|
||||
"nickname": "gabari",
|
||||
"caption": "[Brume Wallet](https://brume.money/) co-founder & [MangroveDAO](https://mangrovedao.earth/) Core",
|
||||
"refs": {
|
||||
"twitter": "bryce_gabari"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/gabari.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "joshua-davila",
|
||||
"name": "Joshua Davila",
|
||||
"caption": "Blog & podcast \"[The Blockchain Socialist](https://linktr.ee/theblockchainsocialist)\"",
|
||||
"refs": {
|
||||
"twitter": "TBSocialist",
|
||||
"bsky": "tbsocialist.bsky.social"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/joshua-davila.jpg"
|
||||
},
|
||||
{
|
||||
"id": "costanza-gallo",
|
||||
"name": "Costanza Gallo",
|
||||
"caption": "Head of partnerships at the [The Swarm Foundation](https://www.ethswarm.org/foundation)",
|
||||
"country": "it",
|
||||
"refs": {
|
||||
"twitter": "costgallo"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/costanza-gallo.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "afri-schoedon",
|
||||
"name": "Afri Schoedon",
|
||||
|
@ -318,185 +537,14 @@
|
|||
"imageUrl": "https://data.web3privacy.info/img/people/pavol-luptak.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "andrea-togni",
|
||||
"name": "Andrea Togni",
|
||||
"caption": "Philosopher, Monero policy workgroup",
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/andrea-togni.jpg"
|
||||
},
|
||||
{
|
||||
"id": "alona-shevchenko",
|
||||
"name": "Alona Shevchenko",
|
||||
"caption": "Unapologetic Ukrainian behind [Ukraine DAO](https://ukrainedao.love/) & [Kyiv Tech Summit](https://www.kyivtechsummit.com/)",
|
||||
"country": "ua",
|
||||
"id": "max-hampshire",
|
||||
"name": "Max Hampshire",
|
||||
"caption": "Senior devrel of [Nym](https://nymtech.net/), Co-founder of [terra0](https://terra0.org/)",
|
||||
"country": "at",
|
||||
"refs": {
|
||||
"twitter": "cryptodrftng"
|
||||
"twitter": "_wjth"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/alona-shevchenko.jpg"
|
||||
},
|
||||
{
|
||||
"id": "antoni-zolciak",
|
||||
"name": "Antoni Zolciak",
|
||||
"caption": "Co-founder of [Aleph Zero](https://alephzero.org/) & [Cardinal](https://cardinal.co/)",
|
||||
"country": "pl",
|
||||
"refs": {
|
||||
"twitter": "AntoniZolciak"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/antoni-zolciak.jpg"
|
||||
},
|
||||
{
|
||||
"id": "serinko",
|
||||
"name": "Serinko",
|
||||
"caption": "Privacy Researcher",
|
||||
"refs": {
|
||||
"twitter": "serinko13"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/serinko.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "carlo-chialastri",
|
||||
"name": "Carlo Avv. Chialastri",
|
||||
"caption": "Urbe.eth lawyer",
|
||||
"country": "it",
|
||||
"refs": {
|
||||
"linkedin": "carlo-avv-chialastri-8456a544"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/carlo-chialastri.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "manu-alzuru",
|
||||
"name": "Manu Alzuru",
|
||||
"caption": "Humanist, solarpunk, Founder of [DoinGud](https://doingud.com/) & [ETH Barcelona](https://ethbarcelona.com/)",
|
||||
"country": "es",
|
||||
"refs": {
|
||||
"twitter": "ManuAlzuru"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/manu-alzuru.jpg"
|
||||
},
|
||||
{
|
||||
"id": "nick-almond",
|
||||
"name": "Nick Almond",
|
||||
"caption": "Building next generation DAOs with [FactoryDAO](https://www.factorydao.xyz/)",
|
||||
"country": "gb",
|
||||
"refs": {
|
||||
"twitter": "DrNickA"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/nick-almond.jpg"
|
||||
},
|
||||
{
|
||||
"id": "costanza-gallo",
|
||||
"name": "Costanza Gallo",
|
||||
"caption": "Head of partnerships at the [The Swarm Foundation](https://www.ethswarm.org/foundation)",
|
||||
"country": "it",
|
||||
"refs": {
|
||||
"twitter": "costgallo"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/costanza-gallo.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "rachel-rose-oleary",
|
||||
"name": "Rachel-Rose O'Leary",
|
||||
"caption": "[DarkFi](https://dark.fi/) core dev, writer",
|
||||
"refs": {
|
||||
"twitter": "lunar_mining"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/rachel-rose-oleary.jpg"
|
||||
},
|
||||
{
|
||||
"id": "r-prokh",
|
||||
"name": "Roma",
|
||||
"nickname": "r_prokh",
|
||||
"caption": "Growth Lead @ [Questbook](https://questbook.app/)",
|
||||
"country": "pt",
|
||||
"refs": {
|
||||
"twitter": "r_prokh"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/r-prokh.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "rik-krieger",
|
||||
"name": "Rik Krieger",
|
||||
"nickname": "rikzrh",
|
||||
"caption": "Co-founder of [HOPR](https://hoprnet.org/)",
|
||||
"country": "ch",
|
||||
"refs": {
|
||||
"twitter": "rikzrh"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/rik-krieger.jpg"
|
||||
},
|
||||
{
|
||||
"id": "pg",
|
||||
"name": "PG",
|
||||
"caption": "Organizing [ETHRome](https://ethrome.org) w/ [urbe.eth](https://linktr.ee/urbe.eth), making sauce w/ [SpaghettETH](https://linktr.ee/spaghetteth)",
|
||||
"country": "it",
|
||||
"refs": {
|
||||
"twitter": "PG_CDG"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/pg.jpg"
|
||||
},
|
||||
{
|
||||
"id": "althea",
|
||||
"name": "Althea",
|
||||
"caption": "Head of Comms, Privacy & Scaling Exploration",
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/althea.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "tim-bansemer",
|
||||
"name": "Tim Bansemer",
|
||||
"caption": "[Aqua Protocol](https://aqua-protocol.org/)",
|
||||
"refs": {
|
||||
"twitter": "https://twitter.com/tim_bansemer"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/tim-bansemer.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "catsnaks",
|
||||
"name": "Catsnaks",
|
||||
"caption": "[PSE](https://pse.dev/)"
|
||||
},
|
||||
{
|
||||
"id": "mykola-siusko",
|
||||
"name": "Mykola Siusko",
|
||||
"caption": "Web3 privacy advocate behind [Web3Privacy Now](https://web3privacy.info/)",
|
||||
"country": "es",
|
||||
"refs": {
|
||||
"twitter": "nicksvyaznoy"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/mykola-siusko.png"
|
||||
},
|
||||
{
|
||||
"id": "tibor-csoka",
|
||||
"name": "Tibor Csóka",
|
||||
"caption": "Software Engineer at [HOPR](https://hoprnet.org/)",
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/tibor-csoka.jpg"
|
||||
},
|
||||
{
|
||||
"id": "radek-svarz",
|
||||
"name": "Radek Švarz",
|
||||
"country": "cz",
|
||||
"caption": "Visionary, architect, connecting business and IT",
|
||||
"refs": {
|
||||
"twitter": "radk"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/radek-svarz.webp"
|
||||
},
|
||||
{
|
||||
"id": "juraj-bednar",
|
||||
"name": "Juraj Bednar",
|
||||
"caption": "Educator, writer, cryptoanarchist & biohacker ([blog](https://juraj.bednar.io/))",
|
||||
"country": "sk",
|
||||
"refs": {
|
||||
"twitter": "jurbed"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/juraj-bednar.jpg"
|
||||
},
|
||||
{
|
||||
"id": "alex-zaidelson",
|
||||
"name": "Alex Zaidelson",
|
||||
"caption": "CEO [SCRT Labs](https://www.scrtlabs.com/)",
|
||||
"refs": {
|
||||
"twitter": "azaidelson"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/alex-zaidelson.jpeg"
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/max-hampshire.jpg"
|
||||
},
|
||||
{
|
||||
"id": "odysseas",
|
||||
|
@ -508,43 +556,14 @@
|
|||
"imageUrl": "https://data.web3privacy.info/img/people/odysseas.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "limone-eth",
|
||||
"name": "limone.eth",
|
||||
"caption": "Serial hacker and community builder | core [urbeEth](https://twitter.com/urbeeth) & [ETHRome](https://www.ethrome.org/)",
|
||||
"country": "it",
|
||||
"id": "mykola-siusko",
|
||||
"name": "Mykola Siusko",
|
||||
"caption": "Web3 privacy advocate behind [Web3Privacy Now](https://web3privacy.info/)",
|
||||
"country": "es",
|
||||
"refs": {
|
||||
"twitter": "limone_eth"
|
||||
"twitter": "nicksvyaznoy"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/limone-eth.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "alan-scott",
|
||||
"name": "Alan Scott",
|
||||
"caption": "Co-founder of [Railgun](https://www.railgun.org/)",
|
||||
"country": "us",
|
||||
"refs": {
|
||||
"twitter": "tsu_kareta"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/alan-scott.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "eleanore-blanc",
|
||||
"name": "Eléonore Blanc",
|
||||
"caption": "Crypto Educator & Founder of [CryptoCanal](https://www.cryptocanal.org/), [ETHDam](https://www.ethdam.com/) organiser",
|
||||
"country": "nl",
|
||||
"refs": {
|
||||
"twitter": "blockblanc"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/eleanore-blanc.jpeg"
|
||||
},
|
||||
{
|
||||
"id": "kieran-mesquita",
|
||||
"name": "Kieran Mesquita",
|
||||
"caption": "Chief scientist [Railgun DAO](https://www.railgun.org/)",
|
||||
"refs": {
|
||||
"twitter": "mesquka"
|
||||
},
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/kieran-mesquita.jpeg"
|
||||
"imageUrl": "https://data.web3privacy.info/img/people/mykola-siusko.png"
|
||||
}
|
||||
],
|
||||
"events": [
|
||||
|
@ -758,7 +777,8 @@
|
|||
"ligi"
|
||||
],
|
||||
"speakers": [
|
||||
"afri-schoedon"
|
||||
"afri-schoedon",
|
||||
"joshua-davila"
|
||||
],
|
||||
"slots": 3,
|
||||
"links": {
|
||||
|
@ -787,6 +807,7 @@
|
|||
"speakers": [
|
||||
"pavol-luptak",
|
||||
"gabari",
|
||||
"radek-svarz",
|
||||
"mykola-siusko"
|
||||
]
|
||||
},
|
||||
|
@ -839,9 +860,18 @@
|
|||
"rsvp": "https://lu.ma/w3pn-meetup-ljubljana1"
|
||||
},
|
||||
"speakers": [
|
||||
"joshua-davila",
|
||||
"mykola-siusko"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "os24q2",
|
||||
"type": "online-summit",
|
||||
"name-extension": "Q2",
|
||||
"date": "2024-06-23",
|
||||
"lead": "Tree",
|
||||
"slots": 8
|
||||
},
|
||||
{
|
||||
"id": "m24bcn",
|
||||
"issue": 20,
|
||||
|
@ -851,7 +881,10 @@
|
|||
"country": "es",
|
||||
"coincidence": "ETHBarcelona",
|
||||
"slots": 3,
|
||||
"optional": true
|
||||
"optional": true,
|
||||
"speakers": [
|
||||
"joshua-davila"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "m24bru",
|
||||
|
@ -870,6 +903,8 @@
|
|||
"rsvp": "https://lu.ma/w3pn-meetup-bru1"
|
||||
},
|
||||
"speakers": [
|
||||
"edward-fricker",
|
||||
"joshua-davila",
|
||||
"mykola-siusko"
|
||||
]
|
||||
},
|
||||
|
@ -885,6 +920,14 @@
|
|||
"slots": 3,
|
||||
"optional": true
|
||||
},
|
||||
{
|
||||
"id": "os24q3",
|
||||
"type": "online-summit",
|
||||
"name-extension": "Q3",
|
||||
"date": "2024/Sep",
|
||||
"lead": "Tree",
|
||||
"slots": 8
|
||||
},
|
||||
{
|
||||
"id": "m24cph",
|
||||
"issue": 18,
|
||||
|
@ -957,6 +1000,7 @@
|
|||
},
|
||||
"speakers": [
|
||||
"juraj-bednar",
|
||||
"radek-svarz",
|
||||
"mykola-siusko",
|
||||
"pg",
|
||||
"tree"
|
||||
|
@ -985,7 +1029,18 @@
|
|||
"slots": 5,
|
||||
"links": {
|
||||
"rsvp": "https://lu.ma/w3pn-meetup-devcon7"
|
||||
}
|
||||
},
|
||||
"speakers": [
|
||||
"edward-fricker"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "os24q4",
|
||||
"type": "online-summit",
|
||||
"name-extension": "Q4",
|
||||
"date": "2024/Dec",
|
||||
"lead": "Tree",
|
||||
"slots": 8
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,5 +1,30 @@
|
|||
import { format, compareAsc, addDays, isFuture } from 'date-fns';
|
||||
|
||||
export const types = [
|
||||
{ id: "", plural: 'All events'},
|
||||
{ id: "meetup", name: 'Meetup', plural: 'Meetups' },
|
||||
{ id: "summit", name: 'Summit', plural: 'Summits' },
|
||||
{ id: "privacy-corner", name: 'Privacy Corner', plural: 'Privacy Corners' },
|
||||
{ id: "online-summit", name: 'Online Summit', plural: 'Online Summits' },
|
||||
]
|
||||
|
||||
export const countryNames = {
|
||||
cz: 'Czechia',
|
||||
it: 'Italy',
|
||||
de: 'Germany',
|
||||
es: 'Spain',
|
||||
si: 'Slovenia',
|
||||
dk: 'Denmark',
|
||||
pl: 'Poland',
|
||||
be: 'Belgium',
|
||||
pt: 'Portugal',
|
||||
ee: 'Estonia',
|
||||
nl: 'Netherlands',
|
||||
ro: 'Romania',
|
||||
gr: 'Greece',
|
||||
th: 'Thailand',
|
||||
}
|
||||
|
||||
export function dateInfo (item) {
|
||||
const isDate = item.date.match(/^\d{4}-\d{2}-\d{2}$/)
|
||||
const future = isDate && !isFuture(new Date(item.date));
|
||||
|
@ -45,6 +70,9 @@ export function nameRenderer (item, full = false) {
|
|||
case 'privacy-corner':
|
||||
return `Privacy Corner at `+ (item.coincidenceFull ? item.coincidenceFull : `${item.coincidence} ${date.year}`)
|
||||
break;
|
||||
case 'online-summit':
|
||||
return "ONLINE Summit" + (item['name-extension'] ? ' ' + item['name-extension'] : '') + (full ? ` ${date.year}` : '');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@ const ext = findExt(EventsExt, item)
|
|||
<h1 id="upcoming">W3PN {nameRenderer(item, true)}</h1>
|
||||
|
||||
<div class="flex gap-2 mb-4 text-lg">
|
||||
{item.type !== 'online-summit' &&
|
||||
<img src={`/flags/${item.country}.svg`} class="w-4" />
|
||||
<div>
|
||||
{item.city}, {item.country.toUpperCase()}
|
||||
|
@ -37,6 +38,11 @@ const ext = findExt(EventsExt, item)
|
|||
<span> - {ccRenderer(item)}</span>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
{item.type === 'online-summit' &&
|
||||
<img src="/flags/other/earth.svg" class="w-4" />
|
||||
<div>Online</div>
|
||||
}
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
|
|
@ -1,82 +1,7 @@
|
|||
---
|
||||
|
||||
import BaseLayout from '../layouts/base.astro';
|
||||
import core from '../core.json';
|
||||
import EventItem from '../components/EventItem.astro';
|
||||
import { isFuture } from 'date-fns';
|
||||
|
||||
const events = core.events;
|
||||
|
||||
function eventsFilter (year, future=true) {
|
||||
return function (x) {
|
||||
if (!x.date.match(new RegExp(`^${year}`))) {
|
||||
return false
|
||||
}
|
||||
const isDate = x.date.match(/^\d{4}-\d{2}-\d{2}$/)
|
||||
if (!isDate) {
|
||||
return false
|
||||
}
|
||||
return future ? isFuture(new Date(x.date)) : !isFuture(new Date(x.date))
|
||||
}
|
||||
}
|
||||
|
||||
const currentYear = "2024";
|
||||
const pastYears = [ 2023, 2024 ];
|
||||
const upcoming = events.filter(x => x.date.match(/^2024/))
|
||||
|
||||
const past = {}
|
||||
for (const year of pastYears.reverse()) {
|
||||
past[year] = events.filter(eventsFilter(year, false)).reverse()
|
||||
}
|
||||
import EventsPage from '../components/EventsPage.astro';
|
||||
|
||||
---
|
||||
|
||||
<BaseLayout title="Events" image="og_events">
|
||||
|
||||
<div class="middle-pane-medium mt-10">
|
||||
|
||||
<!--div class="mb-10">
|
||||
<img src="/events-map.svg" class="w-full" />
|
||||
</div-->
|
||||
|
||||
<h1 id="upcoming">Upcoming ({upcoming.length})</h1>
|
||||
|
||||
<div class="mb-10">
|
||||
{upcoming.map((event) => (
|
||||
<EventItem item={event} />
|
||||
))}
|
||||
</div>
|
||||
|
||||
<h1 id="past">Past events ({events.length-upcoming.length})</h1>
|
||||
{pastYears.map((year) => (
|
||||
past[year].length > 0 &&
|
||||
<h2>{year} ({past[year].length})</h2>
|
||||
<div class="mt-4 mb-10">
|
||||
{past[year]?.map((event) => (
|
||||
<EventItem item={event} />
|
||||
))}
|
||||
</div>
|
||||
))}
|
||||
|
||||
<p>
|
||||
<a href="https://github.com/web3privacy/data/tree/main/src/events" class="hover:underline">Source repository</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<script is:inline>
|
||||
document.querySelectorAll('.event-header .header-base').forEach((el) => {
|
||||
el.addEventListener('click', (ev) => {
|
||||
if (ev.target.tagName === "BUTTON") {
|
||||
return false;
|
||||
}
|
||||
if (ev.target.tagName === "A") {
|
||||
return false;
|
||||
}
|
||||
const detail = el.parentElement.parentElement.querySelector('.detail')
|
||||
document.querySelectorAll('.detail:not(.hidden)').forEach(e => (detail !== e ? e.classList.add('hidden') : null));
|
||||
detail.classList.toggle('hidden');
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
</BaseLayout>
|
||||
<EventsPage />
|
14
src/pages/events/[type].astro
Normal file
14
src/pages/events/[type].astro
Normal file
|
@ -0,0 +1,14 @@
|
|||
---
|
||||
|
||||
import EventsPage from '../../components/EventsPage.astro';
|
||||
import { types } from '../../lib/events.js';
|
||||
|
||||
const { type } = Astro.params;
|
||||
|
||||
export async function getStaticPaths() {
|
||||
return types.filter(obj => obj.id).map(obj => ({ params: { type: obj.id }}));
|
||||
}
|
||||
|
||||
---
|
||||
|
||||
<EventsPage {type} />
|
24
src/pages/events/country/[country].astro
Normal file
24
src/pages/events/country/[country].astro
Normal file
|
@ -0,0 +1,24 @@
|
|||
---
|
||||
|
||||
import EventsPage from '../../../components/EventsPage.astro';
|
||||
import { types } from '../../../lib/events.js';
|
||||
import core from '../../../core.json';
|
||||
|
||||
const { country } = Astro.params;
|
||||
|
||||
export async function getStaticPaths() {
|
||||
const countries = []
|
||||
for (const ev of core.events) {
|
||||
if (!ev.country) {
|
||||
continue
|
||||
}
|
||||
if (!countries.includes(ev.country)) {
|
||||
countries.push(ev.country)
|
||||
}
|
||||
}
|
||||
return countries.map(country => ({ params: { country }}));
|
||||
}
|
||||
|
||||
---
|
||||
|
||||
<EventsPage {country} />
|
Loading…
Reference in a new issue