diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts index d73e2b878..6a8906c17 100644 --- a/apps/api/src/app/admin/admin.service.ts +++ b/apps/api/src/app/admin/admin.service.ts @@ -480,6 +480,7 @@ export class AdminService { currency, dataSource: newDataSource, holdings, + isActive, name, scraperConfiguration, sectors, @@ -557,6 +558,7 @@ export class AdminService { currency, dataSource, holdings, + isActive, scraperConfiguration, sectors, symbol, diff --git a/apps/api/src/app/admin/update-asset-profile.dto.ts b/apps/api/src/app/admin/update-asset-profile.dto.ts index fbd2b3752..efb37ed88 100644 --- a/apps/api/src/app/admin/update-asset-profile.dto.ts +++ b/apps/api/src/app/admin/update-asset-profile.dto.ts @@ -3,6 +3,7 @@ import { IsCurrencyCode } from '@ghostfolio/api/validators/is-currency-code'; import { AssetClass, AssetSubClass, DataSource, Prisma } from '@prisma/client'; import { IsArray, + IsBoolean, IsEnum, IsObject, IsOptional, @@ -35,6 +36,10 @@ export class UpdateAssetProfileDto { @IsOptional() dataSource?: DataSource; + @IsBoolean() + @IsOptional() + isActive?: boolean; + @IsString() @IsOptional() name?: string; diff --git a/apps/api/src/app/import/import.service.ts b/apps/api/src/app/import/import.service.ts index 729049fd1..2bc24d979 100644 --- a/apps/api/src/app/import/import.service.ts +++ b/apps/api/src/app/import/import.service.ts @@ -546,6 +546,7 @@ export class ImportService { SymbolProfile: { currency, dataSource, + isActive: false, symbol, activitiesCount: undefined, assetClass: undefined, diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts index dcaf9b3af..2ef1da739 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts @@ -34,6 +34,7 @@ import { ValidationErrors, Validators } from '@angular/forms'; +import { MatCheckboxChange } from '@angular/material/checkbox'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { MatSnackBar } from '@angular/material/snack-bar'; import { @@ -79,6 +80,7 @@ export class AssetProfileDialog implements OnDestroy, OnInit { historicalData: this.formBuilder.group({ csvString: '' }), + isActive: [false], name: ['', Validators.required], scraperConfiguration: this.formBuilder.group({ defaultMarketPrice: null, @@ -227,6 +229,7 @@ export class AssetProfileDialog implements OnDestroy, OnInit { historicalData: { csvString: AssetProfileDialog.HISTORICAL_DATA_TEMPLATE }, + isActive: this.assetProfile?.isActive, name: this.assetProfile.name ?? this.assetProfile.symbol, scraperConfiguration: { defaultMarketPrice: @@ -442,6 +445,7 @@ export class AssetProfileDialog implements OnDestroy, OnInit { assetSubClass: this.assetProfileForm.get('assetSubClass').value, comment: this.assetProfileForm.get('comment').value || null, currency: this.assetProfileForm.get('currency').value, + isActive: this.assetProfileForm.get('isActive').value, name: this.assetProfileForm.get('name').value, url: this.assetProfileForm.get('url').value || null }; @@ -523,6 +527,20 @@ export class AssetProfileDialog implements OnDestroy, OnInit { }); } + public onToggleIsActive(event: MatCheckboxChange) { + if (event.checked) { + this.assetProfileForm.get('isActive')?.setValue(true); + } else { + this.assetProfileForm.get('isActive')?.setValue(false); + } + + event.checked === this.assetProfile.isActive + ? this.assetProfileForm.get('isActive')?.markAsPristine() + : this.assetProfileForm.get('isActive')?.markAsDirty(); + + this.changeDetectorRef.detectChanges(); + } + public onUnsetBenchmark({ dataSource, symbol }: AssetProfileIdentifier) { this.dataService .deleteBenchmark({ dataSource, symbol }) diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html index 4628c42e1..461337b1f 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -509,7 +509,16 @@ -