diff --git a/apps/client/src/app/components/admin-market-data/admin-market-data.component.ts b/apps/client/src/app/components/admin-market-data/admin-market-data.component.ts index 6f6c6edc1..696174699 100644 --- a/apps/client/src/app/components/admin-market-data/admin-market-data.component.ts +++ b/apps/client/src/app/components/admin-market-data/admin-market-data.component.ts @@ -14,7 +14,6 @@ import { } from '@ghostfolio/common/interfaces'; import { AdminMarketDataItem } from '@ghostfolio/common/interfaces/admin-market-data.interface'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; -import { AssetProfileDialogParams } from '@ghostfolio/ui/admin-market-data-detail/interfaces/interfaces'; import { translate } from '@ghostfolio/ui/i18n'; import { SelectionModel } from '@angular/cdk/collections'; @@ -42,6 +41,7 @@ import { AdminMarketDataService } from './admin-market-data.service'; import { AssetProfileDialog } from './asset-profile-dialog/asset-profile-dialog.component'; import { CreateAssetProfileDialog } from './create-asset-profile-dialog/create-asset-profile-dialog.component'; import { CreateAssetProfileDialogParams } from './create-asset-profile-dialog/interfaces/interfaces'; +import { AssetProfileDialogParams } from './interfaces/interfaces'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.scss b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.scss index 190018a17..7057aad83 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.scss +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.scss @@ -3,8 +3,9 @@ .mat-mdc-dialog-content { max-height: unset; - } - gf-line-chart { - aspect-ratio: 16/9; + + gf-line-chart { + aspect-ratio: 16/9; + } } } diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts index 90f45f9cc..322ed41c8 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts @@ -13,7 +13,6 @@ import { User, LineChartItem } from '@ghostfolio/common/interfaces'; -import { AssetProfileDialogParams } from '@ghostfolio/ui/admin-market-data-detail/interfaces/interfaces'; import { translate } from '@ghostfolio/ui/i18n'; import { @@ -36,6 +35,8 @@ import { format } from 'date-fns'; import { EMPTY, Subject } from 'rxjs'; import { catchError, takeUntil } from 'rxjs/operators'; +import { AssetProfileDialogParams } from '../interfaces/interfaces'; + @Component({ host: { class: 'd-flex flex-column h-100' }, selector: 'gf-asset-profile-dialog', diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html index 91bb31f3b..65f7d1059 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -68,7 +68,6 @@
-

Line

-
diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.module.ts b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.module.ts index e235ffd27..ceea421a3 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.module.ts +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.module.ts @@ -1,8 +1,8 @@ import { AdminMarketDataService } from '@ghostfolio/client/components/admin-market-data/admin-market-data.service'; import { GfAssetProfileIconComponent } from '@ghostfolio/client/components/asset-profile-icon/asset-profile-icon.component'; -import { AdminMarketDataDetailComponent } from '@ghostfolio/ui/admin-market-data-detail'; import { GfCurrencySelectorComponent } from '@ghostfolio/ui/currency-selector'; import { GfLineChartComponent } from '@ghostfolio/ui/line-chart'; +import { GfMarketDataDetailComponent } from '@ghostfolio/ui/market-data-detail'; import { GfPortfolioProportionChartComponent } from '@ghostfolio/ui/portfolio-proportion-chart'; import { GfValueComponent } from '@ghostfolio/ui/value'; @@ -23,7 +23,7 @@ import { AssetProfileDialog } from './asset-profile-dialog.component'; @NgModule({ declarations: [AssetProfileDialog], imports: [ - AdminMarketDataDetailComponent, + GfMarketDataDetailComponent, CommonModule, FormsModule, GfAssetProfileIconComponent, diff --git a/libs/ui/src/lib/admin-market-data-detail/interfaces/interfaces.ts b/apps/client/src/app/components/admin-market-data/interfaces/interfaces.ts similarity index 100% rename from libs/ui/src/lib/admin-market-data-detail/interfaces/interfaces.ts rename to apps/client/src/app/components/admin-market-data/interfaces/interfaces.ts diff --git a/libs/ui/src/lib/admin-market-data-detail/index.ts b/libs/ui/src/lib/admin-market-data-detail/index.ts deleted file mode 100644 index b74bee25d..000000000 --- a/libs/ui/src/lib/admin-market-data-detail/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './admin-market-data-detail.component'; diff --git a/libs/ui/src/lib/market-data-detail/index.ts b/libs/ui/src/lib/market-data-detail/index.ts new file mode 100644 index 000000000..6641378fc --- /dev/null +++ b/libs/ui/src/lib/market-data-detail/index.ts @@ -0,0 +1 @@ +export * from './market-data-detail.component'; diff --git a/libs/ui/src/lib/admin-market-data-detail/market-data-detail-dialog/interfaces/interfaces.ts b/libs/ui/src/lib/market-data-detail/market-data-detail-dialog/interfaces/interfaces.ts similarity index 100% rename from libs/ui/src/lib/admin-market-data-detail/market-data-detail-dialog/interfaces/interfaces.ts rename to libs/ui/src/lib/market-data-detail/market-data-detail-dialog/interfaces/interfaces.ts diff --git a/libs/ui/src/lib/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.component.ts b/libs/ui/src/lib/market-data-detail/market-data-detail-dialog/market-data-detail-dialog.component.ts similarity index 100% rename from libs/ui/src/lib/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.component.ts rename to libs/ui/src/lib/market-data-detail/market-data-detail-dialog/market-data-detail-dialog.component.ts diff --git a/libs/ui/src/lib/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html b/libs/ui/src/lib/market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html similarity index 100% rename from libs/ui/src/lib/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html rename to libs/ui/src/lib/market-data-detail/market-data-detail-dialog/market-data-detail-dialog.html diff --git a/libs/ui/src/lib/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.scss b/libs/ui/src/lib/market-data-detail/market-data-detail-dialog/market-data-detail-dialog.scss similarity index 100% rename from libs/ui/src/lib/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.scss rename to libs/ui/src/lib/market-data-detail/market-data-detail-dialog/market-data-detail-dialog.scss diff --git a/libs/ui/src/lib/admin-market-data-detail/admin-market-data-detail.component.html b/libs/ui/src/lib/market-data-detail/market-data-detail.component.html similarity index 100% rename from libs/ui/src/lib/admin-market-data-detail/admin-market-data-detail.component.html rename to libs/ui/src/lib/market-data-detail/market-data-detail.component.html diff --git a/libs/ui/src/lib/admin-market-data-detail/admin-market-data-detail.component.scss b/libs/ui/src/lib/market-data-detail/market-data-detail.component.scss similarity index 90% rename from libs/ui/src/lib/admin-market-data-detail/admin-market-data-detail.component.scss rename to libs/ui/src/lib/market-data-detail/market-data-detail.component.scss index a03533589..cc835a90e 100644 --- a/libs/ui/src/lib/admin-market-data-detail/admin-market-data-detail.component.scss +++ b/libs/ui/src/lib/market-data-detail/market-data-detail.component.scss @@ -2,10 +2,6 @@ display: block; font-size: 0.9rem; - gf-line-chart { - aspect-ratio: 16/9; - } - .date { font-feature-settings: 'tnum'; font-variant-numeric: tabular-nums; diff --git a/libs/ui/src/lib/admin-market-data-detail/admin-market-data-detail.component.ts b/libs/ui/src/lib/market-data-detail/market-data-detail.component.ts similarity index 87% rename from libs/ui/src/lib/admin-market-data-detail/admin-market-data-detail.component.ts rename to libs/ui/src/lib/market-data-detail/market-data-detail.component.ts index 1625fda34..52bd895a7 100644 --- a/libs/ui/src/lib/admin-market-data-detail/admin-market-data-detail.component.ts +++ b/libs/ui/src/lib/market-data-detail/market-data-detail.component.ts @@ -6,14 +6,12 @@ import { getLocale } from '@ghostfolio/common/helper'; import { LineChartItem, User } from '@ghostfolio/common/interfaces'; -import { AssetProfileDialogParams } from '@ghostfolio/ui/admin-market-data-detail/interfaces/interfaces'; import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, Component, EventEmitter, - Inject, Input, OnChanges, OnInit, @@ -21,7 +19,7 @@ import { } from '@angular/core'; import { FormBuilder, ReactiveFormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; -import { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog'; +import { MatDialog } from '@angular/material/dialog'; import { MatInputModule } from '@angular/material/input'; import { MatSnackBar } from '@angular/material/snack-bar'; import { DataSource, MarketData } from '@prisma/client'; @@ -38,6 +36,7 @@ import { parseISO } from 'date-fns'; import { first, last } from 'lodash'; +import ms from 'ms'; import { DeviceDetectorService } from 'ngx-device-detector'; import { parse as csvToJson } from 'papaparse'; import { EMPTY, Subject, takeUntil } from 'rxjs'; @@ -48,13 +47,13 @@ import { MarketDataDetailDialogComponent } from './market-data-detail-dialog/mar @Component({ changeDetection: ChangeDetectionStrategy.OnPush, - imports: [CommonModule, ReactiveFormsModule, MatButtonModule, MatInputModule], - selector: 'gf-admin-market-data-detail', + imports: [CommonModule, MatButtonModule, MatInputModule, ReactiveFormsModule], + selector: 'gf-market-data-details', standalone: true, - styleUrls: ['./admin-market-data-detail.component.scss'], - templateUrl: './admin-market-data-detail.component.html' + styleUrls: ['./market-data-detail.component.scss'], + templateUrl: './market-data-detail.component.html' }) -export class AdminMarketDataDetailComponent implements OnChanges, OnInit { +export class GfMarketDataDetailComponent implements OnChanges, OnInit { @Input() currency: string; @Input() dataSource: DataSource; @Input() dateOfFirstActivity: string; @@ -64,11 +63,16 @@ export class AdminMarketDataDetailComponent implements OnChanges, OnInit { @Input() user: User; @Output() marketDataChanged = new EventEmitter(); - @Output() updateHistoricalData = new EventEmitter(); + @Output() historicalDataUpdated = new EventEmitter(); public days = Array(31); public defaultDateFormat: string; public deviceType: string; + public historicalDataForm = this.formBuilder.group({ + historicalData: this.formBuilder.group({ + csvString: '' + }) + }); public historicalDataItems: LineChartItem[]; public marketDataByMonth: { [yearMonth: string]: { @@ -76,12 +80,6 @@ export class AdminMarketDataDetailComponent implements OnChanges, OnInit { }; } = {}; - public historicalDataForm = this.formBuilder.group({ - historicalData: this.formBuilder.group({ - csvString: '' - }) - }); - private static readonly HISTORICAL_DATA_TEMPLATE = `date;marketPrice\n${format( new Date(), DATE_FORMAT @@ -91,11 +89,10 @@ export class AdminMarketDataDetailComponent implements OnChanges, OnInit { public constructor( private adminService: AdminService, - @Inject(MAT_DIALOG_DATA) public data: AssetProfileDialogParams, private deviceService: DeviceDetectorService, + private formBuilder: FormBuilder, private dialog: MatDialog, - private snackBar: MatSnackBar, - private formBuilder: FormBuilder + private snackBar: MatSnackBar ) { this.deviceType = this.deviceService.getDeviceInfo().deviceType; } @@ -236,38 +233,38 @@ export class AdminMarketDataDetailComponent implements OnChanges, OnInit { this.adminService .postMarketData({ - dataSource: this.data.dataSource, + dataSource: this.dataSource, marketData: { marketData }, - symbol: this.data.symbol + symbol: this.symbol }) .pipe( catchError(({ error, message }) => { this.snackBar.open(`${error}: ${message[0]}`, undefined, { - duration: 3000 + duration: ms('3 seconds') }); return EMPTY; }), takeUntil(this.unsubscribeSubject) ) .subscribe(() => { - this.updateHistoricalData.emit(); + this.historicalDataUpdated.emit(); this.initializeHistoricalDataForm(); }); } catch { this.snackBar.open( $localize`Oops! Could not parse historical data.`, undefined, - { duration: 3000 } + { duration: ms('3 seconds') } ); } } - public initializeHistoricalDataForm() { + private initializeHistoricalDataForm() { this.historicalDataForm.setValue({ historicalData: { - csvString: AdminMarketDataDetailComponent.HISTORICAL_DATA_TEMPLATE + csvString: GfMarketDataDetailComponent.HISTORICAL_DATA_TEMPLATE } }); }