Update Meetup Map (#155)

Benutzt die Meetup-Daten aus dem Portal und enhält nun auch mobil eine Ansicht der Karte.
This commit is contained in:
d11n
2023-01-20 18:15:41 +01:00
committed by GitHub
parent 475e2a9802
commit 143f5b522d
18 changed files with 2543 additions and 705 deletions

879
content/meetups-old.json Normal file
View File

@@ -0,0 +1,879 @@
[
{
"name": "Einundzwanzig Nordfriesland",
"url": "https://t.me/Einundzwanzig_NF",
"top": 1,
"left": 34,
"country": "DE",
"state": ["Schleswig-Holstein"]
},
{
"name": "Einundzwanzig Rostock",
"url": "https://t.me/einundzwanzigRostock",
"top": 7,
"left": 55,
"country": "DE",
"state": ["Mecklenburg-Vorpommern"]
},
{
"name": "Einundzwanzig Heilbronn",
"url": "https://t.me/einundzwanzigHeilbronn",
"top": 62,
"left": 30,
"country": "DE",
"state": ["Baden-Württemberg"]
},
{
"name": "Einundzwanzig Lübeck",
"url": "https://www.bitcoin-luebeck.de/",
"top": 11,
"left": 45,
"country": "DE",
"state": ["Hamburg"]
},
{
"name": "Einundzwanzig Wacken",
"url": "https://t.me/einundzwanzigWOA",
"top": 10,
"left": 37,
"country": "DE",
"state": ["Schleswig-Holstein"]
},
{
"name": "Einundzwanzig Mecklenburg-Vorpommern",
"url": "https://t.me/EinundzwanzigMV",
"top": 11,
"left": 59,
"country": "DE",
"state": ["Mecklenburg-Vorpommern"]
},
{
"name": "Einundzwanzig Ostfriesland",
"url": "https://t.me/Einundzwanzig_Ostriesland",
"top": 13,
"left": 20,
"country": "DE",
"state": ["Niedersachsen"]
},
{
"name": "Einundzwanzig Hamburg",
"url": "https://t.me/Einundzwanzig_HH",
"top": 17,
"left": 38,
"country": "DE",
"state": ["Hamburg", "Bremen", "Niedersachsen"]
},
{
"name": "Einundzwanzig Norddeutschland",
"url": "https://t.me/Einundzwanzig_Norden",
"top": 19,
"left": 37,
"country": "DE",
"state": ["Hamburg", "Bremen", "Niedersachsen"]
},
{
"name": "Einundzwanzig Bremen",
"url": "https://t.me/Einundzwanzig_Norden",
"top": 20,
"left": 29,
"country": "DE",
"state": ["Bremen"]
},
{
"name": "Einundzwanzig Oldenburg",
"url": "https://t.me/einundzwanzig_OL",
"top": 18,
"left": 27,
"country": "DE",
"state": ["Niedersachsen"]
},
{
"name": "Bitcoin Berlin",
"url": "https://www.meetup.com/de-DE/Bitcoin-Lab-Berlin/",
"top": 25,
"left": 65,
"country": "DE",
"state": ["Berlin"]
},
{
"name": "Einundzwanzig Berlin",
"url": "https://t.me/Einundzwanzig_Berlin",
"top": 26,
"left": 65,
"country": "DE",
"state": ["Berlin"]
},
{
"name": "Einundzwanzig Potsdam",
"url": "https://t.me/Einundzwanzig_Potsdam",
"top": 27,
"left": 63,
"country": "DE",
"state": ["Brandenburg"]
},
{
"name": "Bitcoin Hannover",
"url": "https://t.me/+RSXEIZ_xoq1lNDM6",
"top": 27,
"left": 37,
"country": "DE",
"state": ["Niedersachsen"]
},
{
"name": "Einundzwanzig Vreden",
"url": "https://t.me/Einundzwanzig_VREDEN",
"top": 29,
"left": 14,
"country": "DE",
"state": ["Nordrhein-Westfalen"]
},
{
"name": "Einundzwanzig Osnabrück/Münster",
"url": "https://t.me/Einundzwanzig_OS",
"top": 29,
"left": 27,
"country": "DE",
"state": ["Niedersachsen"]
},
{
"name": "Einundzwanzig Oelde",
"url": "https://t.me/EinundzwanzigOelde",
"top": 31,
"left": 27,
"country": "DE",
"state": ["Nordrhein-Westfalen"]
},
{
"name": "Einundzwanzig Sachsen-Anhalt",
"url": "https://t.me/Meetup21SA",
"top": 31,
"left": 53,
"country": "DE",
"state": ["Sachsen-Anhalt"]
},
{
"name": "Einundzwanzig Ostwestfalen-Lippe",
"url": "https://t.me/einundzwanzig_owl",
"top": 32,
"left": 30,
"country": "DE",
"state": ["Nordrhein-Westfalen"]
},
{
"name": "Einundzwanzig Sauerland",
"url": "https://t.me/einundzwanzig_sauerland",
"top": 35,
"left": 30,
"country": "DE",
"state": ["Nordrhein-Westfalen"]
},
{
"name": "Einundzwanzig Recklinghausen",
"url": "https://t.me/Einundzwanzig_Recklinghausen",
"top": 33,
"left": 22,
"country": "DE",
"state": ["Nordrhein-Westfalen"]
},
{
"name": "Einundzwanzig Dortmund",
"url": "https://t.me/Dortmund_Einundzwanzig_Bitcoin",
"top": 34,
"left": 24,
"country": "DE",
"state": ["Nordrhein-Westfalen"]
},
{
"name": "Einundzwanzig Elbe-Elster",
"url": "https://t.me/Einundzwanzig_EE",
"top": 33,
"left": 64,
"country": "DE",
"state": ["Brandenburg"]
},
{
"name": "Einundzwanzig Göttingen",
"url": "https://t.me/einundzwanzigsuedniedersachsen",
"top": 34,
"left": 41,
"country": "DE",
"state": ["Niedersachsen"]
},
{
"name": "Einundzwanzig Essen",
"url": "https://t.me/Einundzwanzig_Ruhrgebiet",
"top": 35,
"left": 20,
"country": "DE",
"state": ["Nordrhein-Westfalen"]
},
{
"name": "Bitcoin Leipzig",
"url": "https://www.meetup.com/de-DE/Leipziger-Bitcoin-Stammtisch/",
"top": 37,
"left": 60,
"country": "DE",
"state": ["Sachsen"]
},
{
"name": "Einundzwanzig Düsseldorf",
"url": "https://t.me/einundzwanzig_duesseldorf",
"top": 38,
"left": 16,
"country": "DE",
"state": ["Nordrhein-Westfalen"]
},
{
"name": "Einundzwanzig Solingen",
"url": "https://t.me/einundzwanzig_solingen",
"top": 39,
"left": 18,
"country": "DE",
"state": ["Nordrhein-Westfalen"]
},
{
"name": "Einundzwanzig Heinsberg",
"url": "https://t.me/Einundzwanzig_HEINSBERG",
"top": 40,
"left": 9,
"country": "DE",
"state": ["Nordrhein-Westfalen"]
},
{
"name": "Bitcoin Dresden",
"url": "https://www.meetup.com/de-DE/Dresdner-Bitcoin-Stammtisch",
"top": 40,
"left": 69,
"country": "DE",
"state": ["Sachsen"]
},
{
"name": "Einundzwanzig Sachsen",
"url": "https://t.me/einundzwanzigsachsen",
"top": 38,
"left": 70,
"country": "DE",
"state": ["Sachsen"]
},
{
"name": "Einundzwanzig Thüringen",
"url": "https://t.me/einundzwanzigthueringen",
"top": 41,
"left": 46,
"country": "DE",
"state": ["Thüringen"]
},
{
"name": "Einundzwanzig Köln",
"url": "https://t.me/einundzwanzig_koeln",
"top": 42,
"left": 17,
"country": "DE",
"state": ["Nordrhein-Westfalen"]
},
{
"name": "Einundzwanzig Aachen",
"url": "https://t.me/einundzwanzig_aachen",
"top": 43,
"left": 8,
"country": "DE",
"state": ["Nordrhein-Westfalen"]
},
{
"name": "Einundzwanzig Siegen",
"url": "https://t.me/einundzwanzig_siegen",
"top": 43,
"left": 23,
"country": "DE",
"state": ["Nordrhein-Westfalen"]
},
{
"name": "Einundzwanzig Bonn",
"url": "https://t.me/einundzwanzig_bonn",
"top": 45,
"left": 18,
"country": "DE",
"state": ["Nordrhein-Westfalen"]
},
{
"name": "Einundzwanzig Hennef",
"url": "https://t.me/einundzwanzig_hennef",
"top": 44,
"left": 20,
"country": "DE",
"state": ["Nordrhein-Westfalen"]
},
{
"name": "Einundzwanzig Fulda",
"url": "https://t.me/einundzwanzigFD",
"top": 46,
"left": 38,
"country": "DE",
"state": ["Hessen"]
},
{
"name": "Einundzwanzig Koblenz",
"url": "https://t.me/Einundzwanzig_Ko",
"top": 48,
"left": 21,
"country": "DE",
"state": ["Rheinland-Pfalz"]
},
{
"name": "Einundzwanzig Wiesbaden",
"url": "https://t.me/einundzwanzigwiesbaden",
"top": 50,
"left": 20,
"country": "DE",
"state": ["Hessen"]
},
{
"name": "Einundzwanzig Frankfurt am Main",
"url": "https://t.me/einundzwanzigffm",
"top": 51,
"left": 26,
"country": "DE",
"state": ["Hessen"]
},
{
"name": "Einundzwanzig Langen",
"url": "https://t.me/bitcoinlangen",
"top": 52,
"left": 26,
"country": "DE",
"state": ["Hessen"]
},
{
"name": "Einundzwanzig Darmstadt",
"url": "https://t.me/einundzwanzigda",
"top": 53,
"left": 26,
"country": "DE",
"state": ["Hessen"]
},
{
"name": "Einundzwanzig Mainz",
"url": "https://t.me/Einundzwanzig_MAINZ",
"top": 55,
"left": 24,
"country": "DE",
"state": ["Rheinland-Pfalz"]
},
{
"name": "Einundzwanzig Mannheim",
"url": "https://t.me/Einundzwanzig_MANNHEIM",
"top": 58,
"left": 25,
"country": "DE",
"state": ["Baden-Württemberg"]
},
{
"name": "Einundzwanzig Saarland",
"url": "https://t.me/einundzwanzigsaarland",
"top": 58,
"left": 13,
"country": "DE",
"state": ["Saarland"]
},
{
"name": "Einundzwanzig Saarlouis",
"url": "https://t.me/EinundzwanzigSaarlouis",
"top": 57,
"left": 12,
"country": "DE",
"state": ["Saarland"]
},
{
"name": "Einundzwanzig Pfalz",
"url": "https://t.me/einundzwanzigPfalz",
"top": 59,
"left": 19,
"country": "DE",
"state": ["Rheinland-Pfalz"]
},
{
"name": "Einundzwanzig Unterfranken",
"url": "https://t.me/einundzwanzig_unterfranken",
"top": 51,
"left": 42,
"country": "DE",
"state": ["Bayern"]
},
{
"name": "Einundzwanzig Franken",
"url": "https://t.me/Einundzwanzig_FRANKEN",
"top": 59,
"left": 52,
"country": "DE",
"state": ["Bayern"]
},
{
"name": "Einundzwanzig Heidelberg",
"url": "https://t.me/Einundzwanzig_HEIDELBERG",
"top": 60,
"left": 27,
"country": "DE",
"state": ["Baden-Württemberg"]
},
{
"name": "Bitcoin Karlsruhe",
"url": "https://www.meetup.com/BitcoinKarlsruhe/",
"top": 63,
"left": 25,
"country": "DE",
"state": ["Baden-Württemberg"]
},
{
"name": "Einundzwanzig Karlsruhe",
"url": "https://t.me/BitcoinKarlsruhe",
"top": 64,
"left": 25,
"country": "DE",
"state": ["Baden-Württemberg"]
},
{
"name": "Einundzwanzig Ellwangen",
"url": "https://t.me/einundzwanzigEllwangen",
"top": 64,
"left": 40,
"country": "DE",
"state": ["Baden-Württemberg"]
},
{
"name": "Einundzwanzig Stuttgart",
"url": "https://t.me/einundzwanzigStuttgart",
"top": 66,
"left": 30,
"country": "DE",
"state": ["Baden-Württemberg"]
},
{
"name": "Einundzwanzig Passau",
"url": "https://t.me/Einundzwanzig_Passau",
"top": 67,
"left": 68,
"country": "DE",
"state": ["Bayern"]
},
{
"name": "Einundzwanzig Rosenheim",
"url": "https://t.me/Einundzwanzig_Rosenheim",
"top": 75,
"left": 57,
"country": "DE",
"state": ["Bayern"]
},
{
"name": "Einundzwanzig Pfarrkirchen",
"url": "https://t.me/BTCPAN",
"top": 68,
"left": 65,
"country": "DE",
"state": ["Bayern"]
},
{
"name": "Einundzwanzig Freising",
"url": "https://t.me/Einundzwanzig_FS",
"top": 70,
"left": 56,
"country": "DE",
"state": ["Bayern"]
},
{
"name": "Einundzwanzig Augsburg",
"url": "https://t.me/Einundzwanzig_Augsburg",
"top": 70,
"left": 46,
"country": "DE",
"state": ["Bayern"]
},
{
"name": "Bitcoin Ulm",
"url": "https://www.meetup.com/de-DE/Bitcoin-Ulm/",
"top": 70,
"left": 38,
"country": "DE",
"state": ["Baden-Württemberg"]
},
{
"name": "Einundzwanzig Balingen",
"url": "https://t.me/+wNgJ6sTsTOljMjFi",
"top": 71,
"left": 27,
"country": "DE",
"state": ["Baden-Württemberg"]
},
{
"name": "Einundzwanzig Sigmaringen",
"url": "https://t.me/+OyyMlOQv-hYwOGIy",
"top": 72,
"left": 30,
"country": "DE",
"state": ["Baden-Württemberg"]
},
{
"name": "Bitcoin München",
"url": "https://www.meetup.com/de-DE/Bitcoin-Munich/",
"top": 72,
"left": 53,
"country": "DE",
"state": ["Bayern"]
},
{
"name": "Einundzwanzig Memmingen",
"url": "https://t.me/BTCOnlyMM21",
"top": 73,
"left": 40,
"country": "DE",
"state": ["Bayern"]
},
{
"name": "Einundzwanzig Freiburg",
"url": "https://t.me/Einundzwanzig_Freiburg",
"top": 73,
"left": 21,
"country": "DE",
"state": ["Baden-Württemberg"]
},
{
"name": "Einundzwanzig Konstanz",
"url": "https://t.me/Einundzwanzig_Konstanz",
"top": 77,
"left": 29,
"country": "DE",
"state": ["Baden-Württemberg"]
},
{
"name": "Einundzwanzig Friedrichshafen",
"url": "https://t.me/+i7hOYiYDVagyOWVi",
"top": 78,
"left": 35,
"country": "DE",
"state": ["Baden-Württemberg"]
},
{
"name": "Einundzwanzig Kempten",
"url": "https://t.me/EinundzwanzigKempten",
"top": 77,
"left": 41,
"country": "DE",
"state": ["Bayern"]
},
{
"name": "Einundzwanzig Wien",
"url": "https://t.me/+eXlL83e7wO0yZjg0",
"top": 70,
"left": 93,
"country": "AT",
"state": ["Wien"]
},
{
"name": "Einundzwanzig Wien (Matrix Group)",
"url": "https://matrix.to/#/%2321_Wien-Meetup:matrix.org",
"top": 72,
"left": 93,
"country": "AT",
"state": ["Wien"]
},
{
"name": "Bitcoin Wien",
"url": "https://bitcoin-austria.at/events/",
"top": 69,
"left": 93,
"country": "AT",
"state": ["Wien"]
},
{
"name": "Einundzwanzig Ried i.I.",
"url": "https://t.me/joinchat/ilNlHsXTLqsyOTA0",
"top": 70,
"left": 69,
"country": "AT",
"state": ["Oberösterreich"]
},
{
"name": "Einundzwanzig Salzburg",
"url": "https://t.me/BitcoinSalzburg",
"top": 76,
"left": 66,
"country": "AT",
"state": ["Salzburg"]
},
{
"name": "Einundzwanzig Vorarlberg",
"url": "https://t.me/BitcoinVorarlberg",
"top": 81,
"left": 37,
"country": "AT",
"state": ["Vorarlberg"]
},
{
"name": "Einundzwanzig Tirol",
"url": "https://t.me/Einundzwanzig_Tirol",
"top": 82,
"left": 51,
"country": "AT",
"state": ["Tirol"]
},
{
"name": "Bitcoin Graz",
"url": "https://bitcoin-austria.at/events/",
"top": 83,
"left": 87,
"country": "AT",
"state": ["Steiermark"]
},
{
"name": "Einundzwanzig Klagenfurt",
"url": "https://t.me/Einundzwanzig_Kaernten",
"top": 88,
"left": 73,
"country": "AT",
"state": ["Kärnten"]
},
{
"name": "Einundzwanzig Basel",
"url": "https://t.me/EinundzwanzigBS",
"top": 80,
"left": 19,
"country": "CH",
"state": ["Basel"]
},
{
"name": "Bitcoin Bern",
"url": "https://www.meetup.com/de-DE/bitcoin-bern/events/",
"top": 85,
"left": 17,
"country": "CH",
"state": ["Bern"]
},
{
"name": "Einezwänzg Solothurn",
"url": "https://t.me/+o2gLvxb2SxFhNTI0",
"top": 82,
"left": 16,
"country": "CH",
"state": ["Solothurn"]
},
{
"name": "32-Einezwänzg Bitcoin Seeland",
"url": "https://t.me/Einundzwanzig_Seeland",
"top": 82.5,
"left": 15.5,
"country": "CH",
"state": ["Bern"]
},
{
"name": "Bitcoin Zürich",
"url": "https://www.meetup.com/de-DE/Bitcoin-Meetup-Switzerland/",
"top": 81,
"left": 27,
"country": "CH",
"state": ["Zürich"]
},
{
"name": "Bitcoin Zürich (Beginners)",
"url": "https://www.meetup.com/de-DE/bitcoin-4-beginners-meetup-zurich/",
"top": 82.5,
"left": 27,
"country": "CH",
"state": ["Zürich"]
},
{
"name": "Einundzwanzig Schweiz",
"url": "https://t.me/joinchat/8-FBDoq3Y9hkODZk",
"top": 87,
"left": 23,
"country": "CH",
"state": ["Bern", "Luzern", "Nidwalden", "Zürich", "Zug", "Solothurn"]
},
{
"name": "Einundzwanzig Ostschweiz",
"url": "https://www.meetup.com/de-DE/einundzwanzig-bitcoin-meetup-schweiz/",
"top": 80,
"left": 31,
"country": "CH",
"state": [
"St.Gallen",
"Graubünden",
"Glarus",
"Thurgau",
"Appenzell Ausserrhoden",
"Appenzell Innerrhoden"
]
},
{
"name": "Einundzwanzig Thurgau",
"url": "https://t.me/Einundzwanzig_Thurgau",
"top": 79,
"left": 29,
"country": "CH",
"state": ["Thurgau"]
},
{
"name": "Einundzwanzig Liechtenstein",
"url": "https://t.me/joinchat/0UnzuwPmiitlMzE0",
"top": 84,
"left": 35,
"country": "LI",
"state": ["Liechtenstein"]
},
{
"name": "Einundzwanzig Südtirol",
"url": "https://t.me/Einundzwanzig_Suedtirol",
"top": 88,
"left": 51,
"country": "IT",
"state": ["Südtirol"]
},
{
"name": "Einundzwanzig Gran Canaria",
"url": "https://t.me/GranCanaria21",
"country": "ES",
"state": ["Canaria"]
},
{
"name": "Einundzwanzig Styria",
"url": "https://t.me/Einundzwanzig_Styria",
"top": 84,
"left": 87,
"country": "AT",
"state": ["Steiermark"]
},
{
"name": "Einundzwanzig Regensburg",
"url": "https://t.me/+2s5SRFj8khYwYzNi",
"top": 62,
"left": 57,
"country": "DE",
"state": ["Bayern"]
},
{
"name": "Einundzwanzig Cham",
"url": "https://t.me/BitcoinMeetupCham",
"top": 60,
"left": 62,
"country": "DE",
"state": ["Bayern"]
},
{
"name": "Einundzwanzig Nordburgenland",
"url": "https://t.me/Einundzwanzig_Meetup_Nordbgld",
"top": 73,
"left": 97,
"country": "AT",
"state": ["Burgenland"]
},
{
"name": "Einundzwanzig Linz",
"url": "https://t.me/Einundzwanzig_Linz",
"top": 69,
"left": 77,
"country": "AT",
"state": ["Oberösterreich"]
},
{
"name": "Einundzwanzig Trier",
"url": "https://t.me/Einundzwanzig_Trier",
"top": 55,
"left": 10,
"country": "DE",
"state": ["Rheinland-Pfalz"]
},
{
"name": "Einundzwanzig Portugal",
"url": "https://t.me/EinundzwanzigPortugal",
"country": "PT",
"state": ["Portugal"]
},
{
"name": "Einundzwanzig Luxembourg",
"url": "https://t.me/einundzwanzigLU",
"top": 56,
"left": 5,
"country": "LU",
"state": ["Luxembourg"]
}
,
{
"name": "Einundzwanzig Oberland",
"url": "https://t.me/Einundzwanzig_Oberland",
"top": 79,
"left": 49,
"country": "DE",
"state": ["Bayern"]
},
{
"name": "Einundzwanzig Herrsching",
"url": "https://t.me/Einundzwanzig_Herrsching",
"top": 73,
"left": 50,
"country": "DE",
"state": ["Bayern"]
},
{
"name": "Einundzwanzig Kassel",
"url": "https://t.me/einundzwanzig_kassel",
"top": 38,
"left": 38,
"country": "DE",
"state": ["Hessen"]
},
{
"name": "Einundzwanzig Gelnhausen",
"url": "https://t.me/einundzwanzig_gelnhausen",
"top": 48,
"left": 31,
"country": "DE",
"state": ["Hessen"]
},
{
"name": "Einundzwanzig Limburg",
"url": "https://t.me/+dXengs7l2Y8yNDA6",
"top": 49,
"left": 30,
"country": "DE",
"state": ["Hessen"]
},
{
"name": "Einundzwanzig Hochtaunuskreis",
"url": "https://t.me/bitcoin_hochtaunuskreis",
"top": 50,
"left": 30,
"country": "DE",
"state": ["Hessen"]
},
{
"name": "Einundzwanzig Rhoihesse",
"url": "https://t.me/EinundzwanzigRHH",
"top": 57,
"left": 23,
"country": "DE",
"state": ["Rheinland-Pfalz"]
},
{
"name": "Bitcoin Görlitz",
"url": "https://bitcoin-goerlitz.de",
"top": 38,
"left": 78.5,
"country": "DE",
"state": ["Sachsen"]
},
{
"name": "Einundzwanzig Ingolstadt",
"url": "https://t.me/EinundzwanzigIngolstadt",
"top": 66,
"left": 52,
"country": "DE",
"state": ["Bayern"]
},
{
"name": "Einundzwanzig Vulkaneifel",
"url": "https://t.me/Einundzwanzig_Vulka",
"top": 52,
"left": 12,
"country": "DE",
"state": ["Rheinland-Pfalz"]
}
]

File diff suppressed because it is too large Load Diff

View File

@@ -19,6 +19,9 @@
--color-border-light: var(--color-neutral-10);
--color-border-medium: var(--color-neutral-25);
--color-map-region: var(--color-border-light);
--color-map-outline: var(--color-neutral-50);
--color-overlay-bg: rgba(230, 230, 230, .95);
--color-body-text: var(--color-neutral-90);
--color-body-bg: var(--color-neutral-0);

View File

@@ -4,6 +4,12 @@
3% { transform: scale(.75); }
}
.vectorMap {
width: 100%;
height: 60vh;
margin-top: var(--space-xxl);
}
#map {
@media (--up_to_L) {
margin-top: var(--space-xl);

View File

@@ -6,11 +6,20 @@ block vars
- const pageCard = "/img/card/gesundes-geld.jpg"
- const cardType = "summary_large_image"
block pageScripts
script(src=assetPath("/vendor/jvectormap/jquery.min.js"))
script(src=assetPath("/vendor/jvectormap/jquery-jvectormap.js"))
script(src=assetPath("/vendor/jvectormap/maps/europe_mill.js"))
script(src=assetPath("/vendor/jvectormap/maps/de_mill.js"))
script(src=assetPath("/vendor/jvectormap/maps/at_mill.js"))
script(src=assetPath("/vendor/jvectormap/maps/ch_mill.js"))
link(href=assetPath("/vendor/jvectormap/jquery-jvectormap.css") rel="stylesheet")
link(href=assetPath("/css/gesundes-geld.css") rel="stylesheet")
<!DOCTYPE html>
html(lang="de" data-theme="custom")
head
include includes/_head
link(href=assetPath("/css/gesundes-geld.css") rel="stylesheet")
body#gesundes-geld
main.main
.wrap
@@ -63,7 +72,7 @@ html(lang="de" data-theme="custom")
img#mcgenesis-1(src=assetPath("/img/gesundes-geld/mcgenesis-2.svg"))
section
+map(meetups, true)
+meetupMap()
section
a.button(href="/") Zur Einundzwanzig Website

View File

@@ -32,6 +32,7 @@ link(rel="stylesheet" href=assetPath("/css/main.css"))
link(rel="alternate" type="application/rss+xml" title="Podcast Feed" href=site.meta.publicFeedUrl)
script(src=assetPath("/js/player.js") defer)
script(src=assetPath("/js/main.js"))
block pageScripts
title= pageTitle
noscript
style.

View File

@@ -32,52 +32,52 @@ mixin member(m)
if m.text
!=markdown(m.text)
mixin map(meetups, hideTooltip)
- const filterOfficial = (list, official) => list.filter(meetup => (meetup.name.startsWith('Einundzwanzig') || meetup.name.startsWith('Einezwänzg')) === official)
- const filterUnmapped = (list) => list.filter(meetup => !meetup.top || !meetup.left)
- const style = m => m.top && m.left ? `top:${m.top}%;left:${m.left}%;` : null
- const clss = m => m.top && m.left ? null : 'unmapped'
- let j = 0
#map
h2 Einundzwanzig Meetups
ul.meetups
each m in filterOfficial(meetups, true)
li.official(class=clss(m) style=style(m))
a(href=m.url target="_blank" rel="nofollow noopener")
.dot(style=`animation-delay:${((j*2000) + random(3000))}ms;animation-duration:${meetups.length*2}s;`)
= m.name.replace('Einundzwanzig ', '').replace('Einezwänzg ', '')
if m.members
= ' '
small.members= `(${m.members})`
- j++
mixin map(id, markers)
.vectorMap(id=id)
script.
const markers = [!{markers}];
// https://jvectormap.com/documentation/javascript-api/jvm-map/
new jvm.MultiMap({
container: $(`#!{id}`),
maxLevel: 1,
main: {
map: 'europe_mill',
backgroundColor: 'transparent',
markers,
focusOn: ['DE', 'AT', 'CH', 'LI', 'LU'],
regionStyle: {
initial: {
'fill': 'var(--color-map-region)',
'stroke': 'var(--color-map-outline)',
'stroke-width': .25
},
hover: {
'fill-opacity': .8,
cursor: 'pointer'
}
},
onMarkerClick(event, index) {
const marker = markers[index]
if (marker.url) window.open(marker.url, '_blank');
}
},
mapUrlByCode(code, multiMap) {
return `/vendor/jvectormap/maps/${code.toLowerCase()}_${multiMap.defaultProjection}.js`;
},
mapNameByCode(code, multiMap) {
return `${code.toLowerCase()}_${multiMap.defaultProjection}`;
}
});
h2 Weitere Meetups
ul.meetups
each m in filterOfficial(meetups, false)
li(class=clss(m) style=style(m))
a(href=m.url target="_blank" rel="nofollow noopener")
.dot(style=`animation-delay:${((j*2000) + random(3000))}ms;animation-duration:${meetups.length*2}s;`)
= m.name.replace('Bitcoin ', '')
if m.members
= ' '
small.members= `(${m.members})`
- j++
img#dach(src=assetPath('/img/dach.svg') alt="DE, AT, CH")
if !hideTooltip
#tooltip.tooltip(hidden)
#unmapped
h2 Weitere Meetups
ul.meetups
each m in filterUnmapped(meetups)
li(class=clss(m) style=style(m))
a(href=m.url target="_blank" rel="nofollow noopener")
= m.name
if m.members
= ' '
small.members= `(${m.members})`
li.unmapped
a(href="https://twentyone.world/" target="_blank" rel="nofollow noopener") Einundzwanzig in der ganzen Welt
mixin meetupMap()
+map('meetupMap', meetups.map(m => JSON.stringify({
name: m.name,
latLng: [m.latitude, m.longitude],
url: m.url,
style: {
fill: m.name.startsWith('Einundzwanzig') || m.name.includes('Einezwänzg') || m.name.includes('Eenanzwanzeg') || m.name.includes('Yirmibir') ? 'var(--color-accent)' : 'var(--color-neutral-50)'
}
})).join(','))
mixin spende(d, trunc = false)
.spende(id=d.id)&attributes(attributes)

View File

@@ -5,6 +5,15 @@ block vars
- const description = 'Eine Liste von Bitcoin-Meetups und Einundzwanzig-Treffen im D/A/CH/S/LI/LU-Raum.'
- const cardImage = '/img/card/meetups.png'
block pageScripts
script(src=assetPath("/vendor/jvectormap/jquery.min.js"))
script(src=assetPath("/vendor/jvectormap/jquery-jvectormap.js"))
script(src=assetPath("/vendor/jvectormap/maps/europe_mill.js"))
script(src=assetPath("/vendor/jvectormap/maps/de_mill.js"))
script(src=assetPath("/vendor/jvectormap/maps/at_mill.js"))
script(src=assetPath("/vendor/jvectormap/maps/ch_mill.js"))
link(href=assetPath("/vendor/jvectormap/jquery-jvectormap.css") rel="stylesheet")
block main
#meetups.wrap
section
@@ -12,14 +21,10 @@ block main
p= description
:markdown-it(html linkify typographer)
Neue Meetups können gerne [per Pull Request](https://github.com/Einundzwanzig-Podcast/einundzwanzig.space/edit/master/content/meetups.json) hinzugefügt werden.
Hier gibt es ein [Video-Tutorial](https://www.youtube.com/watch?v=BNJc9LExEzU), wie ein neuer Pull Request erstellt werden kann.
Die Werte für `top/left` geben prozentual die Position des Ortes auf der Karte an.
Neue Meetups können gerne [im Portal](https://portal.einundzwanzig.space/de/meetup/overview) hinzugefügt werden.
Wir können auch die Anzahl der Gruppenmitglieder hier anzeigen lassen.
Voraussetzung dafür ist, dass die Gruppe öffentlich ist und einen Linknamen hat (a la `t.me/Einundzwanzig_ORT`, kann nur vom Ersteller der Gruppe angepasst werden).
Telegram: Die Vorlage für das Gruppenbild findest du im [Media Kit](/media).
Tipp: Mit Bots wie [Shieldy](https://t.me/shieldy_bot) kann man die Spammer draußen halten.
Die Vorlage für das Telegram-Gruppenbild findest du im [Media Kit](/media).
+map(meetups)
div(style="margin-bottom: calc(var(--space-xxl) * -1)")
+meetupMap()

View File

@@ -124,6 +124,16 @@
display: none;
}
#gesundes-geld section:first-child {
margin-bottom: 4rem;
}
#gesundes-geld section:last-child {
text-align: center;
}
.vectorMap {
width: 100%;
height: 60vh;
margin-top: var(--space-xxl);
}

View File

@@ -0,0 +1,135 @@
svg {
touch-action: none;
}
.jvectormap-container {
width: 100%;
height: 100%;
position: relative;
overflow: hidden;
touch-action: none;
}
.jvectormap-tip {
position: absolute;
display: none;
border: solid 1px #CDCDCD;
border-radius: 3px;
background: #292929;
color: white;
font-family: sans-serif, Verdana;
font-size: smaller;
padding: 3px;
}
.jvectormap-zoomin, .jvectormap-zoomout, .jvectormap-goback {
position: absolute;
left: 10px;
border-radius: 3px;
background: #292929;
padding: 3px;
color: white;
cursor: pointer;
line-height: 10px;
text-align: center;
box-sizing: content-box;
}
.jvectormap-zoomin, .jvectormap-zoomout {
width: 10px;
height: 10px;
}
.jvectormap-zoomin {
top: 10px;
}
.jvectormap-zoomout {
top: 30px;
}
.jvectormap-goback {
bottom: 10px;
z-index: 1000;
padding: 6px;
}
.jvectormap-spinner {
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
background: center no-repeat url(data:image/gif;base64,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);
}
.jvectormap-legend-title {
font-weight: bold;
font-size: 14px;
text-align: center;
}
.jvectormap-legend-cnt {
position: absolute;
}
.jvectormap-legend-cnt-h {
bottom: 0;
right: 0;
}
.jvectormap-legend-cnt-v {
top: 0;
right: 0;
}
.jvectormap-legend {
background: black;
color: white;
border-radius: 3px;
}
.jvectormap-legend-cnt-h .jvectormap-legend {
float: left;
margin: 0 10px 10px 0;
padding: 3px 3px 1px 3px;
}
.jvectormap-legend-cnt-h .jvectormap-legend .jvectormap-legend-tick {
float: left;
}
.jvectormap-legend-cnt-v .jvectormap-legend {
margin: 10px 10px 0 0;
padding: 3px;
}
.jvectormap-legend-cnt-h .jvectormap-legend-tick {
width: 40px;
}
.jvectormap-legend-cnt-h .jvectormap-legend-tick-sample {
height: 15px;
}
.jvectormap-legend-cnt-v .jvectormap-legend-tick-sample {
height: 20px;
width: 20px;
display: inline-block;
vertical-align: middle;
}
.jvectormap-legend-tick-text {
font-size: 12px;
}
.jvectormap-legend-cnt-h .jvectormap-legend-tick-text {
text-align: center;
}
.jvectormap-legend-cnt-v .jvectormap-legend-tick-text {
display: inline-block;
vertical-align: middle;
line-height: 20px;
padding-left: 3px;
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -51,7 +51,6 @@ renderPage('kontakt', 'kontakt', { navCurrent: 'kontakt' })
renderPage('datenschutz', 'datenschutz', { navCurrent: 'datenschutz' })
renderPage('adventskalender', 'adventskalender', { adventskalender })
renderPage('gesundes-geld', 'gesundes-geld', { meetups: meetupsSorted })
renderPage('category', 'podcast/news', { navCurrent: 'podcast', category: 'news', categoryName: 'News', episodes: episodes.filter(e => e.category === 'news') })
renderPage('category', 'podcast/interviews', { navCurrent: 'podcast', category: 'interview', categoryName: 'Interviews', episodes: episodes.filter(e => e.category === 'interview') })
renderPage('category', 'podcast/lesestunde', { navCurrent: 'podcast', category: 'lesestunde', categoryName: 'Lesestunde', episodes: episodes.filter(e => e.category === 'lesestunde') })

View File

@@ -3,11 +3,14 @@ const { basename, join, resolve } = require('path')
const request = require('sync-request')
const meta = require('../content/meta.json')
const meetups = require('../content/meetups.json')
const telegram = require('../content/telegram.json')
const soundboard = require('../content/soundboard.json')
const { TELEGRAM_BOT_TOKEN } = process.env
const loadJson = url => {
const jsonBody = request('GET', url).getBody('utf8')
return JSON.parse(jsonBody)
}
const dir = (...path) => resolve(__dirname, '..', ...path)
const writeJSON = (file, data) => writeFileSync(file, JSON.stringify(data, null, 2))
@@ -18,11 +21,7 @@ const getTelegramMembersCount = group => {
[, , telegramId] = url.match(/:\/\/t\.me\/(?!(\+|joinchat))(.*)/) || []
if (telegramId) {
try {
const jsonBody = request(
'GET',
`https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/getChatMemberCount?chat_id=@${telegramId}`
).getBody('utf8')
const { ok, result } = JSON.parse(jsonBody)
const { ok, result } = loadJson(`https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/getChatMemberCount?chat_id=@${telegramId}`)
if (ok) {
return result
}
@@ -39,8 +38,7 @@ const getTelegramMembersCount = group => {
let recentBlocks = []
try {
const jsonBody = request('GET', 'https://mempool.observer/api/recentBlocks').getBody('utf8')
recentBlocks = JSON.parse(jsonBody)
recentBlocks = loadJson('https://mempool.observer/api/recentBlocks')
} catch (err) {
console.error('Could not load recent blocks:', err)
}
@@ -56,17 +54,21 @@ const telegramData = telegram.map(t =>
)
// Meetups
const meetupsData = meetups.map(m => Object.assign(m, {
members: getTelegramMembersCount(m)
}))
let meetups = []
try {
meetups = loadJson('https://portal.einundzwanzig.space/api/meetups')
} catch (err) {
console.error('Could not load meetups:', err)
meetups = require('../content/soundboard.json')
}
writeJSON(dir('dist', 'meetups.json'), meetupsData)
writeJSON(dir('dist', 'meetups.json'), meetups)
writeJSON(dir('generated', 'site-data.json'), {
date,
block,
meta,
meetups: meetupsData,
meetups,
telegram: telegramData
})