refactor: enhance module interval label logic and add reset buttons in edit forms
CI / changes (push) Successful in 6s
CI / openapi (push) Has been skipped
CI / go (push) Has been skipped
CI / docker-web (deploy/docker/evobgp-web/Dockerfile, , evobgp-web) (push) Successful in 1m5s
CI / docker-web (deploy/docker/evobgp-web/Dockerfile, evobgp-all, evobgp-web-all) (push) Successful in 1m1s
CI / docker-bird (push) Has been skipped
CI / bird2 (push) Has been skipped
CI / docker-go-prime (push) Has been skipped
CI / docker-go (deploy/docker/evobgp-agent/Dockerfile, , evobgp-agent) (push) Has been skipped
CI / docker-go (evobgp-all, 1, deploy/docker/gobinary/Dockerfile, , evobgp-all) (push) Has been skipped
CI / docker-go (evobgp-api, 1, deploy/docker/gobinary/Dockerfile, , evobgp-api) (push) Has been skipped
CI / docker-go (evobgp-deploy, 0, deploy/docker/gobinary/Dockerfile, , evobgp-deploy) (push) Has been skipped
CI / docker-go (evobgp-ingest, 0, deploy/docker/gobinary/Dockerfile, , evobgp-ingest) (push) Has been skipped
CI / docker-go (evobgp-node, 0, deploy/docker/gobinary/Dockerfile, , evobgp-node) (push) Has been skipped
CI / docker-go (evobgp-render, 0, deploy/docker/gobinary/Dockerfile, , evobgp-render) (push) Has been skipped
CI / docker-go (evobgp-scheduler, 0, deploy/docker/gobinary/Dockerfile, , evobgp-scheduler) (push) Has been skipped

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.
This commit is contained in:
Denozordec
2026-04-08 19:39:17 +07:00
parent 1f85654653
commit b99fc179ab
2 changed files with 48 additions and 8 deletions
+12 -4
View File
@@ -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) {
+36 -4
View File
@@ -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}
</SelectContent>
</Select>
<Button
type="button"
variant="ghost"
size="sm"
class="h-7 px-2"
onclick={() => {
editDefaultCommunitySelect = NONE_OPTION;
editForm.default_community_id = null;
}}
>
Сбросить
</Button>
</div>
<div class="space-y-1.5">
<Label for="e-doh">DoH профиль</Label>
@@ -1343,6 +1363,18 @@
{/each}
</SelectContent>
</Select>
<Button
type="button"
variant="ghost"
size="sm"
class="h-7 px-2"
onclick={() => {
editDohProfileSelect = NONE_OPTION;
editForm.doh_profile_id = null;
}}
>
Сбросить
</Button>
</div>
<div
class="border-border bg-muted/30 flex flex-row items-center justify-between gap-4 rounded-lg border p-3"