Added schema layout api to schemaService
All checks were successful
FarmMaps.Develop/FarmMapsLib/pipeline/head This commit looks good

This commit is contained in:
Mark van der Wal 2020-07-09 13:45:24 +02:00
parent 60ed2afaa4
commit 3352bfd805

View File

@ -1,13 +1,15 @@
import {Injectable} from '@angular/core'; import {Inject, Injectable, LOCALE_ID} from '@angular/core';
import {HttpClient} from '@angular/common/http'; import {HttpClient} from '@angular/common/http';
import {AppConfig} from '../shared/app.config'; import {AppConfig} from '../shared/app.config';
import {Observable} from 'rxjs'; import {Observable, of} from 'rxjs';
import {catchError, switchMap} from 'rxjs/operators';
@Injectable({ @Injectable({
providedIn: 'root', providedIn: 'root',
}) })
export class SchemaService { export class SchemaService {
constructor(private httpClient: HttpClient, private appConfig: AppConfig) { constructor(private httpClient: HttpClient, private appConfig: AppConfig,
@Inject(LOCALE_ID) private locale) {
} }
ApiEndpoint() { ApiEndpoint() {
@ -19,4 +21,23 @@ export class SchemaService {
const encodedId = encodeURIComponent(id); const encodedId = encodeURIComponent(id);
return this.httpClient.get<any>(`${this.ApiEndpoint()}/api/v1/schema/${encodedId}`); return this.httpClient.get<any>(`${this.ApiEndpoint()}/api/v1/schema/${encodedId}`);
} }
public getSchemaLayout(schemaUrl: string, locale: string): Observable<any> {
const encodedId = encodeURIComponent(schemaUrl);
return this.httpClient.get<any>(`${this.ApiEndpoint()}/api/v1/schema/${encodedId}/layout/${locale}`);
}
public getSchemaAndLayout(schemaUrl: string, locale: string = this.locale):
Observable<{schemaJson: any, schemaLayout: any}> {
return this.getSchema(schemaUrl).pipe(
switchMap(
schemaJson => this.getSchemaLayout(schemaUrl, locale)
.pipe(catchError(err => {
return of(undefined);
})),
(schemaJson, schemaLayout) => {
return ({schemaJson, schemaLayout});
}
));
}
} }