Feature/improve usability to delete currency asset profile (#3541)
* Improve usability * Update changelog
This commit is contained in:
parent
9cd37f8de0
commit
fad1adb91b
@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
- Improved the allocations by ETF holding on the allocations page for the impersonation mode (experimental)
|
||||
- Improved the detection of REST APIs (`JSON`) used via the scraper configuration
|
||||
- Improved the usability to delete an asset profile of type currency in the historical market data table and the asset profile details dialog of the admin control
|
||||
- Refreshed the cryptocurrencies list
|
||||
- Refactored the thresholds of the rules in the _X-ray_ section
|
||||
- Removed the obsolete `version` from the `docker-compose` files
|
||||
|
@ -124,7 +124,7 @@ export class AdminMarketDataComponent
|
||||
private unsubscribeSubject = new Subject<void>();
|
||||
|
||||
public constructor(
|
||||
private adminMarketDataService: AdminMarketDataService,
|
||||
public adminMarketDataService: AdminMarketDataService,
|
||||
private adminService: AdminService,
|
||||
private changeDetectorRef: ChangeDetectorRef,
|
||||
private dataService: DataService,
|
||||
|
@ -24,11 +24,11 @@
|
||||
<th *matHeaderCellDef class="px-1" mat-header-cell></th>
|
||||
<td *matCellDef="let element" class="px-1" mat-cell>
|
||||
@if (
|
||||
!(
|
||||
element.activitiesCount !== 0 ||
|
||||
element.isBenchmark ||
|
||||
element.symbol.startsWith(ghostfolioScraperApiSymbolPrefix)
|
||||
)
|
||||
adminMarketDataService.hasPermissionToDeleteAssetProfile({
|
||||
activitiesCount: element.activitiesCount,
|
||||
isBenchmark: element.isBenchmark,
|
||||
symbol: element.symbol
|
||||
})
|
||||
) {
|
||||
<mat-checkbox
|
||||
color="primary"
|
||||
@ -209,9 +209,11 @@
|
||||
<button
|
||||
mat-menu-item
|
||||
[disabled]="
|
||||
element.activitiesCount !== 0 ||
|
||||
element.isBenchmark ||
|
||||
element.symbol.startsWith(ghostfolioScraperApiSymbolPrefix)
|
||||
!adminMarketDataService.hasPermissionToDeleteAssetProfile({
|
||||
activitiesCount: element.activitiesCount,
|
||||
isBenchmark: element.isBenchmark,
|
||||
symbol: element.symbol
|
||||
})
|
||||
"
|
||||
(click)="
|
||||
onDeleteAssetProfile({
|
||||
|
@ -1,5 +1,10 @@
|
||||
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 { EMPTY, catchError, finalize, forkJoin, takeUntil } from 'rxjs';
|
||||
@ -50,4 +55,17 @@ export class AdminMarketDataService {
|
||||
.subscribe(() => {});
|
||||
}
|
||||
}
|
||||
|
||||
public hasPermissionToDeleteAssetProfile({
|
||||
activitiesCount,
|
||||
isBenchmark,
|
||||
symbol
|
||||
}: Pick<AdminMarketDataItem, 'activitiesCount' | 'isBenchmark' | 'symbol'>) {
|
||||
return (
|
||||
activitiesCount === 0 &&
|
||||
!isBenchmark &&
|
||||
!isCurrency(getCurrencyFromSymbol(symbol)) &&
|
||||
!symbol.startsWith(ghostfolioScraperApiSymbolPrefix)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -87,7 +87,7 @@ export class AssetProfileDialog implements OnDestroy, OnInit {
|
||||
private unsubscribeSubject = new Subject<void>();
|
||||
|
||||
public constructor(
|
||||
private adminMarketDataService: AdminMarketDataService,
|
||||
public adminMarketDataService: AdminMarketDataService,
|
||||
private adminService: AdminService,
|
||||
private changeDetectorRef: ChangeDetectorRef,
|
||||
@Inject(MAT_DIALOG_DATA) public data: AssetProfileDialogParams,
|
||||
|
@ -48,9 +48,11 @@
|
||||
mat-menu-item
|
||||
type="button"
|
||||
[disabled]="
|
||||
assetProfile?.activitiesCount !== 0 ||
|
||||
isBenchmark ||
|
||||
data.symbol.startsWith(ghostfolioScraperApiSymbolPrefix)
|
||||
!adminMarketDataService.hasPermissionToDeleteAssetProfile({
|
||||
activitiesCount: assetProfile?.activitiesCount,
|
||||
isBenchmark: isBenchmark,
|
||||
symbol: data.symbol
|
||||
})
|
||||
"
|
||||
(click)="
|
||||
onDeleteProfileData({
|
||||
|
Loading…
x
Reference in New Issue
Block a user