import { HttpHeaders } from '@angular/common/http';
import { Component, OnInit } from '@angular/core';
import { FormGroup } from '@angular/forms';
import { ActivatedRoute, Router } from "@angular/router";
import { exhaustMap } from 'rxjs';
import { ProgramPreferencesService } from '../services/program-preferences.service';
@Component({
selector: 'app-program-preferences',
templateUrl: './program-preferences.component.html',
styleUrls: ['./program-preferences.component.css']
})
export class ProgramPreferencesComponent implements OnInit {
PrefForm!: FormGroup;
httpOptions: { headers: HttpHeaders };
nodeId: number;
isProgramLoaded = true;
constructor(
private activatedRoute: ActivatedRoute,
private router: Router,
private ProgramPreferencesService:ProgramPreferencesService
) { }
ngOnInit(): void {
this.activatedRoute.params.subscribe((params) => {
if (params["nodeId"]) {
this.nodeId = +params["nodeId"];
} else {
this.isProgramLoaded = false;
}
});
}
// funkcija koja ce se pokrenuti kada se klikne Save
onSave() {
// kupi sve iz forme i pretvara u JSON string
var bodyString = this.stringifyProgram();
//dohvata token (potrebno da bi se spojilo sa backendom, drupalom u ovom slucaju)
this.ProgramPreferencesService.getToken()
.pipe(
exhaustMap((token: string) => {
// dohvata headerse
this.httpOptions = this.populateHeaders(token);
//poziva service koji ce spremiti novi node u drupal sa content type program preferences
return this.ProgramPreferencesService.createProgramPreferences(this.httpOptions, bodyString);
})
)
.subscribe(() => {
});
}
stringifyProgram() {
// kupi sve iz forme za program preferences
var body: any = JSON.stringify(this.PrefForm.value);
let data = {
// definise se kojeg ce content type biti novi node
type: "program_preferences",
title: [
{
value: "New preferences node",
},
],
// u Configuration sprema sve iz forme u JSON formatu kao string
field_pref_configuration: [
{
value: body,
},
],
// sprema se programID u field Program reference
field_program_reference: [
{
value: this.nodeId,
},
],
};
return JSON.stringify(data);
}
populateHeaders(token: string) {
return {
headers: new HttpHeaders({
"Content-Type": "application/json",
"X-CSRF-Token": token,
}),
};
}
}