import {Component, ViewChild, OnInit, Input, ElementRef, OnDestroy} 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'; import {HelperFunctions} from "../../openaireLibrary/utils/HelperFunctions.class"; import {Title} from '@angular/platform-browser'; @Component({ selector: 'zenodo-communities', template: `
` }) export class ZenodoCommunitiesComponent implements OnInit, OnDestroy { private communityId: string = null; private community: CommunityInfo = null; @Input() communityProjects = []; @ViewChild (ManageZenodoCommunitiesComponent) manageZenodoCommunitiesComponent: ManageZenodoCommunitiesComponent ; @ViewChild (AddZenodoCommunitiesComponent) addZenodoCommunitiesComponent: AddZenodoCommunitiesComponent ; public warningMessage = ''; public infoMessage = ''; public toggle = true; public updateCommunityProjectsOnToggle = false; public pageTitle = 'Manage zenodo communities'; public toggleLinkMessage = '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 title: Title, 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 => { HelperFunctions.scroll(); if (params['communityId']) { this.communityId = params['communityId']; this.title.setTitle('Administration Dashboard | Zenodo Communities'); 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 => { const 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 { HelperFunctions.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 => { const 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'); } ); } }