mirror of
https://github.com/Einundzwanzig-Podcast/einundzwanzig.space.git
synced 2025-12-13 16:26:50 +00:00
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:
879
content/meetups-old.json
Normal file
879
content/meetups-old.json
Normal 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"]
|
||||
}
|
||||
]
|
||||
2040
content/meetups.json
2040
content/meetups.json
File diff suppressed because it is too large
Load Diff
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
135
static/vendor/jvectormap/jquery-jvectormap.css
vendored
Normal file
135
static/vendor/jvectormap/jquery-jvectormap.css
vendored
Normal 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;
|
||||
}
|
||||
1
static/vendor/jvectormap/jquery-jvectormap.js
vendored
Normal file
1
static/vendor/jvectormap/jquery-jvectormap.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
static/vendor/jvectormap/jquery.min.js
vendored
Normal file
2
static/vendor/jvectormap/jquery.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
static/vendor/jvectormap/maps/at_mill.js
vendored
Normal file
1
static/vendor/jvectormap/maps/at_mill.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
static/vendor/jvectormap/maps/ch_mill.js
vendored
Normal file
1
static/vendor/jvectormap/maps/ch_mill.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
static/vendor/jvectormap/maps/de_mill.js
vendored
Normal file
1
static/vendor/jvectormap/maps/de_mill.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
static/vendor/jvectormap/maps/europe_mill.js
vendored
Normal file
1
static/vendor/jvectormap/maps/europe_mill.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -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') })
|
||||
|
||||
@@ -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
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user