Merge pull request 'Production release February 2024' (#31) from develop into master

Reviewed-on: #31
This commit is contained in:
Konstantina Galouni 2024-02-08 18:03:26 +01:00
commit c3cb2d56ca
18 changed files with 373 additions and 198 deletions

View File

@ -111,9 +111,11 @@ export class DisplayClaimsComponent implements OnInit, OnDestroy {
this.updateUrl(this.url); this.updateUrl(this.url);
this.subscriptions.push(this._piwikService.trackView(this.properties, this.pageTitle).subscribe()); this.subscriptions.push(this._piwikService.trackView(this.properties, this.pageTitle).subscribe());
this.subscriptions.push(this.helper.getPageHelpContents(this.properties, this.communityId, this._router.url).subscribe(contents => { if(properties.adminToolsPortalType !== "explore") {
this.pageContents = contents; this.subscriptions.push(this.helper.getPageHelpContents(this.properties, this.communityId, this._router.url).subscribe(contents => {
})); this.pageContents = contents;
}));
}
this.subscriptions.push(this.indexInfoService.getLastIndexDate(this.properties).subscribe(res => { this.subscriptions.push(this.indexInfoService.getLastIndexDate(this.properties).subscribe(res => {
this.lastIndexDate = res; this.lastIndexDate = res;
})); }));

View File

@ -87,9 +87,11 @@ export class LinkingGenericComponent {
this.subscriptions.push(this._piwikService.trackView(this.properties, this.pageTitle).subscribe()); this.subscriptions.push(this._piwikService.trackView(this.properties, this.pageTitle).subscribe());
if(properties.adminToolsPortalType !== "explore") {
this.helper.getPageHelpContents(this.properties, this.communityId, this._router.url).subscribe(contents => { this.helper.getPageHelpContents(this.properties, this.communityId, this._router.url).subscribe(contents => {
this.pageContents = contents; this.pageContents = contents;
}) })
}
if( typeof localStorage !== 'undefined') { if( typeof localStorage !== 'undefined') {
@ -164,19 +166,19 @@ export class LinkingGenericComponent {
stepHasChanged(stepId){ stepHasChanged(stepId){
if(stepId == 'source'){ if(stepId == 'source'){
console.log("show source") // console.log("show source")
this.showOptions.showSource(); this.showOptions.showSource();
}else if(stepId == 'target'){ }else if(stepId == 'target'){
console.log("show target") // console.log("show target")
this.showOptions.show = this.showOptions.linkTo; this.showOptions.show = this.showOptions.linkTo;
this.showOptions.showLinkTo(); this.showOptions.showLinkTo();
}else if(stepId == 'claim'){ }else if(stepId == 'claim'){
console.log("show target") // console.log("show target")
this.showOptions.show = 'claim'; this.showOptions.show = 'claim';
} }
this.cdr.detectChanges(); this.cdr.detectChanges();
HelperFunctions.scroll(true); HelperFunctions.scroll(true);
console.log('stepHasChanged', stepId, this.showOptions.show) // console.log('stepHasChanged', stepId, this.showOptions.show)
} }
stepStatus(stepId){ stepStatus(stepId){

View File

@ -206,8 +206,10 @@ export class DataProviderComponent {
} }
})); }));
} }
//this.getDivContents(); if(properties.adminToolsPortalType !== "explore") {
this.getPageContents(); //this.getDivContents();
this.getPageContents();
}
this.updateUrl(this.properties.domain + this.properties.baseLink + this._router.url); this.updateUrl(this.properties.domain + this.properties.baseLink + this._router.url);
this.seoService.createLinkForCanonicalURL(this.properties.domain +this.properties.baseLink + this._router.url); this.seoService.createLinkForCanonicalURL(this.properties.domain +this.properties.baseLink + this._router.url);
this.subscriptions.push(this.route.queryParams.subscribe(data => { this.subscriptions.push(this.route.queryParams.subscribe(data => {

View File

@ -172,8 +172,10 @@ export class OrganizationComponent {
} }
})); }));
} }
//this.getDivContents(); if(properties.adminToolsPortalType !== "explore") {
this.getPageContents(); //this.getDivContents();
this.getPageContents();
}
this.updateUrl(this.properties.domain + this.properties.baseLink + this._router.url); this.updateUrl(this.properties.domain + this.properties.baseLink + this._router.url);
this.seoService.createLinkForCanonicalURL(this.properties.domain +this.properties.baseLink + this._router.url); this.seoService.createLinkForCanonicalURL(this.properties.domain +this.properties.baseLink + this._router.url);

View File

@ -218,8 +218,10 @@ export class ProjectComponent {
} }
})); }));
} }
//this.getDivContents(); if(properties.adminToolsPortalType !== "explore") {
this.getPageContents(); //this.getDivContents();
this.getPageContents();
}
this.updateUrl(this.properties.domain + this.properties.baseLink + this._router.url); this.updateUrl(this.properties.domain + this.properties.baseLink + this._router.url);
this.seoService.createLinkForCanonicalURL(this.properties.domain +this.properties.baseLink + this._router.url); this.seoService.createLinkForCanonicalURL(this.properties.domain +this.properties.baseLink + this._router.url);
this.subscriptions.push(this.route.queryParams.subscribe(params => { this.subscriptions.push(this.route.queryParams.subscribe(params => {

View File

@ -213,8 +213,10 @@ export class ResultLandingComponent {
} }
})); }));
} }
//this.getDivContents(); if(properties.adminToolsPortalType !== "explore") {
this.getPageContents(); //this.getDivContents();
this.getPageContents();
}
this.updateUrl(this.properties.domain +this.properties.baseLink + this._router.url); this.updateUrl(this.properties.domain +this.properties.baseLink + this._router.url);
this.seoService.createLinkForCanonicalURL(this.properties.domain +this.properties.baseLink + this._router.url); this.seoService.createLinkForCanonicalURL(this.properties.domain +this.properties.baseLink + this._router.url);
this.subscriptions.push(this.route.queryParams.subscribe(data => { this.subscriptions.push(this.route.queryParams.subscribe(data => {

View File

@ -33,6 +33,7 @@ import {NewSearchPageComponent, SearchForm} from "../searchUtils/newSearchPage.c
import {properties} from "../../../../environments/environment"; import {properties} from "../../../../environments/environment";
import {Breadcrumb} from "../../utils/breadcrumbs/breadcrumbs.component"; import {Breadcrumb} from "../../utils/breadcrumbs/breadcrumbs.component";
import {LayoutService} from "../../dashboard/sharedComponents/sidebar/layout.service"; import {LayoutService} from "../../dashboard/sharedComponents/sidebar/layout.service";
import {GroupedRequestsService} from "../../services/groupedRequests.service";
@Component({ @Component({
selector: 'search-all', selector: 'search-all',
@ -41,8 +42,9 @@ import {LayoutService} from "../../dashboard/sharedComponents/sidebar/layout.ser
export class SearchAllComponent { export class SearchAllComponent {
isMobile: boolean = false; isMobile: boolean = false;
reload:{result:boolean, projects:boolean, datasources: boolean, services: boolean, organizations:boolean} = reload:{result:boolean, projects:boolean, datasources: boolean, services: boolean, organizations:boolean, all: boolean} =
{result:true, projects:true, datasources: true, services: true, organizations:true}; {result:true, projects:true, datasources: true, services: true, organizations: true, all: true};
allCounts = null;
public pageTitle = "Search in OpenAIRE" public pageTitle = "Search in OpenAIRE"
public keyword: string = ""; public keyword: string = "";
public publications: string[]; public publications: string[];
@ -126,6 +128,7 @@ export class SearchAllComponent {
private _searchProjectsService: SearchProjectsService, private _searchProjectsService: SearchProjectsService,
private _searchOrganizationsService: SearchOrganizationsService, private _searchOrganizationsService: SearchOrganizationsService,
private _refineFieldResultsService: RefineFieldResultsService, private _refineFieldResultsService: RefineFieldResultsService,
private groupedRequestsService: GroupedRequestsService,
private location: Location, private location: Location,
private _meta: Meta, private _meta: Meta,
private _title: Title, private _title: Title,
@ -216,44 +219,48 @@ export class SearchAllComponent {
loadAll() { loadAll() {
this.reloadTabs(); this.reloadTabs();
this.subs.push(this.route.queryParams.subscribe(queryParams => {
this.parameters = Object.assign({}, queryParams);
this.keyword = (queryParams['keyword']) ? queryParams['keyword'] : (queryParams["q"] ? queryParams["q"] : (queryParams["f0"] && queryParams["f0"] == "q" && queryParams["fv0"]?queryParams["fv0"]:""));
this.selectedFields[0].value = StringUtils.URIDecode(this.keyword);
this.quickFilter.selected = ((queryParams['qf']== undefined || queryParams["qf"] == "true") == true);
if (queryParams["type"] && queryParams["type"].length > 0) {
this.resultTypes['publication'] = (queryParams["type"].split(",").indexOf("publications") != -1);
this.resultTypes['dataset'] = (queryParams["type"].split(",").indexOf("datasets") != -1);
this.resultTypes['software'] = (queryParams["type"].split(",").indexOf("software") != -1);
this.resultTypes['other'] = (queryParams["type"].split(",").indexOf("other") != -1);
}
let active = null;
if (queryParams["active"] && queryParams["active"].length > 0) {
active = ((["result","projects","organizations","datasources","services"]).indexOf(queryParams["active"])!= -1)?queryParams["active"]:null;
delete this.parameters['active'];
}
this.subs.push(this.route.params.subscribe(params => { this.subs.push(this.route.params.subscribe(params => {
if(this.activeEntity == null && (!params["entity"] || params["entity"].length == 0)){ this.subs.push(this.route.queryParams.subscribe(queryParams => {
if (active) { this.parameters = Object.assign({}, queryParams);
this.activeEntity = active; this.keyword = (queryParams['keyword']) ? queryParams['keyword'] : (queryParams["q"] ? queryParams["q"] : (queryParams["f0"] && queryParams["f0"] == "q" && queryParams["fv0"]?queryParams["fv0"]:""));
if((typeof document !== 'undefined')){ this.selectedFields[0].value = StringUtils.URIDecode(this.keyword);
if (active == "result") { // this.quickFilter.selected = ((queryParams['qf']== undefined || queryParams["qf"] == "true") == true);
active = "research-outcomes"; if (queryParams["type"] && queryParams["type"].length > 0) {
this.resultTypes['publication'] = (queryParams["type"].split(",").indexOf("publications") != -1);
this.resultTypes['dataset'] = (queryParams["type"].split(",").indexOf("datasets") != -1);
this.resultTypes['software'] = (queryParams["type"].split(",").indexOf("software") != -1);
this.resultTypes['other'] = (queryParams["type"].split(",").indexOf("other") != -1);
}
let active = null;
if (queryParams["active"] && queryParams["active"].length > 0) {
active = ((["result","projects","organizations","datasources","services"]).indexOf(queryParams["active"])!= -1)?queryParams["active"]:null;
delete this.parameters['active'];
}
if(this.activeEntity == null) {
if (this.activeEntity == null && (!params["entity"] || params["entity"].length == 0)) {
if (active) {
this.activeEntity = active;
if ((typeof document !== 'undefined')) {
if (active == "result") {
active = "research-outcomes";
}
let query = location.search.replace(/(active=)([^&]*)&?/, '');
this.location.go(location.pathname + '/' + active, query == '?' ? '' : query);
} }
let query = location.search.replace(/(active=)([^&]*)&?/, ''); } else {
this.location.go(location.pathname + '/' + active, query == '?' ? '' : query); this.activeEntity = this.getDefaultEntityToShow();
} }
} else { } else if (params["entity"] && params["entity"].length > 0) {
this.activeEntity = this.getDefaultEntityToShow(); let entity = params["entity"];
if (entity == "research-outcomes") {
entity = "result";
} else if (entity == "dataproviders") {
entity = "datasources";
}
this.activeEntity = ((["result", "projects", "organizations", "datasources", "services"]).indexOf(entity) != -1) ? entity : this.getDefaultEntityToShow();
} }
} else if(params["entity"] && params["entity"].length > 0 ){
let entity = params["entity"];
if(entity == "research-outcomes") {
entity = "result";
} else if (entity == "dataproviders") {
entity = "datasources";
}
this.activeEntity = ((["result","projects","organizations","datasources","services"]).indexOf(entity)!= -1)?entity:this.getDefaultEntityToShow();
} }
if (this.activeEntity == "result") { if (this.activeEntity == "result") {
this.searchResults(); this.searchResults();
@ -409,120 +416,176 @@ export class SearchAllComponent {
private count() { private count() {
var refineParams = null; var refineParams = null;
let groupedQuery: boolean = false;
let reload = JSON.parse(JSON.stringify(this.reload));
if (this.customFilter) { if (this.customFilter) {
refineParams = (refineParams ? (refineParams + '&') : '') + "&fq=" + StringUtils.URIEncode(this.customFilter.queryFieldName + " exact " + StringUtils.quote((this.customFilter.valueId))); refineParams = (refineParams ? (refineParams + '&') : '') + "&fq=" + StringUtils.URIEncode(this.customFilter.queryFieldName + " exact " + StringUtils.quote((this.customFilter.valueId)));
} else if(!this.keyword || this.keyword.length == 0) {
groupedQuery = true;
} }
if (this.activeEntity != "result" && this.reload["result"] && (this.showPublications || this.showSoftware || this.datasets || this.showOrps)) { if (this.activeEntity != "result" && this.reload["result"] && (this.showPublications || this.showSoftware || this.datasets || this.showOrps)) {
this.fetchPublications.searchUtils.status = this.errorCodes.LOADING; this.fetchPublications.searchUtils.status = this.errorCodes.LOADING;
this.reload["result"] = false; this.reload["result"] = false;
this.fetchPublications.results = []; this.fetchPublications.results = [];
//Add Open Access Filter if(!groupedQuery) {
this.subs.push(this.numOfSearchResults(this.fetchPublications, (refineParams ? (refineParams + '&') : '') + (this.openAccess ? "&fq=resultbestaccessright%20exact%20%22Open%20Access%22" : ""))); //Add Open Access Filter
this.subs.push(this.numOfSearchResults(this.fetchPublications, (refineParams ? (refineParams ) : '') ));
}
} }
if (this.activeEntity != "projects" && this.reload["projects"] && this.showProjects) { if (this.activeEntity != "projects" && this.reload["projects"] && this.showProjects) {
this.fetchProjects.searchUtils.status = this.errorCodes.LOADING; this.fetchProjects.searchUtils.status = this.errorCodes.LOADING;
this.fetchProjects.results = []; this.fetchProjects.results = [];
this.reload["projects"] = false; this.reload["projects"] = false;
this.subs.push(this._searchProjectsService.numOfSearchProjects2(this.keyword.length>0?NewSearchPageComponent.createKeywordQuery("project",this.keyword,"q","="):"", this.properties, refineParams).subscribe( if(!groupedQuery) {
data => { this.subs.push(this._searchProjectsService.numOfSearchProjects2(this.keyword.length > 0 ? NewSearchPageComponent.createKeywordQuery("project", this.keyword, "q", "=") : "", this.properties, refineParams).subscribe(
this.fetchProjects.searchUtils.totalResults = data; data => {
this.fetchProjects.searchUtils.status = this.errorCodes.DONE; this.fetchProjects.searchUtils.totalResults = data;
if (this.fetchProjects.searchUtils.totalResults == 0) { this.fetchProjects.searchUtils.status = this.errorCodes.DONE;
this.fetchProjects.searchUtils.status = this.errorCodes.NONE; if (this.fetchProjects.searchUtils.totalResults == 0) {
this.fetchProjects.searchUtils.status = this.errorCodes.NONE;
}
},
err => {
//console.log(err);
this.handleError("Error getting number of " + OpenaireEntities.PROJECTS, err);
this.fetchProjects.searchUtils.status = this.errorCodes.ERROR;
this.fetchProjects.searchUtils.totalResults = null;
} }
}, ));
err => { }
//console.log(err);
this.handleError("Error getting number of "+OpenaireEntities.PROJECTS, err);
this.fetchProjects.searchUtils.status = this.errorCodes.ERROR;
this.fetchProjects.searchUtils.totalResults = null;
}
));
} }
if (this.activeEntity != "datasources" && this.reload["datasources"] && this.showDataProviders) { if (this.activeEntity != "datasources" && this.reload["datasources"] && this.showDataProviders) {
this.fetchDataproviders.results = []; this.fetchDataproviders.results = [];
this.reload["datasources"] = false; this.reload["datasources"] = false;
// this.fetchDataproviders.getNumForSearch(this.keyword, this.properties, refineParams); if(!groupedQuery) {
this.subs.push(this._searchDataprovidersService.numOfSearchDataproviders2(this.keyword.length>0?NewSearchPageComponent.createKeywordQuery("dataprovider",this.keyword,"q","="):"", this.properties, refineParams).subscribe( // this.fetchDataproviders.getNumForSearch(this.keyword, this.properties, refineParams);
data => { this.subs.push(this._searchDataprovidersService.numOfSearchDataproviders2(this.keyword.length > 0 ? NewSearchPageComponent.createKeywordQuery("dataprovider", this.keyword, "q", "=") : "", this.properties, refineParams).subscribe(
this.fetchDataproviders.searchUtils.totalResults = data; data => {
this.fetchDataproviders.searchUtils.status = this.errorCodes.DONE; this.fetchDataproviders.searchUtils.totalResults = data;
if (this.fetchDataproviders.searchUtils.totalResults == 0) { this.fetchDataproviders.searchUtils.status = this.errorCodes.DONE;
this.fetchDataproviders.searchUtils.status = this.errorCodes.NONE; if (this.fetchDataproviders.searchUtils.totalResults == 0) {
this.fetchDataproviders.searchUtils.status = this.errorCodes.NONE;
}
},
err => {
//console.log(err);
this.handleError("Error getting number of " + OpenaireEntities.DATASOURCES, err);
this.fetchDataproviders.searchUtils.status = this.errorCodes.ERROR;
this.fetchDataproviders.searchUtils.totalResults = null;
} }
}, ));
err => { }
//console.log(err);
this.handleError("Error getting number of "+OpenaireEntities.DATASOURCES, err);
this.fetchDataproviders.searchUtils.status = this.errorCodes.ERROR;
this.fetchDataproviders.searchUtils.totalResults = null;
}
));
} }
if (this.activeEntity != "services" && this.reload["services"] && this.showServices) { if (this.activeEntity != "services" && this.reload["services"] && this.showServices) {
this.fetchServices.results = []; this.fetchServices.results = [];
this.reload["services"] = false; this.reload["services"] = false;
this.subs.push(this._searchDataprovidersService.numOfSearchDataproviders2(this.keyword.length>0?NewSearchPageComponent.createKeywordQuery("service",this.keyword,"q","="):"", this.properties, refineParams, "services").subscribe( if(!groupedQuery) {
data => { this.subs.push(this._searchDataprovidersService.numOfSearchDataproviders2(this.keyword.length > 0 ? NewSearchPageComponent.createKeywordQuery("service", this.keyword, "q", "=") : "", this.properties, refineParams, "services").subscribe(
this.fetchServices.searchUtils.totalResults = data; data => {
this.fetchServices.searchUtils.status = this.errorCodes.DONE; this.fetchServices.searchUtils.totalResults = data;
if (this.fetchServices.searchUtils.totalResults == 0) { this.fetchServices.searchUtils.status = this.errorCodes.DONE;
this.fetchServices.searchUtils.status = this.errorCodes.NONE; if (this.fetchServices.searchUtils.totalResults == 0) {
this.fetchServices.searchUtils.status = this.errorCodes.NONE;
}
},
err => {
//console.log(err);
this.handleError("Error getting number of " + OpenaireEntities.SERVICES, err);
this.fetchServices.searchUtils.status = this.errorCodes.ERROR;
this.fetchServices.searchUtils.totalResults = null;
} }
}, ));
err => { }
//console.log(err);
this.handleError("Error getting number of "+OpenaireEntities.SERVICES, err);
this.fetchServices.searchUtils.status = this.errorCodes.ERROR;
this.fetchServices.searchUtils.totalResults = null;
}
));
} }
if (this.activeEntity != "organizations" && this.reload["organizations"] && this.showOrganizations) { if (this.activeEntity != "organizations" && this.reload["organizations"] && this.showOrganizations) {
this.fetchOrganizations.searchUtils.status = this.errorCodes.LOADING; this.fetchOrganizations.searchUtils.status = this.errorCodes.LOADING;
this.fetchOrganizations.results = []; this.fetchOrganizations.results = [];
this.reload["organizations"] = false; this.reload["organizations"] = false;
this.subs.push(this._searchOrganizationsService.numOfSearchOrganizations2(this.keyword.length>0?NewSearchPageComponent.createKeywordQuery("organizations",this.keyword,"q","="):"", this.properties, refineParams).subscribe( if(!groupedQuery) {
data => { this.subs.push(this._searchOrganizationsService.numOfSearchOrganizations2(this.keyword.length > 0 ? NewSearchPageComponent.createKeywordQuery("organizations", this.keyword, "q", "=") : "", this.properties, refineParams).subscribe(
this.fetchOrganizations.searchUtils.totalResults = data; data => {
this.fetchOrganizations.searchUtils.status = this.errorCodes.DONE; this.fetchOrganizations.searchUtils.totalResults = data;
if (this.fetchOrganizations.searchUtils.totalResults == 0) { this.fetchOrganizations.searchUtils.status = this.errorCodes.DONE;
this.fetchOrganizations.searchUtils.status = this.errorCodes.NONE; if (this.fetchOrganizations.searchUtils.totalResults == 0) {
} this.fetchOrganizations.searchUtils.status = this.errorCodes.NONE;
}, }
err => { },
//console.log(err); err => {
this.handleError("Error getting number of "+OpenaireEntities.ORGANIZATIONS, err); //console.log(err);
this.fetchOrganizations.searchUtils.status = this.errorCodes.ERROR; this.handleError("Error getting number of " + OpenaireEntities.ORGANIZATIONS, err);
this.fetchOrganizations.searchUtils.totalResults = null; this.fetchOrganizations.searchUtils.status = this.errorCodes.ERROR;
this.fetchOrganizations.searchUtils.totalResults = null;
} }
)); ));
}
} }
if(groupedQuery && (reload["result"] || reload["datasources"] || reload["projects"] || reload["organizations"])) {
if(this.reload["all"]) {
this.reload["all"] = false;
this.subs.push(this.groupedRequestsService.search().subscribe(
data => {
this.allCounts = data;
this.setDefaultCounts();
},
err => {
this.handleError("Error getting number of search entities", err);
this.numErrorReturned(this.fetchPublications);
this.numErrorReturned(this.fetchDataproviders);
this.numErrorReturned(this.fetchOrganizations);
this.numErrorReturned(this.fetchProjects);
}
));
} else {
this.setDefaultCounts();
}
}
} }
private numOfSearchResults(fetchClass: FetchResearchResults, refineParams): Subscription { private numOfSearchResults(fetchClass: FetchResearchResults, refineParams): Subscription {
return this._searchResearchResultsService.numOfResearchOutcomes(this.keyword.length>0?NewSearchPageComponent.createKeywordQuery("result",this.keyword,"q","="):"", this.properties, refineParams).subscribe( return this._searchResearchResultsService.numOfResearchOutcomes(this.keyword.length>0?NewSearchPageComponent.createKeywordQuery("result",this.keyword,"q","="):"", this.properties, refineParams).subscribe(
data => { data => {
fetchClass.searchUtils.totalResults = data; this.numReturned(fetchClass, data);
fetchClass.searchUtils.status = this.errorCodes.DONE;
if (fetchClass.searchUtils.totalResults == 0) {
fetchClass.searchUtils.status = this.errorCodes.NONE;
}
}, },
err => { err => {
this.handleError("Error getting number of research results", err); this.handleError("Error getting number of research results", err);
fetchClass.searchUtils.status = this.errorCodes.ERROR; this.numErrorReturned(fetchClass);
fetchClass.searchUtils.totalResults = null;
} }
); );
} }
private setDefaultCounts() {
if (this.activeEntity != "result" && this.allCounts.hasOwnProperty("results") && this.allCounts['results'] > 0) {
this.numReturned(this.fetchPublications, this.allCounts['results']);
}
if (this.allCounts.hasOwnProperty(this.activeEntity != "datasources" && "datasources") && this.allCounts['datasources'] > 0) {
this.numReturned(this.fetchDataproviders, this.allCounts['datasources']);
}
if (this.allCounts.hasOwnProperty(this.activeEntity != "organizations" && "organizations") && this.allCounts['organizations'] > 0) {
this.numReturned(this.fetchOrganizations, this.allCounts['organizations']);
}
if (this.allCounts.hasOwnProperty(this.activeEntity != "projects" && "projects") && this.allCounts['projects'] > 0) {
this.numReturned(this.fetchProjects, this.allCounts['projects']);
}
}
private numReturned(fetchClass, num) {
fetchClass.searchUtils.totalResults = num;
fetchClass.searchUtils.status = this.errorCodes.DONE;
if (fetchClass.searchUtils.totalResults == 0) {
fetchClass.searchUtils.status = this.errorCodes.NONE;
}
}
private numErrorReturned(fetchClass) {
fetchClass.searchUtils.status = this.errorCodes.ERROR;
fetchClass.searchUtils.totalResults = null;
}
private reloadTabs() { private reloadTabs() {
this.reload = {result:true, projects:true, datasources: true, services: true, organizations:true}; this.reload = {result:true, projects:true, datasources: true, services: true, organizations:true, all: !this.allCounts};
this.fetchOrganizations.searchUtils.status = this.errorCodes.LOADING; this.fetchOrganizations.searchUtils.status = this.errorCodes.LOADING;
this.fetchDataproviders.searchUtils.status = this.errorCodes.LOADING; this.fetchDataproviders.searchUtils.status = this.errorCodes.LOADING;
this.fetchServices.searchUtils.status = this.errorCodes.LOADING; this.fetchServices.searchUtils.status = this.errorCodes.LOADING;

View File

@ -24,13 +24,15 @@ import {PreviousRouteRecorder} from "../../utils/piwik/previousRouteRecorder.gua
import {BreadcrumbsModule} from "../../utils/breadcrumbs/breadcrumbs.module"; import {BreadcrumbsModule} from "../../utils/breadcrumbs/breadcrumbs.module";
import {SliderTabsModule} from "../../sharedComponents/tabs/slider-tabs.module"; import {SliderTabsModule} from "../../sharedComponents/tabs/slider-tabs.module";
import {NumberRoundModule} from "../../utils/pipes/number-round.module"; import {NumberRoundModule} from "../../utils/pipes/number-round.module";
import {GroupedRequestsServiceModule} from "../../services/groupedRequestsService.module";
@NgModule({ @NgModule({
imports: [ imports: [
CommonModule, FormsModule, RouterModule, CommonModule, FormsModule, RouterModule,
DataProvidersServiceModule, ProjectsServiceModule, DataProvidersServiceModule, ProjectsServiceModule,
SearchResearchResultsServiceModule, OrganizationsServiceModule, SearchResearchResultsServiceModule, OrganizationsServiceModule,
SearchResultsModule, PiwikServiceModule, Schema2jsonldModule, SEOServiceModule, AdvancedSearchFormModule, SearchResearchResultsModule, SearchProjectsModule, SearchOrganizationsModule, SearchDataProvidersModule, BreadcrumbsModule, SliderTabsModule, NumberRoundModule SearchResultsModule, PiwikServiceModule, Schema2jsonldModule, SEOServiceModule, AdvancedSearchFormModule, SearchResearchResultsModule, SearchProjectsModule, SearchOrganizationsModule, SearchDataProvidersModule, BreadcrumbsModule, SliderTabsModule, NumberRoundModule,
GroupedRequestsServiceModule
], ],
declarations: [ declarations: [
SearchAllComponent SearchAllComponent

View File

@ -175,8 +175,10 @@ export class NewSearchPageComponent implements OnInit, OnDestroy, OnChanges {
} }
ngOnInit() { ngOnInit() {
//this.getDivContents(); if(properties.adminToolsPortalType !== "explore") {
this.getPageContents(); //this.getDivContents();
this.getPageContents();
}
this.pagingLimit = this.properties.pagingLimit; this.pagingLimit = this.properties.pagingLimit;
this.resultsPerPage = this.properties.resultsPerPage; this.resultsPerPage = this.properties.resultsPerPage;
this.csvLimit = this.properties.csvLimit; this.csvLimit = this.properties.csvLimit;

View File

@ -0,0 +1,30 @@
import {Injectable} from "@angular/core";
import {HttpClient} from "@angular/common/http";
import {map} from "rxjs/operators";
import {properties} from "../../../environments/environment";
@Injectable()
export class GroupedRequestsService {
constructor(private http: HttpClient = null) {}
home(): any {
let url = properties.utilsService+"/explore/home";
return this.http.get((properties.useLongCache) ? (properties.cacheUrl + encodeURIComponent(url)) : url)
.pipe(map(res => res));
}
search(): any {
let url = properties.utilsService+"/explore/search";
return this.http.get((properties.useLongCache) ? (properties.cacheUrl + encodeURIComponent(url)) : url)
.pipe(map(res => res));
}
funders(): any {
let url = properties.utilsService+"/explore/funders";
return this.http.get((properties.useLongCache) ? (properties.cacheUrl + encodeURIComponent(url)) : url)
.pipe(map(res => res));
}
}

View File

@ -0,0 +1,19 @@
import { NgModule} from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import {GroupedRequestsService} from "./groupedRequests.service";
@NgModule({
imports: [
CommonModule, FormsModule
],
declarations: [
],
providers: [
GroupedRequestsService
],
exports: [
]
})
export class GroupedRequestsServiceModule { }

View File

@ -57,7 +57,8 @@ export class RefineFieldResultsService {
getField (link:string,fieldName:string, properties:EnvProperties):any{ getField (link:string,fieldName:string, properties:EnvProperties):any{
let url = link+"&refine=true&page=1&size=0"; let url = link+"&refine=true&page=1&size=0";
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url) // return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
return this.http.get((properties.useLongCache && link.includes("sf=") && !link.includes("fq="))? (properties.cacheUrl+encodeURIComponent(url)): url)
//.map(res => <any> res.json()) //.map(res => <any> res.json())
.pipe(map(res => res['refineResults'])) .pipe(map(res => res['refineResults']))
.pipe(map(res => this.parse(res,fieldName))); .pipe(map(res => this.parse(res,fieldName)));

View File

@ -47,8 +47,9 @@ export class SearchDataprovidersService {
url += "&page="+(page-1)+"&size="+size; url += "&page="+(page-1)+"&size="+size;
url += minRef ? "&minRef=true" : ""; url += minRef ? "&minRef=true" : "";
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url) // return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
.pipe(map(res => [res['meta'].total, this.parseResults(res['results']), RefineResultsUtils.parse(res['refineResults'],refineFields, "datasource")])); return this.http.get((properties.useLongCache && size == 0 && !params && (!refineQuery || !refineQuery.includes("fq="))) ? (properties.cacheUrl + encodeURIComponent(url)) : url)
.pipe(map(res => [res['meta'].total, this.parseResults(res['results']), RefineResultsUtils.parse(res['refineResults'],refineFields, "datasource")]));
} }
searchDataprovidersForDeposit (id: string,type:string, page: number, size: number, properties:EnvProperties):any { searchDataprovidersForDeposit (id: string,type:string, page: number, size: number, properties:EnvProperties):any {

View File

@ -80,8 +80,9 @@ export class SearchOrganizationsService {
url += "&page="+(page-1)+"&size="+size; url += "&page="+(page-1)+"&size="+size;
url += minRef ? "&minRef=true" : ""; url += minRef ? "&minRef=true" : "";
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url) // return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
//.map(res => <any> res.json()) return this.http.get((properties.useLongCache && size == 0 && !params && (!refineQuery || !refineQuery.includes("fq="))) ? (properties.cacheUrl + encodeURIComponent(url)) : url)
//.map(res => <any> res.json())
.pipe(map(res => [res['meta'].total, this.parseResults(res['results']),RefineResultsUtils.parse(res['refineResults'],refineFields, "organization")])); .pipe(map(res => [res['meta'].total, this.parseResults(res['results']),RefineResultsUtils.parse(res['refineResults'],refineFields, "organization")]));
} }

View File

@ -70,8 +70,9 @@ export class SearchProjectsService {
url += minRef ? "&minRef=true" : ""; url += minRef ? "&minRef=true" : "";
// url += "&format=json"; // url += "&format=json";
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url) // return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
//.map(res => <any> res.json()) return this.http.get((properties.useLongCache && size == 0 && !params && (!refineQuery || !refineQuery.includes("fq="))) ? (properties.cacheUrl + encodeURIComponent(url)) : url)
//.map(res => <any> res.json())
.pipe(map(res => [res['meta'].total, this.parseResults(res['results']), RefineResultsUtils.parse(res['refineResults'],refineFields, "project")])); .pipe(map(res => [res['meta'].total, this.parseResults(res['results']), RefineResultsUtils.parse(res['refineResults'],refineFields, "project")]));
} }

View File

@ -129,7 +129,8 @@ export class SearchResearchResultsService {
url += minRef ? "&minRef=true" : ""; url += minRef ? "&minRef=true" : "";
// url += "&format=json"; // url += "&format=json";
return this.http.get((properties.useCache) ? (properties.cacheUrl + encodeURIComponent(url)) : url) // return this.http.get((properties.useCache) ? (properties.cacheUrl + encodeURIComponent(url)) : url)
return this.http.get((properties.useLongCache && size == 0 && !params && (!refineQuery || !refineQuery.includes("fq="))) ? (properties.cacheUrl + encodeURIComponent(url)) : url)
.pipe(map(res => [res['meta'].total, this.parseResults(resultType, res['results'], properties), RefineResultsUtils.parse(res['refineResults'], refineFields, "publication")])); .pipe(map(res => [res['meta'].total, this.parseResults(resultType, res['results'], properties), RefineResultsUtils.parse(res['refineResults'], refineFields, "publication")]));
} }

View File

@ -9,6 +9,7 @@ import {BehaviorSubject, Observable, Subscription, zip} from 'rxjs';
import {RouterHelper} from "../../utils/routerHelper.class"; import {RouterHelper} from "../../utils/routerHelper.class";
import {OpenaireEntities} from "../../utils/properties/searchFields"; import {OpenaireEntities} from "../../utils/properties/searchFields";
import {SearchOrganizationsService} from '../../services/searchOrganizations.service'; import {SearchOrganizationsService} from '../../services/searchOrganizations.service';
import {GroupedRequestsService} from "../../services/groupedRequests.service";
export interface Numbers { export interface Numbers {
publicationsSize?: NumberSize; publicationsSize?: NumberSize;
@ -74,7 +75,8 @@ export class NumbersComponent implements OnInit, OnDestroy {
constructor(private searchResearchResultsService: SearchResearchResultsService, constructor(private searchResearchResultsService: SearchResearchResultsService,
private searchDataprovidersService: SearchDataprovidersService, private searchDataprovidersService: SearchDataprovidersService,
private refineFieldResultsService: RefineFieldResultsService, private refineFieldResultsService: RefineFieldResultsService,
private _searchOrganizationsService: SearchOrganizationsService) { private _searchOrganizationsService: SearchOrganizationsService,
private groupedRequestsService: GroupedRequestsService) {
this.emptySubject = new BehaviorSubject<number>(0); this.emptySubject = new BehaviorSubject<number>(0);
} }
@ -91,73 +93,112 @@ export class NumbersComponent implements OnInit, OnDestroy {
} }
let refineParams = (this.refineValue) ? ('&fq=' + this.refineValue) : null; let refineParams = (this.refineValue) ? ('&fq=' + this.refineValue) : null;
let mergedFundersSet = new Set<string>(); if (refineParams) {
let mergedFundersSet = new Set<string>();
this.subs.push(zip( this.subs.push(zip(
(getPublications) ? this.searchResearchResultsService.numOfSearchResults('publication', '', this.properties, refineParams) : this.empty, (getPublications) ? this.searchResearchResultsService.numOfSearchResults('publication', '', this.properties, refineParams) : this.empty,
(getDatasets) ? this.searchResearchResultsService.numOfSearchResults('dataset', '', this.properties, refineParams) : this.empty, (getDatasets) ? this.searchResearchResultsService.numOfSearchResults('dataset', '', this.properties, refineParams) : this.empty,
(getDatasetsLinked) ? this.searchResearchResultsService.numOfSearchResultsLinkedToPub("dataset", this.properties) : this.empty, (getDatasetsLinked) ? this.searchResearchResultsService.numOfSearchResultsLinkedToPub("dataset", this.properties) : this.empty,
(getSoftware) ? this.searchResearchResultsService.numOfSearchResults('software', '', this.properties, refineParams) : this.empty, (getSoftware) ? this.searchResearchResultsService.numOfSearchResults('software', '', this.properties, refineParams) : this.empty,
(getSoftwareLinked) ? this.searchResearchResultsService.numOfSearchResultsLinkedToPub("software", this.properties) : this.empty, (getSoftwareLinked) ? this.searchResearchResultsService.numOfSearchResultsLinkedToPub("software", this.properties) : this.empty,
(getOther) ? this.searchResearchResultsService.numOfSearchResults('other', '', this.properties, refineParams) : this.empty, (getOther) ? this.searchResearchResultsService.numOfSearchResults('other', '', this.properties, refineParams) : this.empty,
(getProjects) ? this.refineFieldResultsService.getAllRefineFieldResultsByFieldName('funder', 'project', this.properties, refineParams) : this.empty, (getProjects) ? this.refineFieldResultsService.getAllRefineFieldResultsByFieldName('funder', 'project', this.properties, refineParams) : this.empty,
(getDataProviders) ? this.searchDataprovidersService.numOfSearchDataproviders('', this.properties, refineParams) : this.empty, (getDataProviders) ? this.searchDataprovidersService.numOfSearchDataproviders('', this.properties, refineParams) : this.empty,
(getOrganizations) ? this._searchOrganizationsService.numOfSearchOrganizations2('', this.properties, refineParams) : this.empty, (getOrganizations) ? this._searchOrganizationsService.numOfSearchOrganizations2('', this.properties, refineParams) : this.empty,
(getPublications && getDatasets && getSoftware && getOther) ? this.refineFieldResultsService.getAllRefineFieldResultsByFieldName('relfunder', 'result', this.properties, refineParams) : this.empty, (getPublications && getDatasets && getSoftware && getOther) ? this.refineFieldResultsService.getAllRefineFieldResultsByFieldName('relfunder', 'result', this.properties, refineParams) : this.empty,
).subscribe((data: any[]) => { ).subscribe((data: any[]) => {
if (data[0] && data[0] > 0) { if (data[0] && data[0] > 0) {
this.numbers.publicationsSize = NumberUtils.roundNumber(data[0]); this.numbers.publicationsSize = NumberUtils.roundNumber(data[0]);
}
if (data[1] && data[1] > 0) {
this.numbers.datasetsSize = NumberUtils.roundNumber(data[1]);
}
if (data[2] && data[2] > 0) {
this.numbers.datasetsLinkedSize = NumberUtils.roundNumber(data[2]);
}
if (data[3] && data[3] > 0) {
this.numbers.softwareSize = NumberUtils.roundNumber(data[3]);
}
if (data[4] && data[4] > 0) {
this.numbers.softwareLinkedSize = NumberUtils.roundNumber(data[4]);
}
if (data[5] && data[5] > 0) {
this.numbers.otherSize = NumberUtils.roundNumber(data[5]);
}
if (data[6][0] && data[6][0] > 0) {
this.numbers.projectsSize = NumberUtils.roundNumber(data[6][0]);
}
if (data[6][1] && data[6][1].length > 0 && data[6][1][0].filterId == 'funder' && data[6][1][0].values) {
this.numbers.fundersSize = NumberUtils.roundNumber(data[6][1][0].values.length);
let queriedFunders = data[6][1][0].values;
queriedFunders.forEach(queriedFunder => {
if(+queriedFunder.number > 1) {
if (!mergedFundersSet.has(queriedFunder.id)) {
mergedFundersSet.add(queriedFunder.id);
}
} }
}); if (data[1] && data[1] > 0) {
} this.numbers.datasetsSize = NumberUtils.roundNumber(data[1]);
if (data[7] && data[7] > 0) {
this.numbers.datasourcesSize = NumberUtils.roundNumber(data[7]);
}
if (data[8] && data[8] > 0) {
this.numbers.organizationsSize = NumberUtils.roundNumber(data[8]);
}
if (data[9][1] && data[9][1].length > 0 && data[9][1][0].filterId == 'relfunder' && data[9][1][0].values) {
let queriedFunders = data[9][1][0].values;
queriedFunders.forEach(queriedFunder => {
if (!mergedFundersSet.has(queriedFunder.id)) {
mergedFundersSet.add(queriedFunder.id);
} }
}); if (data[2] && data[2] > 0) {
} this.numbers.datasetsLinkedSize = NumberUtils.roundNumber(data[2]);
}
if (data[3] && data[3] > 0) {
this.numbers.softwareSize = NumberUtils.roundNumber(data[3]);
}
if (data[4] && data[4] > 0) {
this.numbers.softwareLinkedSize = NumberUtils.roundNumber(data[4]);
}
if (data[5] && data[5] > 0) {
this.numbers.otherSize = NumberUtils.roundNumber(data[5]);
}
if (data[6][0] && data[6][0] > 0) {
this.numbers.projectsSize = NumberUtils.roundNumber(data[6][0]);
}
if (data[6][1] && data[6][1].length > 0 && data[6][1][0].filterId == 'funder' && data[6][1][0].values) {
this.numbers.fundersSize = NumberUtils.roundNumber(data[6][1][0].values.length);
this.numbers.mergedFundersSize = NumberUtils.roundNumber(mergedFundersSet.size); let queriedFunders = data[6][1][0].values;
this.results.emit(this.numbers); queriedFunders.forEach(queriedFunder => {
}, err => { if (+queriedFunder.number > 1) {
this.handleError('Error getting numbers', err); if (!mergedFundersSet.has(queriedFunder.id)) {
})); mergedFundersSet.add(queriedFunder.id);
}
}
});
}
if (data[7] && data[7] > 0) {
this.numbers.datasourcesSize = NumberUtils.roundNumber(data[7]);
}
if (data[8] && data[8] > 0) {
this.numbers.organizationsSize = NumberUtils.roundNumber(data[8]);
}
if (data[9][1] && data[9][1].length > 0 && data[9][1][0].filterId == 'relfunder' && data[9][1][0].values) {
let queriedFunders = data[9][1][0].values;
queriedFunders.forEach(queriedFunder => {
if (!mergedFundersSet.has(queriedFunder.id)) {
mergedFundersSet.add(queriedFunder.id);
}
});
}
this.numbers.mergedFundersSize = NumberUtils.roundNumber(mergedFundersSet.size);
}
), err => {
this.handleError('Error getting numbers', err);
});
} else {
this.subs.push(this.groupedRequestsService.home().subscribe((data: any[]) => {
if (data) {
if (data.hasOwnProperty("publications") && data['publications'] > 0) {
this.numbers.publicationsSize = NumberUtils.roundNumber(data['publications']);
}
if (data.hasOwnProperty("datasets") && data['datasets'] > 0) {
this.numbers.datasetsSize = NumberUtils.roundNumber(data['datasets']);
}
if (data.hasOwnProperty("datasetsInterlinked") && data['datasetsInterlinked'] > 0) {
this.numbers.datasetsLinkedSize = NumberUtils.roundNumber(data['datasetsInterlinked']);
}
if (data.hasOwnProperty("software") && data['software'] > 0) {
this.numbers.softwareSize = NumberUtils.roundNumber(data['software']);
}
if (data.hasOwnProperty("softwareInterlinked") && data['softwareInterlinked'] > 0) {
this.numbers.softwareLinkedSize = NumberUtils.roundNumber(data['softwareInterlinked']);
}
if (data.hasOwnProperty("other") && data['other'] > 0) {
this.numbers.otherSize = NumberUtils.roundNumber(data['other']);
}
if (data.hasOwnProperty("projects") && data['projects'] > 0) {
this.numbers.projectsSize = NumberUtils.roundNumber(data['projects']);
}
if (data.hasOwnProperty("funders") && data['funders'] > 0) {
this.numbers.mergedFundersSize = NumberUtils.roundNumber(data['funders']);
}
if (data.hasOwnProperty("datasources") && data['datasources'] > 0) {
this.numbers.datasourcesSize = NumberUtils.roundNumber(data['datasources']);
}
if (data.hasOwnProperty("organizations") && data['organizations'] > 0) {
this.numbers.organizationsSize = NumberUtils.roundNumber(data['organizations']);
}
}
this.results.emit(this.numbers);
}, err => {
this.handleError('Error getting numbers', err);
}));
}
} }
ngOnDestroy() { ngOnDestroy() {

View File

@ -9,9 +9,10 @@ import {SearchDataprovidersService} from '../../services/searchDataproviders.ser
import {RefineFieldResultsService} from '../../services/refineFieldResults.service'; import {RefineFieldResultsService} from '../../services/refineFieldResults.service';
import {LoadingModule} from '../../utils/loading/loading.module'; import {LoadingModule} from '../../utils/loading/loading.module';
import {RouterModule} from "@angular/router"; import {RouterModule} from "@angular/router";
import {GroupedRequestsServiceModule} from "../../services/groupedRequestsService.module";
@NgModule({ @NgModule({
imports: [CommonModule, IconsModule, LoadingModule, RouterModule], imports: [CommonModule, IconsModule, LoadingModule, RouterModule, GroupedRequestsServiceModule],
declarations: [NumbersComponent], declarations: [NumbersComponent],
exports: [NumbersComponent], exports: [NumbersComponent],
providers: [SearchResearchResultsService, SearchDataprovidersService, RefineFieldResultsService] providers: [SearchResearchResultsService, SearchDataprovidersService, RefineFieldResultsService]