Enhance alias filter functionality and improve data handling in Svelte components
Publish telemt-api gateway Docker image / test (push) Successful in 26s
Publish telemt-api gateway Docker image / build-and-push (push) Successful in 2m13s

- Updated the alias filter logic to prevent selected aliases from disappearing during partial or empty responses.
- Refactored the alias filter change handling to a dedicated function for better readability and maintainability.
- Removed redundant alias filter validation in the users page to streamline the alias selection process.
This commit is contained in:
Denozordec
2026-04-10 15:51:15 +07:00
parent 68b74a861d
commit af37331284
2 changed files with 12 additions and 6 deletions
+12 -5
View File
@@ -138,10 +138,15 @@
summary = s.data;
fleet = f.data ?? null;
uniqueIps = u.data ?? null;
availableAliases = collectAliases(
const nextAliases = collectAliases(
(fleet?.servers ?? []).map((x) => x.alias),
(summary?.servers ?? []).map((x) => x.alias)
);
// Не сужаем список до текущего фильтра: иначе выбранный alias
// может исчезать из селекта при частичных/пустых ответах.
availableAliases = Array.from(new Set([...availableAliases, ...nextAliases])).sort((a, b) =>
a.localeCompare(b)
);
lastSuccessAtMs = Date.now();
// Как бейдж «OK» в таблице: только health + system/info (без x.ok — в JSON поле ok опционально).
@@ -230,6 +235,11 @@
await load();
}
async function handleAliasFilterChange(nextAlias: string) {
aliasFilter = nextAlias;
await applyAliasIfChanged(nextAlias);
}
let queryKey = $derived(page.url.searchParams.toString());
$effect(() => {
queryKey;
@@ -526,10 +536,7 @@
<AliasFilterSelect
availableAliases={availableAliases}
bind:value={aliasFilter}
onValueChange={(next) => {
aliasFilter = next;
void applyAliasIfChanged(next);
}}
onValueChange={(next) => void handleAliasFilterChange(next)}
/>
<FleetRefreshInput bind:value={refreshInput} onValueChange={() => void applyControls()} />
</div>
-1
View File
@@ -172,7 +172,6 @@
.filter((a): a is string => typeof a === 'string' && a.length > 0)
.sort((a, b) => a.localeCompare(b));
availableAliases = aliases;
if (aliasFilter !== 'all' && !aliases.includes(aliasFilter)) aliasFilter = 'all';
} catch {
availableAliases = [];
}