diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/Projects.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/Projects.java index a1bd460a9..2e603fa1c 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/Projects.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/Projects.java @@ -46,11 +46,17 @@ public class Projects extends BaseController { @RequestMapping(method = RequestMethod.POST, value = {"/paged"}, consumes = "application/json", produces = "application/json") public @ResponseBody ResponseEntity>> getPaged(@Valid @RequestBody ProjectTableRequest projectTableRequest, @RequestParam String fieldsGroup, Principal principal) throws Exception { - System.out.println(fieldsGroup); DataTableData dataTable = this.projectManager.getPaged(projectTableRequest, principal, fieldsGroup); return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().payload(dataTable).status(ApiMessageCode.NO_MESSAGE)); } + @RequestMapping(method = RequestMethod.POST, value = {"public/paged"}, consumes = "application/json", produces = "application/json") + public @ResponseBody + ResponseEntity>> getPaged(@Valid @RequestBody ProjectTableRequest projectTableRequest) throws Exception { + DataTableData dataTable = this.projectManager.getPublicPaged(projectTableRequest); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().payload(dataTable).status(ApiMessageCode.NO_MESSAGE)); + } + @RequestMapping(method = RequestMethod.GET, value = {"{id}"}, produces = "application/json") public @ResponseBody ResponseEntity> getSingle(@PathVariable String id, Principal principal) throws IllegalAccessException, InstantiationException { diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ProjectManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ProjectManager.java index 29aaa494d..5db1b6c6c 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ProjectManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ProjectManager.java @@ -88,6 +88,22 @@ public class ProjectManager { return dataTable; } + public DataTableData getPublicPaged(ProjectTableRequest projectTableRequest) throws Exception { + ProjectDao projectRepository = databaseRepository.getProjectDao(); + QueryableList items = projectRepository.getWithCriteria(projectTableRequest.getCriteria()); + QueryableList pagedItems = PaginationManager.applyPaging(items, projectTableRequest); + DataTableData dataTable = new DataTableData<>(); + CompletableFuture projectsFuture; + projectsFuture = pagedItems.selectAsync(item -> new ProjectListingModel().fromDataModel(item)) + .whenComplete((results, throwable) -> { + dataTable.setData(results); + }); + CompletableFuture countFuture = pagedItems.countAsync().whenComplete((count, throwable) -> dataTable.setTotalCount(count)); + + CompletableFuture.allOf(projectsFuture, countFuture).join(); + return dataTable; + } + public eu.eudat.models.data.project.Project getSingle(String id) throws InstantiationException, IllegalAccessException { eu.eudat.models.data.project.Project project = new eu.eudat.models.data.project.Project(); project.fromDataModel(databaseRepository.getProjectDao().find(UUID.fromString(id))); diff --git a/dmp-frontend/src/app/core/services/project/project.service.ts b/dmp-frontend/src/app/core/services/project/project.service.ts index 6abe04a98..d7af200d7 100644 --- a/dmp-frontend/src/app/core/services/project/project.service.ts +++ b/dmp-frontend/src/app/core/services/project/project.service.ts @@ -29,6 +29,10 @@ export class ProjectService { } } + getPublicPaged(dataTableRequest: DataTableRequest): Observable> { + return this.http.post>(this.actionUrl + 'public/paged', dataTableRequest, { headers: this.headers }); + } + getWithExternal(requestItem: RequestItem): Observable { return this.http.post(this.actionUrl + 'external', requestItem, { headers: this.headers }); } @@ -45,5 +49,4 @@ export class ProjectService { delete(id: String): Observable { return this.http.delete(this.actionUrl + id, { headers: this.headers }); } - } diff --git a/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filters.component.ts b/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filters.component.ts index ef0cecb0e..38529b52a 100644 --- a/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filters.component.ts +++ b/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filters.component.ts @@ -99,13 +99,10 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI dataTableRequest.criteria.projectStateType = this.facetCriteria.projectStatus; dataTableRequest.criteria['length'] = 10; - if (this.authentication.current()) { - this.projects = this.projectService.getPaged(dataTableRequest, "autocomplete").map(x => x.data); - this.facetCriteria.projects = []; - } + this.projects = this.projectService.getPublicPaged(dataTableRequest).map(x => x.data); + this.facetCriteria.projects = []; } this.facetCriteriaChange.emit(this.facetCriteria); - } public projectChanged(event: any) { @@ -163,7 +160,8 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI const dataTableRequest: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); dataTableRequest.criteria = projectCriteria; //const dataTableRequest: RequestItem = { criteria: projectCriteria }; - return this.projectService.getPaged(dataTableRequest, "autocomplete").map(x => x.data); + //return this.projectService.getPaged(dataTableRequest, "autocomplete").map(x => x.data); + return this.projectService.getPublicPaged(dataTableRequest).map(x => x.data); } public dmpOrganisationSearch(value: string): Observable {