From e1b4a86d54a10b0ae26ccd5dbb9c079dec29cf16 Mon Sep 17 00:00:00 2001 From: Max Novelli Date: Tue, 17 Jun 2025 13:42:27 +0200 Subject: [PATCH 1/7] added configurable main page --- src/app/app-config.service.ts | 17 +++++++++++++++++ src/app/app-routing/app-routing.module.ts | 5 ++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/app/app-config.service.ts b/src/app/app-config.service.ts index 285d15e32..19744f4bc 100644 --- a/src/app/app-config.service.ts +++ b/src/app/app-config.service.ts @@ -35,6 +35,13 @@ export class HelpMessages { } } +export enum MainPageOptions { + DATASETS = "/datasets", + PROPOSALS = "/proposals", + INSTRUMENTS = "/instruments", + SAMPLES = "/samples" +} + export interface AppConfigInterface { skipSciCatLoginPageEnabled?: boolean; accessTokenPrefix: string; @@ -106,6 +113,7 @@ export interface AppConfigInterface { datasetDetailComponent?: DatasetDetailComponentConfig; labelsLocalization?: LabelsLocalization; dateFormat?: string; + defaultMainPage?: string; } @Injectable({ @@ -132,6 +140,15 @@ export class AppConfigService { console.error("No config provided."); } } + + const config: AppConfigInterface = (this.appConfig as AppConfigInterface); + if ("defaultMainPage" in config && Object.keys(MainPageOptions).includes(config.defaultMainPage)) { + config.defaultMainPage = MainPageOptions[config.defaultMainPage]; + } else { + config.defaultMainPage = MainPageOptions.DATASETS; + } + + this.appConfig = config; } getConfig(): AppConfigInterface { diff --git a/src/app/app-routing/app-routing.module.ts b/src/app/app-routing/app-routing.module.ts index 3310f2c05..34a72923a 100644 --- a/src/app/app-routing/app-routing.module.ts +++ b/src/app/app-routing/app-routing.module.ts @@ -5,6 +5,8 @@ import { ErrorPageComponent } from "shared/modules/error-page/error-page.compone import { AppLayoutComponent } from "_layout/app-layout/app-layout.component"; import { AppMainLayoutComponent } from "_layout/app-main-layout/app-main-layout.component"; import { ServiceGuard } from "./service.guard"; +import { MainPageGuard } from "./main-page"; +import { DummyComponent } from "./dummy.component"; export const routes: Routes = [ { @@ -13,7 +15,8 @@ export const routes: Routes = [ children: [ { path: "", - redirectTo: "/datasets", + canActivate: [MainPageGuard], + component: DummyComponent, pathMatch: "full", }, { From 42959fa5c54eb346c1b578d7ab19dd2d07f0727d Mon Sep 17 00:00:00 2001 From: Max Novelli Date: Tue, 17 Jun 2025 17:35:55 +0200 Subject: [PATCH 2/7] added new files and fixed linting --- src/app/app-config.service.spec.ts | 6 +++- src/app/app-config.service.ts | 4 +-- src/app/app-routing/dummy.component.ts | 45 ++++++++++++++++++++++++++ src/app/app-routing/main-page.ts | 18 +++++++++++ 4 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 src/app/app-routing/dummy.component.ts create mode 100644 src/app/app-routing/main-page.ts diff --git a/src/app/app-config.service.spec.ts b/src/app/app-config.service.spec.ts index 2dfc56b35..dc8699117 100644 --- a/src/app/app-config.service.spec.ts +++ b/src/app/app-config.service.spec.ts @@ -1,6 +1,10 @@ import { HttpClient } from "@angular/common/http"; import { TestBed } from "@angular/core/testing"; -import { AppConfigInterface, AppConfigService, HelpMessages } from "app-config.service"; +import { + AppConfigInterface, + AppConfigService, + HelpMessages +} from "app-config.service"; import { of } from "rxjs"; import { MockHttp } from "shared/MockStubs"; diff --git a/src/app/app-config.service.ts b/src/app/app-config.service.ts index 19744f4bc..e8561d954 100644 --- a/src/app/app-config.service.ts +++ b/src/app/app-config.service.ts @@ -39,7 +39,7 @@ export enum MainPageOptions { DATASETS = "/datasets", PROPOSALS = "/proposals", INSTRUMENTS = "/instruments", - SAMPLES = "/samples" + SAMPLES = "/samples", } export interface AppConfigInterface { @@ -141,7 +141,7 @@ export class AppConfigService { } } - const config: AppConfigInterface = (this.appConfig as AppConfigInterface); + const config: AppConfigInterface = this.appConfig as AppConfigInterface; if ("defaultMainPage" in config && Object.keys(MainPageOptions).includes(config.defaultMainPage)) { config.defaultMainPage = MainPageOptions[config.defaultMainPage]; } else { diff --git a/src/app/app-routing/dummy.component.ts b/src/app/app-routing/dummy.component.ts new file mode 100644 index 000000000..9709abc76 --- /dev/null +++ b/src/app/app-routing/dummy.component.ts @@ -0,0 +1,45 @@ +// dummy.component.ts +import { Component } from "@angular/core"; + +@Component({ + selector: "app-dummy", + template: ` +
+
+

Redirecting, please wait...

+
+ `, + styles: [ + ` + .dummy-wrapper { + display: flex; + flex-direction: column; + al0ign-items: center; + justify-content: center; + height: 100vh; + font-family: Arial, sans-serif; + color: #444; + } + + .spinner { + border: 4px solid #f3f3f3; + border-top: 4px solid #3f51b5; + border-radius: 50%; + width: 40px; + height: 40px; + animation: spin 1s linear infinite; + margin-bottom: 10px; + } + + @keyframes spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } + } + `, + ], +}) +export class DummyComponent {} diff --git a/src/app/app-routing/main-page.ts b/src/app/app-routing/main-page.ts new file mode 100644 index 000000000..78c855726 --- /dev/null +++ b/src/app/app-routing/main-page.ts @@ -0,0 +1,18 @@ +import { Injectable } from "@angular/core"; +import { CanActivate, Router } from "@angular/router"; +import { AppConfigService } from "app-config.service"; + +@Injectable({ providedIn: "root" }) +export class MainPageGuard implements CanActivate { + constructor( + private router: Router, + private appConfigService: AppConfigService + ) {} + + canActivate(): boolean { + const defaultMainPage = this.appConfigService.getConfig().defaultMainPage; + + this.router.navigate([defaultMainPage]); + return false; + } +} \ No newline at end of file From 06d9518efb98c82d45c1c873d9fb052747dcb0e5 Mon Sep 17 00:00:00 2001 From: Max Novelli Date: Tue, 17 Jun 2025 17:44:22 +0200 Subject: [PATCH 3/7] resolving issues to get successful tests --- src/app/app-config.service.spec.ts | 8 ++++---- src/app/app-config.service.ts | 5 ++++- src/app/app-routing/main-page.ts | 4 ++-- .../dataset-detail-wrapper.component.spec.ts | 6 +++--- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/app/app-config.service.spec.ts b/src/app/app-config.service.spec.ts index dc8699117..4088329bc 100644 --- a/src/app/app-config.service.spec.ts +++ b/src/app/app-config.service.spec.ts @@ -1,9 +1,9 @@ import { HttpClient } from "@angular/common/http"; import { TestBed } from "@angular/core/testing"; -import { - AppConfigInterface, - AppConfigService, - HelpMessages +import { + AppConfigInterface, + AppConfigService, + HelpMessages, } from "app-config.service"; import { of } from "rxjs"; import { MockHttp } from "shared/MockStubs"; diff --git a/src/app/app-config.service.ts b/src/app/app-config.service.ts index e8561d954..ec1170df6 100644 --- a/src/app/app-config.service.ts +++ b/src/app/app-config.service.ts @@ -142,7 +142,10 @@ export class AppConfigService { } const config: AppConfigInterface = this.appConfig as AppConfigInterface; - if ("defaultMainPage" in config && Object.keys(MainPageOptions).includes(config.defaultMainPage)) { + if ( + "defaultMainPage" in config && + Object.keys(MainPageOptions).includes(config.defaultMainPage) + ) { config.defaultMainPage = MainPageOptions[config.defaultMainPage]; } else { config.defaultMainPage = MainPageOptions.DATASETS; diff --git a/src/app/app-routing/main-page.ts b/src/app/app-routing/main-page.ts index 78c855726..f8e5bca49 100644 --- a/src/app/app-routing/main-page.ts +++ b/src/app/app-routing/main-page.ts @@ -6,7 +6,7 @@ import { AppConfigService } from "app-config.service"; export class MainPageGuard implements CanActivate { constructor( private router: Router, - private appConfigService: AppConfigService + private appConfigService: AppConfigService, ) {} canActivate(): boolean { @@ -15,4 +15,4 @@ export class MainPageGuard implements CanActivate { this.router.navigate([defaultMainPage]); return false; } -} \ No newline at end of file +} diff --git a/src/app/datasets/dataset-detail/dataset-detail-wrapper.component.spec.ts b/src/app/datasets/dataset-detail/dataset-detail-wrapper.component.spec.ts index 35af74dc5..c2273f935 100644 --- a/src/app/datasets/dataset-detail/dataset-detail-wrapper.component.spec.ts +++ b/src/app/datasets/dataset-detail/dataset-detail-wrapper.component.spec.ts @@ -1,6 +1,6 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; import { NO_ERRORS_SCHEMA } from "@angular/core"; -import { AppConfig, AppConfigService } from "app-config.service"; +import { AppConfigInterface, AppConfigService } from "app-config.service"; import { DatasetDetailWrapperComponent } from "./dataset-detail-wrapper.component"; import { DatasetDetailComponent } from "./dataset-detail/dataset-detail.component"; import { DatasetDetailDynamicComponent } from "./dataset-detail-dynamic/dataset-detail-dynamic.component"; @@ -69,7 +69,7 @@ describe("DatasetDetailWrapperComponent", () => { datasetDetailComponent: { enableCustomizedComponent: true, }, - } as AppConfig); + } as AppConfigInterface); fixture.detectChanges(); @@ -82,7 +82,7 @@ describe("DatasetDetailWrapperComponent", () => { datasetDetailComponent: { enableCustomizedComponent: false, }, - } as AppConfig); + } as AppConfigInterface); fixture.detectChanges(); From 85ef21a55c66e9b74aeb6e67c9ed2324b8f025d2 Mon Sep 17 00:00:00 2001 From: Max Novelli Date: Tue, 17 Jun 2025 19:16:06 +0200 Subject: [PATCH 4/7] Fixed tests for app config --- src/app/app-config.service.spec.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/app/app-config.service.spec.ts b/src/app/app-config.service.spec.ts index 4088329bc..1d0feb766 100644 --- a/src/app/app-config.service.spec.ts +++ b/src/app/app-config.service.spec.ts @@ -9,6 +9,7 @@ import { of } from "rxjs"; import { MockHttp } from "shared/MockStubs"; const appConfig: AppConfigInterface = { + defaultMainPage: '/datasets', skipSciCatLoginPageEnabled: false, accessTokenPrefix: "", addDatasetEnabled: true, From 5c30dacffbeea4251e79c0f1f520710148a5cda6 Mon Sep 17 00:00:00 2001 From: Max Novelli Date: Wed, 18 Jun 2025 13:46:40 +0200 Subject: [PATCH 5/7] fixed linting --- src/app/app-config.service.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/app-config.service.spec.ts b/src/app/app-config.service.spec.ts index 1d0feb766..15cb0b916 100644 --- a/src/app/app-config.service.spec.ts +++ b/src/app/app-config.service.spec.ts @@ -9,7 +9,7 @@ import { of } from "rxjs"; import { MockHttp } from "shared/MockStubs"; const appConfig: AppConfigInterface = { - defaultMainPage: '/datasets', + defaultMainPage: "/datasets", skipSciCatLoginPageEnabled: false, accessTokenPrefix: "", addDatasetEnabled: true, From 8147c6e4be635599be459e80234f06f8bbea3af9 Mon Sep 17 00:00:00 2001 From: Max Novelli Date: Thu, 19 Jun 2025 16:23:53 +0200 Subject: [PATCH 6/7] feat: added default main page for authenticated and unauthenticated users --- src/app/app-config.service.spec.ts | 5 ++- src/app/app-config.service.ts | 17 +++++++-- src/app/app-routing/app-routing.module.ts | 4 +- src/app/app-routing/dummy.component.ts | 45 ----------------------- src/app/app-routing/main-page.ts | 11 ++++-- src/assets/config.json | 6 ++- 6 files changed, 32 insertions(+), 56 deletions(-) delete mode 100644 src/app/app-routing/dummy.component.ts diff --git a/src/app/app-config.service.spec.ts b/src/app/app-config.service.spec.ts index 15cb0b916..2c61950d4 100644 --- a/src/app/app-config.service.spec.ts +++ b/src/app/app-config.service.spec.ts @@ -9,7 +9,10 @@ import { of } from "rxjs"; import { MockHttp } from "shared/MockStubs"; const appConfig: AppConfigInterface = { - defaultMainPage: "/datasets", + defaultMainPage: { + unauthenticatedUser: "DATASETS", + authenticatedUser: "DATASETS" + }, skipSciCatLoginPageEnabled: false, accessTokenPrefix: "", addDatasetEnabled: true, diff --git a/src/app/app-config.service.ts b/src/app/app-config.service.ts index ec1170df6..254c50961 100644 --- a/src/app/app-config.service.ts +++ b/src/app/app-config.service.ts @@ -42,6 +42,11 @@ export enum MainPageOptions { SAMPLES = "/samples", } +export class MainPageConfiguration { + unauthenticatedUser: keyof typeof MainPageOptions; + authenticatedUser: keyof typeof MainPageOptions; +} + export interface AppConfigInterface { skipSciCatLoginPageEnabled?: boolean; accessTokenPrefix: string; @@ -113,7 +118,7 @@ export interface AppConfigInterface { datasetDetailComponent?: DatasetDetailComponentConfig; labelsLocalization?: LabelsLocalization; dateFormat?: string; - defaultMainPage?: string; + defaultMainPage?: MainPageConfiguration; } @Injectable({ @@ -144,11 +149,15 @@ export class AppConfigService { const config: AppConfigInterface = this.appConfig as AppConfigInterface; if ( "defaultMainPage" in config && - Object.keys(MainPageOptions).includes(config.defaultMainPage) + config.defaultMainPage instanceof MainPageConfiguration ) { - config.defaultMainPage = MainPageOptions[config.defaultMainPage]; + config.defaultMainPage.unauthenticatedUser = Object.keys(MainPageOptions).includes(config.defaultMainPage.unauthenticatedUser) ? config.defaultMainPage.unauthenticatedUser : "DATASETS"; + config.defaultMainPage.authenticatedUser = Object.keys(MainPageOptions).includes(config.defaultMainPage.authenticatedUser) ? config.defaultMainPage.authenticatedUser : "DATASETS"; } else { - config.defaultMainPage = MainPageOptions.DATASETS; + config.defaultMainPage = { + unauthenticatedUser: "DATASETS", + authenticatedUser: "DATASETS", + } as MainPageConfiguration; } this.appConfig = config; diff --git a/src/app/app-routing/app-routing.module.ts b/src/app/app-routing/app-routing.module.ts index 34a72923a..15b871c60 100644 --- a/src/app/app-routing/app-routing.module.ts +++ b/src/app/app-routing/app-routing.module.ts @@ -6,7 +6,7 @@ import { AppLayoutComponent } from "_layout/app-layout/app-layout.component"; import { AppMainLayoutComponent } from "_layout/app-main-layout/app-main-layout.component"; import { ServiceGuard } from "./service.guard"; import { MainPageGuard } from "./main-page"; -import { DummyComponent } from "./dummy.component"; +import { RedirectingComponent } from "./redirecting.component"; export const routes: Routes = [ { @@ -16,7 +16,7 @@ export const routes: Routes = [ { path: "", canActivate: [MainPageGuard], - component: DummyComponent, + component: RedirectingComponent, pathMatch: "full", }, { diff --git a/src/app/app-routing/dummy.component.ts b/src/app/app-routing/dummy.component.ts deleted file mode 100644 index 9709abc76..000000000 --- a/src/app/app-routing/dummy.component.ts +++ /dev/null @@ -1,45 +0,0 @@ -// dummy.component.ts -import { Component } from "@angular/core"; - -@Component({ - selector: "app-dummy", - template: ` -
-
-

Redirecting, please wait...

-
- `, - styles: [ - ` - .dummy-wrapper { - display: flex; - flex-direction: column; - al0ign-items: center; - justify-content: center; - height: 100vh; - font-family: Arial, sans-serif; - color: #444; - } - - .spinner { - border: 4px solid #f3f3f3; - border-top: 4px solid #3f51b5; - border-radius: 50%; - width: 40px; - height: 40px; - animation: spin 1s linear infinite; - margin-bottom: 10px; - } - - @keyframes spin { - 0% { - transform: rotate(0deg); - } - 100% { - transform: rotate(360deg); - } - } - `, - ], -}) -export class DummyComponent {} diff --git a/src/app/app-routing/main-page.ts b/src/app/app-routing/main-page.ts index f8e5bca49..c4eb1633e 100644 --- a/src/app/app-routing/main-page.ts +++ b/src/app/app-routing/main-page.ts @@ -1,18 +1,23 @@ import { Injectable } from "@angular/core"; import { CanActivate, Router } from "@angular/router"; -import { AppConfigService } from "app-config.service"; +import { AppConfigService, MainPageConfiguration, MainPageOptions } from "app-config.service"; +import { Store } from "@ngrx/store"; +import { selectIsLoggedIn } from "state-management/selectors/user.selectors"; @Injectable({ providedIn: "root" }) export class MainPageGuard implements CanActivate { constructor( private router: Router, private appConfigService: AppConfigService, + private store: Store, ) {} canActivate(): boolean { - const defaultMainPage = this.appConfigService.getConfig().defaultMainPage; + const defaultMainPage: MainPageConfiguration = this.appConfigService.getConfig().defaultMainPage; - this.router.navigate([defaultMainPage]); + this.router.navigate([MainPageOptions[ + this.store.select(selectIsLoggedIn) ? defaultMainPage.authenticatedUser : defaultMainPage.unauthenticatedUser + ]]); return false; } } diff --git a/src/assets/config.json b/src/assets/config.json index bdfae34cc..fc905fe5f 100644 --- a/src/assets/config.json +++ b/src/assets/config.json @@ -248,5 +248,9 @@ } } } - } + }, + "defaultMainPage": { + "unauthenticatedUser": "DATASETS", + "authenticatedUser": "DATASETS" + }, } From 813500cdcba0f07b30f05406adff31db90ad2916 Mon Sep 17 00:00:00 2001 From: Max Novelli Date: Thu, 19 Jun 2025 22:20:05 +0200 Subject: [PATCH 7/7] Added default main page for authenticated and non authenticated users --- package.json | 1 + src/app/app-config.service.spec.ts | 4 +- src/app/app-config.service.ts | 28 +++++++++--- src/app/app-routing/main-page.ts | 26 +++++++---- src/app/app-routing/redirecting.component.ts | 46 ++++++++++++++++++++ src/assets/config.json | 2 +- 6 files changed, 91 insertions(+), 16 deletions(-) create mode 100644 src/app/app-routing/redirecting.component.ts diff --git a/package.json b/package.json index 246c1d445..cabce77b1 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "watch": "ng build --watch --configuration default", "test": "ng test --watch=false --source-map=false", "lint": "ng lint", + "lint:errors": "ng lint --quiet", "lint:fix": "ng lint --fix", "betterer": "betterer", "cypress:open": "cypress open", diff --git a/src/app/app-config.service.spec.ts b/src/app/app-config.service.spec.ts index 2c61950d4..23c03b6c1 100644 --- a/src/app/app-config.service.spec.ts +++ b/src/app/app-config.service.spec.ts @@ -10,8 +10,8 @@ import { MockHttp } from "shared/MockStubs"; const appConfig: AppConfigInterface = { defaultMainPage: { - unauthenticatedUser: "DATASETS", - authenticatedUser: "DATASETS" + nonAuthenticatedUser: "DATASETS", + authenticatedUser: "DATASETS", }, skipSciCatLoginPageEnabled: false, accessTokenPrefix: "", diff --git a/src/app/app-config.service.ts b/src/app/app-config.service.ts index 254c50961..0c5a90503 100644 --- a/src/app/app-config.service.ts +++ b/src/app/app-config.service.ts @@ -43,7 +43,7 @@ export enum MainPageOptions { } export class MainPageConfiguration { - unauthenticatedUser: keyof typeof MainPageOptions; + nonAuthenticatedUser: keyof typeof MainPageOptions; authenticatedUser: keyof typeof MainPageOptions; } @@ -121,6 +121,16 @@ export interface AppConfigInterface { defaultMainPage?: MainPageConfiguration; } +function isMainPageConfiguration(obj: any): obj is MainPageConfiguration { + const validKeys = Object.keys(MainPageOptions); + return ( + obj && + typeof obj === "object" && + validKeys.includes(obj.nonAuthenticatedUser) && + validKeys.includes(obj.authenticatedUser) + ); +} + @Injectable({ providedIn: "root", }) @@ -149,13 +159,21 @@ export class AppConfigService { const config: AppConfigInterface = this.appConfig as AppConfigInterface; if ( "defaultMainPage" in config && - config.defaultMainPage instanceof MainPageConfiguration + isMainPageConfiguration(config.defaultMainPage) ) { - config.defaultMainPage.unauthenticatedUser = Object.keys(MainPageOptions).includes(config.defaultMainPage.unauthenticatedUser) ? config.defaultMainPage.unauthenticatedUser : "DATASETS"; - config.defaultMainPage.authenticatedUser = Object.keys(MainPageOptions).includes(config.defaultMainPage.authenticatedUser) ? config.defaultMainPage.authenticatedUser : "DATASETS"; + config.defaultMainPage.nonAuthenticatedUser = Object.keys( + MainPageOptions, + ).includes(config.defaultMainPage.nonAuthenticatedUser) + ? config.defaultMainPage.nonAuthenticatedUser + : "DATASETS"; + config.defaultMainPage.authenticatedUser = Object.keys( + MainPageOptions, + ).includes(config.defaultMainPage.authenticatedUser) + ? config.defaultMainPage.authenticatedUser + : "DATASETS"; } else { config.defaultMainPage = { - unauthenticatedUser: "DATASETS", + nonAuthenticatedUser: "DATASETS", authenticatedUser: "DATASETS", } as MainPageConfiguration; } diff --git a/src/app/app-routing/main-page.ts b/src/app/app-routing/main-page.ts index c4eb1633e..35b26b3f7 100644 --- a/src/app/app-routing/main-page.ts +++ b/src/app/app-routing/main-page.ts @@ -1,23 +1,33 @@ import { Injectable } from "@angular/core"; import { CanActivate, Router } from "@angular/router"; -import { AppConfigService, MainPageConfiguration, MainPageOptions } from "app-config.service"; -import { Store } from "@ngrx/store"; -import { selectIsLoggedIn } from "state-management/selectors/user.selectors"; +import { + AppConfigService, + MainPageConfiguration, + MainPageOptions, +} from "app-config.service"; +import { AuthService } from "shared/services/auth/auth.service"; @Injectable({ providedIn: "root" }) export class MainPageGuard implements CanActivate { constructor( private router: Router, private appConfigService: AppConfigService, - private store: Store, + private authService: AuthService, ) {} canActivate(): boolean { - const defaultMainPage: MainPageConfiguration = this.appConfigService.getConfig().defaultMainPage; + const defaultMainPage: MainPageConfiguration = + this.appConfigService.getConfig().defaultMainPage; - this.router.navigate([MainPageOptions[ - this.store.select(selectIsLoggedIn) ? defaultMainPage.authenticatedUser : defaultMainPage.unauthenticatedUser - ]]); + const userLoggedIn = this.authService.isAuthenticated(); + + this.router.navigate([ + MainPageOptions[ + userLoggedIn + ? defaultMainPage.authenticatedUser + : defaultMainPage.nonAuthenticatedUser + ], + ]); return false; } } diff --git a/src/app/app-routing/redirecting.component.ts b/src/app/app-routing/redirecting.component.ts new file mode 100644 index 000000000..936d85b11 --- /dev/null +++ b/src/app/app-routing/redirecting.component.ts @@ -0,0 +1,46 @@ +// dummy.component.ts +import { Component } from "@angular/core"; + +@Component({ + selector: "app-redirecting", + template: ` +
+ +
+

Redirecting, please wait...

+
+ `, + styles: [ + ` + .redirecting-wrapper { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 100vh; + font-family: Arial, sans-serif; + color: #444; + } + + .spinner { + border: 4px solid #f3f3f3; + border-top: 4px solid #3f51b5; + border-radius: 50%; + width: 40px; + height: 40px; + animation: spin 1s linear infinite; + margin-bottom: 10px; + } + + @keyframes spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } + } + `, + ], +}) +export class RedirectingComponent {} diff --git a/src/assets/config.json b/src/assets/config.json index fc905fe5f..f97e7cc9e 100644 --- a/src/assets/config.json +++ b/src/assets/config.json @@ -250,7 +250,7 @@ } }, "defaultMainPage": { - "unauthenticatedUser": "DATASETS", + "nonAuthenticatedUser": "DATASETS", "authenticatedUser": "DATASETS" }, }