import { HttpParams } from "@angular/common/http"; import { AbstractControl, FormControl, FormGroup } from "@angular/forms"; import { AnyObject } from "@cdk/types"; export class Utils { static validateFormGroup(formGroup: FormGroup) { if (!formGroup.valid) { Object.keys(formGroup.controls).forEach((field) => { const control = formGroup.get(field); if (control instanceof FormControl) { control.markAsDirty(); control.markAsTouched({ onlySelf: true }); control.updateValueAndValidity({ onlySelf: true }); } else if (control instanceof FormGroup) { Utils.validateFormGroup(control); } }); } return formGroup.valid; } static validateFormControl(control: AbstractControl) { control.markAsDirty(); control.markAsTouched({ onlySelf: true }); control.updateValueAndValidity({ onlySelf: true }); return control.valid; } static queryify(query: {}): string { const o = Object.create(null); Object.entries(query).forEach(([k, v]) => { if (v !== void 0 && v !== null) { o[k] = v; } }); return new URLSearchParams(o).toString(); } static getHostByEnvironment(prod?: boolean) { const protocol = window.location.protocol; const host = prod ? window.location.host : `localhost:${window.location.port}`; return `${protocol}//${host}`; } static objectToHttpParams(obj: AnyObject, parentKey = ""): HttpParams { let params = new HttpParams(); for (const key in obj) { if (obj.hasOwnProperty(key)) { const value = obj[key]; const paramName = parentKey ? `${parentKey}.${key}` : key; if (typeof value === "object" && !Array.isArray(value)) { params = params.appendAll(Utils.objectToHttpParams(value, paramName) as any); } else { params = params.append(paramName, value); } } } return params; } static objectToFormData(obj: AnyObject): FormData { let params = new FormData(); for (const key in obj) { if (obj.hasOwnProperty(key)) { const value = obj[key]; if (![void 0, null, ""].includes(value)) { params.append(key, value); } } } return params; } // static detectionImagePath(jobId: string, imgName: string) { // return `/record/${jobId}/detect/${imgName}`; // } }