diff --git a/claims/claim-utils/displayClaims/displayClaims.component.ts b/claims/claim-utils/displayClaims/displayClaims.component.ts index 837b0d83..9e5ccf97 100644 --- a/claims/claim-utils/displayClaims/displayClaims.component.ts +++ b/claims/claim-utils/displayClaims/displayClaims.component.ts @@ -110,10 +110,12 @@ export class DisplayClaimsComponent implements OnInit, OnDestroy { this.updateDescription(description); this.updateUrl(this.url); 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 => { - this.pageContents = contents; - })); + + if(properties.adminToolsPortalType !== "explore") { + 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.lastIndexDate = res; })); diff --git a/claims/linking/linkingGeneric.component.ts b/claims/linking/linkingGeneric.component.ts index e2149bb0..31b76062 100644 --- a/claims/linking/linkingGeneric.component.ts +++ b/claims/linking/linkingGeneric.component.ts @@ -87,9 +87,11 @@ export class LinkingGenericComponent { 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.pageContents = contents; }) + } if( typeof localStorage !== 'undefined') { @@ -164,19 +166,19 @@ export class LinkingGenericComponent { stepHasChanged(stepId){ if(stepId == 'source'){ - console.log("show source") + // console.log("show source") this.showOptions.showSource(); }else if(stepId == 'target'){ - console.log("show target") + // console.log("show target") this.showOptions.show = this.showOptions.linkTo; this.showOptions.showLinkTo(); }else if(stepId == 'claim'){ - console.log("show target") + // console.log("show target") this.showOptions.show = 'claim'; } this.cdr.detectChanges(); HelperFunctions.scroll(true); - console.log('stepHasChanged', stepId, this.showOptions.show) + // console.log('stepHasChanged', stepId, this.showOptions.show) } stepStatus(stepId){ diff --git a/deposit/depositFirstPage.component.ts b/deposit/depositFirstPage.component.ts index 4b8fa3e7..03704688 100644 --- a/deposit/depositFirstPage.component.ts +++ b/deposit/depositFirstPage.component.ts @@ -15,7 +15,7 @@ import {FullScreenModalComponent} from '../utils/modal/full-screen-modal/full-sc @Component({ selector: 'deposit-first-page', template: ` -
+
diff --git a/landingPages/dataProvider/dataProvider.component.ts b/landingPages/dataProvider/dataProvider.component.ts index baebcd09..a4afbb28 100644 --- a/landingPages/dataProvider/dataProvider.component.ts +++ b/landingPages/dataProvider/dataProvider.component.ts @@ -206,8 +206,10 @@ export class DataProviderComponent { } })); } - //this.getDivContents(); - this.getPageContents(); + if(properties.adminToolsPortalType !== "explore") { + //this.getDivContents(); + this.getPageContents(); + } this.updateUrl(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 => { diff --git a/landingPages/organization/organization.component.ts b/landingPages/organization/organization.component.ts index c2109ef0..814d7bb9 100644 --- a/landingPages/organization/organization.component.ts +++ b/landingPages/organization/organization.component.ts @@ -172,8 +172,10 @@ export class OrganizationComponent { } })); } - //this.getDivContents(); - this.getPageContents(); + if(properties.adminToolsPortalType !== "explore") { + //this.getDivContents(); + this.getPageContents(); + } this.updateUrl(this.properties.domain + this.properties.baseLink + this._router.url); this.seoService.createLinkForCanonicalURL(this.properties.domain +this.properties.baseLink + this._router.url); diff --git a/landingPages/project/project.component.ts b/landingPages/project/project.component.ts index bbf26740..ffa9fc65 100644 --- a/landingPages/project/project.component.ts +++ b/landingPages/project/project.component.ts @@ -218,8 +218,10 @@ export class ProjectComponent { } })); } - //this.getDivContents(); - this.getPageContents(); + if(properties.adminToolsPortalType !== "explore") { + //this.getDivContents(); + this.getPageContents(); + } this.updateUrl(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 => { diff --git a/landingPages/result/resultLanding.component.ts b/landingPages/result/resultLanding.component.ts index b25b77e5..f51645f3 100644 --- a/landingPages/result/resultLanding.component.ts +++ b/landingPages/result/resultLanding.component.ts @@ -213,8 +213,10 @@ export class ResultLandingComponent { } })); } - //this.getDivContents(); - this.getPageContents(); + if(properties.adminToolsPortalType !== "explore") { + //this.getDivContents(); + this.getPageContents(); + } this.updateUrl(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 => { diff --git a/login/utils/helper.class.ts b/login/utils/helper.class.ts index 6f2a2951..92c2a62e 100644 --- a/login/utils/helper.class.ts +++ b/login/utils/helper.class.ts @@ -239,7 +239,7 @@ export class Role { } else if (type == "organization") { type = "institution"; } - return type; + return Role.GROUP + type; } /** diff --git a/searchPages/find/searchAll.component.ts b/searchPages/find/searchAll.component.ts index cea70fd9..27af8480 100644 --- a/searchPages/find/searchAll.component.ts +++ b/searchPages/find/searchAll.component.ts @@ -33,6 +33,7 @@ import {NewSearchPageComponent, SearchForm} from "../searchUtils/newSearchPage.c import {properties} from "../../../../environments/environment"; import {Breadcrumb} from "../../utils/breadcrumbs/breadcrumbs.component"; import {LayoutService} from "../../dashboard/sharedComponents/sidebar/layout.service"; +import {GroupedRequestsService} from "../../services/groupedRequests.service"; @Component({ selector: 'search-all', @@ -41,8 +42,9 @@ import {LayoutService} from "../../dashboard/sharedComponents/sidebar/layout.ser export class SearchAllComponent { isMobile: boolean = false; - reload:{result:boolean, projects:boolean, datasources: boolean, services: boolean, organizations:boolean} = - {result:true, projects:true, datasources: true, services: true, organizations:true}; + reload:{result:boolean, projects:boolean, datasources: boolean, services: boolean, organizations:boolean, all: boolean} = + {result:true, projects:true, datasources: true, services: true, organizations: true, all: true}; + allCounts = null; public pageTitle = "Search in OpenAIRE" public keyword: string = ""; public publications: string[]; @@ -126,6 +128,7 @@ export class SearchAllComponent { private _searchProjectsService: SearchProjectsService, private _searchOrganizationsService: SearchOrganizationsService, private _refineFieldResultsService: RefineFieldResultsService, + private groupedRequestsService: GroupedRequestsService, private location: Location, private _meta: Meta, private _title: Title, @@ -216,44 +219,48 @@ export class SearchAllComponent { loadAll() { 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 => { - 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"; + 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']; + } + + 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=)([^&]*)&?/, ''); - this.location.go(location.pathname + '/' + active, query == '?' ? '' : query); + } else { + this.activeEntity = this.getDefaultEntityToShow(); } - } else { - this.activeEntity = 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(); } - } 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") { this.searchResults(); @@ -409,120 +416,176 @@ export class SearchAllComponent { private count() { var refineParams = null; + let groupedQuery: boolean = false; + let reload = JSON.parse(JSON.stringify(this.reload)); if (this.customFilter) { 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)) { this.fetchPublications.searchUtils.status = this.errorCodes.LOADING; this.reload["result"] = false; this.fetchPublications.results = []; - //Add Open Access Filter - this.subs.push(this.numOfSearchResults(this.fetchPublications, (refineParams ? (refineParams + '&') : '') + (this.openAccess ? "&fq=resultbestaccessright%20exact%20%22Open%20Access%22" : ""))); + if(!groupedQuery) { + //Add Open Access Filter + this.subs.push(this.numOfSearchResults(this.fetchPublications, (refineParams ? (refineParams ) : '') )); + } } if (this.activeEntity != "projects" && this.reload["projects"] && this.showProjects) { this.fetchProjects.searchUtils.status = this.errorCodes.LOADING; this.fetchProjects.results = []; this.reload["projects"] = false; - this.subs.push(this._searchProjectsService.numOfSearchProjects2(this.keyword.length>0?NewSearchPageComponent.createKeywordQuery("project",this.keyword,"q","="):"", this.properties, refineParams).subscribe( - data => { - this.fetchProjects.searchUtils.totalResults = data; - this.fetchProjects.searchUtils.status = this.errorCodes.DONE; - if (this.fetchProjects.searchUtils.totalResults == 0) { - this.fetchProjects.searchUtils.status = this.errorCodes.NONE; + if(!groupedQuery) { + this.subs.push(this._searchProjectsService.numOfSearchProjects2(this.keyword.length > 0 ? NewSearchPageComponent.createKeywordQuery("project", this.keyword, "q", "=") : "", this.properties, refineParams).subscribe( + data => { + this.fetchProjects.searchUtils.totalResults = data; + this.fetchProjects.searchUtils.status = this.errorCodes.DONE; + 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) { this.fetchDataproviders.results = []; this.reload["datasources"] = false; - // this.fetchDataproviders.getNumForSearch(this.keyword, this.properties, refineParams); - this.subs.push(this._searchDataprovidersService.numOfSearchDataproviders2(this.keyword.length>0?NewSearchPageComponent.createKeywordQuery("dataprovider",this.keyword,"q","="):"", this.properties, refineParams).subscribe( - data => { - this.fetchDataproviders.searchUtils.totalResults = data; - this.fetchDataproviders.searchUtils.status = this.errorCodes.DONE; - if (this.fetchDataproviders.searchUtils.totalResults == 0) { - this.fetchDataproviders.searchUtils.status = this.errorCodes.NONE; + if(!groupedQuery) { + // this.fetchDataproviders.getNumForSearch(this.keyword, this.properties, refineParams); + this.subs.push(this._searchDataprovidersService.numOfSearchDataproviders2(this.keyword.length > 0 ? NewSearchPageComponent.createKeywordQuery("dataprovider", this.keyword, "q", "=") : "", this.properties, refineParams).subscribe( + data => { + this.fetchDataproviders.searchUtils.totalResults = data; + this.fetchDataproviders.searchUtils.status = this.errorCodes.DONE; + 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) { this.fetchServices.results = []; 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( - data => { - this.fetchServices.searchUtils.totalResults = data; - this.fetchServices.searchUtils.status = this.errorCodes.DONE; - if (this.fetchServices.searchUtils.totalResults == 0) { - this.fetchServices.searchUtils.status = this.errorCodes.NONE; + if(!groupedQuery) { + this.subs.push(this._searchDataprovidersService.numOfSearchDataproviders2(this.keyword.length > 0 ? NewSearchPageComponent.createKeywordQuery("service", this.keyword, "q", "=") : "", this.properties, refineParams, "services").subscribe( + data => { + this.fetchServices.searchUtils.totalResults = data; + this.fetchServices.searchUtils.status = this.errorCodes.DONE; + 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) { this.fetchOrganizations.searchUtils.status = this.errorCodes.LOADING; this.fetchOrganizations.results = []; this.reload["organizations"] = false; - this.subs.push(this._searchOrganizationsService.numOfSearchOrganizations2(this.keyword.length>0?NewSearchPageComponent.createKeywordQuery("organizations",this.keyword,"q","="):"", this.properties, refineParams).subscribe( - data => { - this.fetchOrganizations.searchUtils.totalResults = data; - this.fetchOrganizations.searchUtils.status = this.errorCodes.DONE; - if (this.fetchOrganizations.searchUtils.totalResults == 0) { - this.fetchOrganizations.searchUtils.status = this.errorCodes.NONE; - } - }, - err => { - //console.log(err); - this.handleError("Error getting number of "+OpenaireEntities.ORGANIZATIONS, err); - this.fetchOrganizations.searchUtils.status = this.errorCodes.ERROR; - this.fetchOrganizations.searchUtils.totalResults = null; + if(!groupedQuery) { + this.subs.push(this._searchOrganizationsService.numOfSearchOrganizations2(this.keyword.length > 0 ? NewSearchPageComponent.createKeywordQuery("organizations", this.keyword, "q", "=") : "", this.properties, refineParams).subscribe( + data => { + this.fetchOrganizations.searchUtils.totalResults = data; + this.fetchOrganizations.searchUtils.status = this.errorCodes.DONE; + if (this.fetchOrganizations.searchUtils.totalResults == 0) { + this.fetchOrganizations.searchUtils.status = this.errorCodes.NONE; + } + }, + err => { + //console.log(err); + this.handleError("Error getting number of " + OpenaireEntities.ORGANIZATIONS, err); + 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 { return this._searchResearchResultsService.numOfResearchOutcomes(this.keyword.length>0?NewSearchPageComponent.createKeywordQuery("result",this.keyword,"q","="):"", this.properties, refineParams).subscribe( data => { - fetchClass.searchUtils.totalResults = data; - fetchClass.searchUtils.status = this.errorCodes.DONE; - if (fetchClass.searchUtils.totalResults == 0) { - fetchClass.searchUtils.status = this.errorCodes.NONE; - } + this.numReturned(fetchClass, data); }, err => { this.handleError("Error getting number of research results", err); - fetchClass.searchUtils.status = this.errorCodes.ERROR; - fetchClass.searchUtils.totalResults = null; + this.numErrorReturned(fetchClass); } ); } + 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() { - 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.fetchDataproviders.searchUtils.status = this.errorCodes.LOADING; this.fetchServices.searchUtils.status = this.errorCodes.LOADING; diff --git a/searchPages/find/searchAll.module.ts b/searchPages/find/searchAll.module.ts index 692e5743..e35f830f 100644 --- a/searchPages/find/searchAll.module.ts +++ b/searchPages/find/searchAll.module.ts @@ -24,13 +24,15 @@ import {PreviousRouteRecorder} from "../../utils/piwik/previousRouteRecorder.gua import {BreadcrumbsModule} from "../../utils/breadcrumbs/breadcrumbs.module"; import {SliderTabsModule} from "../../sharedComponents/tabs/slider-tabs.module"; import {NumberRoundModule} from "../../utils/pipes/number-round.module"; +import {GroupedRequestsServiceModule} from "../../services/groupedRequestsService.module"; @NgModule({ imports: [ CommonModule, FormsModule, RouterModule, DataProvidersServiceModule, ProjectsServiceModule, 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: [ SearchAllComponent diff --git a/searchPages/searchUtils/newSearchPage.component.ts b/searchPages/searchUtils/newSearchPage.component.ts index e854f0bd..01bb1acf 100644 --- a/searchPages/searchUtils/newSearchPage.component.ts +++ b/searchPages/searchUtils/newSearchPage.component.ts @@ -181,8 +181,10 @@ export class NewSearchPageComponent implements OnInit, OnDestroy, OnChanges { } ngOnInit() { - //this.getDivContents(); - this.getPageContents(); + if(properties.adminToolsPortalType !== "explore") { + //this.getDivContents(); + this.getPageContents(); + } this.pagingLimit = this.properties.pagingLimit; this.resultsPerPage = this.properties.resultsPerPage; this.csvLimit = this.properties.csvLimit; diff --git a/services/groupedRequests.service.ts b/services/groupedRequests.service.ts new file mode 100644 index 00000000..bdd11af0 --- /dev/null +++ b/services/groupedRequests.service.ts @@ -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)); + } +} \ No newline at end of file diff --git a/services/groupedRequestsService.module.ts b/services/groupedRequestsService.module.ts new file mode 100644 index 00000000..48292a84 --- /dev/null +++ b/services/groupedRequestsService.module.ts @@ -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 { } diff --git a/services/refineFieldResults.service.ts b/services/refineFieldResults.service.ts index af653a28..0e70a6f6 100644 --- a/services/refineFieldResults.service.ts +++ b/services/refineFieldResults.service.ts @@ -57,7 +57,8 @@ export class RefineFieldResultsService { getField (link:string,fieldName:string, properties:EnvProperties):any{ 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 => res.json()) .pipe(map(res => res['refineResults'])) .pipe(map(res => this.parse(res,fieldName))); diff --git a/services/searchDataproviders.service.ts b/services/searchDataproviders.service.ts index fab2c9bb..7919e017 100644 --- a/services/searchDataproviders.service.ts +++ b/services/searchDataproviders.service.ts @@ -48,8 +48,9 @@ export class SearchDataprovidersService { url += "&page="+(page-1)+"&size="+size; url += minRef ? "&minRef=true" : ""; - 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.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(res['results']), RefineResultsUtils.parse(res['refineResults'],refineFields, "datasource")])); } searchDataprovidersForDeposit (id: string,type:string, page: number, size: number, properties:EnvProperties):any { diff --git a/services/searchOrganizations.service.ts b/services/searchOrganizations.service.ts index b71f4e09..488b0e87 100644 --- a/services/searchOrganizations.service.ts +++ b/services/searchOrganizations.service.ts @@ -80,8 +80,9 @@ export class SearchOrganizationsService { url += "&page="+(page-1)+"&size="+size; url += minRef ? "&minRef=true" : ""; - return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url) - //.map(res => res.json()) + // 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) + //.map(res => res.json()) .pipe(map(res => [res['meta'].total, this.parseResults(res['results']),RefineResultsUtils.parse(res['refineResults'],refineFields, "organization")])); } diff --git a/services/searchProjects.service.ts b/services/searchProjects.service.ts index 8e2fa14d..e9c48eaa 100644 --- a/services/searchProjects.service.ts +++ b/services/searchProjects.service.ts @@ -70,8 +70,9 @@ export class SearchProjectsService { url += minRef ? "&minRef=true" : ""; // url += "&format=json"; - return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url) - //.map(res => res.json()) + // 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) + //.map(res => res.json()) .pipe(map(res => [res['meta'].total, this.parseResults(res['results']), RefineResultsUtils.parse(res['refineResults'],refineFields, "project")])); } diff --git a/services/searchResearchResults.service.ts b/services/searchResearchResults.service.ts index 37969439..3e49a7cc 100644 --- a/services/searchResearchResults.service.ts +++ b/services/searchResearchResults.service.ts @@ -129,7 +129,8 @@ export class SearchResearchResultsService { url += minRef ? "&minRef=true" : ""; // 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")])); } diff --git a/services/user-registry.service.ts b/services/user-registry.service.ts index 6dc38d75..1f06cae7 100644 --- a/services/user-registry.service.ts +++ b/services/user-registry.service.ts @@ -1,5 +1,5 @@ import {Injectable} from '@angular/core'; -import {HttpClient, HttpErrorResponse} from '@angular/common/http'; +import {HttpClient} from '@angular/common/http'; import {Observable} from 'rxjs'; import {properties} from '../../../environments/environment'; import {CustomOptions} from './servicesUtils/customOptions.class'; @@ -69,7 +69,7 @@ export class UserRegistryService { } })); } - + public getPending(type: string, id: string, role: "member" | "manager" = "manager", admin = false): Observable { let url = properties.registryUrl + 'invite/' + Role.GROUP + type + '/' +id + "/" + role + 's/'; return this.http.get((properties.useCache && !admin) ? (properties.cacheUrl + encodeURIComponent(url)) : url, diff --git a/sharedComponents/numbers/numbers.component.ts b/sharedComponents/numbers/numbers.component.ts index bd83f769..7f698643 100644 --- a/sharedComponents/numbers/numbers.component.ts +++ b/sharedComponents/numbers/numbers.component.ts @@ -9,6 +9,7 @@ import {BehaviorSubject, Observable, Subscription, zip} from 'rxjs'; import {RouterHelper} from "../../utils/routerHelper.class"; import {OpenaireEntities} from "../../utils/properties/searchFields"; import {SearchOrganizationsService} from '../../services/searchOrganizations.service'; +import {GroupedRequestsService} from "../../services/groupedRequests.service"; export interface Numbers { publicationsSize?: NumberSize; @@ -74,7 +75,8 @@ export class NumbersComponent implements OnInit, OnDestroy { constructor(private searchResearchResultsService: SearchResearchResultsService, private searchDataprovidersService: SearchDataprovidersService, private refineFieldResultsService: RefineFieldResultsService, - private _searchOrganizationsService: SearchOrganizationsService) { + private _searchOrganizationsService: SearchOrganizationsService, + private groupedRequestsService: GroupedRequestsService) { this.emptySubject = new BehaviorSubject(0); } @@ -91,73 +93,112 @@ export class NumbersComponent implements OnInit, OnDestroy { } let refineParams = (this.refineValue) ? ('&fq=' + this.refineValue) : null; - let mergedFundersSet = new Set(); - - this.subs.push(zip( - (getPublications) ? this.searchResearchResultsService.numOfSearchResults('publication', '', this.properties, refineParams) : this.empty, - (getDatasets) ? this.searchResearchResultsService.numOfSearchResults('dataset', '', this.properties, refineParams) : this.empty, - (getDatasetsLinked) ? this.searchResearchResultsService.numOfSearchResultsLinkedToPub("dataset", this.properties) : this.empty, - (getSoftware) ? this.searchResearchResultsService.numOfSearchResults('software', '', this.properties, refineParams) : this.empty, - (getSoftwareLinked) ? this.searchResearchResultsService.numOfSearchResultsLinkedToPub("software", this.properties) : this.empty, - (getOther) ? this.searchResearchResultsService.numOfSearchResults('other', '', 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, - (getOrganizations) ? this._searchOrganizationsService.numOfSearchOrganizations2('', this.properties, refineParams) : this.empty, - (getPublications && getDatasets && getSoftware && getOther) ? this.refineFieldResultsService.getAllRefineFieldResultsByFieldName('relfunder', 'result', this.properties, refineParams) : this.empty, - ).subscribe((data: any[]) => { - if (data[0] && data[0] > 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 (refineParams) { + let mergedFundersSet = new Set(); + this.subs.push(zip( + (getPublications) ? this.searchResearchResultsService.numOfSearchResults('publication', '', this.properties, refineParams) : this.empty, + (getDatasets) ? this.searchResearchResultsService.numOfSearchResults('dataset', '', this.properties, refineParams) : this.empty, + (getDatasetsLinked) ? this.searchResearchResultsService.numOfSearchResultsLinkedToPub("dataset", this.properties) : this.empty, + (getSoftware) ? this.searchResearchResultsService.numOfSearchResults('software', '', this.properties, refineParams) : this.empty, + (getSoftwareLinked) ? this.searchResearchResultsService.numOfSearchResultsLinkedToPub("software", this.properties) : this.empty, + (getOther) ? this.searchResearchResultsService.numOfSearchResults('other', '', 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, + (getOrganizations) ? this._searchOrganizationsService.numOfSearchOrganizations2('', this.properties, refineParams) : this.empty, + (getPublications && getDatasets && getSoftware && getOther) ? this.refineFieldResultsService.getAllRefineFieldResultsByFieldName('relfunder', 'result', this.properties, refineParams) : this.empty, + ).subscribe((data: any[]) => { + if (data[0] && data[0] > 0) { + this.numbers.publicationsSize = NumberUtils.roundNumber(data[0]); } - }); - } - 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[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); - this.numbers.mergedFundersSize = NumberUtils.roundNumber(mergedFundersSet.size); - this.results.emit(this.numbers); - }, err => { - this.handleError('Error getting numbers', err); - })); + 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[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() { diff --git a/sharedComponents/numbers/numbers.module.ts b/sharedComponents/numbers/numbers.module.ts index 72d30e26..9bb3f4d6 100644 --- a/sharedComponents/numbers/numbers.module.ts +++ b/sharedComponents/numbers/numbers.module.ts @@ -9,9 +9,10 @@ import {SearchDataprovidersService} from '../../services/searchDataproviders.ser import {RefineFieldResultsService} from '../../services/refineFieldResults.service'; import {LoadingModule} from '../../utils/loading/loading.module'; import {RouterModule} from "@angular/router"; +import {GroupedRequestsServiceModule} from "../../services/groupedRequestsService.module"; @NgModule({ - imports: [CommonModule, IconsModule, LoadingModule, RouterModule], + imports: [CommonModule, IconsModule, LoadingModule, RouterModule, GroupedRequestsServiceModule], declarations: [NumbersComponent], exports: [NumbersComponent], providers: [SearchResearchResultsService, SearchDataprovidersService, RefineFieldResultsService]