Fixes bug on load more results with sorting
This commit is contained in:
parent
8e7d426947
commit
9602fc0340
|
@ -10,8 +10,8 @@ export interface DmpListingModel {
|
|||
grantId: String;
|
||||
grantAbbreviation: String;
|
||||
profile: String;
|
||||
creationTime: String;
|
||||
modifiedTime: String;
|
||||
creationTime: string;
|
||||
modifiedTime: string;
|
||||
publishedAt: Date;
|
||||
finalizedAt: Date;
|
||||
organisations: String;
|
||||
|
|
|
@ -325,8 +325,58 @@ export class DraftsComponent extends BaseComponent implements OnInit {
|
|||
|
||||
this.datasetService.getPaged(request).pipe(takeUntil(this._destroyed)).subscribe(result => {
|
||||
if (!result) { return []; }
|
||||
this.datasetDrafts = this.datasetDrafts.concat(result.data);
|
||||
// this.datasetDrafts = this.datasetDrafts.concat(result.data);
|
||||
this.datasetDrafts = this.datasetDrafts.length > 0 ? this.mergeTwoSortedLists(this.datasetDrafts, result.data, this.formGroup.get('order').value) : result.data;
|
||||
this.totalCountDraftDatasets.emit(this.datasetDrafts.length);
|
||||
});
|
||||
}
|
||||
|
||||
private mergeTwoSortedLists(arr1: DatasetListingModel[], arr2: DatasetListingModel[], order: string): DatasetListingModel[] {
|
||||
let merged = [];
|
||||
let index1 = 0;
|
||||
let index2 = 0;
|
||||
let current = 0;
|
||||
|
||||
while (current < (arr1.length + arr2.length)) {
|
||||
|
||||
let isArr1Depleted = index1 >= arr1.length;
|
||||
let isArr2Depleted = index2 >= arr2.length;
|
||||
|
||||
if (order === 'modified') {
|
||||
if (!isArr1Depleted && (isArr2Depleted || (new Date(arr1[index1].modified) > new Date(arr2[index2].modified)))) {
|
||||
merged[current] = arr1[index1];
|
||||
index1++;
|
||||
} else {
|
||||
merged[current] = arr2[index2];
|
||||
index2++;
|
||||
}
|
||||
} else if (order === 'created') {
|
||||
if (!isArr1Depleted && (isArr2Depleted || (new Date(arr1[index1].created) > new Date(arr2[index2].created)))) {
|
||||
merged[current] = arr1[index1];
|
||||
index1++;
|
||||
} else {
|
||||
merged[current] = arr2[index2];
|
||||
index2++;
|
||||
}
|
||||
} else if (order === 'label') {
|
||||
if (!isArr1Depleted && (isArr2Depleted || (arr1[index1].label < arr2[index2].label))) {
|
||||
merged[current] = arr1[index1];
|
||||
index1++;
|
||||
} else {
|
||||
merged[current] = arr2[index2];
|
||||
index2++;
|
||||
}
|
||||
} else if (order === 'status') {
|
||||
if (!isArr1Depleted && (isArr2Depleted || (arr1[index1].status < arr2[index2].status))) {
|
||||
merged[current] = arr1[index1];
|
||||
index1++;
|
||||
} else {
|
||||
merged[current] = arr2[index2];
|
||||
index2++;
|
||||
}
|
||||
}
|
||||
current++;
|
||||
}
|
||||
return merged;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -497,12 +497,62 @@ export class RecentEditedActivityComponent extends BaseComponent implements OnIn
|
|||
this.dmpOffset = this.dmpOffset + 1;
|
||||
}
|
||||
});
|
||||
this.allRecentActivities = this.allRecentActivities.concat(result);
|
||||
// this.allRecentActivities = this.allRecentActivities.concat(result);
|
||||
this.allRecentActivities = this.allRecentActivities.length > 0 ? this.mergeTwoSortedLists(this.allRecentActivities, result, this.formGroup.get('order').value) : result;
|
||||
this.totalCountRecentEdited.emit(this.allRecentActivities.length);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private mergeTwoSortedLists(arr1: RecentActivityModel[], arr2: RecentActivityModel[], order: string): RecentActivityModel[] {
|
||||
let merged = [];
|
||||
let index1 = 0;
|
||||
let index2 = 0;
|
||||
let current = 0;
|
||||
|
||||
while (current < (arr1.length + arr2.length)) {
|
||||
|
||||
let isArr1Depleted = index1 >= arr1.length;
|
||||
let isArr2Depleted = index2 >= arr2.length;
|
||||
|
||||
if (order === 'modified') {
|
||||
if (!isArr1Depleted && (isArr2Depleted || (new Date(arr1[index1].modified) > new Date(arr2[index2].modified)))) {
|
||||
merged[current] = arr1[index1];
|
||||
index1++;
|
||||
} else {
|
||||
merged[current] = arr2[index2];
|
||||
index2++;
|
||||
}
|
||||
} else if (order === 'created') {
|
||||
if (!isArr1Depleted && (isArr2Depleted || (new Date(arr1[index1].created) > new Date(arr2[index2].created)))) {
|
||||
merged[current] = arr1[index1];
|
||||
index1++;
|
||||
} else {
|
||||
merged[current] = arr2[index2];
|
||||
index2++;
|
||||
}
|
||||
} else if (order === 'label') {
|
||||
if (!isArr1Depleted && (isArr2Depleted || (arr1[index1].title < arr2[index2].title))) {
|
||||
merged[current] = arr1[index1];
|
||||
index1++;
|
||||
} else {
|
||||
merged[current] = arr2[index2];
|
||||
index2++;
|
||||
}
|
||||
} else if (order === 'status') {
|
||||
if (!isArr1Depleted && (isArr2Depleted || (arr1[index1].status < arr2[index2].status))) {
|
||||
merged[current] = arr1[index1];
|
||||
index1++;
|
||||
} else {
|
||||
merged[current] = arr2[index2];
|
||||
index2++;
|
||||
}
|
||||
}
|
||||
current++;
|
||||
}
|
||||
return merged;
|
||||
}
|
||||
|
||||
// advancedClicked(dmp: DmpListingModel) {
|
||||
// const dialogRef = this.dialog.open(ExportMethodDialogComponent, {
|
||||
// maxWidth: '500px',
|
||||
|
|
|
@ -113,7 +113,8 @@ export class RecentEditedDatasetActivityComponent extends BaseComponent implemen
|
|||
|
||||
this.datasetService.getPaged(request).pipe(takeUntil(this._destroyed)).subscribe(result => {
|
||||
if (!result) { return []; }
|
||||
this.datasetActivities = this.datasetActivities.concat(result.data);
|
||||
// this.datasetActivities = this.datasetActivities.concat(result.data);
|
||||
this.datasetActivities = this.datasetActivities.length > 0 ? this.mergeTwoSortedLists(this.datasetActivities, result.data, this.formGroup.get('order').value) : result.data;
|
||||
this.totalCountDatasets.emit(this.datasetActivities.length);
|
||||
});
|
||||
}
|
||||
|
@ -336,4 +337,53 @@ export class RecentEditedDatasetActivityComponent extends BaseComponent implemen
|
|||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
private mergeTwoSortedLists(arr1: DatasetListingModel[], arr2: DatasetListingModel[], order: string): DatasetListingModel[] {
|
||||
let merged = [];
|
||||
let index1 = 0;
|
||||
let index2 = 0;
|
||||
let current = 0;
|
||||
|
||||
while (current < (arr1.length + arr2.length)) {
|
||||
|
||||
let isArr1Depleted = index1 >= arr1.length;
|
||||
let isArr2Depleted = index2 >= arr2.length;
|
||||
|
||||
if (order === 'modified') {
|
||||
if (!isArr1Depleted && (isArr2Depleted || (new Date(arr1[index1].modified) > new Date(arr2[index2].modified)))) {
|
||||
merged[current] = arr1[index1];
|
||||
index1++;
|
||||
} else {
|
||||
merged[current] = arr2[index2];
|
||||
index2++;
|
||||
}
|
||||
} else if (order === 'created') {
|
||||
if (!isArr1Depleted && (isArr2Depleted || (new Date(arr1[index1].created) > new Date(arr2[index2].created)))) {
|
||||
merged[current] = arr1[index1];
|
||||
index1++;
|
||||
} else {
|
||||
merged[current] = arr2[index2];
|
||||
index2++;
|
||||
}
|
||||
} else if (order === 'label') {
|
||||
if (!isArr1Depleted && (isArr2Depleted || (arr1[index1].label < arr2[index2].label))) {
|
||||
merged[current] = arr1[index1];
|
||||
index1++;
|
||||
} else {
|
||||
merged[current] = arr2[index2];
|
||||
index2++;
|
||||
}
|
||||
} else if (order === 'status') {
|
||||
if (!isArr1Depleted && (isArr2Depleted || (arr1[index1].status < arr2[index2].status))) {
|
||||
merged[current] = arr1[index1];
|
||||
index1++;
|
||||
} else {
|
||||
merged[current] = arr2[index2];
|
||||
index2++;
|
||||
}
|
||||
}
|
||||
current++;
|
||||
}
|
||||
return merged;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -370,12 +370,62 @@ export class RecentEditedDmpActivityComponent extends BaseComponent implements O
|
|||
|
||||
this.dmpService.getPaged(request, "listing").pipe(takeUntil(this._destroyed)).subscribe(result => {
|
||||
if (!result) { return []; }
|
||||
this.dmpActivities = this.dmpActivities.concat(result.data);
|
||||
// this.dmpActivities = this.dmpActivities.concat(result.data);
|
||||
this.dmpActivities = this.dmpActivities.length > 0 ? this.mergeTwoSortedLists(this.dmpActivities, result.data, this.formGroup.get('order').value) : result.data;
|
||||
this.totalCountDmps.emit(this.dmpActivities.length);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private mergeTwoSortedLists(arr1: DmpListingModel[], arr2: DmpListingModel[], order: string): DmpListingModel[] {
|
||||
let merged = [];
|
||||
let index1 = 0;
|
||||
let index2 = 0;
|
||||
let current = 0;
|
||||
|
||||
while (current < (arr1.length + arr2.length)) {
|
||||
|
||||
let isArr1Depleted = index1 >= arr1.length;
|
||||
let isArr2Depleted = index2 >= arr2.length;
|
||||
|
||||
if (order === 'modified') {
|
||||
if (!isArr1Depleted && (isArr2Depleted || (new Date(arr1[index1].modifiedTime) > new Date(arr2[index2].modifiedTime)))) {
|
||||
merged[current] = arr1[index1];
|
||||
index1++;
|
||||
} else {
|
||||
merged[current] = arr2[index2];
|
||||
index2++;
|
||||
}
|
||||
} else if (order === 'created') {
|
||||
if (!isArr1Depleted && (isArr2Depleted || (new Date(arr1[index1].creationTime) > new Date(arr2[index2].creationTime)))) {
|
||||
merged[current] = arr1[index1];
|
||||
index1++;
|
||||
} else {
|
||||
merged[current] = arr2[index2];
|
||||
index2++;
|
||||
}
|
||||
} else if (order === 'label') {
|
||||
if (!isArr1Depleted && (isArr2Depleted || (arr1[index1].label < arr2[index2].label))) {
|
||||
merged[current] = arr1[index1];
|
||||
index1++;
|
||||
} else {
|
||||
merged[current] = arr2[index2];
|
||||
index2++;
|
||||
}
|
||||
} else if (order === 'status') {
|
||||
if (!isArr1Depleted && (isArr2Depleted || (arr1[index1].status < arr2[index2].status))) {
|
||||
merged[current] = arr1[index1];
|
||||
index1++;
|
||||
} else {
|
||||
merged[current] = arr2[index2];
|
||||
index2++;
|
||||
}
|
||||
}
|
||||
current++;
|
||||
}
|
||||
return merged;
|
||||
}
|
||||
|
||||
// advancedClicked(dmp: DmpListingModel) {
|
||||
// const dialogRef = this.dialog.open(ExportMethodDialogComponent, {
|
||||
// maxWidth: '500px',
|
||||
|
|
|
@ -176,7 +176,8 @@ export class DatasetListingComponent extends BaseComponent implements OnInit, IB
|
|||
this.datasetService.getPaged(request).pipe(takeUntil(this._destroyed)).subscribe(result => {
|
||||
if (!result) { return []; }
|
||||
// if (this._paginator.pageIndex === 0) { this.totalCount = result.totalCount; }
|
||||
this.listingItems = this.listingItems.concat(result.data);
|
||||
// this.listingItems = this.listingItems.concat(result.data);
|
||||
this.listingItems = this.listingItems.length > 0 ? this.mergeTwoSortedLists(this.listingItems, result.data, this.formGroup.get('order').value) : result.data;
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -277,6 +278,55 @@ export class DatasetListingComponent extends BaseComponent implements OnInit, IB
|
|||
return document.getElementById("main-page").scrollHeight > document.documentElement.clientHeight
|
||||
}
|
||||
|
||||
private mergeTwoSortedLists(arr1: DatasetListingModel[], arr2: DatasetListingModel[], order: string): DatasetListingModel[] {
|
||||
let merged = [];
|
||||
let index1 = 0;
|
||||
let index2 = 0;
|
||||
let current = 0;
|
||||
|
||||
while (current < (arr1.length + arr2.length)) {
|
||||
|
||||
let isArr1Depleted = index1 >= arr1.length;
|
||||
let isArr2Depleted = index2 >= arr2.length;
|
||||
|
||||
if (order === 'modified') {
|
||||
if (!isArr1Depleted && (isArr2Depleted || (new Date(arr1[index1].modified) > new Date(arr2[index2].modified)))) {
|
||||
merged[current] = arr1[index1];
|
||||
index1++;
|
||||
} else {
|
||||
merged[current] = arr2[index2];
|
||||
index2++;
|
||||
}
|
||||
} else if (order === 'created') {
|
||||
if (!isArr1Depleted && (isArr2Depleted || (new Date(arr1[index1].created) > new Date(arr2[index2].created)))) {
|
||||
merged[current] = arr1[index1];
|
||||
index1++;
|
||||
} else {
|
||||
merged[current] = arr2[index2];
|
||||
index2++;
|
||||
}
|
||||
} else if (order === 'label') {
|
||||
if (!isArr1Depleted && (isArr2Depleted || (arr1[index1].label < arr2[index2].label))) {
|
||||
merged[current] = arr1[index1];
|
||||
index1++;
|
||||
} else {
|
||||
merged[current] = arr2[index2];
|
||||
index2++;
|
||||
}
|
||||
} else if (order === 'status') {
|
||||
if (!isArr1Depleted && (isArr2Depleted || (arr1[index1].status < arr2[index2].status))) {
|
||||
merged[current] = arr1[index1];
|
||||
index1++;
|
||||
} else {
|
||||
merged[current] = arr2[index2];
|
||||
index2++;
|
||||
}
|
||||
}
|
||||
current++;
|
||||
}
|
||||
return merged;
|
||||
}
|
||||
|
||||
// rowClicked(dataset: DatasetListingModel) {
|
||||
// this.router.navigate(['/datasets/edit/' + dataset.id]);
|
||||
// }
|
||||
|
|
|
@ -224,7 +224,8 @@ export class DmpListingComponent extends BaseComponent implements OnInit, IBread
|
|||
});
|
||||
return item;
|
||||
});
|
||||
this.listingItems = this.listingItems.concat(result.data);
|
||||
// this.listingItems = this.listingItems.concat(result.data);
|
||||
this.listingItems = this.mergeTwoSortedLists(this.listingItems, result.data, this.formGroup.get('order').value);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -376,6 +377,55 @@ export class DmpListingComponent extends BaseComponent implements OnInit, IBread
|
|||
hasScrollbar(): boolean {
|
||||
return document.getElementById("main-page").scrollHeight > document.documentElement.clientHeight
|
||||
}
|
||||
|
||||
private mergeTwoSortedLists(arr1: DmpListingModel[], arr2: DmpListingModel[], order: string): DmpListingModel[] {
|
||||
let merged = [];
|
||||
let index1 = 0;
|
||||
let index2 = 0;
|
||||
let current = 0;
|
||||
|
||||
while (current < (arr1.length + arr2.length)) {
|
||||
|
||||
let isArr1Depleted = index1 >= arr1.length;
|
||||
let isArr2Depleted = index2 >= arr2.length;
|
||||
|
||||
if (order === 'modified') {
|
||||
if (!isArr1Depleted && (isArr2Depleted || (new Date(arr1[index1].modifiedTime) > new Date(arr2[index2].modifiedTime)))) {
|
||||
merged[current] = arr1[index1];
|
||||
index1++;
|
||||
} else {
|
||||
merged[current] = arr2[index2];
|
||||
index2++;
|
||||
}
|
||||
} else if (order === 'created') {
|
||||
if (!isArr1Depleted && (isArr2Depleted || (new Date(arr1[index1].creationTime) > new Date(arr2[index2].creationTime)))) {
|
||||
merged[current] = arr1[index1];
|
||||
index1++;
|
||||
} else {
|
||||
merged[current] = arr2[index2];
|
||||
index2++;
|
||||
}
|
||||
} else if (order === 'label') {
|
||||
if (!isArr1Depleted && (isArr2Depleted || (arr1[index1].label < arr2[index2].label))) {
|
||||
merged[current] = arr1[index1];
|
||||
index1++;
|
||||
} else {
|
||||
merged[current] = arr2[index2];
|
||||
index2++;
|
||||
}
|
||||
} else if (order === 'status') {
|
||||
if (!isArr1Depleted && (isArr2Depleted || (arr1[index1].status < arr2[index2].status))) {
|
||||
merged[current] = arr1[index1];
|
||||
index1++;
|
||||
} else {
|
||||
merged[current] = arr2[index2];
|
||||
index2++;
|
||||
}
|
||||
}
|
||||
current++;
|
||||
}
|
||||
return merged;
|
||||
}
|
||||
}
|
||||
|
||||
// export class DmpDataSource extends DataSource<DmpListingModel> {
|
||||
|
|
|
@ -754,6 +754,7 @@
|
|||
"NEW": "New Data Management Plan",
|
||||
"EDIT": "Edit",
|
||||
"EDIT-DMP": "Editing DMP",
|
||||
"EDIT-DATASET": "Editing Dataset",
|
||||
"SUBTITLE": "DOI"
|
||||
},
|
||||
"FIELDS": {
|
||||
|
|
|
@ -748,6 +748,7 @@
|
|||
"NEW": "Nuevo Plan de Gestión de Datos",
|
||||
"EDIT": "Editar",
|
||||
"EDIT-DMP": "Editing DMP",
|
||||
"EDIT-DATASET": "Editing Dataset",
|
||||
"SUBTITLE": "DOI"
|
||||
},
|
||||
"FIELDS": {
|
||||
|
|
|
@ -749,6 +749,7 @@
|
|||
"NEW": "Νέα Σχέδιο Διαχείρισης Δεδομένων",
|
||||
"EDIT": "Επεξεργασία",
|
||||
"EDIT-DMP": "Editing DMP",
|
||||
"EDIT-DATASET": "Editing Dataset",
|
||||
"SUBTITLE": "Μονοσήμαντο Αναγνωριστικό Ψηφιακού Αντικειμένου (DOI)"
|
||||
},
|
||||
"FIELDS": {
|
||||
|
|
Loading…
Reference in New Issue