From c451f3dd72634960cdb61a86ff779a30883d7980 Mon Sep 17 00:00:00 2001 From: "alexei.dolgolyov" Date: Mon, 23 Mar 2026 21:54:13 +0300 Subject: [PATCH] feat: filter entity selectors by global provider filter Provider selectors in notification tracker, command tracker, and actions forms now only show providers matching the global provider type filter. Command config selector in command trackers also filters by provider type. --- frontend/src/routes/actions/+page.svelte | 8 +++++--- frontend/src/routes/command-trackers/+page.svelte | 8 ++++++-- frontend/src/routes/notification-trackers/+page.svelte | 4 +++- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/frontend/src/routes/actions/+page.svelte b/frontend/src/routes/actions/+page.svelte index 76a35b4..e7cfb42 100644 --- a/frontend/src/routes/actions/+page.svelte +++ b/frontend/src/routes/actions/+page.svelte @@ -52,9 +52,11 @@ return caps && caps.action_types && caps.action_types.length > 0; })); - let providerItems = $derived(actionProviders.map((p: any) => ({ - value: p.id, label: p.name, icon: providerDefaultIcon(p), desc: p.type, - }))); + let providerItems = $derived(actionProviders + .filter((p: any) => !globalProviderFilter.providerType || p.type === globalProviderFilter.providerType) + .map((p: any) => ({ + value: p.id, label: p.name, icon: providerDefaultIcon(p), desc: p.type, + }))); // Action types for selected provider let selectedProviderType = $derived(providers.find((p: any) => p.id === form.provider_id)?.type || ''); diff --git a/frontend/src/routes/command-trackers/+page.svelte b/frontend/src/routes/command-trackers/+page.svelte index 41add61..a6d653e 100644 --- a/frontend/src/routes/command-trackers/+page.svelte +++ b/frontend/src/routes/command-trackers/+page.svelte @@ -31,8 +31,12 @@ let providers = $derived(providersCache.items); let commandConfigs = $derived(commandConfigsCache.items); let telegramBots = $derived(telegramBotsCache.items); - const providerItems = $derived(providers.map(p => ({ value: p.id, label: p.name, icon: providerDefaultIcon(p), desc: p.type }))); - const configItems = $derived(filteredConfigs().map((c: any) => ({ value: c.id, label: c.name, icon: c.icon || 'mdiCog', desc: c.provider_type }))); + const providerItems = $derived(providers + .filter(p => !globalProviderFilter.providerType || p.type === globalProviderFilter.providerType) + .map(p => ({ value: p.id, label: p.name, icon: providerDefaultIcon(p), desc: p.type }))); + const configItems = $derived(filteredConfigs() + .filter((c: any) => !globalProviderFilter.providerType || c.provider_type === globalProviderFilter.providerType) + .map((c: any) => ({ value: c.id, label: c.name, icon: c.icon || 'mdiCog', desc: c.provider_type }))); const botItems = $derived(telegramBots.map(b => ({ value: b.id, label: b.name, icon: b.icon || 'mdiRobot', desc: b.bot_username ? `@${b.bot_username}` : '' }))); let loaded = $state(false); let showForm = $state(false); diff --git a/frontend/src/routes/notification-trackers/+page.svelte b/frontend/src/routes/notification-trackers/+page.svelte index a379e23..a5ac57e 100644 --- a/frontend/src/routes/notification-trackers/+page.svelte +++ b/frontend/src/routes/notification-trackers/+page.svelte @@ -34,7 +34,9 @@ (!effectiveProviderId || t.provider_id === effectiveProviderId) )); let providers = $derived(providersCache.items); - const providerItems = $derived(providers.map(p => ({ value: p.id, label: p.name, icon: providerDefaultIcon(p), desc: p.type }))); + const providerItems = $derived(providers + .filter(p => !globalProviderFilter.providerType || p.type === globalProviderFilter.providerType) + .map(p => ({ value: p.id, label: p.name, icon: providerDefaultIcon(p), desc: p.type }))); let targets = $derived(targetsCache.items); let trackingConfigs = $derived(trackingConfigsCache.items); let templateConfigs = $derived(templateConfigsCache.items);