diff --git a/apps/api/src/app/portfolio/portfolio.controller.ts b/apps/api/src/app/portfolio/portfolio.controller.ts index 2c09faa81..80ea08fce 100644 --- a/apps/api/src/app/portfolio/portfolio.controller.ts +++ b/apps/api/src/app/portfolio/portfolio.controller.ts @@ -284,14 +284,14 @@ export class PortfolioController { @Headers(HEADER_KEY_IMPERSONATION.toLowerCase()) impersonationId: string, @Query('accounts') filterByAccounts?: string, @Query('assetClasses') filterByAssetClasses?: string, - @Query('quantity') filterByQuantity?: string, + @Query('holdingType') filterByHoldingType?: string, @Query('query') filterBySearchQuery?: string, @Query('tags') filterByTags?: string ): Promise { const filters = this.apiService.buildFiltersFromQueryParams({ filterByAccounts, filterByAssetClasses, - filterByQuantity, + filterByHoldingType, filterBySearchQuery, filterByTags }); diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index 4f172b020..c5f8feb4a 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -406,9 +406,9 @@ export class PortfolioService { return id === 'CASH' && type === 'ASSET_CLASS'; }); - const isFilteredByQuantityEqualsZero = + const isFilteredByClosedHoldings = filters?.some(({ id, type }) => { - return id === '0' && type === 'QUANTITY'; + return id === 'CLOSED' && type === 'HOLDING_TYPE'; }) ?? false; let filteredValueInBaseCurrency = isFilteredByAccount @@ -470,7 +470,7 @@ export class PortfolioService { transactionCount, valueInBaseCurrency } of currentPositions.positions) { - if (isFilteredByQuantityEqualsZero === true) { + if (isFilteredByClosedHoldings === true) { if (!quantity.eq(0)) { // Ignore positions with a quantity continue; diff --git a/apps/api/src/services/api/api.service.ts b/apps/api/src/services/api/api.service.ts index d4513e2c0..e961ec037 100644 --- a/apps/api/src/services/api/api.service.ts +++ b/apps/api/src/services/api/api.service.ts @@ -10,21 +10,21 @@ export class ApiService { filterByAccounts, filterByAssetClasses, filterByAssetSubClasses, - filterByQuantity, + filterByHoldingType, filterBySearchQuery, filterByTags }: { filterByAccounts?: string; filterByAssetClasses?: string; filterByAssetSubClasses?: string; - filterByQuantity?: string; + filterByHoldingType?: string; filterBySearchQuery?: string; filterByTags?: string; }): Filter[] { const accountIds = filterByAccounts?.split(',') ?? []; const assetClasses = filterByAssetClasses?.split(',') ?? []; const assetSubClasses = filterByAssetSubClasses?.split(',') ?? []; - const quantity = filterByQuantity; + const holdingType = filterByHoldingType; const searchQuery = filterBySearchQuery?.toLowerCase(); const tagIds = filterByTags?.split(',') ?? []; @@ -55,10 +55,10 @@ export class ApiService { }) ]; - if (quantity) { + if (holdingType) { filters.push({ - id: quantity, - type: 'QUANTITY' + id: holdingType, + type: 'HOLDING_TYPE' }); } diff --git a/apps/client/src/app/pages/portfolio/holdings/holdings-page.component.ts b/apps/client/src/app/pages/portfolio/holdings/holdings-page.component.ts index bfcb76597..8834593e1 100644 --- a/apps/client/src/app/pages/portfolio/holdings/holdings-page.component.ts +++ b/apps/client/src/app/pages/portfolio/holdings/holdings-page.component.ts @@ -5,7 +5,7 @@ import { ImpersonationStorageService } from '@ghostfolio/client/services/imperso import { UserService } from '@ghostfolio/client/services/user/user.service'; import { PortfolioPosition, User } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; -import { HoldingMode, ToggleOption } from '@ghostfolio/common/types'; +import { HoldingType, ToggleOption } from '@ghostfolio/common/types'; import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; @@ -25,8 +25,8 @@ export class HoldingsPageComponent implements OnDestroy, OnInit { public hasImpersonationId: boolean; public hasPermissionToCreateOrder: boolean; public holdings: PortfolioPosition[]; - public mode: HoldingMode = 'ACTIVE'; - public modeOptions: ToggleOption[] = [ + public holdingType: HoldingType = 'ACTIVE'; + public holdingTypeOptions: ToggleOption[] = [ { label: $localize`Active`, value: 'ACTIVE' }, { label: $localize`Closed`, value: 'CLOSED' } ]; @@ -96,8 +96,8 @@ export class HoldingsPageComponent implements OnDestroy, OnInit { }); } - public onChangeMode(aMode: HoldingMode) { - this.mode = aMode; + public onChangeHoldingType(aHoldingType: HoldingType) { + this.holdingType = aHoldingType; this.holdings = undefined; @@ -118,8 +118,8 @@ export class HoldingsPageComponent implements OnDestroy, OnInit { private fetchHoldings() { const filters = this.userService.getFilters(); - if (this.mode === 'CLOSED') { - filters.push({ id: '0', type: 'QUANTITY' }); + if (this.holdingType === 'CLOSED') { + filters.push({ id: 'CLOSED', type: 'HOLDING_TYPE' }); } return this.dataService.fetchPortfolioHoldings({ diff --git a/apps/client/src/app/pages/portfolio/holdings/holdings-page.html b/apps/client/src/app/pages/portfolio/holdings/holdings-page.html index a5ffbca8e..a2bd43636 100644 --- a/apps/client/src/app/pages/portfolio/holdings/holdings-page.html +++ b/apps/client/src/app/pages/portfolio/holdings/holdings-page.html @@ -9,10 +9,10 @@
{ @@ -103,12 +103,12 @@ export class DataService { ); } - if (filtersByPresetId) { - params = params.append('presetId', filtersByPresetId[0].id); + if (filtersByHoldingType) { + params = params.append('holdingType', filtersByHoldingType[0].id); } - if (filtersBySearchQuantity) { - params = params.append('quantity', filtersBySearchQuantity[0].id); + if (filtersByPresetId) { + params = params.append('presetId', filtersByPresetId[0].id); } if (filtersBySearchQuery) { diff --git a/libs/common/src/lib/interfaces/filter.interface.ts b/libs/common/src/lib/interfaces/filter.interface.ts index c66bb6b0e..3d555f796 100644 --- a/libs/common/src/lib/interfaces/filter.interface.ts +++ b/libs/common/src/lib/interfaces/filter.interface.ts @@ -5,8 +5,8 @@ export interface Filter { | 'ACCOUNT' | 'ASSET_CLASS' | 'ASSET_SUB_CLASS' + | 'HOLDING_TYPE' | 'PRESET_ID' - | 'QUANTITY' | 'SEARCH_QUERY' | 'SYMBOL' | 'TAG'; diff --git a/libs/common/src/lib/types/holding-mode.type.ts b/libs/common/src/lib/types/holding-mode.type.ts deleted file mode 100644 index 31d8220b0..000000000 --- a/libs/common/src/lib/types/holding-mode.type.ts +++ /dev/null @@ -1 +0,0 @@ -export type HoldingMode = 'ACTIVE' | 'CLOSED'; diff --git a/libs/common/src/lib/types/holding-type.type.ts b/libs/common/src/lib/types/holding-type.type.ts new file mode 100644 index 000000000..985214a5e --- /dev/null +++ b/libs/common/src/lib/types/holding-type.type.ts @@ -0,0 +1 @@ +export type HoldingType = 'ACTIVE' | 'CLOSED'; diff --git a/libs/common/src/lib/types/index.ts b/libs/common/src/lib/types/index.ts index 4c82ffef9..fc4ddc4bf 100644 --- a/libs/common/src/lib/types/index.ts +++ b/libs/common/src/lib/types/index.ts @@ -7,7 +7,7 @@ import type { ColorScheme } from './color-scheme.type'; import type { DateRange } from './date-range.type'; import type { Granularity } from './granularity.type'; import type { GroupBy } from './group-by.type'; -import type { HoldingMode } from './holding-mode.type'; +import type { HoldingType } from './holding-type.type'; import type { MarketAdvanced } from './market-advanced.type'; import type { MarketDataPreset } from './market-data-preset.type'; import type { MarketState } from './market-state.type'; @@ -29,7 +29,7 @@ export type { DateRange, Granularity, GroupBy, - HoldingMode, + HoldingType, Market, MarketAdvanced, MarketDataPreset,