From: PhiTux Date: Thu, 1 May 2025 21:03:49 +0000 (+0200) Subject: template selection and settings for 'on this day' X-Git-Url: http://git.99rst.org/?a=commitdiff_plain;h=7f8ba856a39f333734e54b7d386ab364d15b10f3;p=DailyTxT.git template selection and settings for 'on this day' --- diff --git a/backend/server/routers/users.py b/backend/server/routers/users.py index aab3576..f61bf4e 100644 --- a/backend/server/routers/users.py +++ b/backend/server/routers/users.py @@ -126,6 +126,8 @@ def get_default_user_settings(): return { "autoloadImagesByDefault": False, "setAutoloadImagesPerDevice": True, + "useOnThisDay": True, + "onThisDayYears": [1,5,10] } @router.get("/getUserSettings") diff --git a/frontend/src/lib/TemplateDropdown.svelte b/frontend/src/lib/TemplateDropdown.svelte index bf94081..ca4d371 100644 --- a/frontend/src/lib/TemplateDropdown.svelte +++ b/frontend/src/lib/TemplateDropdown.svelte @@ -7,9 +7,9 @@ class="form-select form-select-sm" aria-label="Select template" > - + {#each $templates as template} - {/each} @@ -17,9 +17,10 @@ diff --git a/frontend/src/lib/templateStore.js b/frontend/src/lib/templateStore.js index 2f701bd..5a4bbcf 100644 --- a/frontend/src/lib/templateStore.js +++ b/frontend/src/lib/templateStore.js @@ -1,4 +1,4 @@ import { writable } from "svelte/store"; export const templates = writable([]); -export const insertTemplate = writable(null); \ No newline at end of file +export const insertTemplate = writable(""); \ No newline at end of file diff --git a/frontend/src/routes/+layout.svelte b/frontend/src/routes/+layout.svelte index 30b742d..cd856f2 100644 --- a/frontend/src/routes/+layout.svelte +++ b/frontend/src/routes/+layout.svelte @@ -146,11 +146,13 @@ calculateResize(); }); + let onThisDayYears = $state(''); function getUserSettings() { axios .get(API_URL + '/users/getUserSettings') .then((response) => { $settings = response.data; + onThisDayYears = $settings.onThisDayYears.toString(); }) .catch((error) => { console.error(error); @@ -162,11 +164,50 @@ }); } + let onThisDayYearsInvalid = $state(false); + // check if onThisDayYears is valid + $effect(() => { + onThisDayYearsInvalid = false; + + //regex: years may only contain numbers and commas + if (onThisDayYears.match(/[^0-9,]/)) { + onThisDayYearsInvalid = true; + return; + } + + onThisDayYears + .trim() + .split(',') + .forEach((year) => { + //if (isNaN(year.trim()) || year.trim() === '' || year.conta) { + if (!Number.isInteger(parseInt(year.trim()))) { + onThisDayYearsInvalid = true; + } + return year; + }); + }); + + let settingsHaveChanged = $derived( + JSON.stringify($settings) !== JSON.stringify($tempSettings) || + JSON.stringify($settings.onThisDayYears) !== + JSON.stringify( + onThisDayYears + .trim() + .split(',') + .map((year) => parseInt(year.trim())) + ) + ); + let isSaving = $state(false); function saveUserSettings() { if (isSaving) return; isSaving = true; + $tempSettings.onThisDayYears = onThisDayYears + .trim() + .split(',') + .map((year) => parseInt(year.trim())); + axios .post(API_URL + '/users/saveUserSettings', $tempSettings) .then((response) => { @@ -683,11 +724,66 @@ blub
+ {#if $tempSettings.useOnThisDay !== $settings.useOnThisDay || JSON.stringify(onThisDayYears + .trim() + .split(',') + .map( (year) => parseInt(year.trim()) )) !== JSON.stringify($settings.onThisDayYears)} +
+ {/if} +
An diesem Tag
- Bla
- blub
- bla
- blub
+ +
+ + +
+ +
+ + + {#if onThisDayYearsInvalid} + + {/if} +
+ Trage hier alle vergangenen Jahre ein, die angezeigt werden sollen. + Beispiel: 1,5,10. Benutze Komma zur Trennung, verzichte auf + Leerzeichen. +
+
Login bei Reload
@@ -696,99 +792,143 @@ bla
blub
- -

Tags

-
- Hier können Tags bearbeitet oder auch vollständig aus DailyTxT gelöscht werden. -
- {#each $tags as tag} - - {#if deleteTagId === tag.id} - -
-

Vorlagen

-
- {#if oldTemplateName !== templateName || oldTemplateText !== templateText} -
- {/if} +
+

Vorlagen

+
+ {#if oldTemplateName !== templateName || oldTemplateText !== templateText} +
+ {/if} -
- + - {/each} - -
+ {#each $templates as template, index} + + {/each} + +
-
+
- {#if confirmDeleteTemplate} -
- Vorlage {$templates[selectedTemplate].name} wirklich löschen? + {#if confirmDeleteTemplate} +
+ Vorlage {$templates[selectedTemplate].name} wirklich löschen? + + +
+ {/if} +
+ { + confirmDeleteTemplate = !confirmDeleteTemplate; + }}> +
+ +
- {/if} -
- - -
- -
-
-
-
-

Daten

-
Export
-
Import
-
+
+

Daten

+
Export
+
Import
+
-
-

Sicherheit

-
Password ändern
-
Backup-Keys
-
Username ändern
-
Konto löschen
-
+
+

Sicherheit

+
Password ändern
+
Backup-Keys
+
Username ändern
+
Konto löschen
+
-
-

About

- Version:
- Changelog:
- Link zu github +
+

About

+ Version:
+ Changelog:
+ Link zu github +
+ - -
-