Skip to content

Commit

Permalink
feat: rxjs form loader
Browse files Browse the repository at this point in the history
  • Loading branch information
mohammad-haji committed Aug 14, 2018
1 parent c584686 commit 60287d4
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 4 deletions.
4 changes: 3 additions & 1 deletion src/app/@core/core.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {DataModule} from './data/data.module';
import {AnalyticsService} from './utils/analytics.service';
import {HttpResponse} from '@angular/common/http';
import {PageTitleTagsService} from "./services/page-title-tags.service";
import {FormLoaderService} from "./dynamic-form/service/form-loader.service";

const socialLinks = [
{
Expand Down Expand Up @@ -68,7 +69,8 @@ const NB_CORE_PROVIDERS = [
exports: [],
declarations: [],
providers: [
PageTitleTagsService
PageTitleTagsService,
FormLoaderService
]
})
export class CoreModule {
Expand Down
3 changes: 0 additions & 3 deletions src/app/@core/dynamic-form/form-loader.service.ts

This file was deleted.

47 changes: 47 additions & 0 deletions src/app/@core/dynamic-form/service/form-loader.service.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/**
* Created by Mohammad.hajiaghazadeh on 8/13/2018
*/
import {Injectable} from "@angular/core";
import {ActivatedRouteSnapshot, Resolve} from "@angular/router";
import {Observable} from "rxjs/Rx";
import {HttpClient} from "@angular/common/http";

@Injectable()
export class FormLoaderService implements Resolve<Observable<any>> {
private JSON_DIR = '/assets/forms/';

constructor(private httpClient: HttpClient) {

}

/**
* load form from forms directory
* @param form
* @returns {Observable<Object>}
*/
load(form) {
return this.httpClient.get(`${this.JSON_DIR}${form.path}.form.schema.json`);
}

/**
* load forms based on form config
* @param route
* @returns {any}
*/
loadForms(route): any {
return Object.keys(route.data.forms).forEach((formKey) => {
route.data.forms[formKey].schema = this.load(route.data.forms[formKey]);
// .subscribe(res => {
// });
});
}

/**
* resolve forms
* @param {ActivatedRouteSnapshot} route
* @returns {any}
*/
resolve(route: ActivatedRouteSnapshot) {
return this.loadForms(route);
}
}

0 comments on commit 60287d4

Please sign in to comment.