diff --git a/apps/api/src/services/api/api.service.ts b/apps/api/src/services/api/api.service.ts index 8ef0df7b3..541e35561 100644 --- a/apps/api/src/services/api/api.service.ts +++ b/apps/api/src/services/api/api.service.ts @@ -24,7 +24,7 @@ export class ApiService { const searchQuery = filterBySearchQuery?.toLowerCase(); const tagIds = filterByTags?.split(',') ?? []; - return [ + const filters = [ ...accountIds.map((accountId) => { return { id: accountId, @@ -43,10 +43,6 @@ export class ApiService { type: 'ASSET_SUB_CLASS' }; }), - { - id: searchQuery, - type: 'SEARCH_QUERY' - }, ...tagIds.map((tagId) => { return { id: tagId, @@ -54,5 +50,14 @@ export class ApiService { }; }) ]; + + if (searchQuery) { + filters.push({ + id: searchQuery, + type: 'SEARCH_QUERY' + }); + } + + return filters; } } 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 5afb649b7..eb7c3c2c9 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 @@ -86,16 +86,14 @@ export class HoldingsPageComponent implements OnDestroy, OnInit { ? $localize`Filter by account or tag...` : ''; - return this.dataService.fetchPortfolioDetails({ - filters: this.activeFilters - }); + return this.fetchPortfolioDetails(); }), takeUntil(this.unsubscribeSubject) ) .subscribe((portfolioDetails) => { this.portfolioDetails = portfolioDetails; - this.initializeAnalysisData(); + this.initialize(); this.isLoading = false; @@ -146,17 +144,39 @@ export class HoldingsPageComponent implements OnDestroy, OnInit { ...tagFilters ]; + if (this.user?.settings?.isExperimentalFeatures === true) { + this.holdings = undefined; + + this.fetchPortfolioDetails().subscribe((portfolioDetails) => { + this.portfolioDetails = portfolioDetails; + + this.initialize(); + + this.changeDetectorRef.markForCheck(); + }); + } + this.changeDetectorRef.markForCheck(); } }); } - public initialize() { - this.holdings = []; + public ngOnDestroy() { + this.unsubscribeSubject.next(); + this.unsubscribeSubject.complete(); } - public initializeAnalysisData() { - this.initialize(); + private fetchPortfolioDetails() { + return this.dataService.fetchPortfolioDetails({ + filters: + this.activeFilters.length > 0 + ? this.activeFilters + : this.userService.getFilters() + }); + } + + private initialize() { + this.holdings = []; for (const [symbol, holding] of Object.entries( this.portfolioDetails.holdings @@ -165,11 +185,6 @@ export class HoldingsPageComponent implements OnDestroy, OnInit { } } - public ngOnDestroy() { - this.unsubscribeSubject.next(); - this.unsubscribeSubject.complete(); - } - private openPositionDialog({ dataSource, symbol 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 282dc5a00..34e88077e 100644 --- a/apps/client/src/app/pages/portfolio/holdings/holdings-page.html +++ b/apps/client/src/app/pages/portfolio/holdings/holdings-page.html @@ -2,12 +2,14 @@

Holdings

+ @if (!user?.settings?.isExperimentalFeatures) { + }
diff --git a/libs/ui/src/lib/holdings-table/holdings-table.component.ts b/libs/ui/src/lib/holdings-table/holdings-table.component.ts index e931c505e..18105861f 100644 --- a/libs/ui/src/lib/holdings-table/holdings-table.component.ts +++ b/libs/ui/src/lib/holdings-table/holdings-table.component.ts @@ -58,11 +58,11 @@ export class HoldingsTableComponent implements OnChanges, OnDestroy, OnInit { this.isLoading = true; - if (this.holdings) { - this.dataSource = new MatTableDataSource(this.holdings); - this.dataSource.paginator = this.paginator; - this.dataSource.sort = this.sort; + this.dataSource = new MatTableDataSource(this.holdings); + this.dataSource.paginator = this.paginator; + this.dataSource.sort = this.sort; + if (this.holdings) { this.isLoading = false; } }