Browse Source

Merge branch 'main' into task/upgrade-internationalized-number-to-version-3.6.7

pull/7114/head
Thomas Kaul 3 weeks ago
committed by GitHub
parent
commit
f55346fcd4
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 7
      CHANGELOG.md
  2. 10
      apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts
  3. 3
      apps/client/src/app/components/admin-market-data/admin-market-data.html
  4. 2
      apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
  5. 16
      apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts
  6. 3
      apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
  7. 1
      libs/common/src/lib/config.ts
  8. 51
      libs/common/src/lib/personal-finance-tools.ts

7
CHANGELOG.md

@ -9,8 +9,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
- Improved the dynamic numerical precision for various values in the account detail dialog on mobile
- Improved the dynamic numerical precision for various values in the holding detail dialog on mobile
- Upgraded `@internationalized/number` from version `3.6.6` to `3.6.7`
### Fixed
- Fixed the disabled state of the delete action in the asset profiles actions menu of the historical market data table in the admin control panel
- Fixed the persistence of an empty `locale` string in the scraper configuration
## 3.14.0 - 2026-06-22
### Added

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

@ -3,7 +3,7 @@ import { UserService } from '@ghostfolio/client/services/user/user.service';
import {
DEFAULT_DATE_RANGE,
DEFAULT_PAGE_SIZE,
NUMERICAL_PRECISION_THRESHOLD_5_FIGURES
NUMERICAL_PRECISION_THRESHOLD_4_FIGURES
} from '@ghostfolio/common/config';
import { CreateAccountBalanceDto } from '@ghostfolio/common/dtos';
import { DATE_FORMAT, downloadAsFile } from '@ghostfolio/common/helper';
@ -245,7 +245,7 @@ export class GfAccountDetailDialogComponent implements OnInit {
this.balance = balance;
if (
this.balance >= NUMERICAL_PRECISION_THRESHOLD_5_FIGURES &&
this.balance >= NUMERICAL_PRECISION_THRESHOLD_4_FIGURES &&
this.data.deviceType === 'mobile'
) {
this.balancePrecision = 0;
@ -257,7 +257,7 @@ export class GfAccountDetailDialogComponent implements OnInit {
if (
this.data.deviceType === 'mobile' &&
this.dividendInBaseCurrency >=
NUMERICAL_PRECISION_THRESHOLD_5_FIGURES
NUMERICAL_PRECISION_THRESHOLD_4_FIGURES
) {
this.dividendInBaseCurrencyPrecision = 0;
}
@ -267,7 +267,7 @@ export class GfAccountDetailDialogComponent implements OnInit {
if (
this.data.deviceType === 'mobile' &&
this.equity >= NUMERICAL_PRECISION_THRESHOLD_5_FIGURES
this.equity >= NUMERICAL_PRECISION_THRESHOLD_4_FIGURES
) {
this.equityPrecision = 0;
}
@ -280,7 +280,7 @@ export class GfAccountDetailDialogComponent implements OnInit {
if (
this.data.deviceType === 'mobile' &&
this.interestInBaseCurrency >=
NUMERICAL_PRECISION_THRESHOLD_5_FIGURES
NUMERICAL_PRECISION_THRESHOLD_4_FIGURES
) {
this.interestInBaseCurrencyPrecision = 0;
}

3
apps/client/src/app/components/admin-market-data/admin-market-data.html

@ -285,7 +285,8 @@
!canDeleteAssetProfile({
activitiesCount: element.activitiesCount,
isBenchmark: element.isBenchmark,
symbol: element.symbol
symbol: element.symbol,
watchedByCount: element.watchedByCount
})
"
(click)="

2
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts

@ -550,7 +550,7 @@ export class GfAssetProfileDialogComponent implements OnInit {
) as Record<string, string>,
locale:
this.assetProfileForm.controls.scraperConfiguration.controls.locale
?.value ?? undefined,
?.value || undefined,
mode:
this.assetProfileForm.controls.scraperConfiguration.controls.mode
?.value ?? undefined,

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

@ -2,7 +2,7 @@ import { UserService } from '@ghostfolio/client/services/user/user.service';
import {
DEFAULT_PAGE_SIZE,
NUMERICAL_PRECISION_THRESHOLD_3_FIGURES,
NUMERICAL_PRECISION_THRESHOLD_5_FIGURES
NUMERICAL_PRECISION_THRESHOLD_4_FIGURES
} from '@ghostfolio/common/config';
import { CreateOrderDto } from '@ghostfolio/common/dtos';
import {
@ -288,7 +288,7 @@ export class GfHoldingDetailDialogComponent implements OnInit {
this.averagePrice = averagePrice;
if (
this.averagePrice >= NUMERICAL_PRECISION_THRESHOLD_5_FIGURES &&
this.averagePrice >= NUMERICAL_PRECISION_THRESHOLD_4_FIGURES &&
this.data.deviceType === 'mobile'
) {
this.averagePricePrecision = 0;
@ -307,7 +307,7 @@ export class GfHoldingDetailDialogComponent implements OnInit {
if (
this.data.deviceType === 'mobile' &&
this.dividendInBaseCurrency >=
NUMERICAL_PRECISION_THRESHOLD_5_FIGURES
NUMERICAL_PRECISION_THRESHOLD_4_FIGURES
) {
this.dividendInBaseCurrencyPrecision = 0;
}
@ -345,7 +345,7 @@ export class GfHoldingDetailDialogComponent implements OnInit {
if (
this.data.deviceType === 'mobile' &&
this.investmentInBaseCurrencyWithCurrencyEffect >=
NUMERICAL_PRECISION_THRESHOLD_5_FIGURES
NUMERICAL_PRECISION_THRESHOLD_4_FIGURES
) {
this.investmentInBaseCurrencyWithCurrencyEffectPrecision = 0;
}
@ -355,7 +355,7 @@ export class GfHoldingDetailDialogComponent implements OnInit {
if (
this.data.deviceType === 'mobile' &&
this.marketPriceMax >= NUMERICAL_PRECISION_THRESHOLD_5_FIGURES
this.marketPriceMax >= NUMERICAL_PRECISION_THRESHOLD_4_FIGURES
) {
this.marketPriceMaxPrecision = 0;
}
@ -364,14 +364,14 @@ export class GfHoldingDetailDialogComponent implements OnInit {
if (
this.data.deviceType === 'mobile' &&
this.marketPriceMin >= NUMERICAL_PRECISION_THRESHOLD_5_FIGURES
this.marketPriceMin >= NUMERICAL_PRECISION_THRESHOLD_4_FIGURES
) {
this.marketPriceMinPrecision = 0;
}
if (
this.data.deviceType === 'mobile' &&
this.marketPrice >= NUMERICAL_PRECISION_THRESHOLD_5_FIGURES
this.marketPrice >= NUMERICAL_PRECISION_THRESHOLD_4_FIGURES
) {
this.marketPricePrecision = 0;
}
@ -393,7 +393,7 @@ export class GfHoldingDetailDialogComponent implements OnInit {
if (
this.data.deviceType === 'mobile' &&
this.netPerformanceWithCurrencyEffect >=
NUMERICAL_PRECISION_THRESHOLD_5_FIGURES
NUMERICAL_PRECISION_THRESHOLD_4_FIGURES
) {
this.netPerformanceWithCurrencyEffectPrecision = 0;
}

3
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html

@ -171,7 +171,8 @@
mat-cell
>
@if (element.price === null) {
<span></span>
<span></span>
<span class="ml-1">{{ baseCurrency }}</span>
} @else {
<gf-value
class="d-inline-block justify-content-end"

1
libs/common/src/lib/config.ts

@ -231,6 +231,7 @@ export const HEADER_KEY_SKIP_INTERCEPTOR = 'X-Skip-Interceptor';
export const MAX_TOP_HOLDINGS = 50;
export const NUMERICAL_PRECISION_THRESHOLD_3_FIGURES = 100;
export const NUMERICAL_PRECISION_THRESHOLD_4_FIGURES = 1000;
export const NUMERICAL_PRECISION_THRESHOLD_5_FIGURES = 10000;
export const NUMERICAL_PRECISION_THRESHOLD_6_FIGURES = 100000;

51
libs/common/src/lib/personal-finance-tools.ts

@ -438,6 +438,17 @@ export const personalFinanceTools: Product[] = [
slogan: 'Portfolio Tracker für dein Vermögen',
url: 'https://www.finanzfluss.de/copilot'
},
{
founded: 2015,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'finanzguru',
languages: ['Deutsch'],
name: 'Finanzguru',
origin: 'DE',
slogan: 'Finanzen. Magisch. Einfach.',
url: 'https://www.finanzguru.de'
},
{
founded: 2020,
key: 'finary',
@ -611,6 +622,15 @@ export const personalFinanceTools: Product[] = [
slogan: 'Finance App for Couples',
url: 'https://www.honeydue.com'
},
{
founded: 2003,
hasSelfHostingAbility: true,
isArchived: true,
key: 'ibank',
name: 'iBank',
note: 'Renamed to Banktivity',
origin: 'US'
},
{
founded: 2022,
key: 'income-reign',
@ -817,6 +837,17 @@ export const personalFinanceTools: Product[] = [
slogan: 'Personal Finance Manager for Mac, Windows, and Linux',
url: 'https://moneydance.com'
},
{
founded: 2016,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'moneypatrol',
name: 'MoneyPatrol',
origin: 'US',
pricingPerYear: '$29.99',
slogan: 'Personal Accounting Made Easy, Accurate, Comprehensive',
url: 'https://www.moneypatrol.com'
},
{
hasFreePlan: true,
hasSelfHostingAbility: false,
@ -1390,6 +1421,26 @@ export const personalFinanceTools: Product[] = [
pricingPerYear: '$600',
slogan: 'Make Smarter Investments'
},
{
founded: 2020,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'wallstreetzen',
name: 'WallStreetZen',
origin: 'HK',
pricingPerYear: '$234',
slogan: 'Stock market analysis for the serious part-time investor',
url: 'https://www.wallstreetzen.com'
},
{
founded: 2015,
hasSelfHostingAbility: false,
key: 'wealtharc',
name: 'WealthArc',
origin: 'CH',
slogan: 'Manage wealth data more efficiently',
url: 'https://www.wealtharc.com'
},
{
founded: 2019,
hasFreePlan: false,

Loading…
Cancel
Save