From 87461745533cc5f5049340884d4aaf78263d1b62 Mon Sep 17 00:00:00 2001 From: master <> Date: Sat, 28 Mar 2026 19:57:24 +0200 Subject: [PATCH] Fix topology layout API call to not pass context filters by default The PlatformContextStore pre-selects regions/environments which caused the layout API to return 400. The topology page should show everything on initial load - filtering is done client-side via the filter bar. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../topology/topology-graph-page.component.ts | 13 +++------- .../topology/topology-layout.service.ts | 25 ++++++++----------- 2 files changed, 13 insertions(+), 25 deletions(-) diff --git a/src/Web/StellaOps.Web/src/app/features/topology/topology-graph-page.component.ts b/src/Web/StellaOps.Web/src/app/features/topology/topology-graph-page.component.ts index 08a20a5a6..87977c23f 100644 --- a/src/Web/StellaOps.Web/src/app/features/topology/topology-graph-page.component.ts +++ b/src/Web/StellaOps.Web/src/app/features/topology/topology-graph-page.component.ts @@ -10,7 +10,6 @@ import { FormsModule } from '@angular/forms'; import { RouterLink } from '@angular/router'; import { catchError, of, take } from 'rxjs'; -import { PlatformContextStore } from '../../core/context/platform-context.store'; import { TopologyLayoutService } from './topology-layout.service'; import { TopologyGraphComponent } from './topology-graph.component'; import { @@ -444,7 +443,6 @@ import { }) export class TopologyGraphPageComponent { private readonly layoutService = inject(TopologyLayoutService); - readonly context = inject(PlatformContextStore); readonly loading = signal(false); readonly error = signal(null); @@ -479,7 +477,7 @@ export class TopologyGraphPageComponent { const matchedRegionIds = new Set(); const filteredNodes = data.nodes.filter((n) => { - if (n.kind === 'region') return true; // keep all regions initially + if (n.kind === 'region') return true; const matchesSearch = !query || n.label.toLowerCase().includes(query) @@ -507,12 +505,7 @@ export class TopologyGraphPageComponent { }); constructor() { - this.context.initialize(); - - effect(() => { - this.context.contextVersion(); - this.load(); - }); + this.load(); } onNodeSelected(node: TopologyPositionedNode): void { @@ -535,7 +528,7 @@ export class TopologyGraphPageComponent { this.error.set(null); this.layoutService - .getLayout(this.context) + .getLayout() .pipe( take(1), catchError((err: unknown) => { diff --git a/src/Web/StellaOps.Web/src/app/features/topology/topology-layout.service.ts b/src/Web/StellaOps.Web/src/app/features/topology/topology-layout.service.ts index b28a16114..dd396ef19 100644 --- a/src/Web/StellaOps.Web/src/app/features/topology/topology-layout.service.ts +++ b/src/Web/StellaOps.Web/src/app/features/topology/topology-layout.service.ts @@ -2,30 +2,25 @@ import { HttpClient, HttpParams } from '@angular/common/http'; import { Injectable, inject } from '@angular/core'; import { Observable } from 'rxjs'; -import { PlatformContextStore } from '../../core/context/platform-context.store'; import { TopologyLayoutResponse } from './topology-layout.models'; @Injectable({ providedIn: 'root' }) export class TopologyLayoutService { private readonly http = inject(HttpClient); - getLayout( - context: PlatformContextStore, - options?: { - direction?: 'left-to-right' | 'top-to-bottom'; - effort?: 'draft' | 'balanced' | 'best'; - }, - ): Observable { + getLayout(options?: { + region?: string; + environment?: string; + direction?: 'left-to-right' | 'top-to-bottom'; + effort?: 'draft' | 'balanced' | 'best'; + }): Observable { let params = new HttpParams(); - const regions = context.selectedRegions(); - const environments = context.selectedEnvironments(); - - if (regions.length > 0) { - params = params.set('region', regions.join(',')); + if (options?.region) { + params = params.set('region', options.region); } - if (environments.length > 0) { - params = params.set('environment', environments.join(',')); + if (options?.environment) { + params = params.set('environment', options.environment); } if (options?.direction) { params = params.set('direction', options.direction);