Browse Source

Migrate currency to unit

pull/2043/head
Thomas 2 years ago
parent
commit
cc991f9439
  1. 9
      apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
  2. 39
      apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
  3. 27
      apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html
  4. 3
      apps/client/src/app/components/position/position.component.html
  5. 3
      apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
  6. 9
      apps/client/src/app/pages/portfolio/fire/fire-page.html
  7. 6
      libs/ui/src/lib/value/value.component.html
  8. 3
      libs/ui/src/lib/value/value.component.stories.ts
  9. 17
      libs/ui/src/lib/value/value.component.ts

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

@ -12,8 +12,9 @@
<div class="col-12 d-flex justify-content-center mb-3"> <div class="col-12 d-flex justify-content-center mb-3">
<gf-value <gf-value
size="large" size="large"
[currency]="user?.settings?.baseCurrency" [isCurrency]="true"
[locale]="user?.settings?.locale" [locale]="user?.settings?.locale"
[unit]="user?.settings?.baseCurrency"
[value]="valueInBaseCurrency" [value]="valueInBaseCurrency"
></gf-value> ></gf-value>
</div> </div>
@ -24,8 +25,9 @@
<gf-value <gf-value
i18n i18n
size="medium" size="medium"
[currency]="currency" [isCurrency]="true"
[locale]="user?.settings?.locale" [locale]="user?.settings?.locale"
[unit]="currency"
[value]="balance" [value]="balance"
>Cash Balance</gf-value >Cash Balance</gf-value
> >
@ -34,8 +36,9 @@
<gf-value <gf-value
i18n i18n
size="medium" size="medium"
[currency]="currency" [isCurrency]="true"
[locale]="user?.settings?.locale" [locale]="user?.settings?.locale"
[unit]="currency"
[value]="equity" [value]="equity"
>Equity</gf-value >Equity</gf-value
> >

39
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html

@ -13,8 +13,9 @@
<div class="justify-content-end"> <div class="justify-content-end">
<gf-value <gf-value
class="justify-content-end" class="justify-content-end"
[currency]="baseCurrency" [isCurrency]="true"
[locale]="locale" [locale]="locale"
[unit]="baseCurrency"
[value]="isLoading ? undefined : summary?.totalBuy" [value]="isLoading ? undefined : summary?.totalBuy"
></gf-value> ></gf-value>
</div> </div>
@ -24,8 +25,9 @@
<div class="justify-content-end"> <div class="justify-content-end">
<gf-value <gf-value
class="justify-content-end" class="justify-content-end"
[currency]="baseCurrency" [isCurrency]="true"
[locale]="locale" [locale]="locale"
[unit]="baseCurrency"
[value]="isLoading ? undefined : summary?.totalSell" [value]="isLoading ? undefined : summary?.totalSell"
></gf-value> ></gf-value>
</div> </div>
@ -38,8 +40,9 @@
<div class="justify-content-end"> <div class="justify-content-end">
<gf-value <gf-value
class="justify-content-end" class="justify-content-end"
[currency]="baseCurrency" [isCurrency]="true"
[locale]="locale" [locale]="locale"
[unit]="baseCurrency"
[value]="isLoading ? undefined : summary?.committedFunds" [value]="isLoading ? undefined : summary?.committedFunds"
></gf-value> ></gf-value>
</div> </div>
@ -49,8 +52,9 @@
<div class="justify-content-end"> <div class="justify-content-end">
<gf-value <gf-value
class="justify-content-end" class="justify-content-end"
[currency]="baseCurrency" [isCurrency]="true"
[locale]="locale" [locale]="locale"
[unit]="baseCurrency"
[value]="isLoading ? undefined : summary?.currentGrossPerformance" [value]="isLoading ? undefined : summary?.currentGrossPerformance"
></gf-value> ></gf-value>
</div> </div>
@ -79,8 +83,9 @@
<span *ngIf="summary?.fees || summary?.fees === 0" class="mr-1">-</span> <span *ngIf="summary?.fees || summary?.fees === 0" class="mr-1">-</span>
<gf-value <gf-value
class="justify-content-end" class="justify-content-end"
[currency]="baseCurrency" [isCurrency]="true"
[locale]="locale" [locale]="locale"
[unit]="baseCurrency"
[value]="isLoading ? undefined : summary?.fees" [value]="isLoading ? undefined : summary?.fees"
></gf-value> ></gf-value>
</div> </div>
@ -93,8 +98,9 @@
<div class="justify-content-end"> <div class="justify-content-end">
<gf-value <gf-value
class="justify-content-end" class="justify-content-end"
[currency]="baseCurrency" [isCurrency]="true"
[locale]="locale" [locale]="locale"
[unit]="baseCurrency"
[value]="isLoading ? undefined : summary?.currentNetPerformance" [value]="isLoading ? undefined : summary?.currentNetPerformance"
></gf-value> ></gf-value>
</div> </div>
@ -121,8 +127,9 @@
<gf-value <gf-value
class="justify-content-end" class="justify-content-end"
position="end" position="end"
[currency]="baseCurrency" [isCurrency]="true"
[locale]="locale" [locale]="locale"
[unit]="baseCurrency"
[value]="isLoading ? undefined : summary?.currentValue" [value]="isLoading ? undefined : summary?.currentValue"
></gf-value> ></gf-value>
</div> </div>
@ -132,8 +139,9 @@
<div class="justify-content-end"> <div class="justify-content-end">
<gf-value <gf-value
class="justify-content-end" class="justify-content-end"
[currency]="baseCurrency" [isCurrency]="true"
[locale]="locale" [locale]="locale"
[unit]="baseCurrency"
[value]="isLoading ? undefined : summary?.items" [value]="isLoading ? undefined : summary?.items"
></gf-value> ></gf-value>
</div> </div>
@ -152,8 +160,9 @@
></ion-icon> ></ion-icon>
<gf-value <gf-value
class="justify-content-end" class="justify-content-end"
[currency]="baseCurrency" [isCurrency]="true"
[locale]="locale" [locale]="locale"
[unit]="baseCurrency"
[value]="isLoading ? undefined : summary?.emergencyFund" [value]="isLoading ? undefined : summary?.emergencyFund"
></gf-value> ></gf-value>
</div> </div>
@ -163,8 +172,9 @@
<div class="justify-content-end"> <div class="justify-content-end">
<gf-value <gf-value
class="justify-content-end" class="justify-content-end"
[currency]="baseCurrency" [isCurrency]="true"
[locale]="locale" [locale]="locale"
[unit]="baseCurrency"
[value]="isLoading ? undefined : summary?.cash" [value]="isLoading ? undefined : summary?.cash"
></gf-value> ></gf-value>
</div> </div>
@ -174,8 +184,9 @@
<div class="justify-content-end"> <div class="justify-content-end">
<gf-value <gf-value
class="justify-content-end" class="justify-content-end"
[currency]="baseCurrency" [isCurrency]="true"
[locale]="locale" [locale]="locale"
[unit]="baseCurrency"
[value]="isLoading ? undefined : summary?.excludedAccountsAndActivities" [value]="isLoading ? undefined : summary?.excludedAccountsAndActivities"
></gf-value> ></gf-value>
</div> </div>
@ -188,8 +199,9 @@
<div class="justify-content-end"> <div class="justify-content-end">
<gf-value <gf-value
class="justify-content-end" class="justify-content-end"
[currency]="baseCurrency" [isCurrency]="true"
[locale]="locale" [locale]="locale"
[unit]="baseCurrency"
[value]="isLoading ? undefined : summary?.netWorth" [value]="isLoading ? undefined : summary?.netWorth"
></gf-value> ></gf-value>
</div> </div>
@ -217,8 +229,9 @@
<div class="justify-content-end"> <div class="justify-content-end">
<gf-value <gf-value
class="justify-content-end" class="justify-content-end"
[currency]="baseCurrency" [isCurrency]="true"
[locale]="locale" [locale]="locale"
[unit]="baseCurrency"
[value]="isLoading ? undefined : summary?.dividend" [value]="isLoading ? undefined : summary?.dividend"
></gf-value> ></gf-value>
</div> </div>

27
apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html

@ -12,8 +12,9 @@
<div class="col-12 d-flex justify-content-center mb-3"> <div class="col-12 d-flex justify-content-center mb-3">
<gf-value <gf-value
size="large" size="large"
[currency]="data.baseCurrency" [isCurrency]="true"
[locale]="data.locale" [locale]="data.locale"
[unit]="data.baseCurrency"
[value]="value" [value]="value"
></gf-value> ></gf-value>
</div> </div>
@ -40,8 +41,9 @@
i18n i18n
size="medium" size="medium"
[colorizeSign]="true" [colorizeSign]="true"
[currency]="data.baseCurrency" [isCurrency]="true"
[locale]="data.locale" [locale]="data.locale"
[unit]="data.baseCurrency"
[value]="netPerformance" [value]="netPerformance"
>Change</gf-value >Change</gf-value
> >
@ -61,8 +63,9 @@
<gf-value <gf-value
i18n i18n
size="medium" size="medium"
[currency]="SymbolProfile?.currency" [isCurrency]="true"
[locale]="data.locale" [locale]="data.locale"
[unit]="SymbolProfile?.currency"
[value]="averagePrice" [value]="averagePrice"
>Average Unit Price</gf-value >Average Unit Price</gf-value
> >
@ -71,8 +74,9 @@
<gf-value <gf-value
i18n i18n
size="medium" size="medium"
[currency]="SymbolProfile?.currency" [isCurrency]="true"
[locale]="data.locale" [locale]="data.locale"
[unit]="SymbolProfile?.currency"
[value]="marketPrice" [value]="marketPrice"
>Market Price</gf-value >Market Price</gf-value
> >
@ -81,9 +85,10 @@
<gf-value <gf-value
i18n i18n
size="medium" size="medium"
[currency]="SymbolProfile?.currency" [isCurrency]="true"
[locale]="data.locale" [locale]="data.locale"
[ngClass]="{ 'text-danger': minPrice?.toFixed(2) === marketPrice?.toFixed(2) && maxPrice?.toFixed(2) !== minPrice?.toFixed(2) }" [ngClass]="{ 'text-danger': minPrice?.toFixed(2) === marketPrice?.toFixed(2) && maxPrice?.toFixed(2) !== minPrice?.toFixed(2) }"
[unit]="SymbolProfile?.currency"
[value]="minPrice" [value]="minPrice"
>Minimum Price</gf-value >Minimum Price</gf-value
> >
@ -92,9 +97,10 @@
<gf-value <gf-value
i18n i18n
size="medium" size="medium"
[currency]="SymbolProfile?.currency" [isCurrency]="true"
[locale]="data.locale" [locale]="data.locale"
[ngClass]="{ 'text-success': maxPrice?.toFixed(2) === marketPrice?.toFixed(2) && maxPrice?.toFixed(2) !== minPrice?.toFixed(2) }" [ngClass]="{ 'text-success': maxPrice?.toFixed(2) === marketPrice?.toFixed(2) && maxPrice?.toFixed(2) !== minPrice?.toFixed(2) }"
[unit]="SymbolProfile?.currency"
[value]="maxPrice" [value]="maxPrice"
>Maximum Price</gf-value >Maximum Price</gf-value
> >
@ -113,8 +119,9 @@
<gf-value <gf-value
i18n i18n
size="medium" size="medium"
[currency]="data.baseCurrency" [isCurrency]="true"
[locale]="data.locale" [locale]="data.locale"
[unit]="data.baseCurrency"
[value]="investment" [value]="investment"
>Investment</gf-value >Investment</gf-value
> >
@ -123,8 +130,9 @@
<gf-value <gf-value
i18n i18n
size="medium" size="medium"
[currency]="data.baseCurrency" [isCurrency]="true"
[locale]="data.locale" [locale]="data.locale"
[unit]="data.baseCurrency"
[value]="dividendInBaseCurrency" [value]="dividendInBaseCurrency"
>Dividend</gf-value >Dividend</gf-value
> >
@ -133,8 +141,9 @@
<gf-value <gf-value
i18n i18n
size="medium" size="medium"
[currency]="data.baseCurrency" [isCurrency]="true"
[locale]="data.locale" [locale]="data.locale"
[unit]="data.baseCurrency"
[value]="feeInBaseCurrency" [value]="feeInBaseCurrency"
>Fees</gf-value >Fees</gf-value
> >

3
apps/client/src/app/components/position/position.component.html

@ -45,8 +45,9 @@
<gf-value <gf-value
class="mr-3" class="mr-3"
[colorizeSign]="true" [colorizeSign]="true"
[currency]="baseCurrency" [isCurrency]="true"
[locale]="locale" [locale]="locale"
[unit]="baseCurrency"
[value]="position?.netPerformance" [value]="position?.netPerformance"
></gf-value> ></gf-value>
<gf-value <gf-value

3
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html

@ -302,8 +302,9 @@
<div class="d-flex" mat-dialog-actions> <div class="d-flex" mat-dialog-actions>
<gf-value <gf-value
class="flex-grow-1" class="flex-grow-1"
[currency]="activityForm.controls['currency']?.value ?? data.user?.settings?.baseCurrency" [isCurrency]="true"
[locale]="data.user?.settings?.locale" [locale]="data.user?.settings?.locale"
[unit]="activityForm.controls['currency']?.value ?? data.user?.settings?.baseCurrency"
[value]="total" [value]="total"
></gf-value> ></gf-value>
<div> <div>

9
apps/client/src/app/pages/portfolio/fire/fire-page.html

@ -59,8 +59,9 @@
<span class="font-weight-bold" <span class="font-weight-bold"
><gf-value ><gf-value
class="d-inline-block" class="d-inline-block"
[currency]="user?.settings?.baseCurrency" [isCurrency]="true"
[locale]="user?.settings?.locale" [locale]="user?.settings?.locale"
[unit]="user?.settings?.baseCurrency"
[value]="withdrawalRatePerYear?.toNumber()" [value]="withdrawalRatePerYear?.toNumber()"
></gf-value> ></gf-value>
per year</span per year</span
@ -69,8 +70,9 @@
<span class="font-weight-bold" <span class="font-weight-bold"
><gf-value ><gf-value
class="d-inline-block" class="d-inline-block"
[currency]="user?.settings?.baseCurrency" [isCurrency]="true"
[locale]="user?.settings?.locale" [locale]="user?.settings?.locale"
[unit]="user?.settings?.baseCurrency"
[value]="withdrawalRatePerMonth?.toNumber()" [value]="withdrawalRatePerMonth?.toNumber()"
></gf-value> ></gf-value>
per month</span per month</span
@ -78,8 +80,9 @@
<span class="font-weight-bold" <span class="font-weight-bold"
><gf-value ><gf-value
class="d-inline-block" class="d-inline-block"
[currency]="user?.settings?.baseCurrency" [isCurrency]="true"
[locale]="user?.settings?.locale" [locale]="user?.settings?.locale"
[unit]="user?.settings?.baseCurrency"
[value]="fireWealth?.toNumber()" [value]="fireWealth?.toNumber()"
></gf-value ></gf-value
></span> ></span>

6
libs/ui/src/lib/value/value.component.html

@ -32,15 +32,9 @@
{{ formattedValue }} {{ formattedValue }}
</ng-container> </ng-container>
</div> </div>
<small *ngIf="currency && size === 'medium'" class="ml-1">
{{ currency }}
</small>
<small *ngIf="unit && size === 'medium'" class="ml-1"> <small *ngIf="unit && size === 'medium'" class="ml-1">
{{ unit }} {{ unit }}
</small> </small>
<div *ngIf="currency && size !== 'medium'" class="ml-1">
{{ currency }}
</div>
<div *ngIf="unit && size !== 'medium'" class="ml-1"> <div *ngIf="unit && size !== 'medium'" class="ml-1">
{{ unit }} {{ unit }}
</div> </div>

3
libs/ui/src/lib/value/value.component.stories.ts

@ -24,8 +24,9 @@ Loading.args = {
export const Currency = Template.bind({}); export const Currency = Template.bind({});
Currency.args = { Currency.args = {
currency: 'USD', isCurrency: true,
locale: 'en-US', locale: 'en-US',
unit: 'USD',
value: 7 value: 7
}; };

17
libs/ui/src/lib/value/value.component.ts

@ -15,7 +15,6 @@ import { isNumber } from 'lodash';
}) })
export class ValueComponent implements OnChanges { export class ValueComponent implements OnChanges {
@Input() colorizeSign = false; @Input() colorizeSign = false;
@Input() currency = '';
@Input() icon = ''; @Input() icon = '';
@Input() isAbsolute = false; @Input() isAbsolute = false;
@Input() isCurrency = false; @Input() isCurrency = false;
@ -47,7 +46,7 @@ export class ValueComponent implements OnChanges {
this.absoluteValue = Math.abs(<number>this.value); this.absoluteValue = Math.abs(<number>this.value);
if (this.colorizeSign) { if (this.colorizeSign) {
if (this.currency || this.isCurrency) { if (this.isCurrency) {
try { try {
this.formattedValue = this.absoluteValue.toLocaleString( this.formattedValue = this.absoluteValue.toLocaleString(
this.locale, this.locale,
@ -68,6 +67,13 @@ export class ValueComponent implements OnChanges {
); );
} catch {} } catch {}
} }
} else if (this.isCurrency) {
try {
this.formattedValue = this.value?.toLocaleString(this.locale, {
maximumFractionDigits: 2,
minimumFractionDigits: 2
});
} catch {}
} else if (this.isPercent) { } else if (this.isPercent) {
try { try {
this.formattedValue = (this.value * 100).toLocaleString( this.formattedValue = (this.value * 100).toLocaleString(
@ -78,13 +84,6 @@ export class ValueComponent implements OnChanges {
} }
); );
} catch {} } catch {}
} else if (this.currency || this.isCurrency) {
try {
this.formattedValue = this.value?.toLocaleString(this.locale, {
maximumFractionDigits: 2,
minimumFractionDigits: 2
});
} catch {}
} else if (this.precision || this.precision === 0) { } else if (this.precision || this.precision === 0) {
try { try {
this.formattedValue = this.value?.toLocaleString(this.locale, { this.formattedValue = this.value?.toLocaleString(this.locale, {

Loading…
Cancel
Save