From 53887551d2cf32fd4676f43dd2a7c947d89642df Mon Sep 17 00:00:00 2001 From: iizitounene Date: Wed, 16 Jul 2025 12:00:13 +0200 Subject: [PATCH 01/16] fix(store): persist cluster and project state in browser localStorage --- src/app/app.config.ts | 3 ++- src/app/core/store/app.storage.ts | 13 +++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 src/app/core/store/app.storage.ts diff --git a/src/app/app.config.ts b/src/app/app.config.ts index 1bb59c4..9ca25c2 100644 --- a/src/app/app.config.ts +++ b/src/app/app.config.ts @@ -11,12 +11,13 @@ import { APP_ROUTES } from './app.routes'; import { APP_STORE, APP_EFFECTS } from './core/store'; import { HTTP_CLIENT_INTERCEPTORS } from './core/interceptors'; +import { metaReducers } from './core/store/app.storage'; export const appConfig: ApplicationConfig = { providers: [ provideZoneChangeDetection({ eventCoalescing: true }), provideRouter(APP_ROUTES), - provideStore(APP_STORE), + provideStore(APP_STORE, { metaReducers }), provideEffects(APP_EFFECTS), provideAnimations(), provideHttpClient(withInterceptors(HTTP_CLIENT_INTERCEPTORS)), diff --git a/src/app/core/store/app.storage.ts b/src/app/core/store/app.storage.ts new file mode 100644 index 0000000..eb185ca --- /dev/null +++ b/src/app/core/store/app.storage.ts @@ -0,0 +1,13 @@ +// app.module.ts or store module +import { StoreModule, MetaReducer } from '@ngrx/store'; +import { localStorageSync } from 'ngrx-store-localstorage'; + +export function localStorageSyncReducer(reducer: any): any { + return localStorageSync({ + keys: ['cluster', 'project'], + storage: localStorage, + rehydrate: true, + })(reducer); +} + +export const metaReducers: MetaReducer[] = [localStorageSyncReducer]; From e92ab1ef3a733f35a532aa4ef0dad30186197d03 Mon Sep 17 00:00:00 2001 From: iizitounene Date: Fri, 18 Jul 2025 10:46:24 +0200 Subject: [PATCH 02/16] refactor: releases refactoring --- src/app/app.routes.ts | 11 +++++++++-- src/app/core/store/app.storage.ts | 2 +- .../release-details.component.html | 1 + .../release-details.component.scss | 0 .../release-details/release-details.component.ts | 16 ++++++++++++++++ .../release-list-card.component.html | 6 +++--- .../release-list-card.component.scss | 0 .../release-list-card.component.ts | 6 +++++- .../release-list-table.component.html | 5 +++-- .../release-list-table.component.scss | 0 .../release-list-table.component.ts | 6 +++++- src/app/features/releases/index.ts | 5 +++-- .../release-base/release-base.component.ts | 4 ++++ .../nav-tabs/components/nav-tabs.component.html | 2 +- src/styles.scss | 4 ++++ 15 files changed, 55 insertions(+), 13 deletions(-) create mode 100644 src/app/features/releases/components/release-details/release-details.component.html create mode 100644 src/app/features/releases/components/release-details/release-details.component.scss create mode 100644 src/app/features/releases/components/release-details/release-details.component.ts rename src/app/features/releases/components/{releases-list-card => release-list-card}/release-list-card.component.html (96%) rename src/app/features/releases/components/{releases-list-card => release-list-card}/release-list-card.component.scss (100%) rename src/app/features/releases/components/{releases-list-card => release-list-card}/release-list-card.component.ts (91%) rename src/app/features/releases/components/{releases-list-table => release-list-table}/release-list-table.component.html (98%) rename src/app/features/releases/components/{releases-list-table => release-list-table}/release-list-table.component.scss (100%) rename src/app/features/releases/components/{releases-list-table => release-list-table}/release-list-table.component.ts (96%) diff --git a/src/app/app.routes.ts b/src/app/app.routes.ts index b7721dd..b1df37c 100644 --- a/src/app/app.routes.ts +++ b/src/app/app.routes.ts @@ -5,13 +5,13 @@ import { ErrorComponent } from './shared/error'; import { LoginComponent } from './core/common/login'; import { AuthGuard } from './core/guards'; import { PageLayoutComponent } from './core/layout/page-layout'; -import { ReleaseListCardComponent, ReleaseCreateUpdateComponent } from './features/releases'; +import { ReleaseListCardComponent, ReleaseCreateUpdateComponent, ReleaseDetailsComponent } from './features/releases'; import { ProjectCreateOrUpdateComponent, ProjectListCardComponent, ProjectListTableComponent, } from './features/projects'; -import { ReleaseListTableComponent } from './features/releases/components/releases-list-table/release-list-table.component'; +import { ReleaseListTableComponent } from './features/releases/components/release-list-table/release-list-table.component'; import { PackageSelectComponent } from './features/releases/components/package-select/package-select.component'; import { StepperComponent } from './shared/components/stepper'; import { ProjectListComponent } from './features/projects/shared'; @@ -26,6 +26,7 @@ export const APP_ROUTES: Routes = [ children: [ { path: '', redirectTo: 'projects', pathMatch: 'full' }, { path: 'home', component: HomeComponent }, + // Projects { path: 'projects', component: ProjectListComponent, @@ -42,6 +43,7 @@ export const APP_ROUTES: Routes = [ { path: ':projectName/update', component: ProjectCreateOrUpdateComponent }, ], }, + // Services: Releases + catalogs { path: 'services/:service', component: ReleaseListComponent, @@ -56,6 +58,10 @@ export const APP_ROUTES: Routes = [ path: 'services/:service/instances/:serviceInstance/update', component: ReleaseCreateUpdateComponent, }, + { + path: 'services/:service/instances/:release/details', + component: ReleaseDetailsComponent, + }, { path: 'services', component: StepperComponent, @@ -68,6 +74,7 @@ export const APP_ROUTES: Routes = [ }, ], }, + // Catalogs: Exploration { path: 'catalogs', children: [ diff --git a/src/app/core/store/app.storage.ts b/src/app/core/store/app.storage.ts index eb185ca..1540615 100644 --- a/src/app/core/store/app.storage.ts +++ b/src/app/core/store/app.storage.ts @@ -1,5 +1,5 @@ // app.module.ts or store module -import { StoreModule, MetaReducer } from '@ngrx/store'; +import { MetaReducer } from '@ngrx/store'; import { localStorageSync } from 'ngrx-store-localstorage'; export function localStorageSyncReducer(reducer: any): any { diff --git a/src/app/features/releases/components/release-details/release-details.component.html b/src/app/features/releases/components/release-details/release-details.component.html new file mode 100644 index 0000000..ac6ad96 --- /dev/null +++ b/src/app/features/releases/components/release-details/release-details.component.html @@ -0,0 +1 @@ +The detatails .... diff --git a/src/app/features/releases/components/release-details/release-details.component.scss b/src/app/features/releases/components/release-details/release-details.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/features/releases/components/release-details/release-details.component.ts b/src/app/features/releases/components/release-details/release-details.component.ts new file mode 100644 index 0000000..9a7e19b --- /dev/null +++ b/src/app/features/releases/components/release-details/release-details.component.ts @@ -0,0 +1,16 @@ +import { Component, OnInit } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { EndpointsFromUsagePipe } from '../../../../shared/pipes'; + +@Component({ + selector: 'app-release-details', + standalone: true, + imports: [CommonModule], + providers: [EndpointsFromUsagePipe], + templateUrl: './release-details.component.html', + styleUrls: ['./release-details.component.scss'], + animations: [], +}) +export class ReleaseDetailsComponent implements OnInit { + ngOnInit(): void {} +} diff --git a/src/app/features/releases/components/releases-list-card/release-list-card.component.html b/src/app/features/releases/components/release-list-card/release-list-card.component.html similarity index 96% rename from src/app/features/releases/components/releases-list-card/release-list-card.component.html rename to src/app/features/releases/components/release-list-card/release-list-card.component.html index c35a6cf..4428534 100644 --- a/src/app/features/releases/components/releases-list-card/release-list-card.component.html +++ b/src/app/features/releases/components/release-list-card/release-list-card.component.html @@ -17,7 +17,7 @@
-
+
diff --git a/src/app/features/releases/components/releases-list-card/release-list-card.component.scss b/src/app/features/releases/components/release-list-card/release-list-card.component.scss similarity index 100% rename from src/app/features/releases/components/releases-list-card/release-list-card.component.scss rename to src/app/features/releases/components/release-list-card/release-list-card.component.scss diff --git a/src/app/features/releases/components/releases-list-card/release-list-card.component.ts b/src/app/features/releases/components/release-list-card/release-list-card.component.ts similarity index 91% rename from src/app/features/releases/components/releases-list-card/release-list-card.component.ts rename to src/app/features/releases/components/release-list-card/release-list-card.component.ts index 4541781..34fa2f6 100644 --- a/src/app/features/releases/components/releases-list-card/release-list-card.component.ts +++ b/src/app/features/releases/components/release-list-card/release-list-card.component.ts @@ -11,7 +11,7 @@ import { DialogComponent } from '../../../../shared/components/dialog'; import { extractService } from '../../../../shared/utils'; @Component({ - selector: 'app-releases-list-card', + selector: 'app-release-list-card', standalone: true, imports: [ CommonModule, @@ -54,4 +54,8 @@ export class ReleaseListCardComponent extends AbstractReleaseBaseComponent imple } onFavorite(row: ReleaseInstance) {} + + onShowDetails(instance: ReleaseInstance) { + super.showDetails(extractService(instance.spec.package.repository), instance.metadata.name!); + } } diff --git a/src/app/features/releases/components/releases-list-table/release-list-table.component.html b/src/app/features/releases/components/release-list-table/release-list-table.component.html similarity index 98% rename from src/app/features/releases/components/releases-list-table/release-list-table.component.html rename to src/app/features/releases/components/release-list-table/release-list-table.component.html index 4ee0cf3..d27fc91 100644 --- a/src/app/features/releases/components/releases-list-table/release-list-table.component.html +++ b/src/app/features/releases/components/release-list-table/release-list-table.component.html @@ -90,8 +90,9 @@ role="button" class="material-symbols-outlined text-okdp-primary cursor-pointer" matTooltip="Show details" - >visibility + (click)="onShowDetails(row)"> + visibility +