import {Component, EventEmitter, Input, OnChanges, Output, SimpleChanges} from '@angular/core'; import {FormBuilder} from "@angular/forms"; import {EnvProperties} from "../../utils/properties/env-properties"; import {SearchCustomFilter} from "./searchUtils.class"; import {ConfigurationService} from "../../utils/configuration/configuration.service"; import {RouterHelper} from "../../utils/routerHelper.class"; import {Router} from "@angular/router"; @Component({ selector: 'entities-selection', template: ` All content Research outcomes Projects Content providers Organizations All content Research outcomes Projects Content providers Organizations ` }) export class EntitiesSelectionComponent { showResearchOutcomes: boolean = false; showProjects: boolean = false; showDataProviders: boolean = false; showOrganizations: boolean = false; @Input() properties: EnvProperties; @Input() customFilter: SearchCustomFilter = null; @Input() @Output() selectedEntity = "Research Outcomes"; @Input() currentEntity = "Research Outcomes"; @Input() simpleView: boolean = true; @Input() onChangeNavigate: boolean = true; @Output() selectionChange = new EventEmitter(); show = false; constructor(private _fb: FormBuilder, private config: ConfigurationService, private router: Router) { } ngOnInit() { if (this.properties) { this.config.getCommunityInformation(this.properties, (this.customFilter && this.customFilter.queryFieldName == "communitId") ? this.customFilter.valueId : this.properties.adminToolsCommunity).subscribe(data => { var showEntity = {}; for (var i = 0; i < data['entities'].length; i++) { showEntity["" + data['entities'][i]["pid"] + ""] = data['entities'][i]["isEnabled"]; } this.showResearchOutcomes = showEntity["publication"] || showEntity["dataset"] || showEntity["software"] || showEntity["orp"]; this.showProjects = showEntity["project"]; this.showOrganizations = showEntity["organization"]; this.showDataProviders = showEntity["datasource"]; if (this.customFilter && this.customFilter.queryFieldName == "communityId") { this.showProjects = false; this.showOrganizations = false; this.showDataProviders = false; } this.show = true; }); } this.selectedEntity = this.currentEntity; this.selectionChange.emit({ entity: this.selectedEntity, simpleUrl: this.getUrl(true), advancedUrl: this.getUrl(false) }); } entityChanged() { if (!this.simpleView || this.onChangeNavigate) { this.router.navigate([this.getUrl(this.simpleView)]); } else { this.selectionChange.emit({ entity: this.selectedEntity, simpleUrl: this.getUrl(true), advancedUrl: this.getUrl(false) }); } } getUrl(simpleView: boolean) { let url = ""; if (this.selectedEntity == "all") { url = (simpleView ? "/search/find/" : null); } else if (this.selectedEntity == "result") { url = (simpleView ? this.properties.searchLinkToResults : this.properties.searchLinkToAdvancedResults); } else if (this.selectedEntity == "project") { url = (simpleView ? this.properties.searchLinkToProjects : this.properties.searchLinkToAdvancedProjects); } else if (this.selectedEntity == "dataprovider") { url = (simpleView ? this.properties.searchLinkToDataProviders : this.properties.searchLinkToAdvancedDataProviders); } else if (this.selectedEntity == "organization") { url = (simpleView ? this.properties.searchLinkToOrganizations : this.properties.searchLinkToAdvancedOrganizations); } return url; } }