From 0886a26ac9d9980042a89d238480abc2a39a1ae9 Mon Sep 17 00:00:00 2001 From: "konstantina.galouni" Date: Wed, 21 Nov 2018 15:28:38 +0000 Subject: [PATCH] 1. Add 'sorting' option by 'relevance' or 'date' in simple search pages for results (publications, datasets, software, orps). 2. Add 'results per page' option in all simple search, advanced search and search table view pages. 3. Add 'sortBy' field in 'searchUtils.class'. git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-services-library/trunk/ng-openaire-library/src/app@53919 d315682c-612b-4755-9ff5-7f18f6832af3 --- .../claimResultSearchForm.component.ts | 2 +- .../advancedSearchDataProviders.component.ts | 6 ++++ .../advancedSearchDatasets.component.ts | 6 ++++ .../advancedSearchOrganizations.component.ts | 6 ++++ .../advanced/advancedSearchOrps.component.ts | 6 ++++ .../advancedSearchProjects.component.ts | 6 ++++ .../advancedSearchPublications.component.ts | 6 ++++ .../advancedSearchSoftware.component.ts | 6 ++++ .../advancedSearchPage.component.html | 8 ++++- .../advancedSearchPage.component.ts | 12 +++++++ .../searchUtils/advancedSearchPage.module.ts | 3 +- .../searchUtils/searchPage.component.html | 19 +++++++++-- .../searchUtils/searchPage.component.ts | 32 +++++++++++++++++++ searchPages/searchUtils/searchPage.module.ts | 4 ++- .../searchPageTableView.component.html | 14 +++++--- .../searchPageTableView.component.ts | 13 +++++--- .../searchUtils/searchPageTableView.module.ts | 3 +- .../searchUtils/searchPaging.component.ts | 2 +- searchPages/searchUtils/searchUtils.class.ts | 2 +- .../simple/searchDataproviders.component.ts | 10 ++++-- .../simple/searchDatasets.component.ts | 27 ++++++++++++---- .../simple/searchOrganizations.component.ts | 6 +++- searchPages/simple/searchOrps.component.ts | 25 +++++++++++---- .../simple/searchProjects.component.ts | 7 +++- .../simple/searchPublications.component.ts | 24 ++++++++++---- .../simple/searchSoftware.component.ts | 25 +++++++++++---- services/searchDatasets.service.ts | 5 ++- services/searchOrps.service.ts | 5 ++- services/searchPublications.service.ts | 5 ++- services/searchSoftware.service.ts | 5 ++- .../fetchDatasets.class.ts | 2 +- utils/fetchEntitiesClasses/fetchOrps.class.ts | 2 +- .../fetchPublications.class.ts | 2 +- .../fetchSoftware.class.ts | 2 +- 34 files changed, 249 insertions(+), 59 deletions(-) diff --git a/claims/claim-utils/claimResultSearchForm.component.ts b/claims/claim-utils/claimResultSearchForm.component.ts index fbc6b4e2..e7297aa3 100644 --- a/claims/claim-utils/claimResultSearchForm.component.ts +++ b/claims/claim-utils/claimResultSearchForm.component.ts @@ -545,7 +545,7 @@ openaireORPPageChange($event) { } ); }else{ - this._searchDatasetsService.searchDatasets('q='+term+'', null, page, size, [], this.properties).subscribe( + this._searchDatasetsService.searchDatasets('q='+term+'', null, page, size, "", [], this.properties).subscribe( data => { if(data != null) { this.openaireDataPage=page; diff --git a/searchPages/advanced/advancedSearchDataProviders.component.ts b/searchPages/advanced/advancedSearchDataProviders.component.ts index 39e3f836..64c66cc1 100644 --- a/searchPages/advanced/advancedSearchDataProviders.component.ts +++ b/searchPages/advanced/advancedSearchDataProviders.component.ts @@ -80,6 +80,12 @@ export class AdvancedSearchDataProvidersComponent { let page = (params['page']=== undefined)?0:+params['page']; this.searchUtils.page = ( page < 1 ) ? 1 : page; + + this.searchUtils.size = (params['size']=== undefined)?10:+params['size']; + if(this.searchUtils.size != 5 && this.searchUtils.size != 10 && this.searchUtils.size != 20 && this.searchUtils.size != 50) { + this.searchUtils.size = 10; + } + this.searchPage.fieldIds = this.fieldIds; this.selectedFields =[]; this.searchPage.selectedFields = this.selectedFields; diff --git a/searchPages/advanced/advancedSearchDatasets.component.ts b/searchPages/advanced/advancedSearchDatasets.component.ts index 660143bc..008e2a1a 100644 --- a/searchPages/advanced/advancedSearchDatasets.component.ts +++ b/searchPages/advanced/advancedSearchDatasets.component.ts @@ -80,6 +80,12 @@ export class AdvancedSearchDatasetsComponent { let page = (params['page']=== undefined)?1:+params['page']; this.searchUtils.page = ( page <= 0 ) ? 1 : page; + + this.searchUtils.size = (params['size']=== undefined)?10:+params['size']; + if(this.searchUtils.size != 5 && this.searchUtils.size != 10 && this.searchUtils.size != 20 && this.searchUtils.size != 50) { + this.searchUtils.size = 10; + } + this.searchPage.fieldIds = this.fieldIds; this.selectedFields =[]; this.searchPage.selectedFields = this.selectedFields; diff --git a/searchPages/advanced/advancedSearchOrganizations.component.ts b/searchPages/advanced/advancedSearchOrganizations.component.ts index 36c8efdf..a660388c 100644 --- a/searchPages/advanced/advancedSearchOrganizations.component.ts +++ b/searchPages/advanced/advancedSearchOrganizations.component.ts @@ -80,6 +80,12 @@ public resourcesQuery = "(oaftype exact organization)"; let page = (params['page']=== undefined)?1:+params['page']; this.searchUtils.page = ( page <= 0 ) ? 1 : page; + + this.searchUtils.size = (params['size']=== undefined)?10:+params['size']; + if(this.searchUtils.size != 5 && this.searchUtils.size != 10 && this.searchUtils.size != 20 && this.searchUtils.size != 50) { + this.searchUtils.size = 10; + } + this.searchPage.fieldIds = this.fieldIds; this.selectedFields =[]; this.searchPage.selectedFields = this.selectedFields; diff --git a/searchPages/advanced/advancedSearchOrps.component.ts b/searchPages/advanced/advancedSearchOrps.component.ts index 8d45ddc6..eeb5fe0f 100644 --- a/searchPages/advanced/advancedSearchOrps.component.ts +++ b/searchPages/advanced/advancedSearchOrps.component.ts @@ -80,6 +80,12 @@ export class AdvancedSearchOrpsComponent { let page = (params['page']=== undefined)?1:+params['page']; this.searchUtils.page = ( page <= 0 ) ? 1 : page; + + this.searchUtils.size = (params['size']=== undefined)?10:+params['size']; + if(this.searchUtils.size != 5 && this.searchUtils.size != 10 && this.searchUtils.size != 20 && this.searchUtils.size != 50) { + this.searchUtils.size = 10; + } + this.searchPage.fieldIds = this.fieldIds; this.selectedFields =[]; this.searchPage.selectedFields = this.selectedFields; diff --git a/searchPages/advanced/advancedSearchProjects.component.ts b/searchPages/advanced/advancedSearchProjects.component.ts index 3323e24e..b3c0db43 100644 --- a/searchPages/advanced/advancedSearchProjects.component.ts +++ b/searchPages/advanced/advancedSearchProjects.component.ts @@ -81,6 +81,12 @@ export class AdvancedSearchProjectsComponent { let page = (params['page']=== undefined)?1:+params['page']; this.searchUtils.page = ( page <= 0 ) ? 1 : page; + + this.searchUtils.size = (params['size']=== undefined)?10:+params['size']; + if(this.searchUtils.size != 5 && this.searchUtils.size != 10 && this.searchUtils.size != 20 && this.searchUtils.size != 50) { + this.searchUtils.size = 10; + } + this.searchPage.fieldIds = this.fieldIds; this.selectedFields =[]; this.searchPage.selectedFields = this.selectedFields; diff --git a/searchPages/advanced/advancedSearchPublications.component.ts b/searchPages/advanced/advancedSearchPublications.component.ts index fab45653..be250577 100644 --- a/searchPages/advanced/advancedSearchPublications.component.ts +++ b/searchPages/advanced/advancedSearchPublications.component.ts @@ -85,6 +85,12 @@ export class AdvancedSearchPublicationsComponent { let page = (params['page']=== undefined)?1:+params['page']; this.searchUtils.page = ( page <= 0 ) ? 1 : page; + + this.searchUtils.size = (params['size']=== undefined)?10:+params['size']; + if(this.searchUtils.size != 5 && this.searchUtils.size != 10 && this.searchUtils.size != 20 && this.searchUtils.size != 50) { + this.searchUtils.size = 10; + } + this.searchPage.fieldIds = this.fieldIds; this.selectedFields =[]; this.searchPage.selectedFields = this.selectedFields; diff --git a/searchPages/advanced/advancedSearchSoftware.component.ts b/searchPages/advanced/advancedSearchSoftware.component.ts index d9789958..13f7bcae 100644 --- a/searchPages/advanced/advancedSearchSoftware.component.ts +++ b/searchPages/advanced/advancedSearchSoftware.component.ts @@ -81,6 +81,12 @@ export class AdvancedSearchSoftwareComponent { let page = (params['page']=== undefined)?1:+params['page']; this.searchUtils.page = ( page <= 0 ) ? 1 : page; + + this.searchUtils.size = (params['size']=== undefined)?10:+params['size']; + if(this.searchUtils.size != 5 && this.searchUtils.size != 10 && this.searchUtils.size != 20 && this.searchUtils.size != 50) { + this.searchUtils.size = 10; + } + this.searchPage.fieldIds = this.fieldIds; this.selectedFields =[]; this.searchPage.selectedFields = this.selectedFields; diff --git a/searchPages/searchUtils/advancedSearchPage.component.html b/searchPages/searchUtils/advancedSearchPage.component.html index d2ee394b..5c86e5ec 100644 --- a/searchPages/searchUtils/advancedSearchPage.component.html +++ b/searchPages/searchUtils/advancedSearchPage.component.html @@ -42,6 +42,9 @@
Results in OpenAIRE
+
+ +
@@ -54,12 +57,15 @@ -
+

For more results please try a new, more specific query

+
+ +
-->
Results in OpenAIRE
- + +
+ + + + +
+ + + +
Results in OpenAIRE
-
+
{{searchUtils.totalResults | number}} {{type}}, page {{searchUtils.page | number}} of {{(totalPages()) | number}} - +
+
+ +
` }) @@ -57,6 +59,8 @@ export class SearchDatasetsComponent { public loadPaging: boolean = true; public oldTotalResults: number = 0; pagingLimit = 0; + //public sortBy: string = ""; + public sort: boolean = true; properties: EnvProperties; @ViewChild (SearchPageComponent) searchPage : SearchPageComponent ; constructor (private route: ActivatedRoute, private _searchDatasetsService: SearchDatasetsService ) { @@ -92,9 +96,18 @@ properties: EnvProperties; } firstLoad = false; this.searchUtils.page = (params['page']=== undefined)?1:+params['page']; + this.searchUtils.size = (params['size']=== undefined)?10:+params['size']; + if(this.searchUtils.size != 5 && this.searchUtils.size != 10 && this.searchUtils.size != 20 && this.searchUtils.size != 50) { + this.searchUtils.size = 10; + } + this.searchUtils.sortBy = (params['sortBy'])?params['sortBy']:''; + if(this.searchUtils.sortBy && this.searchUtils.sortBy != "resultdateofacceptance,descending") { + this.searchUtils.sortBy = ""; + } + this.searchPage.connectCommunityId = this.connectCommunityId; var queryParameters = this.searchPage.getQueryParametersFromUrl(params); - this._getResults(queryParameters, refine, this.searchUtils.page, this.searchUtils.size); + this._getResults(queryParameters, refine, this.searchUtils.page, this.searchUtils.size, this.searchUtils.sortBy); }); } @@ -192,7 +205,7 @@ public getResultsForDataproviders(id:string, resultsFrom:string, page: number, s } } -public getResults(keyword:string,refine:boolean, page: number, size: number){ +public getResults(keyword:string,refine:boolean, page: number, size: number, sortBy: string){ var parameters = ""; if(keyword.length > 0){ var DOIs:string[] = DOI.getDOIsFromString(keyword); @@ -206,9 +219,9 @@ public getResults(keyword:string,refine:boolean, page: number, size: number){ parameters = "q=" + keyword; } } - this._getResults(parameters,refine,page,size); + this._getResults(parameters,refine,page,size,sortBy); } -private _getResults(parameters:string,refine:boolean, page: number, size: number){ +private _getResults(parameters:string,refine:boolean, page: number, size: number, sortBy: string){ if(page > this.pagingLimit) { size=0; } @@ -221,7 +234,7 @@ private _getResults(parameters:string,refine:boolean, page: number, size: number this.results = []; this.searchUtils.totalResults = 0; - this.subResults = this._searchDatasetsService.searchDatasets(parameters,(refine)?this.searchPage.getRefineFieldsQuery():null, page, size, this.searchPage.getFields(), this.properties).subscribe( + this.subResults = this._searchDatasetsService.searchDatasets(parameters,(refine)?this.searchPage.getRefineFieldsQuery():null, page, size, sortBy, this.searchPage.getFields(), this.properties).subscribe( data => { this.searchUtils.totalResults = data[0]; console.info("search Research Data: [Parameters:"+parameters+" ] [total results:"+this.searchUtils.totalResults+"]"); @@ -285,6 +298,6 @@ private _getResults(parameters:string,refine:boolean, page: number, size: number var parameters = $event.value; //this.getResults(parameters, this.searchUtils.page, this.searchUtils.size, "searchPage"); - this._getResults(parameters, true, this.searchUtils.page, this.searchUtils.size); + this._getResults(parameters, true, this.searchUtils.page, this.searchUtils.size, this.searchUtils.sortBy); } } diff --git a/searchPages/simple/searchOrganizations.component.ts b/searchPages/simple/searchOrganizations.component.ts index bfb530c0..6d1cce04 100644 --- a/searchPages/simple/searchOrganizations.component.ts +++ b/searchPages/simple/searchOrganizations.component.ts @@ -23,7 +23,7 @@ import{EnvProperties} from '../../utils/properties/env-properties'; [disableForms]="disableForms" [loadPaging]="loadPaging" [oldTotalResults]="oldTotalResults" - [piwikSiteId]=piwikSiteId + [piwikSiteId]=piwikSiteId searchFormClass="organizationsSearchForm"> @@ -85,6 +85,10 @@ properties: EnvProperties; } firstLoad = false; this.searchUtils.page = (params['page']=== undefined)?1:+params['page']; + this.searchUtils.size = (params['size']=== undefined)?10:+params['size']; + if(this.searchUtils.size != 5 && this.searchUtils.size != 10 && this.searchUtils.size != 20 && this.searchUtils.size != 50) { + this.searchUtils.size = 10; + } var queryParameters = this.searchPage.getQueryParametersFromUrl(params); this._getResults(queryParameters, refine, this.searchUtils.page, this.searchUtils.size); diff --git a/searchPages/simple/searchOrps.component.ts b/searchPages/simple/searchOrps.component.ts index aa74b084..d2e306ed 100644 --- a/searchPages/simple/searchOrps.component.ts +++ b/searchPages/simple/searchOrps.component.ts @@ -29,7 +29,8 @@ import{EnvProperties} from '../../utils/properties/env-properties'; [(openaireLink)]=openaireLink [(advancedSearchParameters)]=advancedSearchParameters [piwikSiteId]=piwikSiteId - [(connectCommunityId)]=connectCommunityId > + [(connectCommunityId)]=connectCommunityId + [(sort)]=sort > ` }) @@ -56,6 +57,7 @@ export class SearchOrpsComponent { public loadPaging: boolean = true; public oldTotalResults: number = 0; pagingLimit = 0; + public sort: boolean = true; properties: EnvProperties; @ViewChild (SearchPageComponent) searchPage : SearchPageComponent ; constructor (private route: ActivatedRoute, private _searchOrpsService: SearchOrpsService ) { @@ -91,9 +93,18 @@ properties: EnvProperties; } firstLoad = false; this.searchUtils.page = (params['page']=== undefined)?1:+params['page']; + this.searchUtils.size = (params['size']=== undefined)?10:+params['size']; + if(this.searchUtils.size != 5 && this.searchUtils.size != 10 && this.searchUtils.size != 20 && this.searchUtils.size != 50) { + this.searchUtils.size = 10; + } + this.searchUtils.sortBy = (params['sortBy'])?params['sortBy']:''; + if(this.searchUtils.sortBy && this.searchUtils.sortBy != "resultdateofacceptance,descending") { + this.searchUtils.sortBy = ""; + } + this.searchPage.connectCommunityId = this.connectCommunityId; var queryParameters = this.searchPage.getQueryParametersFromUrl(params); - this._getResults(queryParameters, refine, this.searchUtils.page, this.searchUtils.size); + this._getResults(queryParameters, refine, this.searchUtils.page, this.searchUtils.size, this.searchUtils.sortBy); }); } @@ -179,7 +190,7 @@ public getResultsForDataproviders(id:string, resultsFrom:string, page: number, s } } -public getResults(keyword:string,refine:boolean, page: number, size: number){ +public getResults(keyword:string,refine:boolean, page: number, size: number, sortBy: string){ var parameters = ""; if(keyword.length > 0){ var DOIs:string[] = DOI.getDOIsFromString(keyword); @@ -193,9 +204,9 @@ public getResults(keyword:string,refine:boolean, page: number, size: number){ parameters = "q=" + keyword; } } - this._getResults(parameters,refine,page,size); + this._getResults(parameters,refine,page,size,sortBy); } -private _getResults(parameters:string,refine:boolean, page: number, size: number){ +private _getResults(parameters:string,refine:boolean, page: number, size: number, sortBy: string){ if(page > this.pagingLimit) { size=0; } @@ -207,7 +218,7 @@ private _getResults(parameters:string,refine:boolean, page: number, size: number this.results = []; this.searchUtils.totalResults = 0; - this.subResults = this._searchOrpsService.searchOrps(parameters,(refine)?this.searchPage.getRefineFieldsQuery():null, page, size, this.searchPage.getFields(), this.properties).subscribe( + this.subResults = this._searchOrpsService.searchOrps(parameters,(refine)?this.searchPage.getRefineFieldsQuery():null, page, size, sortBy, this.searchPage.getFields(), this.properties).subscribe( data => { this.searchUtils.totalResults = data[0]; console.info("search Other Research Products: [Parameters:"+parameters+" ] [total results:"+this.searchUtils.totalResults+"]"); @@ -263,6 +274,6 @@ private _getResults(parameters:string,refine:boolean, page: number, size: number this.loadPaging = true; var parameters = $event.value; - this._getResults(parameters, true, this.searchUtils.page, this.searchUtils.size); + this._getResults(parameters, true, this.searchUtils.page, this.searchUtils.size, this.searchUtils.sortBy); } } diff --git a/searchPages/simple/searchProjects.component.ts b/searchPages/simple/searchProjects.component.ts index e236e053..8fee9752 100644 --- a/searchPages/simple/searchProjects.component.ts +++ b/searchPages/simple/searchProjects.component.ts @@ -23,7 +23,7 @@ import{EnvProperties} from '../../utils/properties/env-properties'; [disableForms]="disableForms" [loadPaging]="loadPaging" [oldTotalResults]="oldTotalResults" - [piwikSiteId]=piwikSiteId + [piwikSiteId]=piwikSiteId searchFormClass="projectsSearchForm"> ` @@ -90,6 +90,11 @@ properties: EnvProperties; firstLoad = false; //get page from url parameters this.searchUtils.page = (params['page']=== undefined)?1:+params['page']; + this.searchUtils.size = (params['size']=== undefined)?10:+params['size']; + if(this.searchUtils.size != 5 && this.searchUtils.size != 10 && this.searchUtils.size != 20 && this.searchUtils.size != 50) { + this.searchUtils.size = 10; + } + var queryParameters = this.searchPage.getQueryParametersFromUrl(params); this._getResults(queryParameters, refine, this.searchUtils.page, this.searchUtils.size); }); diff --git a/searchPages/simple/searchPublications.component.ts b/searchPages/simple/searchPublications.component.ts index 8bd399eb..2f5fd249 100644 --- a/searchPages/simple/searchPublications.component.ts +++ b/searchPages/simple/searchPublications.component.ts @@ -33,7 +33,7 @@ import{EnvProperties} from '../../utils/properties/env-properties'; [(advancedSearchParameters)]=advancedSearchParameters [piwikSiteId]=piwikSiteId [(connectCommunityId)]=connectCommunityId - > + [(sort)]=sort > ` @@ -70,6 +70,7 @@ export class SearchPublicationsComponent { @Input() connectCommunityId: string; @Input() advancedSearchParameters ; pagingLimit = 0; + public sort: boolean = true; properties: EnvProperties; constructor (private route: ActivatedRoute, private _searchPublicationsService: SearchPublicationsService ) { this.errorCodes = new ErrorCodes(); @@ -104,9 +105,18 @@ properties: EnvProperties; } firstLoad = false; this.searchUtils.page = (params['page']=== undefined)?1:+params['page']; + this.searchUtils.size = (params['size']=== undefined)?10:+params['size']; + if(this.searchUtils.size != 5 && this.searchUtils.size != 10 && this.searchUtils.size != 20 && this.searchUtils.size != 50) { + this.searchUtils.size = 10; + } + this.searchUtils.sortBy = (params['sortBy'])?params['sortBy']:''; + if(this.searchUtils.sortBy && this.searchUtils.sortBy != "resultdateofacceptance,descending") { + this.searchUtils.sortBy = ""; + } + this.searchPage.connectCommunityId = this.connectCommunityId; var queryParameters = this.searchPage.getQueryParametersFromUrl(params); - this._getResults(queryParameters, refine, this.searchUtils.page, this.searchUtils.size); + this._getResults(queryParameters, refine, this.searchUtils.page, this.searchUtils.size, this.searchUtils.sortBy); }); } @@ -202,7 +212,7 @@ public getResultsForDataproviders(id:string, resultsFrom:string, page: number, s } } -public getResults(keyword:string,refine:boolean, page: number, size: number){ +public getResults(keyword:string,refine:boolean, page: number, size: number, sortBy: string){ var parameters = ""; if(keyword.length > 0){ var DOIs:string[] = DOI.getDOIsFromString(keyword); @@ -217,10 +227,10 @@ public getResults(keyword:string,refine:boolean, page: number, size: number){ parameters = "q=" + keyword; } } - this._getResults(parameters,refine,page,size); + this._getResults(parameters,refine,page,size,sortBy); } -private _getResults(parameters:string,refine:boolean, page: number, size: number){ +private _getResults(parameters:string,refine:boolean, page: number, size: number, sortBy: string){ if(page > this.pagingLimit) { size=0; } @@ -232,7 +242,7 @@ private _getResults(parameters:string,refine:boolean, page: number, size: number this.results = []; this.searchUtils.totalResults = 0; - this.subResults = this._searchPublicationsService.searchPublications(parameters,(refine)?this.searchPage.getRefineFieldsQuery():null, page, size, this.searchPage.getFields(), this.properties).subscribe( + this.subResults = this._searchPublicationsService.searchPublications(parameters,(refine)?this.searchPage.getRefineFieldsQuery():null, page, size, sortBy, this.searchPage.getFields(), this.properties).subscribe( data => { console.info(data); this.searchUtils.totalResults = data[0]; @@ -318,7 +328,7 @@ public getAggregatorResults(id:string, page: number, size: number){ var parameters = $event.value; console.info("queryChanged: Execute search query "+parameters); console.info("Search Pubs::page "+this.searchUtils.page); - this._getResults(parameters, true, this.searchUtils.page, this.searchUtils.size); + this._getResults(parameters, true, this.searchUtils.page, this.searchUtils.size, this.searchUtils.sortBy); } diff --git a/searchPages/simple/searchSoftware.component.ts b/searchPages/simple/searchSoftware.component.ts index 8989f949..9506cf29 100644 --- a/searchPages/simple/searchSoftware.component.ts +++ b/searchPages/simple/searchSoftware.component.ts @@ -29,7 +29,8 @@ import{EnvProperties} from '../../utils/properties/env-properties'; [(openaireLink)]=openaireLink [(advancedSearchParameters)]=advancedSearchParameters [piwikSiteId]=piwikSiteId - [(connectCommunityId)]=connectCommunityId > + [(connectCommunityId)]=connectCommunityId + [(sort)]=sort > ` }) @@ -58,6 +59,7 @@ export class SearchSoftwareComponent { public loadPaging: boolean = true; public oldTotalResults: number = 0; pagingLimit = 0; + public sort: boolean = true; properties: EnvProperties; @ViewChild (SearchPageComponent) searchPage : SearchPageComponent ; constructor (private route: ActivatedRoute, private _searchSoftwareService: SearchSoftwareService ) { @@ -93,9 +95,18 @@ properties: EnvProperties; } firstLoad = false; this.searchUtils.page = (params['page']=== undefined)?1:+params['page']; + this.searchUtils.size = (params['size']=== undefined)?10:+params['size']; + if(this.searchUtils.size != 5 && this.searchUtils.size != 10 && this.searchUtils.size != 20 && this.searchUtils.size != 50) { + this.searchUtils.size = 10; + } + this.searchUtils.sortBy = (params['sortBy'])?params['sortBy']:''; + if(this.searchUtils.sortBy && this.searchUtils.sortBy != "resultdateofacceptance,descending") { + this.searchUtils.sortBy = ""; + } + this.searchPage.connectCommunityId = this.connectCommunityId; var queryParameters = this.searchPage.getQueryParametersFromUrl(params); - this._getResults(queryParameters, refine, this.searchUtils.page, this.searchUtils.size); + this._getResults(queryParameters, refine, this.searchUtils.page, this.searchUtils.size, this.searchUtils.sortBy); }); } @@ -193,7 +204,7 @@ public getResultsForDataproviders(id:string, resultsFrom:string, page: number, s } } -public getResults(keyword:string,refine:boolean, page: number, size: number){ +public getResults(keyword:string,refine:boolean, page: number, size: number, sortBy: string){ var parameters = ""; if(keyword.length > 0){ var DOIs:string[] = DOI.getDOIsFromString(keyword); @@ -207,9 +218,9 @@ public getResults(keyword:string,refine:boolean, page: number, size: number){ parameters = "q=" + keyword; } } - this._getResults(parameters,refine,page,size); + this._getResults(parameters,refine,page,size,sortBy); } -private _getResults(parameters:string,refine:boolean, page: number, size: number){ +private _getResults(parameters:string,refine:boolean, page: number, size: number, sortBy: string){ if(page > this.pagingLimit) { size=0; } @@ -222,7 +233,7 @@ private _getResults(parameters:string,refine:boolean, page: number, size: number this.results = []; this.searchUtils.totalResults = 0; - this.subResults = this._searchSoftwareService.searchSoftware(parameters,(refine)?this.searchPage.getRefineFieldsQuery():null, page, size, this.searchPage.getFields(), this.properties).subscribe( + this.subResults = this._searchSoftwareService.searchSoftware(parameters,(refine)?this.searchPage.getRefineFieldsQuery():null, page, size, sortBy, this.searchPage.getFields(), this.properties).subscribe( data => { this.searchUtils.totalResults = data[0]; console.info("search Software: [Parameters:"+parameters+" ] [total results:"+this.searchUtils.totalResults+"]"); @@ -286,6 +297,6 @@ private _getResults(parameters:string,refine:boolean, page: number, size: number var parameters = $event.value; //this.getResults(parameters, this.searchUtils.page, this.searchUtils.size, "searchPage"); - this._getResults(parameters, true, this.searchUtils.page, this.searchUtils.size); + this._getResults(parameters, true, this.searchUtils.page, this.searchUtils.size, this.searchUtils.sortBy); } } diff --git a/services/searchDatasets.service.ts b/services/searchDatasets.service.ts index 6be7fe0c..f6788c8d 100644 --- a/services/searchDatasets.service.ts +++ b/services/searchDatasets.service.ts @@ -17,7 +17,7 @@ export class SearchDatasetsService { constructor(private http: Http ) {} - searchDatasets (params: string, refineParams:string, page: number, size: number, refineFields:string[], properties:EnvProperties ):any { + searchDatasets (params: string, refineParams:string, page: number, size: number, sortBy: string, refineFields:string[], properties:EnvProperties ):any { let link = properties.searchAPIURLLAst+"datasets"; @@ -28,6 +28,9 @@ export class SearchDatasetsService { if(refineParams!= null && refineParams != '' ) { url += refineParams; } + if(sortBy) { + url += "&sortBy=" + sortBy; + } url += "&page="+ (page-1) +"&size="+size+"&format=json"; diff --git a/services/searchOrps.service.ts b/services/searchOrps.service.ts index 80876b7d..3908acfb 100644 --- a/services/searchOrps.service.ts +++ b/services/searchOrps.service.ts @@ -17,7 +17,7 @@ export class SearchOrpsService { constructor(private http: Http ) {} - searchOrps (params: string, refineParams:string, page: number, size: number, refineFields:string[], properties:EnvProperties ):any { + searchOrps (params: string, refineParams:string, page: number, size: number, sortBy: string, refineFields:string[], properties:EnvProperties ):any { let link = properties.searchAPIURLLAst+"other"; @@ -28,6 +28,9 @@ export class SearchOrpsService { if(refineParams!= null && refineParams != '' ) { url += refineParams; } + if(sortBy) { + url += "&sortBy=" + sortBy; + } url += "&page="+ (page-1) +"&size="+size+"&format=json"; diff --git a/services/searchPublications.service.ts b/services/searchPublications.service.ts index c1cf0b32..1facf88b 100644 --- a/services/searchPublications.service.ts +++ b/services/searchPublications.service.ts @@ -19,7 +19,7 @@ export class SearchPublicationsService { constructor(private http: Http ) {} - searchPublications (params: string, refineParams:string, page: number, size: number, refineFields:string[] , properties:EnvProperties):any { + searchPublications (params: string, refineParams:string, page: number, size: number, sortBy: string, refineFields:string[] , properties:EnvProperties):any { let link = properties.searchAPIURLLAst+"publications"; let url = link+"?"; @@ -29,6 +29,9 @@ export class SearchPublicationsService { if(refineParams!= null && refineParams != '' ) { url += refineParams; } + if(sortBy) { + url += "&sortBy=" + sortBy; + } url += "&page="+(page-1)+"&size="+size+"&format=json"; diff --git a/services/searchSoftware.service.ts b/services/searchSoftware.service.ts index c585a329..ba3eae45 100644 --- a/services/searchSoftware.service.ts +++ b/services/searchSoftware.service.ts @@ -16,7 +16,7 @@ export class SearchSoftwareService { constructor(private http: Http ) {} - searchSoftware (params: string, refineParams:string, page: number, size: number, refineFields:string[], properties:EnvProperties ):any { + searchSoftware (params: string, refineParams:string, page: number, size: number, sortBy: string, refineFields:string[], properties:EnvProperties ):any { let link = properties.searchAPIURLLAst+"software"; @@ -27,6 +27,9 @@ export class SearchSoftwareService { if(refineParams!= null && refineParams != '' ) { url += refineParams; } + if(sortBy) { + url += "&sortBy=" + sortBy; + } url += "&page="+ (page-1) +"&size="+size+"&format=json"; diff --git a/utils/fetchEntitiesClasses/fetchDatasets.class.ts b/utils/fetchEntitiesClasses/fetchDatasets.class.ts index 70c47bf2..6ed3a491 100644 --- a/utils/fetchEntitiesClasses/fetchDatasets.class.ts +++ b/utils/fetchEntitiesClasses/fetchDatasets.class.ts @@ -57,7 +57,7 @@ export class FetchDatasets{ this.searchUtils.status = this.errorCodes.LOADING; var refineParams = (connectCommunityId)?("&fq="+StringUtils.URIEncode("communityId exact " + StringUtils.quote((connectCommunityId )))):null; - this.subResults = this._searchDatasetsService.searchDatasets(parameters,refineParams, page, size, [], properties).subscribe( + this.subResults = this._searchDatasetsService.searchDatasets(parameters,refineParams, page, size, "", [], properties).subscribe( data => { this.searchUtils.totalResults = data[0]; console.info("search Research Data: [Parameters:"+parameters+" ] [total results:"+this.searchUtils.totalResults+"]"); diff --git a/utils/fetchEntitiesClasses/fetchOrps.class.ts b/utils/fetchEntitiesClasses/fetchOrps.class.ts index d41eb5d8..9c1673da 100644 --- a/utils/fetchEntitiesClasses/fetchOrps.class.ts +++ b/utils/fetchEntitiesClasses/fetchOrps.class.ts @@ -57,7 +57,7 @@ export class FetchOrps{ this.searchUtils.status = this.errorCodes.LOADING; var refineParams = (connectCommunityId)?("&fq="+StringUtils.URIEncode("communityId exact " + StringUtils.quote((connectCommunityId )))):null; - this.subResults = this._searchOrpsService.searchOrps(parameters,refineParams, page, size, [], properties).subscribe( + this.subResults = this._searchOrpsService.searchOrps(parameters,refineParams, page, size, "", [], properties).subscribe( data => { this.searchUtils.totalResults = data[0]; console.info("search Other Research Products: [Parameters:"+parameters+" ] [total results:"+this.searchUtils.totalResults+"]"); diff --git a/utils/fetchEntitiesClasses/fetchPublications.class.ts b/utils/fetchEntitiesClasses/fetchPublications.class.ts index 47b4f793..9d76f91d 100644 --- a/utils/fetchEntitiesClasses/fetchPublications.class.ts +++ b/utils/fetchEntitiesClasses/fetchPublications.class.ts @@ -69,7 +69,7 @@ export class FetchPublications { //var errorCodes:ErrorCodes = new ErrorCodes(); this.searchUtils.status = this.errorCodes.LOADING; var refineParams = (connectCommunityId)?("&fq="+StringUtils.URIEncode("communityId exact " + StringUtils.quote((connectCommunityId )))):null; - this.subResults = this._searchPublicationsService.searchPublications(parameters,refineParams, page, size, [], properties).subscribe( + this.subResults = this._searchPublicationsService.searchPublications(parameters,refineParams, page, size, "", [], properties).subscribe( data => { this.searchUtils.totalResults = data[0]; console.info("search Publications: [Parameters:"+parameters+" ] [total results:"+this.searchUtils.totalResults+"]"); diff --git a/utils/fetchEntitiesClasses/fetchSoftware.class.ts b/utils/fetchEntitiesClasses/fetchSoftware.class.ts index 8165e894..804d4539 100644 --- a/utils/fetchEntitiesClasses/fetchSoftware.class.ts +++ b/utils/fetchEntitiesClasses/fetchSoftware.class.ts @@ -58,7 +58,7 @@ export class FetchSoftware{ this.searchUtils.status = this.errorCodes.LOADING; var refineParams = (connectCommunityId)?("&fq="+StringUtils.URIEncode("communityId exact " + StringUtils.quote((connectCommunityId )))):null; - this.subResults = this._searchSoftwareService.searchSoftware(parameters,refineParams, page, size, [], properties).subscribe( + this.subResults = this._searchSoftwareService.searchSoftware(parameters,refineParams, page, size, "", [], properties).subscribe( data => { this.searchUtils.totalResults = data[0]; console.info("search Software: [Parameters:"+parameters+" ] [total results:"+this.searchUtils.totalResults+"]");