Browse Source
Merge branch 'main' into feature/add-product-roadmap-to-faq
pull/3143/head
Thomas Kaul
1 year ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with
43 additions and
18 deletions
-
.env.dev
-
.env.example
-
CHANGELOG.md
-
README.md
-
apps/client/src/app/components/admin-market-data-detail/admin-market-data-detail.component.ts
-
apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/interfaces/interfaces.ts
-
apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.component.ts
-
apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html
-
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
-
apps/client/src/app/services/admin.service.ts
|
|
@ -0,0 +1,25 @@ |
|
|
|
COMPOSE_PROJECT_NAME=ghostfolio-development |
|
|
|
|
|
|
|
# CACHE |
|
|
|
REDIS_HOST=localhost |
|
|
|
REDIS_PORT=6379 |
|
|
|
REDIS_PASSWORD=<INSERT_REDIS_PASSWORD> |
|
|
|
|
|
|
|
# POSTGRES |
|
|
|
POSTGRES_DB=ghostfolio-db |
|
|
|
POSTGRES_USER=user |
|
|
|
POSTGRES_PASSWORD=<INSERT_POSTGRES_PASSWORD> |
|
|
|
|
|
|
|
# VARIOUS |
|
|
|
ACCESS_TOKEN_SALT=<INSERT_RANDOM_STRING> |
|
|
|
DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@localhost:5432/${POSTGRES_DB}?connect_timeout=300&sslmode=prefer |
|
|
|
JWT_SECRET_KEY=<INSERT_RANDOM_STRING> |
|
|
|
|
|
|
|
# DEVELOPMENT |
|
|
|
|
|
|
|
# Nx 18 enables using plugins to infer targets by default |
|
|
|
# This is disabled for existing workspaces to maintain compatibility |
|
|
|
# For more info, see: https://nx.dev/concepts/inferred-tasks |
|
|
|
NX_ADD_PLUGINS=false |
|
|
|
|
|
|
|
NX_NATIVE_COMMAND_RUNNER=false |
|
|
@ -1,4 +1,4 @@ |
|
|
|
COMPOSE_PROJECT_NAME=ghostfolio-development |
|
|
|
COMPOSE_PROJECT_NAME=ghostfolio |
|
|
|
|
|
|
|
# CACHE |
|
|
|
REDIS_HOST=localhost |
|
|
@ -10,6 +10,7 @@ POSTGRES_DB=ghostfolio-db |
|
|
|
POSTGRES_USER=user |
|
|
|
POSTGRES_PASSWORD=<INSERT_POSTGRES_PASSWORD> |
|
|
|
|
|
|
|
# VARIOUS |
|
|
|
ACCESS_TOKEN_SALT=<INSERT_RANDOM_STRING> |
|
|
|
DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@localhost:5432/${POSTGRES_DB}?connect_timeout=300&sslmode=prefer |
|
|
|
JWT_SECRET_KEY=<INSERT_RANDOM_STRING> |
|
|
|
|
|
@ -11,6 +11,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 |
|
|
|
|
|
|
|
- Extended the content of the _General_ section by the product roadmap on the Frequently Asked Questions (FAQ) page |
|
|
|
|
|
|
|
### Fixed |
|
|
|
|
|
|
|
- Fixed the date conversion of the import of historical market data in the admin control panel |
|
|
|
|
|
|
|
## 2.63.2 - 2024-03-12 |
|
|
|
|
|
|
|
### Added |
|
|
|
|
|
@ -154,7 +154,7 @@ Ghostfolio is available for various home server systems, including [CasaOS](http |
|
|
|
- [Node.js](https://nodejs.org/en/download) (version 18+) |
|
|
|
- [Yarn](https://yarnpkg.com/en/docs/install) |
|
|
|
- Create a local copy of this Git repository (clone) |
|
|
|
- Copy the file `.env.example` to `.env` and populate it with your data (`cp .env.example .env`) |
|
|
|
- Copy the file `.env.dev` to `.env` and populate it with your data (`cp .env.dev .env`) |
|
|
|
|
|
|
|
### Setup |
|
|
|
|
|
|
|
|
|
@ -155,15 +155,14 @@ export class AdminMarketDataDetailComponent implements OnChanges, OnInit { |
|
|
|
day: string; |
|
|
|
yearMonth: string; |
|
|
|
}) { |
|
|
|
const date = parseISO(`${yearMonth}-${day}`); |
|
|
|
const marketPrice = this.marketDataByMonth[yearMonth]?.[day]?.marketPrice; |
|
|
|
|
|
|
|
const dialogRef = this.dialog.open(MarketDataDetailDialog, { |
|
|
|
data: <MarketDataDetailDialogParams>{ |
|
|
|
date, |
|
|
|
marketPrice, |
|
|
|
currency: this.currency, |
|
|
|
dataSource: this.dataSource, |
|
|
|
dateString: `${yearMonth}-${day}`, |
|
|
|
symbol: this.symbol, |
|
|
|
user: this.user |
|
|
|
}, |
|
|
|
|
|
@ -5,7 +5,7 @@ import { DataSource } from '@prisma/client'; |
|
|
|
export interface MarketDataDetailDialogParams { |
|
|
|
currency: string; |
|
|
|
dataSource: DataSource; |
|
|
|
date: Date; |
|
|
|
dateString: string; |
|
|
|
marketPrice: number; |
|
|
|
symbol: string; |
|
|
|
user: User; |
|
|
|
|
|
@ -45,7 +45,7 @@ export class MarketDataDetailDialog implements OnDestroy { |
|
|
|
this.adminService |
|
|
|
.fetchSymbolForDate({ |
|
|
|
dataSource: this.data.dataSource, |
|
|
|
date: this.data.date, |
|
|
|
dateString: this.data.dateString, |
|
|
|
symbol: this.data.symbol |
|
|
|
}) |
|
|
|
.pipe(takeUntil(this.unsubscribeSubject)) |
|
|
@ -63,7 +63,7 @@ export class MarketDataDetailDialog implements OnDestroy { |
|
|
|
marketData: { |
|
|
|
marketData: [ |
|
|
|
{ |
|
|
|
date: this.data.date.toISOString(), |
|
|
|
date: this.data.dateString, |
|
|
|
marketPrice: this.data.marketPrice |
|
|
|
} |
|
|
|
] |
|
|
|
|
|
@ -9,7 +9,7 @@ |
|
|
|
matInput |
|
|
|
name="date" |
|
|
|
[matDatepicker]="date" |
|
|
|
[(ngModel)]="data.date" |
|
|
|
[(ngModel)]="data.dateString" |
|
|
|
/> |
|
|
|
<mat-datepicker-toggle class="mr-2" matSuffix [for]="date"> |
|
|
|
<ion-icon |
|
|
|
|
|
@ -1,4 +1,5 @@ |
|
|
|
import { UpdateAssetProfileDto } from '@ghostfolio/api/app/admin/update-asset-profile.dto'; |
|
|
|
import { UpdateMarketDataDto } from '@ghostfolio/api/app/admin/update-market-data.dto'; |
|
|
|
import { AdminService } from '@ghostfolio/client/services/admin.service'; |
|
|
|
import { DataService } from '@ghostfolio/client/services/data.service'; |
|
|
|
import { DATE_FORMAT, parseDate } from '@ghostfolio/common/helper'; |
|
|
@ -195,15 +196,13 @@ export class AssetProfileDialog implements OnDestroy, OnInit { |
|
|
|
header: true, |
|
|
|
skipEmptyLines: true |
|
|
|
} |
|
|
|
).data; |
|
|
|
).data as UpdateMarketDataDto[]; |
|
|
|
|
|
|
|
this.adminService |
|
|
|
.postMarketData({ |
|
|
|
dataSource: this.data.dataSource, |
|
|
|
marketData: { |
|
|
|
marketData: marketData.map(({ date, marketPrice }) => { |
|
|
|
return { marketPrice, date: parseDate(date).toISOString() }; |
|
|
|
}) |
|
|
|
marketData |
|
|
|
}, |
|
|
|
symbol: this.data.symbol |
|
|
|
}) |
|
|
|
|
|
@ -188,17 +188,14 @@ export class AdminService { |
|
|
|
|
|
|
|
public fetchSymbolForDate({ |
|
|
|
dataSource, |
|
|
|
date, |
|
|
|
dateString, |
|
|
|
symbol |
|
|
|
}: { |
|
|
|
dataSource: DataSource; |
|
|
|
date: Date; |
|
|
|
dateString: string; |
|
|
|
symbol: string; |
|
|
|
}) { |
|
|
|
const url = `/api/v1/symbol/${dataSource}/${symbol}/${format( |
|
|
|
date, |
|
|
|
DATE_FORMAT |
|
|
|
)}`;
|
|
|
|
const url = `/api/v1/symbol/${dataSource}/${symbol}/${dateString}`; |
|
|
|
|
|
|
|
return this.http.get<IDataProviderHistoricalResponse>(url); |
|
|
|
} |
|
|
|