import {Component, EventEmitter, Input, Output, ViewChild} 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 {Router} from "@angular/router"; import {LoginErrorCodes} from "../../login/utils/guardHelper.class"; import {MatSelect} from "@angular/material"; @Component({ selector: 'entities-selection', template: ` All content Research outcomes Projects Content providers Organizations All research outcomes Publications Datasets Software Other Research products
{{onlyresults ? 'All research outcomes' : 'All content'}} Research outcomes Projects Content providers Organizations Publications Datasets Software Other Research products
` }) export class EntitiesSelectionComponent { showResearchOutcomes: boolean = false; showPublications: boolean = false; showDatasets: boolean = false; showSoftware: boolean = false; showOther: 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(); @Input() onlyresults: boolean = false; @Input() matPanelClass="matSelectionPanel"; @Input() disableSelect:boolean=false; show = 0; @ViewChild(MatSelect)matSelect:MatSelect; constructor(private _fb: FormBuilder, private config: ConfigurationService, private router: Router) { } ngOnInit() { this.show = 0; if (this.properties) { // console.log(this.customFilter) this.config.getCommunityInformation(this.properties, (this.customFilter && this.customFilter.queryFieldName == "communityId") ? this.customFilter.valueId : this.properties.adminToolsCommunity).subscribe(data => { let showEntity = {}; let showPage = {}; for (let i = 0; i < data['entities'].length; i++) { showEntity["" + data['entities'][i]["pid"] + ""] = data['entities'][i]["isEnabled"]; } for (let i = 0; i < data['pages'].length; i++) { showPage["" + data['pages'][i]["route"] + ""] = data['pages'][i]["isEnabled"]; } this.showResearchOutcomes = showPage[this.properties.searchLinkToResults] && (showEntity["publication"] || showEntity["dataset"] || showEntity["software"] || showEntity["orp"]); this.showPublications = showPage[this.properties.searchLinkToResults] && showEntity["publication"]; this.showDatasets = showPage[this.properties.searchLinkToResults] && showEntity["dataset"]; this.showSoftware = showPage[this.properties.searchLinkToResults] && showEntity["software"]; this.showOther = showPage[this.properties.searchLinkToResults] && showEntity["orp"]; this.showProjects = showPage[this.properties.searchLinkToProjects] && showEntity["project"]; this.showOrganizations = showPage[this.properties.searchLinkToOrganizations] && showEntity["organization"]; this.showDataProviders = showPage[this.properties.searchLinkToDataProviders] && showEntity["datasource"]; if (this.customFilter && this.customFilter.queryFieldName == "communityId") { this.showOrganizations = false; if(!this.simpleView){ this.showProjects = false; this.showDataProviders = false; } } if(this.showResearchOutcomes){ this.show++; } if(this.showDataProviders){ this.show++; } if(this.showOrganizations){ this.show++; } if(this.showProjects){ this.show++; } if(this.show ==1){ this.disableSelect = 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.onlyresults) { 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); } }else{ url = (simpleView ? this.properties.searchLinkToResults : this.properties.searchLinkToAdvancedResults); } return url; } toggle(){ if(this.matSelect) { this.matSelect.toggle(); } } open(){ if(this.matSelect && !this.matSelect.focused) { this.matSelect.open(); } } }