From a79bd985847e186d2926b3cc3dde8abe725278ec Mon Sep 17 00:00:00 2001 From: Jafer Sharfeddine Date: Wed, 30 Sep 2026 15:53:04 +0200 Subject: [PATCH] open loaded example diagram directly after loading an example --- .../landing-page/landing-page.component.ts | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/frontend/src/app/components/landing-page/landing-page.component.ts b/frontend/src/app/components/landing-page/landing-page.component.ts index 6ad3a9d0..b3cca2b7 100644 --- a/frontend/src/app/components/landing-page/landing-page.component.ts +++ b/frontend/src/app/components/landing-page/landing-page.component.ts @@ -2,7 +2,7 @@ import { Component, OnInit, inject } from "@angular/core"; import { MatButtonModule } from "@angular/material/button"; import { MatIconModule } from "@angular/material/icon"; -import { ActivatedRoute } from "@angular/router"; +import { ActivatedRoute, Router } from "@angular/router"; import { ProjectService } from "../../services/project/project.service"; import { MatDialog } from "@angular/material/dialog"; import { OpenProjectDialogComponent } from "./open-project-dialog/open-project-dialog.component"; @@ -16,6 +16,10 @@ import { ButtonDirective, ButtonIcon, ButtonLabel } from "primeng/button"; import { Menubar } from "primeng/menubar"; import { DialogService, DynamicDialogRef } from "primeng/dynamicdialog"; import { LocalDirectory } from "../../services/project/types/api-elements"; +import { + DiagramFile, + ProjectDirectory, +} from "../../services/project/types/project-elements"; @Component({ selector: "app-landing-page", @@ -36,6 +40,7 @@ import { LocalDirectory } from "../../services/project/types/api-elements"; }) export class LandingPageComponent { private route = inject(ActivatedRoute); + private router = inject(Router); private projectService = inject(ProjectService); private dialog = inject(MatDialog); dialogService = inject(DialogService); @@ -113,7 +118,36 @@ export class LandingPageComponent { selectedExample.project, selectedExample.name, ); + this.openFirstDiagram(this.projectService.root); } }); } + + private openFirstDiagram(directory: ProjectDirectory) { + const diagram = this.findFirstDiagram(directory); + if (diagram) { + this.router.navigate(["editor/diagram/", diagram.path], { + queryParamsHandling: "preserve", + }); + } + } + + private findFirstDiagram( + directory: ProjectDirectory, + ): DiagramFile | undefined { + for (const element of directory.contents) { + if (element instanceof DiagramFile) { + return element; + } + } + for (const element of directory.contents) { + if (element instanceof ProjectDirectory) { + const diagram = this.findFirstDiagram(element); + if (diagram) { + return diagram; + } + } + } + return undefined; + } }