import { Component, ViewChild, OnInit, ViewEncapsulation, Input, ElementRef } from '@angular/core'; import { ActivatedRoute, Router } from "@angular/router"; import {ManageZenodoCommunitiesComponent} from './manage-zenodo-communities.component'; import {AddZenodoCommunitiesComponent} from './add-zenodo-communities.component'; import {Session} from '../../openaireLibrary/login/utils/helper.class'; import {LoginErrorCodes} from '../../openaireLibrary/login/utils/guardHelper.class'; import {EnvProperties} from '../../openaireLibrary/utils/properties/env-properties'; import {ZenodoCommunitiesService} from '../../openaireLibrary/connect/zenodoCommunities/zenodo-communities.service'; import { SearchZenodoCommunitiesService } from '../../openaireLibrary/connect/zenodoCommunities/searchZenodoCommunities.service'; import {CommunityService} from "../../openaireLibrary/connect/community/community.service"; import {CommunityInfo} from '../../openaireLibrary/connect/community/communityInfo'; import {ZenodoCommunityInfo} from '../../openaireLibrary/connect/zenodoCommunities/zenodoCommunityInfo'; import {SearchUtilsClass} from '../../openaireLibrary/searchPages/searchUtils/searchUtils.class'; import {ErrorCodes} from '../../openaireLibrary/utils/properties/errorCodes'; @Component({ selector: 'zenodo-communities', template: `
` }) export class ZenodoCommunitiesComponent implements OnInit { private communityId: string = null; private community:CommunityInfo = null; @Input() communityProjects =[]; @ViewChild (ManageZenodoCommunitiesComponent) manageZenodoCommunitiesComponent : ManageZenodoCommunitiesComponent ; @ViewChild (AddZenodoCommunitiesComponent) addZenodoCommunitiesComponent : AddZenodoCommunitiesComponent ; public warningMessage = ""; public infoMessage = ""; public toggle: boolean = true; public updateCommunityProjectsOnToggle: boolean = false; public pageTitle: string = "Manage zenodo communities"; public toggleLinkMessage: string = "Manage zenodo communities"; masterZenodoCommunityId = null; masterZenodoCommunity = null; public properties:EnvProperties = null; selectedCommunityIds = null;//["ecfunded", "zenodo", "lory_hslu", "cs19", "","hbp","dighl", "wind_energy", "lory", "fp7-bmc","fp7postgrantoapilotoutputs","cernopenlab"]; selectedCommunities = []; zenodocommunitiesloadedCount = 0; zenodoSearchUtils:SearchUtilsClass = new SearchUtilsClass(); private errorCodes: ErrorCodes = new ErrorCodes();; constructor(private element: ElementRef, private route: ActivatedRoute, private _router: Router, private _ΖenodoCommunitieService: ZenodoCommunitiesService,private _communityService: CommunityService,private _searchZenodoCommunitiesService: SearchZenodoCommunitiesService) {} ngOnInit() { this.zenodoSearchUtils.status = this.errorCodes.LOADING;; this.route.data.subscribe((data: { envSpecific: EnvProperties }) => { this.properties = data.envSpecific; this.route.queryParams.subscribe(params => { this.scroll(); if(params['communityId']) { this.communityId = params['communityId']; if(!Session.isLoggedIn()){ this._router.navigate(['/user-info'], { queryParams: { "errorCode": LoginErrorCodes.NOT_VALID, "redirectUrl": this._router.url} }); } else { if (this.communityId != null && this.communityId != '') { this._communityService.getCommunity(this.properties, this.properties.communityAPI+this.communityId).subscribe ( community => { this.community = community; this.masterZenodoCommunityId = this.community.zenodoCommunity; if(this.masterZenodoCommunityId){ this._ΖenodoCommunitieService.getZenodoCommunityById(this.properties, this.properties.zenodoCommunities+this.masterZenodoCommunityId, null).subscribe( result => { this.masterZenodoCommunity = result; }, error => { var emptyCommunity:ZenodoCommunityInfo = new ZenodoCommunityInfo(); emptyCommunity.id = this.masterZenodoCommunityId; emptyCommunity.title = this.masterZenodoCommunityId; this.masterZenodoCommunity = emptyCommunity; console.log("Master Zenodo community'"+this.masterZenodoCommunityId+"' couldn't be loaded"); } ); } this.zenodoSearchUtils.status = this.errorCodes.LOADING;; this._searchZenodoCommunitiesService.searchZCommunities(this.properties,this.communityId).subscribe ( result => { this.selectedCommunityIds = result; this.zenodoSearchUtils.totalResults = this.selectedCommunityIds.length; if(this.selectedCommunityIds.length == 0){ this.zenodoSearchUtils.status = this.errorCodes.NONE; } for(let i=0; i< this.selectedCommunityIds.length; i++){ this.getZenodoCommunityById(this.selectedCommunityIds[i]["zenodoid"], this.selectedCommunityIds[i]["id"]); } }, error => { console.log("list of zenodo communities couldn't be loaded"); this.zenodoSearchUtils.status = this.errorCodes.ERROR; } //this.handleError('System error retrieving community profile', error) ); }, error => { console.log("Community couldn't be loaded"); this.zenodoSearchUtils.status = this.errorCodes.ERROR; } ); } } } }); }); } public ngOnDestroy() {} public toggleAction() { if(!Session.isLoggedIn()){ this._router.navigate(['/user-info'], { queryParams: { "errorCode": LoginErrorCodes.NOT_VALID, "redirectUrl": this._router.url} }); } else { this.scroll(); this.toggle = !this.toggle; if(this.toggle) { this.pageTitle = "Manage zenodo communities"; } else { this.updateCommunityProjectsOnToggle = false; this.pageTitle = "Search zenodo communities"; } } } getZenodoCommunityById(zenodoid, openaireId){ this._ΖenodoCommunitieService.getZenodoCommunityById(this.properties, this.properties.zenodoCommunities+zenodoid, openaireId).subscribe( result => { this.selectedCommunities.push(result); this.zenodocommunitiesloadedCount++; if(this.zenodocommunitiesloadedCount >= this.selectedCommunityIds.length){ this.zenodoSearchUtils.status = this.errorCodes.DONE; } }, error => { var emptyCommunity:ZenodoCommunityInfo = new ZenodoCommunityInfo(); emptyCommunity.id = zenodoid; emptyCommunity.openaireId = openaireId; emptyCommunity.title = zenodoid; this.selectedCommunities.push(emptyCommunity); this.zenodocommunitiesloadedCount++; if(this.zenodocommunitiesloadedCount >= this.selectedCommunityIds.length){ this.zenodoSearchUtils.status = this.errorCodes.DONE; } console.log("Zenodo community'"+zenodoid+"' couldn't be loaded"); } ); } public scroll() { if (typeof document !== 'undefined') { this.element.nativeElement.scrollIntoView(); } } }