Browse Source

Refactoring

pull/2549/head
Thomas 2 years ago
parent
commit
bd6db1d11d
  1. 12
      apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts
  2. 11
      apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
  3. 19
      libs/ui/src/lib/account-balances/account-balances.component.html
  4. 14
      libs/ui/src/lib/account-balances/account-balances.component.scss
  5. 23
      libs/ui/src/lib/account-balances/account-balances.component.ts
  6. 3
      libs/ui/src/lib/account-balances/account-balances.module.ts

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

@ -29,14 +29,15 @@ import { AccountDetailDialogParams } from './interfaces/interfaces';
styleUrls: ['./account-detail-dialog.component.scss'] styleUrls: ['./account-detail-dialog.component.scss']
}) })
export class AccountDetailDialog implements OnDestroy, OnInit { export class AccountDetailDialog implements OnDestroy, OnInit {
public activities: OrderWithAccount[];
public balance: number; public balance: number;
public currency: string; public currency: string;
public equity: number; public equity: number;
public hasImpersonationId: boolean; public hasImpersonationId: boolean;
public historicalDataItems: HistoricalDataItem[]; public historicalDataItems: HistoricalDataItem[];
public isLoadingActivities: boolean;
public isLoadingChart: boolean; public isLoadingChart: boolean;
public name: string; public name: string;
public orders: OrderWithAccount[];
public platformName: string; public platformName: string;
public transactionCount: number; public transactionCount: number;
public user: User; public user: User;
@ -64,6 +65,7 @@ export class AccountDetailDialog implements OnDestroy, OnInit {
} }
public ngOnInit() { public ngOnInit() {
this.isLoadingActivities = true;
this.isLoadingChart = true; this.isLoadingChart = true;
this.dataService this.dataService
@ -103,7 +105,9 @@ export class AccountDetailDialog implements OnDestroy, OnInit {
}) })
.pipe(takeUntil(this.unsubscribeSubject)) .pipe(takeUntil(this.unsubscribeSubject))
.subscribe(({ activities }) => { .subscribe(({ activities }) => {
this.orders = activities; this.activities = activities;
this.isLoadingActivities = false;
this.changeDetectorRef.markForCheck(); this.changeDetectorRef.markForCheck();
}); });
@ -153,8 +157,8 @@ export class AccountDetailDialog implements OnDestroy, OnInit {
public onExport() { public onExport() {
this.dataService this.dataService
.fetchExport( .fetchExport(
this.orders.map((order) => { this.activities.map(({ id }) => {
return order.id; return id;
}) })
) )
.pipe(takeUntil(this.unsubscribeSubject)) .pipe(takeUntil(this.unsubscribeSubject))

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

@ -64,11 +64,15 @@
</div> </div>
</div> </div>
<mat-tab-group animationDuration="0" [mat-stretch-tabs]="false"> <mat-tab-group
animationDuration="0"
[mat-stretch-tabs]="false"
[ngClass]="{ 'd-none': isLoadingActivities }"
>
<mat-tab> <mat-tab>
<ng-template i18n mat-tab-label>Activities</ng-template> <ng-template i18n mat-tab-label>Activities</ng-template>
<gf-activities-table <gf-activities-table
[activities]="orders" [activities]="activities"
[baseCurrency]="user?.settings?.baseCurrency" [baseCurrency]="user?.settings?.baseCurrency"
[deviceType]="data.deviceType" [deviceType]="data.deviceType"
[hasPermissionToCreateActivity]="false" [hasPermissionToCreateActivity]="false"
@ -81,10 +85,9 @@
></gf-activities-table> ></gf-activities-table>
</mat-tab> </mat-tab>
<mat-tab> <mat-tab>
<ng-template i18n mat-tab-label>Balances</ng-template> <ng-template i18n mat-tab-label>Cash Balances</ng-template>
<gf-account-balances <gf-account-balances
[accountId]="data.accountId" [accountId]="data.accountId"
[currency]="currency"
[locale]="user?.settings?.locale" [locale]="user?.settings?.locale"
></gf-account-balances> ></gf-account-balances>
</mat-tab> </mat-tab>

19
libs/ui/src/lib/account-balances/account-balances.component.html

@ -1,21 +1,30 @@
<table class="gf-table w-100" mat-table [dataSource]="dataSource"> <table
class="gf-table w-100"
mat-table
matSort
matSortActive="date"
matSortDirection="desc"
[dataSource]="dataSource"
>
<ng-container matColumnDef="date"> <ng-container matColumnDef="date">
<th *matHeaderCellDef class="px-2" i18n mat-header-cell>Date</th> <th *matHeaderCellDef class="px-2" mat-header-cell mat-sort-header>
<ng-container i18n>Date</ng-container>
</th>
<td *matCellDef="let element" class="px-2" mat-cell> <td *matCellDef="let element" class="px-2" mat-cell>
<gf-value [isDate]="true" [locale]="locale" [value]="element?.date" /> <gf-value [isDate]="true" [locale]="locale" [value]="element?.date" />
</td> </td>
</ng-container> </ng-container>
<ng-container matColumnDef="value"> <ng-container matColumnDef="value">
<th *matHeaderCellDef class="px-2 text-right" i18n mat-header-cell> <th *matHeaderCellDef class="px-2 text-right" mat-header-cell>
Value <ng-container i18n>Value</ng-container>
</th> </th>
<td *matCellDef="let element" class="px-2" mat-cell> <td *matCellDef="let element" class="px-2" mat-cell>
<div class="d-flex justify-content-end"> <div class="d-flex justify-content-end">
<gf-value <gf-value
[isCurrency]="true" [isCurrency]="true"
[locale]="locale" [locale]="locale"
[unit]="currency" [unit]="element?.Account?.currency"
[value]="element?.value" [value]="element?.value"
></gf-value> ></gf-value>
</div> </div>

14
libs/ui/src/lib/account-balances/account-balances.component.scss

@ -2,18 +2,4 @@
:host { :host {
display: block; display: block;
.activities {
overflow-x: auto;
.mat-mdc-table {
th {
::ng-deep {
.mat-sort-header-container {
justify-content: inherit;
}
}
}
}
}
} }

23
libs/ui/src/lib/account-balances/account-balances.component.ts

@ -4,11 +4,14 @@ import {
Component, Component,
Input, Input,
OnDestroy, OnDestroy,
OnInit OnInit,
ViewChild
} from '@angular/core'; } from '@angular/core';
import { MatSort } from '@angular/material/sort';
import { MatTableDataSource } from '@angular/material/table'; import { MatTableDataSource } from '@angular/material/table';
import { DataService } from '@ghostfolio/client/services/data.service'; import { DataService } from '@ghostfolio/client/services/data.service';
import { AccountBalance } from '@ghostfolio/common/interfaces'; import { AccountBalance } from '@ghostfolio/common/interfaces';
import { get } from 'lodash';
import { Subject, takeUntil } from 'rxjs'; import { Subject, takeUntil } from 'rxjs';
@Component({ @Component({
@ -19,9 +22,10 @@ import { Subject, takeUntil } from 'rxjs';
}) })
export class AccountBalancesComponent implements OnDestroy, OnInit { export class AccountBalancesComponent implements OnDestroy, OnInit {
@Input() accountId: string; @Input() accountId: string;
@Input() currency: string;
@Input() locale: string; @Input() locale: string;
@ViewChild(MatSort) sort: MatSort;
public dataSource: MatTableDataSource<AccountBalance> = public dataSource: MatTableDataSource<AccountBalance> =
new MatTableDataSource(); new MatTableDataSource();
public displayedColumns: string[] = ['date', 'value']; public displayedColumns: string[] = ['date', 'value'];
@ -37,19 +41,22 @@ export class AccountBalancesComponent implements OnDestroy, OnInit {
this.fetchBalances(); this.fetchBalances();
} }
public fetchBalances() { public ngOnDestroy() {
this.unsubscribeSubject.next();
this.unsubscribeSubject.complete();
}
private fetchBalances() {
this.dataService this.dataService
.fetchAccountBalances(this.accountId) .fetchAccountBalances(this.accountId)
.pipe(takeUntil(this.unsubscribeSubject)) .pipe(takeUntil(this.unsubscribeSubject))
.subscribe(({ balances }) => { .subscribe(({ balances }) => {
this.dataSource = new MatTableDataSource(balances); this.dataSource = new MatTableDataSource(balances);
this.dataSource.sort = this.sort;
this.dataSource.sortingDataAccessor = get;
this.changeDetectorRef.markForCheck(); this.changeDetectorRef.markForCheck();
}); });
} }
public ngOnDestroy() {
this.unsubscribeSubject.next();
this.unsubscribeSubject.complete();
}
} }

3
libs/ui/src/lib/account-balances/account-balances.module.ts

@ -1,5 +1,6 @@
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { MatSortModule } from '@angular/material/sort';
import { MatTableModule } from '@angular/material/table'; import { MatTableModule } from '@angular/material/table';
import { GfValueModule } from '@ghostfolio/ui/value'; import { GfValueModule } from '@ghostfolio/ui/value';
@ -8,7 +9,7 @@ import { AccountBalancesComponent } from './account-balances.component';
@NgModule({ @NgModule({
declarations: [AccountBalancesComponent], declarations: [AccountBalancesComponent],
exports: [AccountBalancesComponent], exports: [AccountBalancesComponent],
imports: [CommonModule, GfValueModule, MatTableModule], imports: [CommonModule, GfValueModule, MatSortModule, MatTableModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA] schemas: [CUSTOM_ELEMENTS_SCHEMA]
}) })
export class GfAccountBalancesModule {} export class GfAccountBalancesModule {}

Loading…
Cancel
Save