Browse Source

Task/refactor transactionCount to activitiesCount in portfolio holding response (#5709)

* Refactor transactionCount to activitiesCount in portfolio holding response

* Update changelog
pull/5726/head
Tanbir Ali 7 days ago
committed by GitHub
parent
commit
d2fe16c794
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 1
      CHANGELOG.md
  2. 6
      apps/api/src/app/portfolio/portfolio.service.ts
  3. 8
      apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts
  4. 6
      apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
  5. 2
      libs/common/src/lib/interfaces/responses/portfolio-holding-response.interface.ts

1
CHANGELOG.md

@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed ### Changed
- Changed the _As seen in_ section on the landing page to an animated carousel - Changed the _As seen in_ section on the landing page to an animated carousel
- Refactored `transactionCount` to `activitiesCount` in the endpoint `GET api/v1/portfolio/holding/:dataSource/:symbol`
- Refactored various components to use self-closing tags - Refactored various components to use self-closing tags
- Improved the language localization for German (`de`) - Improved the language localization for German (`de`)

6
apps/api/src/app/portfolio/portfolio.service.ts

@ -778,6 +778,7 @@ export class PortfolioService {
if (activities.length === 0) { if (activities.length === 0) {
return { return {
activities: [], activities: [],
activitiesCount: 0,
averagePrice: undefined, averagePrice: undefined,
dataProviderInfo: undefined, dataProviderInfo: undefined,
dividendInBaseCurrency: undefined, dividendInBaseCurrency: undefined,
@ -802,7 +803,6 @@ export class PortfolioService {
quantity: undefined, quantity: undefined,
SymbolProfile: undefined, SymbolProfile: undefined,
tags: [], tags: [],
transactionCount: undefined,
value: undefined value: undefined
}; };
} }
@ -966,8 +966,8 @@ export class PortfolioService {
marketPriceMin, marketPriceMin,
SymbolProfile, SymbolProfile,
tags, tags,
transactionCount,
activities: activitiesOfHolding, activities: activitiesOfHolding,
activitiesCount: transactionCount,
averagePrice: averagePrice.toNumber(), averagePrice: averagePrice.toNumber(),
dataProviderInfo: portfolioCalculator.getDataProviderInfos()?.[0], dataProviderInfo: portfolioCalculator.getDataProviderInfos()?.[0],
dividendInBaseCurrency: dividendInBaseCurrency.toNumber(), dividendInBaseCurrency: dividendInBaseCurrency.toNumber(),
@ -1070,6 +1070,7 @@ export class PortfolioService {
marketPriceMin, marketPriceMin,
SymbolProfile, SymbolProfile,
activities: [], activities: [],
activitiesCount: 0,
averagePrice: 0, averagePrice: 0,
dataProviderInfo: undefined, dataProviderInfo: undefined,
dividendInBaseCurrency: 0, dividendInBaseCurrency: 0,
@ -1095,7 +1096,6 @@ export class PortfolioService {
}, },
quantity: 0, quantity: 0,
tags: [], tags: [],
transactionCount: undefined,
value: 0 value: 0
}; };
} }

8
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts

@ -100,6 +100,7 @@ import { HoldingDetailDialogParams } from './interfaces/interfaces';
templateUrl: 'holding-detail-dialog.html' templateUrl: 'holding-detail-dialog.html'
}) })
export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit {
public activitiesCount: number;
public activityForm: FormGroup; public activityForm: FormGroup;
public accounts: Account[]; public accounts: Account[];
public assetClass: string; public assetClass: string;
@ -151,8 +152,6 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit {
public SymbolProfile: EnhancedSymbolProfile; public SymbolProfile: EnhancedSymbolProfile;
public tags: Tag[]; public tags: Tag[];
public tagsAvailable: Tag[]; public tagsAvailable: Tag[];
public totalItems: number;
public transactionCount: number;
public user: User; public user: User;
public value: number; public value: number;
@ -261,6 +260,7 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit {
.pipe(takeUntil(this.unsubscribeSubject)) .pipe(takeUntil(this.unsubscribeSubject))
.subscribe( .subscribe(
({ ({
activitiesCount,
averagePrice, averagePrice,
dataProviderInfo, dataProviderInfo,
dividendInBaseCurrency, dividendInBaseCurrency,
@ -279,9 +279,9 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit {
quantity, quantity,
SymbolProfile, SymbolProfile,
tags, tags,
transactionCount,
value value
}) => { }) => {
this.activitiesCount = activitiesCount;
this.averagePrice = averagePrice; this.averagePrice = averagePrice;
if ( if (
@ -429,8 +429,6 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit {
this.activityForm.setValue({ tags: this.tags }, { emitEvent: false }); this.activityForm.setValue({ tags: this.tags }, { emitEvent: false });
this.transactionCount = transactionCount;
this.totalItems = transactionCount;
this.value = value; this.value = value;
if (SymbolProfile?.assetClass) { if (SymbolProfile?.assetClass) {

6
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html

@ -223,9 +223,9 @@
<gf-value <gf-value
size="medium" size="medium"
[locale]="data.locale" [locale]="data.locale"
[value]="transactionCount" [value]="activitiesCount"
> >
@if (transactionCount === 1) { @if (activitiesCount === 1) {
<ng-container i18n>Activity</ng-container> <ng-container i18n>Activity</ng-container>
} @else { } @else {
<ng-container i18n>Activities</ng-container> <ng-container i18n>Activities</ng-container>
@ -363,7 +363,7 @@
[sortColumn]="sortColumn" [sortColumn]="sortColumn"
[sortDirection]="sortDirection" [sortDirection]="sortDirection"
[sortDisabled]="true" [sortDisabled]="true"
[totalItems]="totalItems" [totalItems]="activitiesCount"
(activityToClone)="onCloneActivity($event)" (activityToClone)="onCloneActivity($event)"
(activityToUpdate)="onUpdateActivity($event)" (activityToUpdate)="onUpdateActivity($event)"
(export)="onExport()" (export)="onExport()"

2
libs/common/src/lib/interfaces/responses/portfolio-holding-response.interface.ts

@ -10,6 +10,7 @@ import { Tag } from '@prisma/client';
export interface PortfolioHoldingResponse { export interface PortfolioHoldingResponse {
activities: Activity[]; activities: Activity[];
activitiesCount: number;
averagePrice: number; averagePrice: number;
dataProviderInfo: DataProviderInfo; dataProviderInfo: DataProviderInfo;
dividendInBaseCurrency: number; dividendInBaseCurrency: number;
@ -34,6 +35,5 @@ export interface PortfolioHoldingResponse {
quantity: number; quantity: number;
SymbolProfile: EnhancedSymbolProfile; SymbolProfile: EnhancedSymbolProfile;
tags: Tag[]; tags: Tag[];
transactionCount: number;
value: number; value: number;
} }

Loading…
Cancel
Save