import {Component, OnDestroy, OnInit, ViewChild} from "@angular/core"; import {StakeholderService} from "../openaireLibrary/monitor/services/stakeholder.service"; import {EnvProperties} from "../openaireLibrary/utils/properties/env-properties"; import {EnvironmentSpecificService} from "../openaireLibrary/utils/properties/environment-specific.service"; import {Stakeholder} from "../openaireLibrary/monitor/entities/stakeholder"; import {Subscriber, Subscription, zip} from "rxjs"; import {StakeholderUtils} from "../utils/indicator-utils"; import {FormBuilder, FormGroup, Validators} from "@angular/forms"; import {AlertModal} from "../openaireLibrary/utils/modal/alert"; import {Option} from "../openaireLibrary/sharedComponents/input/input.component"; import {Title} from "@angular/platform-browser"; import {UserManagementService} from "../openaireLibrary/services/user-management.service"; import {Session} from "../openaireLibrary/login/utils/helper.class"; import {UtilitiesService} from "../openaireLibrary/services/utilities.service"; import {EditStakeholderComponent} from "./edit-stakeholder/edit-stakeholder.component"; import {properties} from "../../environments/environment"; @Component({ selector: 'general', templateUrl: "./general.component.html", styleUrls: ['general.component.css'] }) export class GeneralComponent implements OnInit, OnDestroy { public stakeholder: Stakeholder; public stakeholders: Stakeholder[]; public properties: EnvProperties = properties; public defaultStakeholders: Stakeholder[]; public loading: boolean = false; private subscriptions: any[] = []; @ViewChild('editStakeholderComponent') editStakeholderComponent: EditStakeholderComponent; constructor(private stakeholderService: StakeholderService) { } ngOnInit() { this.loading = true; this.subscriptions.push(this.stakeholderService.getStakeholderAsObservable().subscribe(stakeholder => { this.stakeholder = stakeholder; if(this.stakeholder) { let data = zip( this.stakeholderService.getDefaultStakeholders(this.properties.monitorServiceAPIURL), this.stakeholderService.getStakeholders(this.properties.monitorServiceAPIURL) ); this.subscriptions.push(data.subscribe(res => { this.defaultStakeholders = res[0]; this.stakeholders = res[1]; this.reset(); this.loading = false; })); } })); } public reset() { this.editStakeholderComponent.init(this.stakeholder, this.stakeholders, this.defaultStakeholders, this.stakeholder.defaultId == null, false) } public save() { this.loading = true; this.editStakeholderComponent.save((stakeholder) => { this.stakeholder = stakeholder; this.reset(); this.loading = false; }, (error) => { this.loading = false; }); } ngOnDestroy() { this.subscriptions.forEach(subscription => { if(subscription instanceof Subscription) { subscription.unsubscribe(); } }); } }