manual change detection for preview list in submission

This commit is contained in:
lotte
2019-12-03 13:57:56 +01:00
parent c48932431f
commit ef1ed04fd2
3 changed files with 11 additions and 8 deletions

View File

@@ -54,7 +54,8 @@
<div *ngIf="hasRelationLookup" class="mt-3"> <div *ngIf="hasRelationLookup" class="mt-3">
<ul class="list-unstyled" cdkDropList (cdkDropListDropped)="moveSelection($event)"> <ul class="list-unstyled" cdkDropList (cdkDropListDropped)="moveSelection($event)">
<ds-existing-metadata-list-element cdkDrag [cdkDragData]="relationship" *ngFor="let reorderable of reorderables; trackBy: trackReorderable" <ds-existing-metadata-list-element cdkDrag
*ngFor="let reorderable of reorderables; trackBy: trackReorderable"
[reoRel]="reorderable" [reoRel]="reorderable"
[submissionItem]="item" [submissionItem]="item"
[listId]="listId" [listId]="listId"

View File

@@ -1,5 +1,5 @@
import { import {
ChangeDetectionStrategy, ChangeDetectionStrategy, ChangeDetectorRef,
Component, Component,
ComponentFactoryResolver, ComponentFactoryResolver,
ContentChildren, ContentChildren,
@@ -75,7 +75,7 @@ import { DsDynamicFormArrayComponent } from './models/array-group/dynamic-form-a
import { DsDynamicRelationGroupComponent } from './models/relation-group/dynamic-relation-group.components'; import { DsDynamicRelationGroupComponent } from './models/relation-group/dynamic-relation-group.components';
import { DYNAMIC_FORM_CONTROL_TYPE_RELATION_GROUP } from './models/relation-group/dynamic-relation-group.model'; import { DYNAMIC_FORM_CONTROL_TYPE_RELATION_GROUP } from './models/relation-group/dynamic-relation-group.model';
import { DsDatePickerInlineComponent } from './models/date-picker-inline/dynamic-date-picker-inline.component'; import { DsDatePickerInlineComponent } from './models/date-picker-inline/dynamic-date-picker-inline.component';
import { map, startWith, switchMap } from 'rxjs/operators'; import { map, startWith, switchMap, take } from 'rxjs/operators';
import { combineLatest as observableCombineLatest, Observable, of as observableOf, Subscription } from 'rxjs'; import { combineLatest as observableCombineLatest, Observable, of as observableOf, Subscription } from 'rxjs';
import { SearchResult } from '../../../search/search-result.model'; import { SearchResult } from '../../../search/search-result.model';
import { DSpaceObject } from '../../../../core/shared/dspace-object.model'; import { DSpaceObject } from '../../../../core/shared/dspace-object.model';
@@ -219,7 +219,8 @@ export class DsDynamicFormControlContainerComponent extends DynamicFormControlCo
private relationshipService: RelationshipService, private relationshipService: RelationshipService,
private zone: NgZone, private zone: NgZone,
private store: Store<AppState>, private store: Store<AppState>,
private submissionObjectService: SubmissionObjectDataService private submissionObjectService: SubmissionObjectDataService,
private ref: ChangeDetectorRef
) { ) {
super(componentFactoryResolver, layoutService, validationService); super(componentFactoryResolver, layoutService, validationService);
} }
@@ -228,6 +229,7 @@ export class DsDynamicFormControlContainerComponent extends DynamicFormControlCo
this.hasRelationLookup = hasValue(this.model.relationship); this.hasRelationLookup = hasValue(this.model.relationship);
this.reorderables = []; this.reorderables = [];
if (this.hasRelationLookup) { if (this.hasRelationLookup) {
this.listId = 'list-' + this.model.relationship.relationshipType; this.listId = 'list-' + this.model.relationship.relationshipType;
const item$ = this.submissionObjectService const item$ = this.submissionObjectService
.findById(this.model.submissionId).pipe( .findById(this.model.submissionId).pipe(
@@ -271,7 +273,8 @@ export class DsDynamicFormControlContainerComponent extends DynamicFormControlCo
); );
this.subs.push(this.reorderables$.subscribe((rs) => { this.subs.push(this.reorderables$.subscribe((rs) => {
this.reorderables = rs this.reorderables = rs;
this.ref.detectChanges();
})); }));
this.relationService.getRelatedItemsByLabel(this.item, this.model.relationship.relationshipType).pipe( this.relationService.getRelatedItemsByLabel(this.item, this.model.relationship.relationshipType).pipe(
@@ -335,8 +338,8 @@ export class DsDynamicFormControlContainerComponent extends DynamicFormControlCo
} }
moveSelection(event: CdkDragDrop<Relationship>) { moveSelection(event: CdkDragDrop<Relationship>) {
moveItemInArray(this.reorderables, event.previousIndex, event.currentIndex);
this.zone.runOutsideAngular(() => { this.zone.runOutsideAngular(() => {
moveItemInArray(this.reorderables, event.previousIndex, event.currentIndex);
const relationships = this.reorderables.map((reo: Reorderable, index: number) => { const relationships = this.reorderables.map((reo: Reorderable, index: number) => {
reo.oldIndex = reo.getPlace(); reo.oldIndex = reo.getPlace();
reo.newIndex = index; reo.newIndex = index;
@@ -351,7 +354,7 @@ export class DsDynamicFormControlContainerComponent extends DynamicFormControlCo
return observableOf(undefined); return observableOf(undefined);
} }
}) })
).subscribe(); ).pipe(getSucceededRemoteData()).subscribe();
}) })
} }

View File

@@ -85,7 +85,6 @@ export class ExistingMetadataListElementComponent implements OnInit, OnChanges,
filter((item: Item) => hasValue(item) && isNotEmpty(item.uuid)) filter((item: Item) => hasValue(item) && isNotEmpty(item.uuid))
).subscribe((item: Item) => { ).subscribe((item: Item) => {
this.relatedItem = item; this.relatedItem = item;
const relationMD: MetadataValue = this.submissionItem.firstMetadata(this.relationshipOptions.metadataField, { value: this.relatedItem.uuid }); const relationMD: MetadataValue = this.submissionItem.firstMetadata(this.relationshipOptions.metadataField, { value: this.relatedItem.uuid });
if (hasValue(relationMD)) { if (hasValue(relationMD)) {
const metadataRepresentationMD: MetadataValue = this.submissionItem.firstMetadata(this.metadataFields, { authority: relationMD.authority }); const metadataRepresentationMD: MetadataValue = this.submissionItem.firstMetadata(this.metadataFields, { authority: relationMD.authority });