From 3844c3a187f709bea420c623131ca3ed3bfc6637 Mon Sep 17 00:00:00 2001 From: apapachristou Date: Wed, 22 Jul 2020 10:36:29 +0300 Subject: [PATCH] Fixes bug on load more both dmps and datasets --- .../model/data-table/data-table-request.ts | 14 ++++++++ .../services/dashboard/dashboard.service.ts | 4 +-- .../recent-edited-activity.component.ts | 34 ++++++++++++++++--- 3 files changed, 45 insertions(+), 7 deletions(-) diff --git a/dmp-frontend/src/app/core/model/data-table/data-table-request.ts b/dmp-frontend/src/app/core/model/data-table/data-table-request.ts index bd799a7fb..51d2a4b69 100644 --- a/dmp-frontend/src/app/core/model/data-table/data-table-request.ts +++ b/dmp-frontend/src/app/core/model/data-table/data-table-request.ts @@ -12,3 +12,17 @@ export class DataTableRequest extends RequestItem { this.orderings = orderings; } } + +export class DataTableMultiTypeRequest extends RequestItem { + dmpOffset = 0; + datasetOffset = 0; + length = 0; + public orderings: ColumnOrdering; + constructor(dmpOffset: number, datasetOffset: number, length: number, orderings: ColumnOrdering) { + super(); + this.length = length; + this.dmpOffset = dmpOffset; + this.datasetOffset = datasetOffset; + this.orderings = orderings; + } +} 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 78baa5403..07c43eb1f 100644 --- a/dmp-frontend/src/app/core/services/dashboard/dashboard.service.ts +++ b/dmp-frontend/src/app/core/services/dashboard/dashboard.service.ts @@ -7,7 +7,7 @@ import { BaseHttpService } from '../http/base-http.service'; import { ConfigurationService } from '../configuration/configuration.service'; import { RecentActivityModel } from '@app/core/model/recent-activity/recent-activity.model'; import { RecentActivityCriteria } from '@app/core/query/recent-activity/recent-activity-criteria'; -import { DataTableRequest } from '@app/core/model/data-table/data-table-request'; +import { DataTableRequest, DataTableMultiTypeRequest } from '@app/core/model/data-table/data-table-request'; @Injectable() export class DashboardService { @@ -28,7 +28,7 @@ export class DashboardService { return this.http.get(this.actionUrl + 'me/getStatistics', { headers: this.headers }); } - getRecentActivity(request: DataTableRequest): Observable { + getRecentActivity(request: DataTableMultiTypeRequest): Observable { return this.http.post(this.actionUrl + 'recentActivity', request, {headers: this.headers}); } 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 028231bfa..0a0b78a12 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 @@ -3,7 +3,7 @@ import { MatDialog } from '@angular/material'; import { Router } from '@angular/router'; import { RecentActivityType } from '@app/core/common/enum/recent-activity-type'; import { Principal } from '@app/core/model/auth/principal'; -import { DataTableRequest } from '@app/core/model/data-table/data-table-request'; +import { DataTableRequest, DataTableMultiTypeRequest } from '@app/core/model/data-table/data-table-request'; import { DmpListingModel } from '@app/core/model/dmp/dmp-listing'; import { DmpCriteria } from '@app/core/query/dmp/dmp-criteria'; import { AuthService } from '@app/core/services/auth/auth.service'; @@ -45,6 +45,8 @@ export class RecentEditedActivityComponent extends BaseComponent implements OnIn isDraft: boolean; totalCount: number; startIndex: number = 0; + dmpOffset: number = 0; + datasetOffset: number = 0; pageSize: number = 5; public formGroup = new FormBuilder().group({ like: new FormControl(), @@ -71,7 +73,7 @@ export class RecentEditedActivityComponent extends BaseComponent implements OnIn if (this.isAuthenticated()) { const fields: Array = []; // const fields: Array = ["-modified"]; - const allDataTableRequest: DataTableRequest = new DataTableRequest(0, 5, { fields: fields }); + 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); @@ -80,6 +82,13 @@ export class RecentEditedActivityComponent extends BaseComponent implements OnIn .getRecentActivity(allDataTableRequest) .subscribe(response => { this.allRecentActivities = response; + this.allRecentActivities.forEach(recentActivity => { + if (recentActivity.type === RecentActivityType.Dataset) { + this.datasetOffset = this.datasetOffset + 1; + } else if (recentActivity.type === RecentActivityType.Dmp) { + this.dmpOffset = this.dmpOffset + 1; + } + }); this.totalCountRecentEdited.emit(this.allRecentActivities.length); }); this.formGroup.get('like').valueChanges @@ -395,7 +404,7 @@ export class RecentEditedActivityComponent extends BaseComponent implements OnIn const fields: Array = []; // const fields: Array = ["-modified"]; this.startIndex = 0; - const allDataTableRequest: DataTableRequest = new DataTableRequest(0, this.pageSize, { fields: fields }); + const allDataTableRequest: DataTableMultiTypeRequest = new DataTableMultiTypeRequest(0, 0, this.pageSize, { fields: fields }); allDataTableRequest.criteria = new RecentActivityCriteria(); allDataTableRequest.criteria.like = this.formGroup.get("like").value; allDataTableRequest.criteria.order = this.formGroup.get("order").value; @@ -403,21 +412,36 @@ export class RecentEditedActivityComponent extends BaseComponent implements OnIn .getRecentActivity(allDataTableRequest) .subscribe(response => { this.allRecentActivities = response; + this.allRecentActivities.forEach(recentActivity => { + if (recentActivity.type === RecentActivityType.Dataset) { + this.datasetOffset = this.datasetOffset + 1; + } else if (recentActivity.type === RecentActivityType.Dmp) { + this.dmpOffset = this.dmpOffset + 1; + } + }); this.totalCountRecentEdited.emit(this.allRecentActivities.length); }); } public loadMore() { - this.startIndex = this.startIndex + this.pageSize; + this.dmpOffset = this.dmpOffset + this.pageSize; + this.datasetOffset = this.datasetOffset + this.pageSize; const fields: Array = []; // const fields: Array = ["-modified"]; - const request = new DataTableRequest(this.startIndex, this.pageSize, { fields: fields }); + const request = new DataTableMultiTypeRequest(this.dmpOffset, this.datasetOffset, this.pageSize, { fields: fields }); request.criteria = new RecentActivityCriteria(); request.criteria.like = this.formGroup.get("like").value ? this.formGroup.get("like").value : ""; request.criteria.order = this.formGroup.get("order").value; this.dashboardService.getRecentActivity(request).pipe(takeUntil(this._destroyed)).subscribe(result => { if (!result) { return []; } + result.forEach(recentActivity => { + if (recentActivity.type === RecentActivityType.Dataset) { + this.datasetOffset = this.datasetOffset + 1; + } else if (recentActivity.type === RecentActivityType.Dmp) { + this.dmpOffset = this.dmpOffset + 1; + } + }); this.allRecentActivities = this.allRecentActivities.concat(result); this.totalCountRecentEdited.emit(this.allRecentActivities.length); });