Browse Source

Improve usability

pull/3541/head
Thomas Kaul 1 year ago
parent
commit
bf150719f4
  1. 2
      apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
  2. 18
      apps/client/src/app/components/admin-market-data/admin-market-data.html
  3. 20
      apps/client/src/app/components/admin-market-data/admin-market-data.service.ts
  4. 2
      apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
  5. 8
      apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html

2
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts

@ -124,7 +124,7 @@ export class AdminMarketDataComponent
private unsubscribeSubject = new Subject<void>(); private unsubscribeSubject = new Subject<void>();
public constructor( public constructor(
private adminMarketDataService: AdminMarketDataService, public adminMarketDataService: AdminMarketDataService,
private adminService: AdminService, private adminService: AdminService,
private changeDetectorRef: ChangeDetectorRef, private changeDetectorRef: ChangeDetectorRef,
private dataService: DataService, private dataService: DataService,

18
apps/client/src/app/components/admin-market-data/admin-market-data.html

@ -24,11 +24,11 @@
<th *matHeaderCellDef class="px-1" mat-header-cell></th> <th *matHeaderCellDef class="px-1" mat-header-cell></th>
<td *matCellDef="let element" class="px-1" mat-cell> <td *matCellDef="let element" class="px-1" mat-cell>
@if ( @if (
!( adminMarketDataService.hasPermissionToDeleteAssetProfile({
element.activitiesCount !== 0 || activitiesCount: element.activitiesCount,
element.isBenchmark || isBenchmark: element.isBenchmark,
element.symbol.startsWith(ghostfolioScraperApiSymbolPrefix) symbol: element.symbol
) })
) { ) {
<mat-checkbox <mat-checkbox
color="primary" color="primary"
@ -209,9 +209,11 @@
<button <button
mat-menu-item mat-menu-item
[disabled]=" [disabled]="
element.activitiesCount !== 0 || !adminMarketDataService.hasPermissionToDeleteAssetProfile({
element.isBenchmark || activitiesCount: element.activitiesCount,
element.symbol.startsWith(ghostfolioScraperApiSymbolPrefix) isBenchmark: element.isBenchmark,
symbol: element.symbol
})
" "
(click)=" (click)="
onDeleteAssetProfile({ onDeleteAssetProfile({

20
apps/client/src/app/components/admin-market-data/admin-market-data.service.ts

@ -1,5 +1,10 @@
import { AdminService } from '@ghostfolio/client/services/admin.service'; import { AdminService } from '@ghostfolio/client/services/admin.service';
import { UniqueAsset } from '@ghostfolio/common/interfaces'; import { ghostfolioScraperApiSymbolPrefix } from '@ghostfolio/common/config';
import { getCurrencyFromSymbol, isCurrency } from '@ghostfolio/common/helper';
import {
AdminMarketDataItem,
UniqueAsset
} from '@ghostfolio/common/interfaces';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { EMPTY, catchError, finalize, forkJoin, takeUntil } from 'rxjs'; import { EMPTY, catchError, finalize, forkJoin, takeUntil } from 'rxjs';
@ -50,4 +55,17 @@ export class AdminMarketDataService {
.subscribe(() => {}); .subscribe(() => {});
} }
} }
public hasPermissionToDeleteAssetProfile({
activitiesCount,
isBenchmark,
symbol
}: Pick<AdminMarketDataItem, 'activitiesCount' | 'isBenchmark' | 'symbol'>) {
return (
activitiesCount === 0 &&
!isBenchmark &&
!isCurrency(getCurrencyFromSymbol(symbol)) &&
!symbol.startsWith(ghostfolioScraperApiSymbolPrefix)
);
}
} }

2
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts

@ -87,7 +87,7 @@ export class AssetProfileDialog implements OnDestroy, OnInit {
private unsubscribeSubject = new Subject<void>(); private unsubscribeSubject = new Subject<void>();
public constructor( public constructor(
private adminMarketDataService: AdminMarketDataService, public adminMarketDataService: AdminMarketDataService,
private adminService: AdminService, private adminService: AdminService,
private changeDetectorRef: ChangeDetectorRef, private changeDetectorRef: ChangeDetectorRef,
@Inject(MAT_DIALOG_DATA) public data: AssetProfileDialogParams, @Inject(MAT_DIALOG_DATA) public data: AssetProfileDialogParams,

8
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html

@ -48,9 +48,11 @@
mat-menu-item mat-menu-item
type="button" type="button"
[disabled]=" [disabled]="
assetProfile?.activitiesCount !== 0 || !adminMarketDataService.hasPermissionToDeleteAssetProfile({
isBenchmark || activitiesCount: assetProfile?.activitiesCount,
data.symbol.startsWith(ghostfolioScraperApiSymbolPrefix) isBenchmark: isBenchmark,
symbol: data.symbol
})
" "
(click)=" (click)="
onDeleteProfileData({ onDeleteProfileData({

Loading…
Cancel
Save