fix issue where reordering wouldn't work for relationships to cached items

This commit is contained in:
Art Lowel
2020-04-06 18:35:10 +02:00
parent 61624bf606
commit 493cbc65fe

View File

@@ -22,7 +22,7 @@ import {
DynamicTemplateDirective DynamicTemplateDirective
} from '@ng-dynamic-forms/core'; } from '@ng-dynamic-forms/core';
import { combineLatest as observableCombineLatest, Observable, of as observableOf } from 'rxjs'; import { combineLatest as observableCombineLatest, Observable, of as observableOf } from 'rxjs';
import { map, switchMap, take } from 'rxjs/operators'; import { map, switchMap, take, tap, filter } from 'rxjs/operators';
import { RelationshipService } from '../../../../../../core/data/relationship.service'; import { RelationshipService } from '../../../../../../core/data/relationship.service';
import { RemoteData } from '../../../../../../core/data/remote-data'; import { RemoteData } from '../../../../../../core/data/remote-data';
import { Relationship } from '../../../../../../core/shared/item-relationships/relationship.model'; import { Relationship } from '../../../../../../core/shared/item-relationships/relationship.model';
@@ -121,13 +121,17 @@ export class DsDynamicFormArrayComponent extends DynamicFormArrayComponent imple
confidence: formFieldMetadataValue.confidence confidence: formFieldMetadataValue.confidence
}); });
if (metadataValue.isVirtual) { if (metadataValue.isVirtual) {
console.log('updateReorderables metadataValue.isVirtual', metadataValue.isVirtual);
return this.relationshipService.findById(metadataValue.virtualValue, followLink('leftItem')) return this.relationshipService.findById(metadataValue.virtualValue, followLink('leftItem'))
.pipe( .pipe(
getSucceededRemoteData(), tap((v) => console.log('rsfbd', v)),
filter((relRD: RemoteData<Relationship>) => hasValue(relRD.payload)),
take(1),
getRemoteDataPayload(), getRemoteDataPayload(),
switchMap((relationship: Relationship) => switchMap((relationship: Relationship) =>
relationship.leftItem.pipe( relationship.leftItem.pipe(
getSucceededRemoteData(), filter((itemRD: RemoteData<Item>) => hasValue(itemRD.payload)),
take(1),
getRemoteDataPayload(), getRemoteDataPayload(),
map((leftItem: Item) => { map((leftItem: Item) => {
return new ReorderableRelationship( return new ReorderableRelationship(
@@ -181,6 +185,7 @@ export class DsDynamicFormArrayComponent extends DynamicFormArrayComponent imple
let hasMetadataField = false; let hasMetadataField = false;
this.reorderables.forEach((reorderable: Reorderable, index: number) => { this.reorderables.forEach((reorderable: Reorderable, index: number) => {
if (reorderable.hasMoved) { if (reorderable.hasMoved) {
console.log('reorderable moved', reorderable);
const prevIndex = reorderable.oldIndex; const prevIndex = reorderable.oldIndex;
const updatedReorderable = reorderable.update().pipe(take(1)); const updatedReorderable = reorderable.update().pipe(take(1));
updatedReorderables.push(updatedReorderable); updatedReorderables.push(updatedReorderable);