1
0
Fork 0
mirror of https://github.com/seanmorley15/AdventureLog.git synced 2025-08-02 19:55:18 +02:00

Add download adventures as ICS calendar

This commit is contained in:
Sean Morley 2024-12-14 14:37:16 -05:00
parent 4839edde7b
commit 0c27f4b8a4
14 changed files with 99 additions and 12 deletions

View file

@ -194,7 +194,8 @@
"adventure_calendar": "Abenteuerkalender",
"emoji_picker": "Emoji-Picker",
"hide": "Verstecken",
"show": "Zeigen"
"show": "Zeigen",
"download_calendar": "Kalender herunterladen"
},
"home": {
"desc_1": "Entdecken, planen und erkunden Sie mit Leichtigkeit",

View file

@ -217,6 +217,7 @@
"show": "Show",
"hide": "Hide",
"emoji_picker": "Emoji Picker",
"download_calendar": "Download Calendar",
"days": "days",
"activities": {
"general": "General 🌍",

View file

@ -241,7 +241,8 @@
"adventure_calendar": "Calendario de aventuras",
"emoji_picker": "Selector de emojis",
"hide": "Esconder",
"show": "Espectáculo"
"show": "Espectáculo",
"download_calendar": "Descargar Calendario"
},
"worldtravel": {
"all": "Todo",

View file

@ -194,7 +194,8 @@
"adventure_calendar": "Calendrier d'aventure",
"emoji_picker": "Sélecteur d'émoticônes",
"hide": "Cacher",
"show": "Montrer"
"show": "Montrer",
"download_calendar": "Télécharger le calendrier"
},
"home": {
"desc_1": "Découvrez, planifiez et explorez en toute simplicité",

View file

@ -194,7 +194,8 @@
"adventure_calendar": "Calendario delle avventure",
"emoji_picker": "Selettore di emoji",
"hide": "Nascondere",
"show": "Spettacolo"
"show": "Spettacolo",
"download_calendar": "Scarica Calendario"
},
"home": {
"desc_1": "Scopri, pianifica ed esplora con facilità",

View file

@ -194,7 +194,8 @@
"adventure_calendar": "Avonturenkalender",
"emoji_picker": "Emoji-kiezer",
"hide": "Verbergen",
"show": "Show"
"show": "Show",
"download_calendar": "Agenda downloaden"
},
"home": {
"desc_1": "Ontdek, plan en verken met gemak",

View file

@ -241,7 +241,8 @@
"adventure_calendar": "Kalendarz przygód",
"emoji_picker": "Wybór emoji",
"hide": "Ukrywać",
"show": "Pokazywać"
"show": "Pokazywać",
"download_calendar": "Pobierz Kalendarz"
},
"worldtravel": {
"country_list": "Lista krajów",

View file

@ -194,7 +194,8 @@
"adventure_calendar": "Äventyrskalender",
"emoji_picker": "Emoji-väljare",
"hide": "Dölja",
"show": "Visa"
"show": "Visa",
"download_calendar": "Ladda ner kalender"
},
"home": {
"desc_1": "Upptäck, planera och utforska med lätthet",

View file

@ -194,7 +194,8 @@
"adventure_calendar": "冒险日历",
"emoji_picker": "表情符号选择器",
"hide": "隐藏",
"show": "展示"
"show": "展示",
"download_calendar": "下载日历"
},
"home": {
"desc_1": "轻松发现、规划和探索",

View file

@ -30,10 +30,18 @@ export const load = (async (event) => {
});
});
let icsFetch = await fetch(`${endpoint}/api/ics-calendar/generate`, {
headers: {
Cookie: `sessionid=${sessionId}`
}
});
let ics_calendar = await icsFetch.text();
return {
props: {
adventures,
dates
dates,
ics_calendar
}
};
}) satisfies PageServerLoad;

View file

@ -14,6 +14,10 @@
let adventures = data.props.adventures;
let dates = data.props.dates;
let icsCalendar = data.props.ics_calendar;
// turn the ics calendar into a data URL
let icsCalendarDataUrl = URL.createObjectURL(new Blob([icsCalendar], { type: 'text/calendar' }));
let plugins = [TimeGrid, DayGrid];
let options = {
view: 'dayGridMonth',
@ -24,3 +28,10 @@
<h1 class="text-center text-2xl font-bold">{$t('adventures.adventure_calendar')}</h1>
<Calendar {plugins} {options} />
<!-- download calendar -->
<div class="flex items-center justify-center mt-4">
<a href={icsCalendarDataUrl} download="adventures.ics" class="btn btn-primary"
>Download Calendar</a
>
</div>