multi-project/projects/app/_services/forms.service.ts

61 lines
1.9 KiB
TypeScript

import {Injectable} from '@angular/core';
import {HttpClient} from '@angular/common/http';
import {environment} from '@environments/environment';
import {Observable} from "rxjs";
import {UtilityService} from "@app/_services/utility.service";
import {Router} from "@angular/router";
@Injectable({providedIn: 'root'})
export class FormsService {
constructor(private http: HttpClient, private utility: UtilityService, private router: Router) {
}
get(target: string, type: string, id?: string, params?: {}): Observable<any> {
let url = `${environment.apiUrl}/api/forms/${target}/${type}` + ((id && (id !== 'null')) ? `/${id}` : '');
return this.http.get(url, {params: params});
}
save(target: string, type: string, id?: string, data?: any): Observable<any> {
let url = `${environment.apiUrl}/api/forms/${target}/${type}` + ((id && (id !== 'null')) ? `/${id}` : '');
return this.http.post(url, this.utility.normalizeData(data));
}
createModel(type: string, params?: any, list?: string) {
this.slider('model', type, null, params, list);
}
editModel(type: string, id: string, params?: any, list?: string) {
this.slider('model', type, id, params, list);
}
createObject(type: string, params?: any, list?: string) {
this.slider('object', type, null, params, list);
}
editObject(id: string, params?: any, list?: string) {
this.slider('object', null, id, params, list);
}
slider(target: string, type: string, id?: string, params?: any, list?: string) {
let commands = ['form', target, type || null, id || null];
if (list) commands.push(list);
this.router.navigate([{outlets: {slider: commands}}], {queryParams: this.makeQueryParams(params), skipLocationChange: true}).then();
}
makeQueryParams(params) {
let result: any = {};
if (params) {
for (let prop in params) {
if (params.hasOwnProperty(prop)) result[prop] = JSON.stringify(params[prop]);
}
}
return result;
}
}