Browse Source

Format checks updated

pull/2479/head
Manushreshta B L 2 years ago
parent
commit
61db525e7c
  1. 10
      apps/api/src/app/admin/admin.service.ts
  2. 1
      apps/api/src/services/data-provider/data-provider.service.ts
  3. 55
      apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts
  4. 56
      apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html

10
apps/api/src/app/admin/admin.service.ts

@ -45,10 +45,12 @@ export class AdminService {
symbol symbol
}: UniqueAsset): Promise<SymbolProfile | never> { }: UniqueAsset): Promise<SymbolProfile | never> {
try { try {
if(dataSource==="MANUAL") if (dataSource === 'MANUAL')
return await this.symbolProfileService.add( return await this.symbolProfileService.add({
{symbol, currency:DEFAULT_CURRENCY, dataSource:"MANUAL"} symbol,
); currency: DEFAULT_CURRENCY,
dataSource: 'MANUAL'
});
const assetProfiles = await this.dataProviderService.getAssetProfiles([ const assetProfiles = await this.dataProviderService.getAssetProfiles([
{ dataSource, symbol } { dataSource, symbol }

1
apps/api/src/services/data-provider/data-provider.service.ts

@ -15,6 +15,7 @@ import { UniqueAsset } from '@ghostfolio/common/interfaces';
import type { Granularity, UserWithSettings } from '@ghostfolio/common/types'; import type { Granularity, UserWithSettings } from '@ghostfolio/common/types';
import { Inject, Injectable, Logger } from '@nestjs/common'; import { Inject, Injectable, Logger } from '@nestjs/common';
import { DataSource, MarketData, SymbolProfile } from '@prisma/client'; import { DataSource, MarketData, SymbolProfile } from '@prisma/client';
import { data } from 'cheerio/lib/api/attributes';
import { format, isValid } from 'date-fns'; import { format, isValid } from 'date-fns';
import { groupBy, isEmpty, isNumber } from 'lodash'; import { groupBy, isEmpty, isNumber } from 'lodash';

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

@ -31,20 +31,19 @@ export class CreateAssetProfileDialog implements OnInit, OnDestroy {
public readonly adminService: AdminService, public readonly adminService: AdminService,
public readonly changeDetectorRef: ChangeDetectorRef, public readonly changeDetectorRef: ChangeDetectorRef,
public readonly dialogRef: MatDialogRef<CreateAssetProfileDialog>, public readonly dialogRef: MatDialogRef<CreateAssetProfileDialog>,
public readonly formBuilder: FormBuilder, public readonly formBuilder: FormBuilder
) {} ) {}
public ngOnInit() { public ngOnInit() {
this.createAssetProfileForm = this.formBuilder.group(
{
this.createAssetProfileForm = this.formBuilder.group({ searchSymbol: new FormControl(null, [Validators.required]),
searchSymbol: new FormControl(null, [Validators.required]), addSymbol: new FormControl(null, [Validators.required])
addSymbol: new FormControl(null, [Validators.required]) },
}, {
{ validators: atLeastOneValid
validators: atLeastOneValid, }
}); );
this.selectedOption = 'auto'; this.selectedOption = 'auto';
} }
@ -58,18 +57,19 @@ export class CreateAssetProfileDialog implements OnInit, OnDestroy {
} }
public onSubmit() { public onSubmit() {
console.log(this.createAssetProfileForm.controls['addSymbol'].value) console.log(this.createAssetProfileForm.controls['addSymbol'].value);
this.selectedOption==='auto'? this.selectedOption === 'auto'
this.dialogRef.close({ ? this.dialogRef.close({
dataSource: dataSource:
this.createAssetProfileForm.controls['searchSymbol'].value.dataSource, this.createAssetProfileForm.controls['searchSymbol'].value
symbol: this.createAssetProfileForm.controls['searchSymbol'].value.symbol .dataSource,
}) symbol:
: this.createAssetProfileForm.controls['searchSymbol'].value.symbol
this.dialogRef.close({ })
dataSource:"MANUAL", : this.dialogRef.close({
symbol: this.createAssetProfileForm.controls['addSymbol'].value dataSource: 'MANUAL',
}) symbol: this.createAssetProfileForm.controls['addSymbol'].value
});
} }
public ngOnDestroy() {} public ngOnDestroy() {}
@ -79,11 +79,16 @@ const atLeastOneValid = (control: AbstractControl): ValidationErrors | null => {
const searchSymbolControl = control.get('searchSymbol'); const searchSymbolControl = control.get('searchSymbol');
const addSymbolControl = control.get('addSymbol'); const addSymbolControl = control.get('addSymbol');
if(searchSymbolControl.valid && addSymbolControl.valid){ if (searchSymbolControl.valid && addSymbolControl.valid) {
return { atLeastOneValid: true }; return { atLeastOneValid: true };
} }
if ((!searchSymbolControl || !addSymbolControl) || (searchSymbolControl.valid || addSymbolControl.valid)) { if (
!searchSymbolControl ||
!addSymbolControl ||
searchSymbolControl.valid ||
addSymbolControl.valid
) {
return null; return null;
} }

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

@ -7,28 +7,46 @@
<h1 i18n mat-dialog-title>Add Asset Profile</h1> <h1 i18n mat-dialog-title>Add Asset Profile</h1>
<div class="flex-grow-1 py-3" mat-dialog-content> <div class="flex-grow-1 py-3" mat-dialog-content>
<div class="my-2"> <div class="my-2">
<mat-radio-group [(ngModel)]="selectedOption" name="radioOptions"> <mat-radio-group name="radioOptions" [(ngModel)]="selectedOption">
<div class="flex"><mat-radio-button [checked]="selectedOption==='auto'" value="auto" (click)="onRadioChange('auto')" name="auto"></mat-radio-button><label for="auto">Search</label></div> <div class="flex">
<div class="flex"><mat-radio-button value="manual" (click)="onRadioChange('manual')" name="manual"></mat-radio-button><label for="auto">Add Manually</label></div> <mat-radio-button
name="auto"
value="auto"
[checked]="selectedOption==='auto'"
(click)="onRadioChange('auto')"
></mat-radio-button
><label for="auto">Search</label>
</div>
<div class="flex">
<mat-radio-button
name="manual"
value="manual"
(click)="onRadioChange('manual')"
></mat-radio-button
><label for="auto">Add Manually</label>
</div>
</mat-radio-group> </mat-radio-group>
</div> </div>
<div *ngIf="selectedOption === 'auto'"> <div *ngIf="selectedOption === 'auto'">
<mat-form-field appearance="outline" class="w-100"> <mat-form-field appearance="outline" class="w-100">
<mat-label i18n>Name, symbol or ISIN</mat-label> <mat-label i18n>Name, symbol or ISIN</mat-label>
<gf-symbol-autocomplete <gf-symbol-autocomplete
formControlName="searchSymbol" formControlName="searchSymbol"
[includeIndices]="true" [includeIndices]="true"
/> />
</mat-form-field> </mat-form-field>
</div> </div>
<div *ngIf="selectedOption === 'manual'"> <div *ngIf="selectedOption === 'manual'">
<mat-form-field appearance="outline" class="w-100"> <mat-form-field appearance="outline" class="w-100">
<mat-label>Symbol</mat-label> <mat-label>Symbol</mat-label>
<input matInput formControlName="addSymbol" placeholder="Enter symbol"/> <input
</mat-form-field> formControlName="addSymbol"
</div> matInput
placeholder="Enter symbol"
/>
</mat-form-field>
</div>
</div> </div>
<div class="d-flex justify-content-end" mat-dialog-actions> <div class="d-flex justify-content-end" mat-dialog-actions>
<button i18n mat-button type="button" (click)="onCancel()">Cancel</button> <button i18n mat-button type="button" (click)="onCancel()">Cancel</button>

Loading…
Cancel
Save