Fixes bug on load more both dmps and datasets

This commit is contained in:
apapachristou 2020-07-22 10:36:29 +03:00
parent f3c1244600
commit 3844c3a187
3 changed files with 45 additions and 7 deletions

View File

@ -12,3 +12,17 @@ export class DataTableRequest<T> extends RequestItem<T> {
this.orderings = orderings;
}
}
export class DataTableMultiTypeRequest<T> extends RequestItem<T> {
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;
}
}

View File

@ -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<DashboardStatisticsModel>(this.actionUrl + 'me/getStatistics', { headers: this.headers });
}
getRecentActivity(request: DataTableRequest<RecentActivityCriteria>): Observable<RecentActivityModel[]> {
getRecentActivity(request: DataTableMultiTypeRequest<RecentActivityCriteria>): Observable<RecentActivityModel[]> {
return this.http.post<RecentActivityModel[]>(this.actionUrl + 'recentActivity', request, {headers: this.headers});
}

View File

@ -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<string> = [];
// const fields: Array<string> = ["-modified"];
const allDataTableRequest: DataTableRequest<RecentActivityCriteria> = new DataTableRequest(0, 5, { fields: fields });
const allDataTableRequest: DataTableMultiTypeRequest<RecentActivityCriteria> = 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<string> = [];
// const fields: Array<string> = ["-modified"];
this.startIndex = 0;
const allDataTableRequest: DataTableRequest<RecentActivityCriteria> = new DataTableRequest(0, this.pageSize, { fields: fields });
const allDataTableRequest: DataTableMultiTypeRequest<RecentActivityCriteria> = 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<string> = [];
// const fields: Array<string> = ["-modified"];
const request = new DataTableRequest<RecentActivityCriteria>(this.startIndex, this.pageSize, { fields: fields });
const request = new DataTableMultiTypeRequest<RecentActivityCriteria>(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);
});