fixed reordering request

This commit is contained in:
lotte
2019-12-03 10:10:46 +01:00
parent 78d1c5ee2b
commit c3ef2f8dee
2 changed files with 21 additions and 26 deletions

View File

@@ -17,6 +17,7 @@ import { NormalizedObjectBuildService } from '../cache/builders/normalized-objec
import { NotificationsService } from '../../shared/notifications/notifications.service'; import { NotificationsService } from '../../shared/notifications/notifications.service';
import { Item } from '../shared/item.model'; import { Item } from '../shared/item.model';
import * as uuidv4 from 'uuid/v4'; import * as uuidv4 from 'uuid/v4';
import { createSuccessfulRemoteDataObject$ } from '../../shared/testing/utils';
const endpoint = 'https://rest.api/core'; const endpoint = 'https://rest.api/core';
@@ -191,8 +192,7 @@ describe('DataService', () => {
dso2.self = selfLink; dso2.self = selfLink;
dso2.metadata = [{ key: 'dc.title', value: name2 }]; dso2.metadata = [{ key: 'dc.title', value: name2 }];
spyOn(service, 'findByHref').and.returnValues(observableOf(dso)); spyOn(service, 'findByHref').and.returnValues(createSuccessfulRemoteDataObject$(dso));
spyOn(objectCache, 'getObjectBySelfLink').and.returnValues(observableOf(dso));
spyOn(objectCache, 'addPatch'); spyOn(objectCache, 'addPatch');
}); });

View File

@@ -260,12 +260,12 @@ export class DsDynamicFormControlContainerComponent extends DynamicFormControlCo
}), }),
) )
))), ))),
map((relationships: ReorderableRelationship[]) => map((relationships: ReorderableRelationship[]) =>
relationships relationships
.sort((a: Reorderable, b: Reorderable) => { .sort((a: Reorderable, b: Reorderable) => {
return Math.sign(a.getPlace() - b.getPlace()); return Math.sign(a.getPlace() - b.getPlace());
}) })
) )
) )
) )
); );
@@ -337,25 +337,20 @@ export class DsDynamicFormControlContainerComponent extends DynamicFormControlCo
moveSelection(event: CdkDragDrop<Relationship>) { moveSelection(event: CdkDragDrop<Relationship>) {
moveItemInArray(this.reorderables, event.previousIndex, event.currentIndex); moveItemInArray(this.reorderables, event.previousIndex, event.currentIndex);
this.zone.runOutsideAngular(() => { this.zone.runOutsideAngular(() => {
observableCombineLatest( const relationships = this.reorderables.map((reo: Reorderable, index: number) => {
this.reorderables.map((reo: Reorderable, index: number) => { reo.oldIndex = reo.getPlace();
reo.oldIndex = reo.getPlace(); reo.newIndex = index;
reo.newIndex = index; return reo;
return reo; }
);
return observableCombineLatest(relationships.map((rel: ReorderableRelationship) => {
console.log(rel);
if (rel.oldIndex !== rel.newIndex) {
return this.relationshipService.updatePlace(rel.relationship, rel.newIndex, !rel.useLeftItem);
} else {
return observableOf(undefined);
} }
) })
).pipe(
switchMap((relationships: Array<{ relationship: Relationship, left: boolean, oldIndex: number, newIndex: number }>) =>
observableCombineLatest(relationships.map((rel: { relationship: Relationship, left: boolean, oldIndex: number, newIndex: number }) => {
if (rel.oldIndex !== rel.newIndex) {
return this.relationshipService.updatePlace(rel.relationship, rel.newIndex, rel.left);
} else {
observableOf(undefined);
}
}
)
)
)
).subscribe(); ).subscribe();
}) })
} }