From 3d3936b067318504eb7827939085f4be3213a83a Mon Sep 17 00:00:00 2001 From: Andrei D Date: Sat, 10 May 2025 17:07:54 +0300 Subject: [PATCH] migrate data providers from mat-card to mat-table --- .../admin-settings.component.html | 182 +++++++++--------- .../admin-settings.component.ts | 19 +- .../admin-settings/admin-settings.module.ts | 4 +- 3 files changed, 111 insertions(+), 94 deletions(-) diff --git a/apps/client/src/app/components/admin-settings/admin-settings.component.html b/apps/client/src/app/components/admin-settings/admin-settings.component.html index 977c8a372..3d685aef5 100644 --- a/apps/client/src/app/components/admin-settings/admin-settings.component.html +++ b/apps/client/src/app/components/admin-settings/admin-settings.component.html @@ -1,105 +1,109 @@
-
+

Data Providers

- - - @for (dataProvider of dataProviders; track dataProvider.name) { -
- @if (dataProvider.name === 'Ghostfolio') { -
-
- + + + Name + + +
+ +
+ @if (isGhostfolioProvider(element)) { + + Ghostfolio Premium + -
- Early Access - Ghostfolio Premium - - @if (isGhostfolioApiKeyValid === false) { - Early Access - } - - @if (isGhostfolioApiKeyValid === true) { -
- - Valid until - {{ - ghostfolioApiStatus?.subscription?.expiresAt - | date: defaultDateFormat - }} -
- } -
-
-
-
+ } + @if (isGhostfolioApiKeyValid === true) { -
-
+
+ + Valid until + {{ + ghostfolioApiStatus?.subscription?.expiresAt + | date: defaultDateFormat + }} + +
+
+ {{ ghostfolioApiStatus.dailyRequests }} of {{ ghostfolioApiStatus.dailyRequestsMax }} daily requests -
- - - - +
- } @else if (isGhostfolioApiKeyValid === false) { - } -
- } @else { -
-
- - {{ dataProvider.name }} -
-
-
- } + } @else { + {{ element.name }} + } +
- } - - + + + + + + + + @if (isGhostfolioProvider(element)) { + @if (isGhostfolioApiKeyValid === true) { + + + + + } @else if (isGhostfolioApiKeyValid === false) { + + } + } + + + + + + + @if (isLoading) { + + }
diff --git a/apps/client/src/app/components/admin-settings/admin-settings.component.ts b/apps/client/src/app/components/admin-settings/admin-settings.component.ts index 68c196962..f362d4797 100644 --- a/apps/client/src/app/components/admin-settings/admin-settings.component.ts +++ b/apps/client/src/app/components/admin-settings/admin-settings.component.ts @@ -22,6 +22,7 @@ import { OnInit } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; +import { MatTableDataSource } from '@angular/material/table'; import { DeviceDetectorService } from 'ngx-device-detector'; import { catchError, filter, of, Subject, takeUntil } from 'rxjs'; @@ -36,11 +37,13 @@ import { GhostfolioPremiumApiDialogParams } from './ghostfolio-premium-api-dialo standalone: false }) export class AdminSettingsComponent implements OnDestroy, OnInit { - public dataProviders: DataProviderInfo[]; + public dataSource = new MatTableDataSource(); public defaultDateFormat: string; public ghostfolioApiStatus: DataProviderGhostfolioStatusResponse; public isGhostfolioApiKeyValid: boolean; public pricingUrl: string; + public displayedColumns = ['name', 'actions']; + public isLoading = false; private deviceType: string; private unsubscribeSubject = new Subject(); @@ -119,20 +122,28 @@ export class AdminSettingsComponent implements OnDestroy, OnInit { }); } + public isGhostfolioProvider(provider: DataProviderInfo): boolean { + return provider.name === 'Ghostfolio'; + } + public ngOnDestroy() { this.unsubscribeSubject.next(); this.unsubscribeSubject.complete(); } private initialize() { + this.isLoading = true; + this.adminService .fetchAdminData() .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(({ dataProviders, settings }) => { - this.dataProviders = dataProviders.filter(({ dataSource }) => { + const filteredProviders = dataProviders.filter(({ dataSource }) => { return dataSource !== 'MANUAL'; }); + this.dataSource = new MatTableDataSource(filteredProviders); + this.adminService .fetchGhostfolioDataProviderStatus( settings[PROPERTY_API_KEY_GHOSTFOLIO] as string @@ -140,7 +151,7 @@ export class AdminSettingsComponent implements OnDestroy, OnInit { .pipe( catchError(() => { this.isGhostfolioApiKeyValid = false; - + this.isLoading = false; this.changeDetectorRef.markForCheck(); return of(null); @@ -153,7 +164,7 @@ export class AdminSettingsComponent implements OnDestroy, OnInit { .subscribe((status) => { this.ghostfolioApiStatus = status; this.isGhostfolioApiKeyValid = true; - + this.isLoading = false; this.changeDetectorRef.markForCheck(); }); diff --git a/apps/client/src/app/components/admin-settings/admin-settings.module.ts b/apps/client/src/app/components/admin-settings/admin-settings.module.ts index 79b269a62..5fe60b292 100644 --- a/apps/client/src/app/components/admin-settings/admin-settings.module.ts +++ b/apps/client/src/app/components/admin-settings/admin-settings.module.ts @@ -8,6 +8,7 @@ import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatCardModule } from '@angular/material/card'; import { MatMenuModule } from '@angular/material/menu'; +import { MatTableModule } from '@angular/material/table'; import { RouterModule } from '@angular/router'; import { AdminSettingsComponent } from './admin-settings.component'; @@ -23,7 +24,8 @@ import { AdminSettingsComponent } from './admin-settings.component'; MatButtonModule, MatCardModule, MatMenuModule, - RouterModule + RouterModule, + MatTableModule ], schemas: [CUSTOM_ELEMENTS_SCHEMA] })