|
|
@ -21,7 +21,8 @@ import { |
|
|
|
Component, |
|
|
|
Inject, |
|
|
|
OnDestroy, |
|
|
|
OnInit |
|
|
|
OnInit, |
|
|
|
signal |
|
|
|
} from '@angular/core'; |
|
|
|
import { FormBuilder, FormControl, Validators } from '@angular/forms'; |
|
|
|
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; |
|
|
@ -64,7 +65,14 @@ export class AssetProfileDialog implements OnDestroy, OnInit { |
|
|
|
csvString: '' |
|
|
|
}), |
|
|
|
name: ['', Validators.required], |
|
|
|
scraperConfiguration: '', |
|
|
|
scraperConfiguration: this.formBuilder.group({ |
|
|
|
defaultMarketPrice: null, |
|
|
|
headers: JSON.stringify({}), |
|
|
|
locale: '', |
|
|
|
mode: '', |
|
|
|
selector: '', |
|
|
|
url: '' |
|
|
|
}), |
|
|
|
sectors: '', |
|
|
|
symbolMapping: '', |
|
|
|
url: '' |
|
|
@ -79,6 +87,11 @@ export class AssetProfileDialog implements OnDestroy, OnInit { |
|
|
|
public historicalDataItems: LineChartItem[]; |
|
|
|
public isBenchmark = false; |
|
|
|
public marketDataItems: MarketData[] = []; |
|
|
|
public modeValues = [ |
|
|
|
{ value: 'lazy', viewValue: $localize`Lazy` }, |
|
|
|
{ value: 'instant', viewValue: $localize`Instant` } |
|
|
|
]; |
|
|
|
public scraperConfiguationIsExpanded = signal(false); |
|
|
|
public sectors: { |
|
|
|
[name: string]: { name: string; value: number }; |
|
|
|
}; |
|
|
@ -181,9 +194,18 @@ export class AssetProfileDialog implements OnDestroy, OnInit { |
|
|
|
csvString: AssetProfileDialog.HISTORICAL_DATA_TEMPLATE |
|
|
|
}, |
|
|
|
name: this.assetProfile.name ?? this.assetProfile.symbol, |
|
|
|
scraperConfiguration: JSON.stringify( |
|
|
|
this.assetProfile?.scraperConfiguration ?? {} |
|
|
|
), |
|
|
|
scraperConfiguration: { |
|
|
|
defaultMarketPrice: |
|
|
|
this.assetProfile?.scraperConfiguration?.defaultMarketPrice ?? |
|
|
|
null, |
|
|
|
headers: JSON.stringify( |
|
|
|
this.assetProfile?.scraperConfiguration?.headers ?? {} |
|
|
|
), |
|
|
|
locale: this.assetProfile?.scraperConfiguration?.locale ?? '', |
|
|
|
mode: this.assetProfile?.scraperConfiguration?.mode ?? 'lazy', |
|
|
|
selector: this.assetProfile?.scraperConfiguration?.selector ?? '', |
|
|
|
url: this.assetProfile?.scraperConfiguration?.url ?? '' |
|
|
|
}, |
|
|
|
sectors: JSON.stringify(this.assetProfile?.sectors ?? []), |
|
|
|
symbolMapping: JSON.stringify(this.assetProfile?.symbolMapping ?? {}), |
|
|
|
url: this.assetProfile?.url ?? '' |
|
|
@ -252,9 +274,31 @@ export class AssetProfileDialog implements OnDestroy, OnInit { |
|
|
|
} catch {} |
|
|
|
|
|
|
|
try { |
|
|
|
scraperConfiguration = JSON.parse( |
|
|
|
this.assetProfileForm.get('scraperConfiguration').value |
|
|
|
); |
|
|
|
scraperConfiguration = { |
|
|
|
defaultMarketPrice: |
|
|
|
this.assetProfileForm.controls['scraperConfiguration'].controls[ |
|
|
|
'defaultMarketPrice' |
|
|
|
].value, |
|
|
|
headers: JSON.parse( |
|
|
|
this.assetProfileForm.controls['scraperConfiguration'].controls[ |
|
|
|
'headers' |
|
|
|
].value |
|
|
|
), |
|
|
|
locale: |
|
|
|
this.assetProfileForm.controls['scraperConfiguration'].controls[ |
|
|
|
'locale' |
|
|
|
].value, |
|
|
|
mode: this.assetProfileForm.controls['scraperConfiguration'].controls[ |
|
|
|
'mode' |
|
|
|
].value, |
|
|
|
selector: |
|
|
|
this.assetProfileForm.controls['scraperConfiguration'].controls[ |
|
|
|
'selector' |
|
|
|
].value, |
|
|
|
url: this.assetProfileForm.controls['scraperConfiguration'].controls[ |
|
|
|
'url' |
|
|
|
].value |
|
|
|
}; |
|
|
|
} catch {} |
|
|
|
|
|
|
|
try { |
|
|
@ -306,8 +350,31 @@ export class AssetProfileDialog implements OnDestroy, OnInit { |
|
|
|
this.adminService |
|
|
|
.testMarketData({ |
|
|
|
dataSource: this.data.dataSource, |
|
|
|
scraperConfiguration: this.assetProfileForm.get('scraperConfiguration') |
|
|
|
.value, |
|
|
|
scraperConfiguration: JSON.stringify({ |
|
|
|
defaultMarketPrice: |
|
|
|
this.assetProfileForm.controls['scraperConfiguration'].controls[ |
|
|
|
'defaultMarketPrice' |
|
|
|
].value, |
|
|
|
headers: JSON.parse( |
|
|
|
this.assetProfileForm.controls['scraperConfiguration'].controls[ |
|
|
|
'headers' |
|
|
|
].value |
|
|
|
), |
|
|
|
locale: |
|
|
|
this.assetProfileForm.controls['scraperConfiguration'].controls[ |
|
|
|
'locale' |
|
|
|
].value, |
|
|
|
mode: this.assetProfileForm.controls['scraperConfiguration'].controls[ |
|
|
|
'mode' |
|
|
|
].value, |
|
|
|
selector: |
|
|
|
this.assetProfileForm.controls['scraperConfiguration'].controls[ |
|
|
|
'selector' |
|
|
|
].value, |
|
|
|
url: this.assetProfileForm.controls['scraperConfiguration'].controls[ |
|
|
|
'url' |
|
|
|
].value |
|
|
|
}), |
|
|
|
symbol: this.data.symbol |
|
|
|
}) |
|
|
|
.pipe( |
|
|
|