argos/dmp-frontend/src/app/viewers/project-detailed/project-detailed.component.ts

80 lines
2.2 KiB
TypeScript

import { Component, OnInit } from '@angular/core';
import { Router, ActivatedRoute, ParamMap, Params } from '@angular/router';
import {Location} from '@angular/common';
import { ServerService } from '../../../app/services/server.service';
import '../../../assets/perfect-scrollbar/perfect-scrollbar.js';
declare var PerfectScrollbar : any;
declare var $ :any;
@Component({
selector: 'project-detailed',
templateUrl: './project-detailed.component.html',
styleUrls: [
'../../../assets/perfect-scrollbar/perfect-scrollbar.css',
'./project-detailed.component.css'
]
})
export class ProjectDetailedComponent implements OnInit {
constructor(private serverService: ServerService, private router: Router, private _location: Location, private route: ActivatedRoute) {
}
users : Map<string, string> = new Map<string, string>();
project : any;
ngOnInit() {
let sub = this.route.queryParams.subscribe(params => {
let projectid = params.projectid;
this.serverService.getProject(projectid).subscribe(
response => {
this.project = response;
$('#project-details-modal').modal('show');
//get also projects of dmp (there's a problem with the List<> serialization on server - side)
this.serverService.getDmpsOfProject(projectid).subscribe(
response => {
this.project.dmps = response;
this.populateUsersMap(this.project);
},
error => {
console.log("Could not fetch project's dmps");
}
)
},
error => {
console.log("Could not load project");
}
)
});
var projectDetailsModalScroller = new PerfectScrollbar("#project-modal-content");
}
getUserByID(userid: string){
return this.serverService.getUserByID(userid); //Notice: returns Observable !
}
private populateUsersMap(project){
this.users.clear();
project.dmps.forEach(dmp => {
if(!this.users.has(dmp.creator)){
this.serverService.getUserByID(dmp.creator).subscribe(
user => {
this.users.set(dmp.creator, dmp.name);
},
error => {
}
)
}
});
}
}