diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/DashBoardController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/DashBoardController.java index 5b375c49b..65e7c3a09 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/DashBoardController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/DashBoardController.java @@ -1,5 +1,6 @@ package eu.eudat.controllers; +import eu.eudat.criteria.RecentActivityCriteria; import eu.eudat.logic.managers.DashBoardManager; import eu.eudat.logic.security.claims.ClaimedAuthorities; import eu.eudat.logic.services.ApiContext; @@ -44,11 +45,11 @@ public class DashBoardController extends BaseController { return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.NO_MESSAGE).payload(statistics)); } - @RequestMapping(method = RequestMethod.GET, value = {"/dashboard/recentActivity"}, produces = "application/json") + @RequestMapping(method = RequestMethod.POST, value = {"/dashboard/recentActivity"}, produces = "application/json") @Transactional - public ResponseEntity>> getNewRecentActivity(@RequestParam(name = "numOfActivities", required = false, defaultValue = "5") Integer numberOfActivities, + public ResponseEntity>> getNewRecentActivity(@RequestBody RecentActivityCriteria criteria, @RequestParam(name = "numOfActivities", required = false, defaultValue = "5") Integer numberOfActivities, @ClaimedAuthorities(claims = {Authorities.ADMIN, Authorities.MANAGER, Authorities.USER, Authorities.ANONYMOUS}) Principal principal) { - List statistics = dashBoardManager.getNewRecentActivity(principal, numberOfActivities); + List statistics = dashBoardManager.getNewRecentActivity(criteria, principal, numberOfActivities); return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(statistics)); } diff --git a/dmp-backend/web/src/main/java/eu/eudat/criteria/RecentActivityCriteria.java b/dmp-backend/web/src/main/java/eu/eudat/criteria/RecentActivityCriteria.java new file mode 100644 index 000000000..40cf806c1 --- /dev/null +++ b/dmp-backend/web/src/main/java/eu/eudat/criteria/RecentActivityCriteria.java @@ -0,0 +1,22 @@ +package eu.eudat.criteria; + +public class RecentActivityCriteria { + private String like; + private String order; + + public String getLike() { + return like; + } + + public void setLike(String like) { + this.like = like; + } + + public String getOrder() { + return order; + } + + public void setOrder(String order) { + this.order = order; + } +} diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DashBoardManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DashBoardManager.java index eba7e1a58..4b190e65a 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DashBoardManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DashBoardManager.java @@ -1,5 +1,6 @@ package eu.eudat.logic.managers; +import eu.eudat.criteria.RecentActivityCriteria; import eu.eudat.data.dao.criteria.*; import eu.eudat.data.dao.entities.DMPDao; import eu.eudat.data.dao.entities.DatasetDao; @@ -182,16 +183,18 @@ public class DashBoardManager { } @Transactional - public List getNewRecentActivity(Principal principal, Integer numberofactivities) { + public List getNewRecentActivity(RecentActivityCriteria criteria, Principal principal, Integer numberofactivities) { List recentActivityModels = new ArrayList<>(); DMPDao dataManagementPlanRepository = databaseRepository.getDmpDao(); DatasetDao datasetRepository = databaseRepository.getDatasetDao(); UserInfo user = new UserInfo(); user.setId(principal.getId()); DatasetCriteria datasetCriteria = new DatasetCriteria(); + datasetCriteria.setLike(criteria.getLike()); datasetCriteria.setAllVersions(false); DataManagementPlanCriteria dataManagementPlanCriteria = new DataManagementPlanCriteria(); dataManagementPlanCriteria.setAllVersions(false); + dataManagementPlanCriteria.setLike(criteria.getLike()); QueryableList dmpList; QueryableList datasetList; @@ -210,7 +213,7 @@ public class DashBoardManager { CompletableFuture> dmps = dmpList .withHint(HintedModelFactory.getHint(DataManagementPlanListingModel.class)) - .orderBy((builder, root) -> builder.desc(root.get("modified"))) + .orderBy((builder, root) -> builder.desc(root.get(criteria.getOrder()))) .take(numberofactivities) .selectAsync(item -> { return new RecentDmpModel().fromEntity(item); @@ -219,7 +222,7 @@ public class DashBoardManager { CompletableFuture> datasets = datasetList .withHint(HintedModelFactory.getHint(DatasetListingModel.class)) - .orderBy((builder, root) -> builder.desc(root.get("modified"))) + .orderBy((builder, root) -> builder.desc(root.get(criteria.getOrder()))) .take(numberofactivities) .selectAsync(item -> { return new RecentDatasetModel().fromEntity(item); diff --git a/dmp-frontend/src/app/core/common/enum/recent-activity-order.ts b/dmp-frontend/src/app/core/common/enum/recent-activity-order.ts new file mode 100644 index 000000000..792ede63c --- /dev/null +++ b/dmp-frontend/src/app/core/common/enum/recent-activity-order.ts @@ -0,0 +1,6 @@ +export enum RecentActivityOrder { + LABEL = "label", + CREATED = "created", + MODIFIED = "modified", + STATUS = "status" +} diff --git a/dmp-frontend/src/app/core/query/recent-activity/recent-activity-criteria.ts b/dmp-frontend/src/app/core/query/recent-activity/recent-activity-criteria.ts new file mode 100644 index 000000000..1c21402b9 --- /dev/null +++ b/dmp-frontend/src/app/core/query/recent-activity/recent-activity-criteria.ts @@ -0,0 +1,6 @@ +import { RecentActivityOrder } from '@app/core/common/enum/recent-activity-order'; +import { BaseCriteria } from '../base-criteria'; + +export class RecentActivityCriteria extends BaseCriteria{ + public order: RecentActivityOrder = RecentActivityOrder.MODIFIED; +} diff --git a/dmp-frontend/src/app/core/services/dashboard/dashboard.service.ts b/dmp-frontend/src/app/core/services/dashboard/dashboard.service.ts index b715942de..6537c1c83 100644 --- a/dmp-frontend/src/app/core/services/dashboard/dashboard.service.ts +++ b/dmp-frontend/src/app/core/services/dashboard/dashboard.service.ts @@ -5,6 +5,7 @@ import { environment } from '../../../../environments/environment'; import { DashboardStatisticsModel } from '../../model/dashboard/dashboard-statistics-model'; import { BaseHttpService } from '../http/base-http.service'; import { ConfigurationService } from '../configuration/configuration.service'; +import { RecentActivityCriteria } from '@app/core/query/recent-activity/recent-activity-criteria'; @Injectable() export class DashboardService { @@ -25,7 +26,7 @@ export class DashboardService { return this.http.get(this.actionUrl + 'me/getStatistics', { headers: this.headers }); } - getRecentAcitvity(): Observable { - return this.http.get(this.actionUrl + 'recentActivity', {headers: this.headers}); + getRecentAcitvity(criteria: RecentActivityCriteria): Observable { + return this.http.post(this.actionUrl + 'recentActivity', criteria, {headers: this.headers}); } }