Browse Source

Integrate filters in holding detail dialog

pull/3743/head
Thomas Kaul 12 months ago
parent
commit
3bbbc64fd0
  1. 20
      apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts
  2. 5
      apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
  3. 10
      apps/client/src/app/services/data.service.ts

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

@ -89,7 +89,6 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit {
public activityForm: FormGroup; public activityForm: FormGroup;
public accounts: Account[]; public accounts: Account[];
public activities: Activity[];
public assetClass: string; public assetClass: string;
public assetSubClass: string; public assetSubClass: string;
public averagePrice: number; public averagePrice: number;
@ -174,6 +173,22 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit {
.subscribe(); .subscribe();
}); });
this.dataService
.fetchActivities({
filters: [
{ id: this.data.dataSource, type: 'DATA_SOURCE' },
{ id: this.data.symbol, type: 'SYMBOL' }
],
sortColumn: this.sortColumn,
sortDirection: this.sortDirection
})
.pipe(takeUntil(this.unsubscribeSubject))
.subscribe(({ activities }) => {
this.dataSource = new MatTableDataSource(activities);
this.changeDetectorRef.markForCheck();
});
this.dataService this.dataService
.fetchHoldingDetail({ .fetchHoldingDetail({
dataSource: this.data.dataSource, dataSource: this.data.dataSource,
@ -198,7 +213,6 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit {
netPerformancePercent, netPerformancePercent,
netPerformancePercentWithCurrencyEffect, netPerformancePercentWithCurrencyEffect,
netPerformanceWithCurrencyEffect, netPerformanceWithCurrencyEffect,
orders,
quantity, quantity,
SymbolProfile, SymbolProfile,
tags, tags,
@ -206,12 +220,10 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit {
value value
}) => { }) => {
this.accounts = accounts; this.accounts = accounts;
this.activities = orders;
this.averagePrice = averagePrice; this.averagePrice = averagePrice;
this.benchmarkDataItems = []; this.benchmarkDataItems = [];
this.countries = {}; this.countries = {};
this.dataProviderInfo = dataProviderInfo; this.dataProviderInfo = dataProviderInfo;
this.dataSource = new MatTableDataSource(orders.reverse());
this.dividendInBaseCurrency = dividendInBaseCurrency; this.dividendInBaseCurrency = dividendInBaseCurrency;
if ( if (

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

@ -311,7 +311,7 @@
animationDuration="0" animationDuration="0"
class="mb-5" class="mb-5"
[mat-stretch-tabs]="false" [mat-stretch-tabs]="false"
[ngClass]="{ 'd-none': !activities?.length }" [ngClass]="{ 'd-none': !dataSource?.data.length }"
> >
<mat-tab> <mat-tab>
<ng-template mat-tab-label> <ng-template mat-tab-label>
@ -422,7 +422,8 @@
} }
@if ( @if (
activities?.length > 0 && data.hasPermissionToReportDataGlitch === true dataSource?.data.length > 0 &&
data.hasPermissionToReportDataGlitch === true
) { ) {
<div class="row"> <div class="row">
<div class="col"> <div class="col">

10
apps/client/src/app/services/data.service.ts

@ -72,14 +72,24 @@ export class DataService {
ACCOUNT: filtersByAccount, ACCOUNT: filtersByAccount,
ASSET_CLASS: filtersByAssetClass, ASSET_CLASS: filtersByAssetClass,
ASSET_SUB_CLASS: filtersByAssetSubClass, ASSET_SUB_CLASS: filtersByAssetSubClass,
DATA_SOURCE: [filterByDataSource],
HOLDING_TYPE: filtersByHoldingType, HOLDING_TYPE: filtersByHoldingType,
PRESET_ID: filtersByPresetId, PRESET_ID: filtersByPresetId,
SEARCH_QUERY: filtersBySearchQuery, SEARCH_QUERY: filtersBySearchQuery,
SYMBOL: [filterBySymbol],
TAG: filtersByTag TAG: filtersByTag
} = groupBy(filters, (filter) => { } = groupBy(filters, (filter) => {
return filter.type; return filter.type;
}); });
if (filterByDataSource) {
params = params.append('dataSource', filterByDataSource.id);
}
if (filterBySymbol) {
params = params.append('symbol', filterBySymbol.id);
}
if (filtersByAccount) { if (filtersByAccount) {
params = params.append( params = params.append(
'accounts', 'accounts',

Loading…
Cancel
Save