diff --git a/dmp-backend/data/src/main/java/eu/eudat/data/query/PaginationService.java b/dmp-backend/data/src/main/java/eu/eudat/data/query/PaginationService.java index 7ee93cd6f..c21344140 100644 --- a/dmp-backend/data/src/main/java/eu/eudat/data/query/PaginationService.java +++ b/dmp-backend/data/src/main/java/eu/eudat/data/query/PaginationService.java @@ -21,9 +21,12 @@ public class PaginationService { items.withFields(Arrays.asList(tableRequest.getSelection().getFields())); return items; } - public static void applyOrder(QueryableList items, TableQuery tableRequest) { - ColumnOrderings columnOrderings = tableRequest.getOrderings(); + applyOrder(items, tableRequest.getOrderings()); + } + + + public static void applyOrder(QueryableList items, ColumnOrderings columnOrderings) { for (Ordering ordering : columnOrderings.getFieldOrderings()) { if (ordering.getOrderByType() == Ordering.OrderByType.ASC) applyAscOrder(items, ordering); 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 d3c662182..b9761b6f9 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 @@ -7,6 +7,7 @@ import eu.eudat.data.dao.entities.DatasetDao; import eu.eudat.data.dao.entities.OrganisationDao; import eu.eudat.data.dao.entities.GrantDao; import eu.eudat.data.entities.*; +import eu.eudat.data.query.PaginationService; import eu.eudat.data.query.items.table.dmp.DataManagmentPlanPublicTableRequest; import eu.eudat.elastic.entities.Dmp; import eu.eudat.logic.builders.model.models.RecentActivityDataBuilder; @@ -263,10 +264,12 @@ public class DashBoardManager { } + PaginationService.applyOrder(dmpList, tableRequest.getOrderings()); + /*CompletableFuture future = CompletableFuture.runAsync(() -> */{ recentActivityModels.addAll(dmpList .withHint(HintedModelFactory.getHint(RecentDmpModel.class)) - .orderBy((builder, root) -> builder.desc(root.get(tableRequest.getCriteria().getOrder()))) + // .orderBy((builder, root) -> builder.desc(root.get(tableRequest.getCriteria().getOrder()))) .skip(tableRequest.getDmpOffset()) .take(tableRequest.getLength()) .select(item -> { @@ -282,7 +285,7 @@ public class DashBoardManager { recentActivityModels.addAll(datasetList .withHint(HintedModelFactory.getHint(RecentDatasetModel.class)) - .orderBy((builder, root) -> builder.desc(root.get(tableRequest.getCriteria().getOrder()))) + // .orderBy((builder, root) -> builder.desc(root.get(tableRequest.getCriteria().getOrder()))) .skip(tableRequest.getDatasetOffset()) .take(tableRequest.getLength()) .select(item -> { @@ -290,6 +293,20 @@ public class DashBoardManager { })); }/*);*/ + //GK: Shuffle the deck otherwise we will summon the DMPodia when sorting with status + int pos = -1; + for (int i = (recentActivityModels.size() / 2); i < recentActivityModels.size(); i++) { + RecentActivityModel recentActivityModel = recentActivityModels.remove(i); + + while (pos < recentActivityModels.size()) { + pos++; + if (pos % 2 != 0) { + break; + } + + } + recentActivityModels.add(pos, recentActivityModel); + } //CompletableFuture.allOf(future).join(); // CompletableFuture.allOf(dmps, datasets).join(); diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/dashboard/recent/tablerequest/RecentActivityTableRequest.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/dashboard/recent/tablerequest/RecentActivityTableRequest.java index 39ce2933e..e50c8336d 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/data/dashboard/recent/tablerequest/RecentActivityTableRequest.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/dashboard/recent/tablerequest/RecentActivityTableRequest.java @@ -1,8 +1,10 @@ package eu.eudat.models.data.dashboard.recent.tablerequest; import eu.eudat.criteria.RecentActivityCriteria; +import eu.eudat.data.query.definition.helpers.ColumnOrderings; public class RecentActivityTableRequest { + private ColumnOrderings orderings; private RecentActivityCriteria criteria; private int dmpOffset; private int datasetOffset; @@ -39,4 +41,12 @@ public class RecentActivityTableRequest { public void setCriteria(RecentActivityCriteria criteria) { this.criteria = criteria; } + + public ColumnOrderings getOrderings() { + return orderings; + } + + public void setOrderings(ColumnOrderings orderings) { + this.orderings = orderings; + } } diff --git a/dmp-frontend/src/app/ui/dashboard/drafts/drafts.component.ts b/dmp-frontend/src/app/ui/dashboard/drafts/drafts.component.ts index 8efdd2a0a..8ab0d76b4 100644 --- a/dmp-frontend/src/app/ui/dashboard/drafts/drafts.component.ts +++ b/dmp-frontend/src/app/ui/dashboard/drafts/drafts.component.ts @@ -69,7 +69,7 @@ export class DraftsComponent extends BaseComponent implements OnInit { // const fields: Array = []; // fields.push('-modified'); this.formGroup.get('order').setValue(this.order.MODIFIED); - const fields: Array = ["-" + this.formGroup.get('order').value]; + const fields: Array = [(this.formGroup.get('order').value === 'status' ? '+' : "-") + this.formGroup.get('order').value]; const dmpDataTableRequest: DataTableRequest = new DataTableRequest(0, 5, { fields: fields }); dmpDataTableRequest.criteria = new DatasetCriteria(); dmpDataTableRequest.criteria.status = DmpStatus.Draft; @@ -301,7 +301,7 @@ export class DraftsComponent extends BaseComponent implements OnInit { refresh(): void { // const fields: Array = []; // fields.push('-modified'); - const fields: Array = ["-" + this.formGroup.get('order').value]; + const fields: Array = [(this.formGroup.get('order').value === 'status' ? '+' : "-") + this.formGroup.get('order').value]; this.startIndex = 0; const dmpDataTableRequest: DataTableRequest = new DataTableRequest(0, 5, { fields: fields }); dmpDataTableRequest.criteria = new DatasetCriteria(); @@ -317,7 +317,7 @@ export class DraftsComponent extends BaseComponent implements OnInit { public loadMore() { this.startIndex = this.startIndex + this.pageSize; // const fields: Array = ["-modified"]; - const fields: Array = ["-" + this.formGroup.get('order').value]; + const fields: Array = [(this.formGroup.get('order').value === 'status' ? '+' : "-") + this.formGroup.get('order').value]; const request = new DataTableRequest(this.startIndex, this.pageSize, { fields: fields }); request.criteria = new DatasetCriteria(); request.criteria.status = DmpStatus.Draft; diff --git a/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.ts b/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.ts index 6a24d7c2d..2b44bf203 100644 --- a/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.ts +++ b/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.ts @@ -75,12 +75,12 @@ export class RecentEditedActivityComponent extends BaseComponent implements OnIn ngOnInit() { if (this.isAuthenticated()) { - const fields: Array = []; + this.formGroup.get('order').setValue(this.order.MODIFIED); + const fields: Array = [(this.formGroup.get('order').value === 'status' ? '+' : "-") + this.formGroup.get('order').value]; // const fields: Array = ["-modified"]; const allDataTableRequest: DataTableMultiTypeRequest = new DataTableMultiTypeRequest(0, 0, 5, { fields: fields }); allDataTableRequest.criteria = new RecentActivityCriteria(); allDataTableRequest.criteria.like = ""; - this.formGroup.get('order').setValue(this.order.MODIFIED); allDataTableRequest.criteria.order = this.formGroup.get('order').value; this.dashboardService .getRecentActivity(allDataTableRequest) @@ -458,7 +458,7 @@ export class RecentEditedActivityComponent extends BaseComponent implements OnIn } refresh(): void { - const fields: Array = []; + const fields: Array = [(this.formGroup.get('order').value === 'status' ? '+' : "-") + this.formGroup.get('order').value]; // const fields: Array = ["-modified"]; this.startIndex = 0; const allDataTableRequest: DataTableMultiTypeRequest = new DataTableMultiTypeRequest(0, 0, this.pageSize, { fields: fields }); @@ -481,7 +481,7 @@ export class RecentEditedActivityComponent extends BaseComponent implements OnIn } public loadMore() { - const fields: Array = []; + const fields: Array = [(this.formGroup.get('order').value === 'status' ? '+' : "-") + this.formGroup.get('order').value]; // const fields: Array = ["-modified"]; const request = new DataTableMultiTypeRequest(this.dmpOffset, this.datasetOffset, this.pageSize, { fields: fields }); request.criteria = new RecentActivityCriteria(); diff --git a/dmp-frontend/src/app/ui/dashboard/recent-edited-dataset-activity/recent-edited-dataset-activity.component.ts b/dmp-frontend/src/app/ui/dashboard/recent-edited-dataset-activity/recent-edited-dataset-activity.component.ts index 2c36090ed..b9ab17782 100644 --- a/dmp-frontend/src/app/ui/dashboard/recent-edited-dataset-activity/recent-edited-dataset-activity.component.ts +++ b/dmp-frontend/src/app/ui/dashboard/recent-edited-dataset-activity/recent-edited-dataset-activity.component.ts @@ -66,7 +66,7 @@ export class RecentEditedDatasetActivityComponent extends BaseComponent implemen if (this.isAuthenticated()) { // const fields: Array = ["-modified"]; this.formGroup.get('order').setValue(this.order.MODIFIED); - const fields: Array = ["-" + this.formGroup.get('order').value]; + const fields: Array = [(this.formGroup.get('order').value === 'status' ? '+' : "-") + this.formGroup.get('order').value]; const datasetDataTableRequest: DataTableRequest = new DataTableRequest(0, this.pageSize, { fields: fields }); datasetDataTableRequest.criteria = new DatasetCriteria(); datasetDataTableRequest.criteria.like = ""; @@ -88,7 +88,7 @@ export class RecentEditedDatasetActivityComponent extends BaseComponent implemen refresh(): void { // const fields: Array = ["-modified"]; - const fields: Array = ["-" + this.formGroup.get('order').value]; + const fields: Array = [(this.formGroup.get('order').value === 'status' ? '+' : "-") + this.formGroup.get('order').value]; this.startIndex = 0; const datasetDataTableRequest: DataTableRequest = new DataTableRequest(0, this.pageSize, { fields: fields }); datasetDataTableRequest.criteria = new DatasetCriteria(); @@ -105,7 +105,7 @@ export class RecentEditedDatasetActivityComponent extends BaseComponent implemen public loadMore() { this.startIndex = this.startIndex + this.pageSize; // const fields: Array = ["-modified"]; - const fields: Array = ["-" + this.formGroup.get('order').value]; + const fields: Array = [(this.formGroup.get('order').value === 'status' ? '+' : "-") + this.formGroup.get('order').value]; const request = new DataTableRequest(this.startIndex, this.pageSize, { fields: fields }); request.criteria = new DatasetCriteria(); diff --git a/dmp-frontend/src/app/ui/dashboard/recent-edited-dmp-activity/recent-edited-dmp-activity.component.ts b/dmp-frontend/src/app/ui/dashboard/recent-edited-dmp-activity/recent-edited-dmp-activity.component.ts index e6ffc7132..eb2717c9c 100644 --- a/dmp-frontend/src/app/ui/dashboard/recent-edited-dmp-activity/recent-edited-dmp-activity.component.ts +++ b/dmp-frontend/src/app/ui/dashboard/recent-edited-dmp-activity/recent-edited-dmp-activity.component.ts @@ -68,7 +68,7 @@ export class RecentEditedDmpActivityComponent extends BaseComponent implements O if (this.isAuthenticated()) { // const fields: Array = ["-modified"]; this.formGroup.get('order').setValue(this.order.MODIFIED); - const fields: Array = ["-" + this.formGroup.get('order').value]; + const fields: Array = [(this.formGroup.get('order').value === 'status' ? '+' : "-") + this.formGroup.get('order').value]; const dmpDataTableRequest: DataTableRequest = new DataTableRequest(0, 5, { fields: fields }); dmpDataTableRequest.criteria = new DmpCriteria(); dmpDataTableRequest.criteria.like = ""; @@ -345,7 +345,7 @@ export class RecentEditedDmpActivityComponent extends BaseComponent implements O refresh(): void { // const fields: Array = ["-modified"]; - const fields: Array = ["-" + this.formGroup.get('order').value]; + const fields: Array = [(this.formGroup.get('order').value === 'status' ? '+' : "-") + this.formGroup.get('order').value]; this.startIndex = 0; const dmpDataTableRequest: DataTableRequest = new DataTableRequest(this.startIndex, this.pageSize, { fields: fields }); dmpDataTableRequest.criteria = new DmpCriteria(); @@ -362,7 +362,7 @@ export class RecentEditedDmpActivityComponent extends BaseComponent implements O public loadMore() { this.startIndex = this.startIndex + this.pageSize; // const fields: Array = ["-modified"]; - const fields: Array = ["-" + this.formGroup.get('order').value]; + const fields: Array = [(this.formGroup.get('order').value === 'status' ? '+' : "-") + this.formGroup.get('order').value]; const request = new DataTableRequest(this.startIndex, this.pageSize, { fields: fields }); request.criteria = new DmpCriteria(); diff --git a/dmp-frontend/src/app/ui/dataset/listing/dataset-listing.component.ts b/dmp-frontend/src/app/ui/dataset/listing/dataset-listing.component.ts index 0081ce8e5..fb0231159 100644 --- a/dmp-frontend/src/app/ui/dataset/listing/dataset-listing.component.ts +++ b/dmp-frontend/src/app/ui/dataset/listing/dataset-listing.component.ts @@ -152,7 +152,7 @@ export class DatasetListingComponent extends BaseComponent implements OnInit, IB // let fields: Array = new Array(); // fields.push('-modified'); //if (this.sort && this.sort.active) { fields = this.sort.direction === 'asc' ? ['+' + this.sort.active] : ['-' + this.sort.active]; } - const fields: Array = ["-" + this.formGroup.get('order').value]; + const fields: Array = [(this.formGroup.get('order').value === 'status' ? '+' : "-") + this.formGroup.get('order').value]; const request = new DataTableRequest(this.startIndex, this.pageSize, { fields: fields }); this.criteria.isPublic = this.isPublic; request.criteria = this.criteria; @@ -168,7 +168,7 @@ export class DatasetListingComponent extends BaseComponent implements OnInit, IB public loadMore() { this.startIndex = this.startIndex + this.pageSize; // const fields: Array = ["-modified"]; - const fields: Array = ["-" + this.formGroup.get('order').value]; + const fields: Array = [(this.formGroup.get('order').value === 'status' ? '+' : "-") + this.formGroup.get('order').value]; const request = new DataTableRequest(this.startIndex, this.pageSize, { fields: fields }); this.criteria.isPublic = this.isPublic; request.criteria = this.criteria; diff --git a/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.ts b/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.ts index e3461242d..8d10cf54a 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.ts +++ b/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.ts @@ -185,7 +185,7 @@ export class DmpListingComponent extends BaseComponent implements OnInit, IBread // let fields: Array = new Array(); // if (this.sort && this.sort.active) { fields = this.sort.direction === 'asc' ? ['+' + this.sort.active] : ['-' + this.sort.active]; } // fields.push('-modified'); - const fields: Array = ["-" + this.formGroup.get('order').value]; + const fields: Array = [(this.formGroup.get('order').value === 'status' ? '+' : "-") + this.formGroup.get('order').value]; const request = new DataTableRequest(this.startIndex, this.pageSize, { fields: fields }); this.setPublicCriteria(); @@ -209,7 +209,7 @@ export class DmpListingComponent extends BaseComponent implements OnInit, IBread public loadMore() { this.startIndex = this.startIndex + this.pageSize; // const fields: Array = ["-modified"]; - const fields: Array = ["-" + this.formGroup.get('order').value]; + const fields: Array = [(this.formGroup.get('order').value === 'status' ? '+' : "-") + this.formGroup.get('order').value]; const request = new DataTableRequest(this.startIndex, this.pageSize, { fields: fields }); this.setPublicCriteria(); request.criteria = this.criteria;