Browse Source

Merge branch 'main' into feature/restructure-pricing-page

pull/4916/head
Thomas Kaul 3 weeks ago
committed by GitHub
parent
commit
b9b702a36f
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 2
      CHANGELOG.md
  2. 15
      apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts
  3. 30
      apps/client/src/locales/messages.ca.xlf
  4. 20
      apps/client/src/locales/messages.tr.xlf

2
CHANGELOG.md

@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Improved the style of the assistant - Improved the style of the assistant
- Reused the value component in the data providers management of the admin control panel - Reused the value component in the data providers management of the admin control panel
- Set the market state of exchange rate symbols to `open` in the _Financial Modeling Prep_ service
- Restructured the content of the pricing page - Restructured the content of the pricing page
- Migrated the `@ghostfolio/ui/assistant` component to control flow - Migrated the `@ghostfolio/ui/assistant` component to control flow
- Migrated the `@ghostfolio/ui/value` component to control flow - Migrated the `@ghostfolio/ui/value` component to control flow
@ -25,6 +26,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Improved the language localization for German (`de`) - Improved the language localization for German (`de`)
- Improved the language localization for Italian (`it`) - Improved the language localization for Italian (`it`)
- Improved the language localization for Polish (`pl`) - Improved the language localization for Polish (`pl`)
- Improved the language localization for Turkish (`tr`)
- Upgraded the _Stripe_ dependencies - Upgraded the _Stripe_ dependencies
## 2.170.0 - 2025-06-11 ## 2.170.0 - 2025-06-11

15
apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts

@ -22,6 +22,7 @@ import {
LookupItem, LookupItem,
LookupResponse LookupResponse
} from '@ghostfolio/common/interfaces'; } from '@ghostfolio/common/interfaces';
import { MarketState } from '@ghostfolio/common/types';
import { Injectable, Logger } from '@nestjs/common'; import { Injectable, Logger } from '@nestjs/common';
import { import {
@ -378,12 +379,22 @@ export class FinancialModelingPrepService implements DataProviderInterface {
); );
for (const { price, symbol } of quotes) { for (const { price, symbol } of quotes) {
let marketState: MarketState = 'delayed';
if (
isCurrency(
symbol.substring(0, symbol.length - DEFAULT_CURRENCY.length)
)
) {
marketState = 'open';
}
response[symbol] = { response[symbol] = {
marketState,
currency: currencyBySymbolMap[symbol]?.currency, currency: currencyBySymbolMap[symbol]?.currency,
dataProviderInfo: this.getDataProviderInfo(), dataProviderInfo: this.getDataProviderInfo(),
dataSource: DataSource.FINANCIAL_MODELING_PREP, dataSource: DataSource.FINANCIAL_MODELING_PREP,
marketPrice: price, marketPrice: price
marketState: 'delayed'
}; };
} }
} catch (error) { } catch (error) {

30
apps/client/src/locales/messages.ca.xlf

@ -4677,7 +4677,7 @@
</trans-unit> </trans-unit>
<trans-unit id="e19955db970092b9cde70be2cea163ab6adfac97" datatype="html"> <trans-unit id="e19955db970092b9cde70be2cea163ab6adfac97" datatype="html">
<source>Absolute Asset Performance</source> <source>Absolute Asset Performance</source>
<target state="new">Absolute Asset Performance</target> <target state="translated">Rendiment absolut dels actius</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">102</context> <context context-type="linenumber">102</context>
@ -4685,7 +4685,7 @@
</trans-unit> </trans-unit>
<trans-unit id="c726a56ba67c6c788e3759983dd8a1671d8cc886" datatype="html"> <trans-unit id="c726a56ba67c6c788e3759983dd8a1671d8cc886" datatype="html">
<source> Asset Performance </source> <source> Asset Performance </source>
<target state="new"> Asset Performance </target> <target state="translated"> Rendiment de l’actiu </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">123</context> <context context-type="linenumber">123</context>
@ -4693,7 +4693,7 @@
</trans-unit> </trans-unit>
<trans-unit id="8ce52b52483f502dd23ed290357a17307c60280c" datatype="html"> <trans-unit id="8ce52b52483f502dd23ed290357a17307c60280c" datatype="html">
<source>Absolute Currency Performance</source> <source>Absolute Currency Performance</source>
<target state="new">Absolute Currency Performance</target> <target state="translated">Rendiment absolut de la moneda</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">145</context> <context context-type="linenumber">145</context>
@ -4701,7 +4701,7 @@
</trans-unit> </trans-unit>
<trans-unit id="e4da628796a8880899b986c2af0559a55d6a700c" datatype="html"> <trans-unit id="e4da628796a8880899b986c2af0559a55d6a700c" datatype="html">
<source> Currency Performance </source> <source> Currency Performance </source>
<target state="new"> Currency Performance </target> <target state="translated"> Rendiment de la moneda </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">169</context> <context context-type="linenumber">169</context>
@ -4709,7 +4709,7 @@
</trans-unit> </trans-unit>
<trans-unit id="5584854134b3049db7dfb7bf4d87a0b9b9b4b149" datatype="html"> <trans-unit id="5584854134b3049db7dfb7bf4d87a0b9b9b4b149" datatype="html">
<source> Absolute Net Performance </source> <source> Absolute Net Performance </source>
<target state="new"> Absolute Net Performance </target> <target state="translated"> Rendiment net absolut </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">192</context> <context context-type="linenumber">192</context>
@ -4717,7 +4717,7 @@
</trans-unit> </trans-unit>
<trans-unit id="d88d656d93dd2029b9d35712789d2567d2c0d739" datatype="html"> <trans-unit id="d88d656d93dd2029b9d35712789d2567d2c0d739" datatype="html">
<source> Net Performance </source> <source> Net Performance </source>
<target state="new"> Net Performance </target> <target state="translated"> Rendiment net </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">211</context> <context context-type="linenumber">211</context>
@ -4725,7 +4725,7 @@
</trans-unit> </trans-unit>
<trans-unit id="6ae1c94f6bad274424f97e9bc8766242c1577447" datatype="html"> <trans-unit id="6ae1c94f6bad274424f97e9bc8766242c1577447" datatype="html">
<source>Top</source> <source>Top</source>
<target state="new">Top</target> <target state="translated">A dalt</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">239</context> <context context-type="linenumber">239</context>
@ -4733,7 +4733,7 @@
</trans-unit> </trans-unit>
<trans-unit id="6723d5c967329a3ac75524cf0c1af5ced022b9a3" datatype="html"> <trans-unit id="6723d5c967329a3ac75524cf0c1af5ced022b9a3" datatype="html">
<source>Bottom</source> <source>Bottom</source>
<target state="new">Bottom</target> <target state="translated">A baix</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">288</context> <context context-type="linenumber">288</context>
@ -4741,7 +4741,7 @@
</trans-unit> </trans-unit>
<trans-unit id="f1a355a1af2e818050a3af693ac8b521fa7edc5f" datatype="html"> <trans-unit id="f1a355a1af2e818050a3af693ac8b521fa7edc5f" datatype="html">
<source>Portfolio Evolution</source> <source>Portfolio Evolution</source>
<target state="new">Portfolio Evolution</target> <target state="translated">Evolució de la cartera</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">341</context> <context context-type="linenumber">341</context>
@ -4749,7 +4749,7 @@
</trans-unit> </trans-unit>
<trans-unit id="658bfe96ba9d3a3a2ada478c8c855286b841f92a" datatype="html"> <trans-unit id="658bfe96ba9d3a3a2ada478c8c855286b841f92a" datatype="html">
<source>Investment Timeline</source> <source>Investment Timeline</source>
<target state="new">Investment Timeline</target> <target state="translated">Cronologia de la inversió</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">368</context> <context context-type="linenumber">368</context>
@ -4757,7 +4757,7 @@
</trans-unit> </trans-unit>
<trans-unit id="1c275927e7e22395d21a86e4ab459e428bcac27e" datatype="html"> <trans-unit id="1c275927e7e22395d21a86e4ab459e428bcac27e" datatype="html">
<source>Current Streak</source> <source>Current Streak</source>
<target state="new">Current Streak</target> <target state="translated">Ratxa actual</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">389</context> <context context-type="linenumber">389</context>
@ -4765,7 +4765,7 @@
</trans-unit> </trans-unit>
<trans-unit id="eabb7b2ede5498042bc9fbb565981a780bf340dc" datatype="html"> <trans-unit id="eabb7b2ede5498042bc9fbb565981a780bf340dc" datatype="html">
<source>Longest Streak</source> <source>Longest Streak</source>
<target state="new">Longest Streak</target> <target state="translated">Ratxa més llarga</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">398</context> <context context-type="linenumber">398</context>
@ -4773,7 +4773,7 @@
</trans-unit> </trans-unit>
<trans-unit id="6410cffb96159fcff46d91effc26df0e240bc0e3" datatype="html"> <trans-unit id="6410cffb96159fcff46d91effc26df0e240bc0e3" datatype="html">
<source>Dividend Timeline</source> <source>Dividend Timeline</source>
<target state="new">Dividend Timeline</target> <target state="translated">Cronologia de dividends</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.html</context>
<context context-type="linenumber">425</context> <context context-type="linenumber">425</context>
@ -4781,7 +4781,7 @@
</trans-unit> </trans-unit>
<trans-unit id="6382f0e408575450219d3a10f8883a8f6c67e7d7" datatype="html"> <trans-unit id="6382f0e408575450219d3a10f8883a8f6c67e7d7" datatype="html">
<source>FIRE</source> <source>FIRE</source>
<target state="new">FIRE</target> <target state="translated">FOC</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">4</context> <context context-type="linenumber">4</context>
@ -4789,7 +4789,7 @@
</trans-unit> </trans-unit>
<trans-unit id="cf8caac4de0166eae6cd0fdfd010ee92b995cd96" datatype="html"> <trans-unit id="cf8caac4de0166eae6cd0fdfd010ee92b995cd96" datatype="html">
<source>Calculator</source> <source>Calculator</source>
<target state="new">Calculator</target> <target state="translated">Calculadora</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/fire/fire-page.html</context>
<context context-type="linenumber">7</context> <context context-type="linenumber">7</context>

20
apps/client/src/locales/messages.tr.xlf

@ -7586,7 +7586,7 @@
</trans-unit> </trans-unit>
<trans-unit id="rule.emergencyFundSetup" datatype="html"> <trans-unit id="rule.emergencyFundSetup" datatype="html">
<source>Emergency Fund: Set up</source> <source>Emergency Fund: Set up</source>
<target state="new">Emergency Fund: Set up</target> <target state="translated">Acil Durum Fonu: Kurulum</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">14</context> <context context-type="linenumber">14</context>
@ -7594,7 +7594,7 @@
</trans-unit> </trans-unit>
<trans-unit id="rule.emergencyFundSetup.false" datatype="html"> <trans-unit id="rule.emergencyFundSetup.false" datatype="html">
<source> No emergency fund has been set up </source> <source> No emergency fund has been set up </source>
<target state="new"> No emergency fund has been set up </target> <target state="translated"> Acil durum fonu oluşturulmadı </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">15</context> <context context-type="linenumber">15</context>
@ -7602,7 +7602,7 @@
</trans-unit> </trans-unit>
<trans-unit id="rule.emergencyFundSetup.true" datatype="html"> <trans-unit id="rule.emergencyFundSetup.true" datatype="html">
<source> An emergency fund has been set up </source> <source> An emergency fund has been set up </source>
<target state="new"> An emergency fund has been set up </target> <target state="translated"> Acil durum fonu kuruldu </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">18</context> <context context-type="linenumber">18</context>
@ -7610,7 +7610,7 @@
</trans-unit> </trans-unit>
<trans-unit id="rule.feeRatioInitialInvestment" datatype="html"> <trans-unit id="rule.feeRatioInitialInvestment" datatype="html">
<source>Fee Ratio</source> <source>Fee Ratio</source>
<target state="new">Fee Ratio</target> <target state="translated">Ücret Oranı</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">21</context> <context context-type="linenumber">21</context>
@ -7618,7 +7618,7 @@
</trans-unit> </trans-unit>
<trans-unit id="rule.feeRatioInitialInvestment.false" datatype="html"> <trans-unit id="rule.feeRatioInitialInvestment.false" datatype="html">
<source> The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) </source> <source> The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) </source>
<target state="new"> The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) </target> <target state="translated"> Ücretler, ilk yatırımınızın %${thresholdMax} kadarını aşıyor (${feeRatio}%) </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">22</context> <context context-type="linenumber">22</context>
@ -7626,7 +7626,7 @@
</trans-unit> </trans-unit>
<trans-unit id="rule.feeRatioInitialInvestment.true" datatype="html"> <trans-unit id="rule.feeRatioInitialInvestment.true" datatype="html">
<source> The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) </source> <source> The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) </source>
<target state="new"> The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) </target> <target state="translated"> Ücretler, ilk yatırımınızın %${thresholdMax}'ını (${feeRatio}%) aşmaz </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context> <context context-type="sourcefile">apps/client/src/app/pages/i18n/i18n-page.html</context>
<context context-type="linenumber">26</context> <context context-type="linenumber">26</context>
@ -7634,7 +7634,7 @@
</trans-unit> </trans-unit>
<trans-unit id="253d612b439c367d21c4ba59763df303a6106968" datatype="html"> <trans-unit id="253d612b439c367d21c4ba59763df303a6106968" datatype="html">
<source> Name </source> <source> Name </source>
<target state="new"> Name </target> <target state="translated"> İsim </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/benchmark/benchmark.component.html</context> <context context-type="sourcefile">libs/ui/src/lib/benchmark/benchmark.component.html</context>
<context context-type="linenumber">11</context> <context context-type="linenumber">11</context>
@ -7642,7 +7642,7 @@
</trans-unit> </trans-unit>
<trans-unit id="7784226024223865620" datatype="html"> <trans-unit id="7784226024223865620" datatype="html">
<source>Find holding or page...</source> <source>Find holding or page...</source>
<target state="new">Find holding or page...</target> <target state="translated">Holding veya sayfayı bulun...</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.component.ts</context>
<context context-type="linenumber">152</context> <context context-type="linenumber">152</context>
@ -7650,7 +7650,7 @@
</trans-unit> </trans-unit>
<trans-unit id="a8e9d1a0734e578e187c8a2837dcfb6e80534f5e" datatype="html"> <trans-unit id="a8e9d1a0734e578e187c8a2837dcfb6e80534f5e" datatype="html">
<source> Quick Links </source> <source> Quick Links </source>
<target state="new"> Quick Links </target> <target state="translated"> Hızlı Bağlantılar </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.html</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.html</context>
<context context-type="linenumber">45</context> <context context-type="linenumber">45</context>
@ -7658,7 +7658,7 @@
</trans-unit> </trans-unit>
<trans-unit id="a8f3c2cc84e0a86744659692af541ff749c21a8c" datatype="html"> <trans-unit id="a8f3c2cc84e0a86744659692af541ff749c21a8c" datatype="html">
<source> Asset Profiles </source> <source> Asset Profiles </source>
<target state="new"> Asset Profiles </target> <target state="translated"> Varlık Profilleri </target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.html</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.html</context>
<context context-type="linenumber">96</context> <context context-type="linenumber">96</context>

Loading…
Cancel
Save