Browse Source

Provided support for Scraper Configuration.

pull/2546/head
Manushreshta B L 2 years ago
parent
commit
7d70cd6643
  1. 2
      apps/api/src/app/admin/admin.controller.ts
  2. 10
      apps/api/src/services/data-gathering/data-gathering.service.ts
  3. 11
      apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
  4. 22
      apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
  5. 2
      apps/client/src/app/services/admin.service.ts

2
apps/api/src/app/admin/admin.controller.ts

@ -221,7 +221,7 @@ export class AdminController {
@Param('dataSource') dataSource: DataSource,
@Param('dateString') dateString: string,
@Param('symbol') symbol: string
): Promise<MarketData> {
): Promise<MarketData | number> {
if (
!hasPermission(
this.request.user.permissions,

10
apps/api/src/services/data-gathering/data-gathering.service.ts

@ -15,6 +15,7 @@ import {
import {
DATE_FORMAT,
getAssetProfileIdentifier,
getYesterday,
resetHours
} from '@ghostfolio/common/helper';
import { BenchmarkProperty, UniqueAsset } from '@ghostfolio/common/interfaces';
@ -96,8 +97,9 @@ export class DataGatheringService {
date
);
const marketPrice =
historicalData[symbol][format(date, DATE_FORMAT)].marketPrice;
var marketPrice =
historicalData[symbol]?.[format(getYesterday(), DATE_FORMAT)]
.marketPrice;
if (marketPrice) {
return await this.prismaService.marketData.upsert({
@ -114,7 +116,9 @@ export class DataGatheringService {
} catch (error) {
Logger.error(error, 'DataGatheringService');
} finally {
return undefined;
if (dataSource === 'MANUAL' && marketPrice !== undefined)
return marketPrice;
else return undefined;
}
}

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

@ -240,6 +240,17 @@ export class AssetProfileDialog implements OnDestroy, OnInit {
});
}
public onTestScraper(symbol: string) {
const today = new Date();
this.adminService
.gatherSymbol({ dataSource: 'MANUAL', date: today, symbol })
.pipe(takeUntil(this.unsubscribeSubject))
.subscribe((response) => {
if (response !== null) alert('Current Market Price is: ' + response);
else alert('Please try again.');
});
}
public onUnsetBenchmark({ dataSource, symbol }: UniqueAsset) {
this.dataService
.deleteBenchmark({ dataSource, symbol })

22
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html

@ -235,12 +235,22 @@
<div *ngIf="assetProfile?.dataSource === 'MANUAL'">
<mat-form-field appearance="outline" class="w-100">
<mat-label i18n>Scraper Configuration</mat-label>
<textarea
cdkTextareaAutosize
formControlName="scraperConfiguration"
matInput
type="text"
></textarea>
<div class="d-flex">
<textarea
cdkTextareaAutosize
formControlName="scraperConfiguration"
matInput
type="text"
></textarea>
<button
class="mr-1"
color="primary"
mat-flat-button
(click)="onTestScraper(assetProfile?.symbol)"
>
<ng-container i18n>Test</ng-container>
</button>
</div>
</mat-form-field>
</div>
<div>

2
apps/client/src/app/services/admin.service.ts

@ -182,7 +182,7 @@ export class AdminService {
url = `${url}/${format(date, DATE_FORMAT)}`;
}
return this.http.post<MarketData | void>(url, {});
return this.http.post<MarketData | number | void>(url, {});
}
public fetchSymbolForDate({

Loading…
Cancel
Save