From b99fc179abbdcdfb826f23c22cdf25aace573e60 Mon Sep 17 00:00:00 2001 From: Denozordec Date: Wed, 8 Apr 2026 19:39:17 +0700 Subject: [PATCH] refactor: enhance module interval label logic and add reset buttons in edit forms Refined the moduleIntervalLabel function to improve handling of cron expressions and refresh intervals, ensuring clearer display of module timing information. Added reset buttons for community and DoH profile selections in the edit forms, enhancing user experience by allowing quick resets to default values. --- web/src/routes/modules/+page.svelte | 16 ++++++-- .../routes/modules/[moduleId]/+page.svelte | 40 +++++++++++++++++-- 2 files changed, 48 insertions(+), 8 deletions(-) diff --git a/web/src/routes/modules/+page.svelte b/web/src/routes/modules/+page.svelte index 2037a70..d42ee2f 100644 --- a/web/src/routes/modules/+page.svelte +++ b/web/src/routes/modules/+page.svelte @@ -121,11 +121,19 @@ } function moduleIntervalLabel(moduleRow: ModuleRow): string { - const cron = typeof moduleRow.cron_expr === 'string' ? moduleRow.cron_expr.trim() : moduleRow.cron_expr; + const cron = typeof moduleRow.cron_expr === 'string' ? moduleRow.cron_expr.trim() : ''; + const raw = moduleRow.refresh_interval_sec as unknown; + const interval = + typeof raw === 'number' + ? raw + : typeof raw === 'string' && raw.trim().length > 0 + ? Number(raw) + : null; + const intervalLabel = interval !== null && Number.isFinite(interval) ? `${interval}с` : ''; + if (cron && intervalLabel) return `${intervalLabel} (${cron})`; if (cron) return cron; - return moduleRow.refresh_interval_sec !== null && moduleRow.refresh_interval_sec !== undefined - ? `${moduleRow.refresh_interval_sec}с` - : '—'; + if (intervalLabel) return intervalLabel; + return '—'; } function toggleModuleSelection(id: string) { diff --git a/web/src/routes/modules/[moduleId]/+page.svelte b/web/src/routes/modules/[moduleId]/+page.svelte index e30b640..c866b7e 100644 --- a/web/src/routes/modules/[moduleId]/+page.svelte +++ b/web/src/routes/modules/[moduleId]/+page.svelte @@ -751,11 +751,19 @@ } function moduleIntervalLabel(moduleRow: ModuleRow): string { - const cron = typeof moduleRow.cron_expr === 'string' ? moduleRow.cron_expr.trim() : moduleRow.cron_expr; + const cron = typeof moduleRow.cron_expr === 'string' ? moduleRow.cron_expr.trim() : ''; + const raw = moduleRow.refresh_interval_sec as unknown; + const interval = + typeof raw === 'number' + ? raw + : typeof raw === 'string' && raw.trim().length > 0 + ? Number(raw) + : null; + const intervalLabel = interval !== null && Number.isFinite(interval) ? `${interval}с` : ''; + if (cron && intervalLabel) return `${intervalLabel} (${cron})`; if (cron) return cron; - return moduleRow.refresh_interval_sec !== null && moduleRow.refresh_interval_sec !== undefined - ? `${moduleRow.refresh_interval_sec}с` - : '—'; + if (intervalLabel) return intervalLabel; + return '—'; } const activeTab = $derived.by(() => { @@ -1322,6 +1330,18 @@ {/each} +
@@ -1343,6 +1363,18 @@ {/each} +