Browse Source

Task/add overview tab to account detail dialog (#7462)

* Add overview tab

* Update changelog
pull/7460/head^2
Thomas Kaul 1 day ago
committed by GitHub
parent
commit
f336247e8b
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 4
      CHANGELOG.md
  2. 13
      apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts
  3. 141
      apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html

4
CHANGELOG.md

@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## Unreleased ## Unreleased
### Added
- Added an overview tab to the account detail dialog
### Changed ### Changed
- Improved the portfolio summary tab on the home page - Improved the portfolio summary tab on the home page

13
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts

@ -48,6 +48,7 @@ import { addIcons } from 'ionicons';
import { import {
albumsOutline, albumsOutline,
cashOutline, cashOutline,
readerOutline,
swapVerticalOutline swapVerticalOutline
} from 'ionicons/icons'; } from 'ionicons/icons';
import { isNumber } from 'lodash'; import { isNumber } from 'lodash';
@ -97,7 +98,6 @@ export class GfAccountDetailDialogComponent implements OnInit {
protected holdings: PortfolioPosition[]; protected holdings: PortfolioPosition[];
protected interestInBaseCurrency: number; protected interestInBaseCurrency: number;
protected interestInBaseCurrencyPrecision = 2; protected interestInBaseCurrencyPrecision = 2;
protected isLoadingActivities: boolean;
protected isLoadingChart: boolean; protected isLoadingChart: boolean;
protected name: string | null; protected name: string | null;
protected pageIndex = 0; protected pageIndex = 0;
@ -148,7 +148,12 @@ export class GfAccountDetailDialogComponent implements OnInit {
} }
}); });
addIcons({ albumsOutline, cashOutline, swapVerticalOutline }); addIcons({
albumsOutline,
cashOutline,
readerOutline,
swapVerticalOutline
});
} }
public ngOnInit() { public ngOnInit() {
@ -288,8 +293,6 @@ export class GfAccountDetailDialogComponent implements OnInit {
} }
private fetchActivities() { private fetchActivities() {
this.isLoadingActivities = true;
this.dataService this.dataService
.fetchActivities({ .fetchActivities({
filters: [{ id: this.data.accountId, type: 'ACCOUNT' }], filters: [{ id: this.data.accountId, type: 'ACCOUNT' }],
@ -303,8 +306,6 @@ export class GfAccountDetailDialogComponent implements OnInit {
this.dataSource = new MatTableDataSource(activities); this.dataSource = new MatTableDataSource(activities);
this.totalItems = count; this.totalItems = count;
this.isLoadingActivities = false;
this.changeDetectorRef.markForCheck(); this.changeDetectorRef.markForCheck();
}); });
} }

141
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html

@ -30,70 +30,91 @@
/> />
</div> </div>
<div class="mb-3 row">
<div class="col-6 mb-3">
<gf-value
i18n
size="medium"
[isCurrency]="true"
[locale]="user?.settings?.locale"
[precision]="balancePrecision"
[unit]="currency"
[value]="balance"
>Cash Balance</gf-value
>
</div>
<div class="col-6 mb-3">
<gf-value
i18n
size="medium"
[isCurrency]="true"
[locale]="user?.settings?.locale"
[precision]="equityPrecision"
[unit]="currency"
[value]="equity"
>Equity</gf-value
>
</div>
<div class="col-6 mb-3">
<gf-value
i18n
size="medium"
[isCurrency]="true"
[locale]="user?.settings?.locale"
[precision]="interestInBaseCurrencyPrecision"
[unit]="user?.settings?.baseCurrency"
[value]="interestInBaseCurrency"
>Interest</gf-value
>
</div>
<div class="col-6 mb-3">
<gf-value
i18n
size="medium"
[isCurrency]="true"
[locale]="user?.settings?.locale"
[precision]="dividendInBaseCurrencyPrecision"
[unit]="user?.settings?.baseCurrency"
[value]="dividendInBaseCurrency"
>Dividend</gf-value
>
</div>
<div class="col-6 mb-3">
<gf-value i18n size="medium" [value]="activitiesCount"
>Activities</gf-value
>
</div>
<div class="col-6 mb-3">
<gf-value i18n size="medium" [value]="platformName">Platform</gf-value>
</div>
</div>
<mat-tab-group <mat-tab-group
animationDuration="0ms" animationDuration="0ms"
[class.d-none]="isLoadingActivities" class="mb-4"
[mat-stretch-tabs]="false" [mat-stretch-tabs]="false"
> >
<mat-tab>
<ng-template mat-tab-label>
<ion-icon name="reader-outline" />
<div class="d-none d-sm-block ml-2" i18n>Overview</div>
</ng-template>
<div class="container mt-3 p-0">
<div class="row w-100">
<div class="col-6 mb-3">
<gf-value
i18n
size="medium"
[isCurrency]="true"
[locale]="user?.settings?.locale"
[precision]="balancePrecision"
[unit]="currency"
[value]="balance"
>Cash Balance</gf-value
>
</div>
<div class="col-6 mb-3">
<gf-value
i18n
size="medium"
[isCurrency]="true"
[locale]="user?.settings?.locale"
[precision]="equityPrecision"
[unit]="currency"
[value]="equity"
>Equity</gf-value
>
</div>
<div class="col-6 mb-3">
<gf-value
i18n
size="medium"
[isCurrency]="true"
[locale]="user?.settings?.locale"
[precision]="interestInBaseCurrencyPrecision"
[unit]="user?.settings?.baseCurrency"
[value]="interestInBaseCurrency"
>Interest</gf-value
>
</div>
<div class="col-6 mb-3">
<gf-value
i18n
size="medium"
[isCurrency]="true"
[locale]="user?.settings?.locale"
[precision]="dividendInBaseCurrencyPrecision"
[unit]="user?.settings?.baseCurrency"
[value]="dividendInBaseCurrency"
>Dividend</gf-value
>
</div>
<div class="col-6 mb-3">
<gf-value
size="medium"
[locale]="user?.settings?.locale"
[value]="activitiesCount"
>
@if (activitiesCount === 1) {
<ng-container i18n>Activity</ng-container>
} @else {
<ng-container i18n>Activities</ng-container>
}
</gf-value>
</div>
<div class="col-6 mb-3">
<gf-value
i18n
size="medium"
[locale]="user?.settings?.locale"
[value]="platformName"
>Platform</gf-value
>
</div>
</div>
</div>
</mat-tab>
<mat-tab> <mat-tab>
<ng-template mat-tab-label> <ng-template mat-tab-label>
<ion-icon name="albums-outline" /> <ion-icon name="albums-outline" />

Loading…
Cancel
Save