Merge branch 'main' of github.com:ghostfolio/ghostfolio
All checks were successful
Docker image CD / build_and_push (push) Successful in 29m50s
All checks were successful
Docker image CD / build_and_push (push) Successful in 29m50s
This commit is contained in:
commit
95325aad14
@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
## Unreleased
|
## 2.151.0 - 2025-04-11
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
@ -13,10 +13,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
|
- Set the maximum number of symbols per request in the _Financial Modeling Prep_ service
|
||||||
|
- Migrated the get quotes functionality of the _Financial Modeling Prep_ service to its stable API version
|
||||||
- Improved the language localization for Enlish (`en`)
|
- Improved the language localization for Enlish (`en`)
|
||||||
- Upgraded `eslint` dependencies
|
- Upgraded `eslint` dependencies
|
||||||
- Upgraded `Nx` from version `20.6.4` to `20.7.1`
|
- Upgraded `Nx` from version `20.6.4` to `20.7.1`
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Fixed the link to the pricing page in the premium indicator component
|
||||||
|
|
||||||
## 2.150.0 - 2025-04-05
|
## 2.150.0 - 2025-04-05
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
@ -325,6 +325,10 @@ export class FinancialModelingPrepService implements DataProviderInterface {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public getMaxNumberOfSymbolsPerRequest() {
|
||||||
|
return 20;
|
||||||
|
}
|
||||||
|
|
||||||
public getName(): DataSource {
|
public getName(): DataSource {
|
||||||
return DataSource.FINANCIAL_MODELING_PREP;
|
return DataSource.FINANCIAL_MODELING_PREP;
|
||||||
}
|
}
|
||||||
@ -341,7 +345,7 @@ export class FinancialModelingPrepService implements DataProviderInterface {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
const quotes = await fetch(
|
const quotes = await fetch(
|
||||||
`${this.URL}/quote/${symbols.join(',')}?apikey=${this.apiKey}`,
|
`${this.getUrl({ version: 'stable' })}/batch-quote-short?symbols=${symbols.join(',')}&apikey=${this.apiKey}`,
|
||||||
{
|
{
|
||||||
signal: AbortSignal.timeout(requestTimeout)
|
signal: AbortSignal.timeout(requestTimeout)
|
||||||
}
|
}
|
||||||
@ -451,8 +455,14 @@ export class FinancialModelingPrepService implements DataProviderInterface {
|
|||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
private getUrl({ version }: { version: number }) {
|
private getUrl({ version }: { version: number | 'stable' }) {
|
||||||
return `https://financialmodelingprep.com/api/v${version}`;
|
const baseUrl = 'https://financialmodelingprep.com';
|
||||||
|
|
||||||
|
if (version === 'stable') {
|
||||||
|
return `${baseUrl}/stable`;
|
||||||
|
}
|
||||||
|
|
||||||
|
return `${baseUrl}/api/v${version}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
private parseAssetClass(profile: any): {
|
private parseAssetClass(profile: any): {
|
||||||
|
@ -719,6 +719,10 @@
|
|||||||
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.ts</context>
|
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.ts</context>
|
||||||
<context context-type="linenumber">30</context>
|
<context context-type="linenumber">30</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">libs/ui/src/lib/premium-indicator/premium-indicator.component.ts</context>
|
||||||
|
<context context-type="linenumber">21</context>
|
||||||
|
</context-group>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="5915338689523424386" datatype="html">
|
<trans-unit id="5915338689523424386" datatype="html">
|
||||||
<source>register</source>
|
<source>register</source>
|
||||||
|
@ -5535,6 +5535,10 @@
|
|||||||
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.ts</context>
|
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.ts</context>
|
||||||
<context context-type="linenumber">30</context>
|
<context context-type="linenumber">30</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">libs/ui/src/lib/premium-indicator/premium-indicator.component.ts</context>
|
||||||
|
<context context-type="linenumber">21</context>
|
||||||
|
</context-group>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="5915338689523424386" datatype="html">
|
<trans-unit id="5915338689523424386" datatype="html">
|
||||||
<source>register</source>
|
<source>register</source>
|
||||||
|
@ -5512,6 +5512,10 @@
|
|||||||
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.ts</context>
|
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.ts</context>
|
||||||
<context context-type="linenumber">30</context>
|
<context context-type="linenumber">30</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">libs/ui/src/lib/premium-indicator/premium-indicator.component.ts</context>
|
||||||
|
<context context-type="linenumber">21</context>
|
||||||
|
</context-group>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="5915338689523424386" datatype="html">
|
<trans-unit id="5915338689523424386" datatype="html">
|
||||||
<source>register</source>
|
<source>register</source>
|
||||||
|
@ -5511,6 +5511,10 @@
|
|||||||
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.ts</context>
|
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.ts</context>
|
||||||
<context context-type="linenumber">30</context>
|
<context context-type="linenumber">30</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">libs/ui/src/lib/premium-indicator/premium-indicator.component.ts</context>
|
||||||
|
<context context-type="linenumber">21</context>
|
||||||
|
</context-group>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="5915338689523424386" datatype="html">
|
<trans-unit id="5915338689523424386" datatype="html">
|
||||||
<source>register</source>
|
<source>register</source>
|
||||||
|
@ -5512,6 +5512,10 @@
|
|||||||
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.ts</context>
|
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.ts</context>
|
||||||
<context context-type="linenumber">30</context>
|
<context context-type="linenumber">30</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">libs/ui/src/lib/premium-indicator/premium-indicator.component.ts</context>
|
||||||
|
<context context-type="linenumber">21</context>
|
||||||
|
</context-group>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="5915338689523424386" datatype="html">
|
<trans-unit id="5915338689523424386" datatype="html">
|
||||||
<source>register</source>
|
<source>register</source>
|
||||||
|
@ -5511,6 +5511,10 @@
|
|||||||
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.ts</context>
|
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.ts</context>
|
||||||
<context context-type="linenumber">30</context>
|
<context context-type="linenumber">30</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">libs/ui/src/lib/premium-indicator/premium-indicator.component.ts</context>
|
||||||
|
<context context-type="linenumber">21</context>
|
||||||
|
</context-group>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="5915338689523424386" datatype="html">
|
<trans-unit id="5915338689523424386" datatype="html">
|
||||||
<source>register</source>
|
<source>register</source>
|
||||||
|
@ -338,6 +338,10 @@
|
|||||||
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.ts</context>
|
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.ts</context>
|
||||||
<context context-type="linenumber">30</context>
|
<context context-type="linenumber">30</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">libs/ui/src/lib/premium-indicator/premium-indicator.component.ts</context>
|
||||||
|
<context context-type="linenumber">21</context>
|
||||||
|
</context-group>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="6948811958230386934" datatype="html">
|
<trans-unit id="6948811958230386934" datatype="html">
|
||||||
<source>privacy-policy</source>
|
<source>privacy-policy</source>
|
||||||
|
@ -5511,6 +5511,10 @@
|
|||||||
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.ts</context>
|
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.ts</context>
|
||||||
<context context-type="linenumber">30</context>
|
<context context-type="linenumber">30</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">libs/ui/src/lib/premium-indicator/premium-indicator.component.ts</context>
|
||||||
|
<context context-type="linenumber">21</context>
|
||||||
|
</context-group>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="5915338689523424386" datatype="html">
|
<trans-unit id="5915338689523424386" datatype="html">
|
||||||
<source>register</source>
|
<source>register</source>
|
||||||
|
@ -338,6 +338,10 @@
|
|||||||
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.ts</context>
|
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.ts</context>
|
||||||
<context context-type="linenumber">30</context>
|
<context context-type="linenumber">30</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">libs/ui/src/lib/premium-indicator/premium-indicator.component.ts</context>
|
||||||
|
<context context-type="linenumber">21</context>
|
||||||
|
</context-group>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="6948811958230386934" datatype="html">
|
<trans-unit id="6948811958230386934" datatype="html">
|
||||||
<source>privacy-policy</source>
|
<source>privacy-policy</source>
|
||||||
|
@ -719,6 +719,10 @@
|
|||||||
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.ts</context>
|
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.ts</context>
|
||||||
<context context-type="linenumber">30</context>
|
<context context-type="linenumber">30</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">libs/ui/src/lib/premium-indicator/premium-indicator.component.ts</context>
|
||||||
|
<context context-type="linenumber">21</context>
|
||||||
|
</context-group>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="5915338689523424386" datatype="html">
|
<trans-unit id="5915338689523424386" datatype="html">
|
||||||
<source>register</source>
|
<source>register</source>
|
||||||
|
@ -333,6 +333,10 @@
|
|||||||
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.ts</context>
|
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.ts</context>
|
||||||
<context context-type="linenumber">30</context>
|
<context context-type="linenumber">30</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">libs/ui/src/lib/premium-indicator/premium-indicator.component.ts</context>
|
||||||
|
<context context-type="linenumber">21</context>
|
||||||
|
</context-group>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="6948811958230386934" datatype="html">
|
<trans-unit id="6948811958230386934" datatype="html">
|
||||||
<source>privacy-policy</source>
|
<source>privacy-policy</source>
|
||||||
|
@ -339,6 +339,10 @@
|
|||||||
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.ts</context>
|
<context context-type="sourcefile">libs/ui/src/lib/membership-card/membership-card.component.ts</context>
|
||||||
<context context-type="linenumber">30</context>
|
<context context-type="linenumber">30</context>
|
||||||
</context-group>
|
</context-group>
|
||||||
|
<context-group purpose="location">
|
||||||
|
<context context-type="sourcefile">libs/ui/src/lib/premium-indicator/premium-indicator.component.ts</context>
|
||||||
|
<context context-type="linenumber">21</context>
|
||||||
|
</context-group>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="6948811958230386934" datatype="html">
|
<trans-unit id="6948811958230386934" datatype="html">
|
||||||
<source>privacy-policy</source>
|
<source>privacy-policy</source>
|
||||||
|
@ -2,6 +2,6 @@
|
|||||||
class="align-items-center d-flex"
|
class="align-items-center d-flex"
|
||||||
title="Upgrade to Ghostfolio Premium"
|
title="Upgrade to Ghostfolio Premium"
|
||||||
[ngStyle]="{ 'pointer-events': enableLink ? 'initial' : 'none' }"
|
[ngStyle]="{ 'pointer-events': enableLink ? 'initial' : 'none' }"
|
||||||
[routerLink]="['/pricing']"
|
[routerLink]="routerLinkPricing"
|
||||||
><ion-icon class="text-muted" name="diamond-outline"
|
><ion-icon class="text-muted" name="diamond-outline"
|
||||||
/></a>
|
/></a>
|
||||||
|
@ -17,4 +17,6 @@ import { RouterModule } from '@angular/router';
|
|||||||
})
|
})
|
||||||
export class GfPremiumIndicatorComponent {
|
export class GfPremiumIndicatorComponent {
|
||||||
@Input() enableLink = true;
|
@Input() enableLink = true;
|
||||||
|
|
||||||
|
public routerLinkPricing = ['/' + $localize`:snake-case:pricing`];
|
||||||
}
|
}
|
||||||
|
4
package-lock.json
generated
4
package-lock.json
generated
@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "ghostfolio",
|
"name": "ghostfolio",
|
||||||
"version": "2.150.0",
|
"version": "2.151.0",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "ghostfolio",
|
"name": "ghostfolio",
|
||||||
"version": "2.150.0",
|
"version": "2.151.0",
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"license": "AGPL-3.0",
|
"license": "AGPL-3.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ghostfolio",
|
"name": "ghostfolio",
|
||||||
"version": "2.150.0",
|
"version": "2.151.0",
|
||||||
"homepage": "https://ghostfol.io",
|
"homepage": "https://ghostfol.io",
|
||||||
"license": "AGPL-3.0",
|
"license": "AGPL-3.0",
|
||||||
"repository": "https://github.com/ghostfolio/ghostfolio",
|
"repository": "https://github.com/ghostfolio/ghostfolio",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user