From 77061c284c0567700adcf69e5d2dd594db7085da Mon Sep 17 00:00:00 2001 From: Dan Date: Wed, 20 Nov 2024 17:40:01 +0100 Subject: [PATCH] Allow deletion of Asset Tags --- apps/api/src/app/admin/admin.controller.ts | 3 ++- apps/api/src/app/admin/update-asset-profile.dto.ts | 4 ++++ .../asset-profile-dialog/asset-profile-dialog.component.ts | 7 +++++++ apps/client/src/app/services/admin.service.ts | 2 ++ 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/apps/api/src/app/admin/admin.controller.ts b/apps/api/src/app/admin/admin.controller.ts index d8c05b0cc..1c8cd55c0 100644 --- a/apps/api/src/app/admin/admin.controller.ts +++ b/apps/api/src/app/admin/admin.controller.ts @@ -371,7 +371,8 @@ export class AdminController { tags: { connect: assetProfileData.tags?.map(({ id }) => { return { id }; - }) + }), + disconnect: assetProfileData.tagsDisconnected?.map(({ id }) => ({ id })) } }); } 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 f24b4501a..ca203760c 100644 --- a/apps/api/src/app/admin/update-asset-profile.dto.ts +++ b/apps/api/src/app/admin/update-asset-profile.dto.ts @@ -39,6 +39,10 @@ export class UpdateAssetProfileDto { @IsOptional() tags?: Tag[]; + @IsArray() + @IsOptional() + tagsDisconnected?: Tag[]; + @IsObject() @IsOptional() scraperConfiguration?: Prisma.InputJsonObject; 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 d3025ba81..ccf19545b 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 @@ -71,6 +71,7 @@ export class AssetProfileDialog implements OnDestroy, OnInit { }), name: ['', Validators.required], tags: new FormControl(undefined), + tagsDisconnected: new FormControl(undefined), scraperConfiguration: '', sectors: '', symbolMapping: '', @@ -172,6 +173,7 @@ export class AssetProfileDialog implements OnDestroy, OnInit { assetSubClass: this.assetProfile.assetSubClass ?? null, comment: this.assetProfile?.comment ?? '', tags: this.assetProfile?.tags ?? [], + tagsDisconnected: [], countries: JSON.stringify( this.assetProfile?.countries?.map(({ code, weight }) => { return { code, weight }; @@ -328,6 +330,7 @@ export class AssetProfileDialog implements OnDestroy, OnInit { assetSubClass: this.assetProfileForm.get('assetSubClass').value, comment: this.assetProfileForm.get('comment').value || null, tags: this.assetProfileForm.get('tags').value, + tagsDisconnected: this.assetProfileForm.get('tagsDisconnected').value, currency: this.assetProfileForm.get('currency').value, name: this.assetProfileForm.get('name').value, url: this.assetProfileForm.get('url').value @@ -404,6 +407,10 @@ export class AssetProfileDialog implements OnDestroy, OnInit { return id !== aTag.id; }) ); + this.assetProfileForm.controls['tagsDisconnected'].setValue([ + ...(this.assetProfileForm.controls['tagsDisconnected'].value ?? []), + aTag + ]); this.assetProfileForm.markAsDirty(); } diff --git a/apps/client/src/app/services/admin.service.ts b/apps/client/src/app/services/admin.service.ts index dc8eb2478..8142b5a47 100644 --- a/apps/client/src/app/services/admin.service.ts +++ b/apps/client/src/app/services/admin.service.ts @@ -245,6 +245,7 @@ export class AdminService { symbol, symbolMapping, tags, + tagsDisconnected, url }: AssetProfileIdentifier & UpdateAssetProfileDto) { return this.http.patch( @@ -260,6 +261,7 @@ export class AdminService { sectors, symbolMapping, tags, + tagsDisconnected, url } );