Browse Source

refactor(forms): move validators to common utils

pull/6284/head
omkarg01 1 day ago
parent
commit
a7f64439e0
  1. 26
      apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
  2. 15
      libs/common/src/lib/utils/form.util.ts

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

@ -17,7 +17,10 @@ import {
User
} from '@ghostfolio/common/interfaces';
import { DateRange } from '@ghostfolio/common/types';
import { validateObjectForForm } from '@ghostfolio/common/utils';
import {
validateObjectForForm,
jsonValidator
} from '@ghostfolio/common/utils/form.util';
import { GfCurrencySelectorComponent } from '@ghostfolio/ui/currency-selector';
import { GfEntityLogoComponent } from '@ghostfolio/ui/entity-logo';
import { GfHistoricalMarketDataEditorComponent } from '@ghostfolio/ui/historical-market-data-editor';
@ -150,7 +153,7 @@ export class GfAssetProfileDialogComponent implements OnDestroy, OnInit {
assetClass: new FormControl<AssetClass>(undefined),
assetSubClass: new FormControl<AssetSubClass>(undefined),
comment: '',
countries: ['', this.jsonValidator()],
countries: ['', jsonValidator()],
currency: '',
historicalData: this.formBuilder.group({
csvString: ''
@ -159,14 +162,14 @@ export class GfAssetProfileDialogComponent implements OnDestroy, OnInit {
name: ['', Validators.required],
scraperConfiguration: this.formBuilder.group({
defaultMarketPrice: null,
headers: [JSON.stringify({}), this.jsonValidator()],
headers: [JSON.stringify({}), jsonValidator()],
locale: '',
mode: '',
selector: '',
url: ''
}),
sectors: ['', this.jsonValidator()],
symbolMapping: ['', this.jsonValidator()],
sectors: ['', jsonValidator()],
symbolMapping: ['', jsonValidator()],
url: ''
});
@ -722,17 +725,4 @@ export class GfAssetProfileDialogComponent implements OnDestroy, OnInit {
};
}
}
private jsonValidator() {
return (control: AbstractControl): ValidationErrors | null => {
try {
if (control.value) {
JSON.parse(control.value);
}
return null;
} catch {
return { invalidJson: true };
}
};
}
}

15
libs/common/src/lib/utils/form.util.ts

@ -1,3 +1,4 @@
import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';
import { FormGroup } from '@angular/forms';
import { plainToInstance } from 'class-transformer';
import { validate } from 'class-validator';
@ -44,3 +45,17 @@ export async function validateObjectForForm<T>({
return Promise.reject(nonIgnoredErrors);
}
export function jsonValidator(): ValidatorFn {
return (control: AbstractControl): ValidationErrors | null => {
if (!control.value) {
return null;
}
try {
JSON.parse(control.value);
} catch {
return { invalidJson: true };
}
};
}

Loading…
Cancel
Save