fixed issues with sending name variant update requests to the server

This commit is contained in:
lotte
2019-11-08 16:05:37 +01:00
parent d8a049c550
commit f289c1353e
7 changed files with 21 additions and 29 deletions

View File

@@ -52,7 +52,6 @@ import { MetadataFieldWrapperComponent } from './field-components/metadata-field
RelatedItemsComponent,
ItemComponent,
GenericItemPageFieldComponent,
MetadataRepresentationListComponent,
RelatedEntitiesSearchComponent
],
exports: [
@@ -62,7 +61,6 @@ import { MetadataFieldWrapperComponent } from './field-components/metadata-field
GenericItemPageFieldComponent,
RelatedEntitiesSearchComponent,
RelatedItemsComponent,
MetadataRepresentationListComponent,
ItemPageTitleFieldComponent
],
entryComponents: [

View File

@@ -106,7 +106,7 @@ export class MetadataRepresentationListComponent implements OnInit {
return leftItem.payload;
}
}),
map((item: Item) => Object.assign(new ItemMetadataRepresentation(), item))
map((item: Item) => Object.assign(new ItemMetadataRepresentation(metadatum), item))
)
));
} else {

View File

@@ -9,7 +9,7 @@ import { RelationshipService } from '../../../../../core/data/relationship.servi
import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service';
import { take } from 'rxjs/operators';
@listableObjectComponent('PersonSearchResult', ViewMode.ListElement, Context.Submission)
@listableObjectComponent('PersonSearchResult', ViewMode.ListElement, Context.Workspace)
@Component({
selector: 'ds-person-search-result-list-submission-element',
styleUrls: ['./person-search-result-list-submission-element.component.scss'],

View File

@@ -61,7 +61,7 @@
<span aria-hidden="true">&times;</span>
</button>
<span class="d-inline-block align-middle ml-1">
<ds-metadata-representation-loader [mdRepresentation]="(modelValueMDRepresentation | async)[i]"></ds-metadata-representation-loader>
<ds-listable-object-component-loader [context]="context" [object]="v" [index]="i"></ds-listable-object-component-loader>
</span>
</ng-container>
</li>

View File

@@ -57,7 +57,7 @@ import { DYNAMIC_FORM_CONTROL_TYPE_DSDATEPICKER } from './models/date-picker/dat
import { DYNAMIC_FORM_CONTROL_TYPE_LOOKUP } from './models/lookup/dynamic-lookup.model';
import { DynamicListCheckboxGroupModel } from './models/list/dynamic-list-checkbox-group.model';
import { DynamicListRadioGroupModel } from './models/list/dynamic-list-radio-group.model';
import { hasValue, isNotEmpty, isNotUndefined } from '../../../empty.util';
import { hasValue, isNotEmpty, isNotEmptyOperator, isNotUndefined } from '../../../empty.util';
import { DYNAMIC_FORM_CONTROL_TYPE_LOOKUP_NAME } from './models/lookup/dynamic-lookup-name.model';
import { DsDynamicTagComponent } from './models/tag/dynamic-tag.component';
import { DsDatePickerComponent } from './models/date-picker/date-picker.component';
@@ -178,7 +178,7 @@ export class DsDynamicFormControlContainerComponent extends DynamicFormControlCo
relationships$: Observable<SearchResult<Item>[]>;
hasRelationLookup: boolean;
modalRef: NgbModalRef;
modelValueMDRepresentation;
item$: Observable<Item>;
listId: string;
searchConfig: string;
/* tslint:disable:no-output-rename */
@@ -216,19 +216,20 @@ export class DsDynamicFormControlContainerComponent extends DynamicFormControlCo
this.hasRelationLookup = hasValue(this.model.relationship);
if (this.hasRelationLookup) {
this.listId = 'list-' + this.model.relationship.relationshipType;
this.submissionObjectService
this.item$ = this.submissionObjectService
.findById(this.model.submissionId).pipe(
getSucceededRemoteData(),
getRemoteDataPayload(),
switchMap((submissionObject: SubmissionObject) => (submissionObject.item as Observable<RemoteData<Item>>).pipe(getSucceededRemoteData(), getRemoteDataPayload())),
switchMap((submissionObject: SubmissionObject) => (submissionObject.item as Observable<RemoteData<Item>>).pipe(getSucceededRemoteData(), getRemoteDataPayload())));
this.item$.pipe(
switchMap((item: Item) => this.relationService.getRelatedItemsByLabel(item, this.model.relationship.relationshipType)),
map((items: PaginatedList<Item>) => items.page.map((item) => Object.assign(new SearchResult(), { indexableObject: item }))),
map((items: RemoteData<PaginatedList<Item>>) => items.payload.page.map((item) => Object.assign(new SearchResult(), { indexableObject: item }))),
).subscribe((relatedItems: SearchResult<Item>[]) => this.selectableListService.select(this.listId, relatedItems));
this.relationships$ = this.selectableListService.getSelectableList(this.listId).pipe(
map((listState: SelectableListState) => hasValue(listState) && hasValue(listState.selection) ? listState.selection : []),
) as Observable<SearchResult<Item>[]>;
this.modelValueMDRepresentation = this.relationships$.pipe(map((result: SearchResult<DSpaceObject>[]) => result.map((element: SearchResult<DSpaceObject>) => Object.assign(new ItemMetadataRepresentation(), element.indexableObject))));
}
}
@@ -274,13 +275,7 @@ export class DsDynamicFormControlContainerComponent extends DynamicFormControlCo
}
openLookup() {
this.submissionObjectService
.findById(this.model.submissionId).pipe(
getSucceededRemoteData(),
getRemoteDataPayload(),
switchMap((submissionObject: SubmissionObject) =>
(submissionObject.item as Observable<RemoteData<Item>>).pipe(getSucceededRemoteData(), getRemoteDataPayload()))
).subscribe((item: Item) => {
this.item$.subscribe((item: Item) => {
this.modalRef = this.modalService.open(DsDynamicLookupRelationModalComponent, { size: 'lg' });
const modalComp = this.modalRef.componentInstance;
modalComp.repeatable = this.model.repeatable;

View File

@@ -1,8 +1,8 @@
import { Component, NgZone, OnInit } from '@angular/core';
import { combineLatest, Observable, Subscription } from 'rxjs';
import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
import { hasValue, hasValueOperator } from '../../../../empty.util';
import { map, skip, switchMap, take, tap } from 'rxjs/operators';
import { hasValue } from '../../../../empty.util';
import { map, skip, switchMap, take } from 'rxjs/operators';
import { SEARCH_CONFIG_SERVICE } from '../../../../../+my-dspace-page/my-dspace-page.component';
import { SearchConfigurationService } from '../../../../../core/shared/search/search-configuration.service';
import { SelectableListService } from '../../../../object-list/selectable-list/selectable-list.service';
@@ -12,7 +12,6 @@ import { RelationshipOptions } from '../../models/relationship-options.model';
import { SearchResult } from '../../../../search/search-result.model';
import { Item } from '../../../../../core/shared/item.model';
import { getRemoteDataPayload, getSucceededRemoteData } from '../../../../../core/shared/operators';
import { RemoteData } from '../../../../../core/data/remote-data';
import { AddRelationshipAction, RemoveRelationshipAction } from './relationship.actions';
import { RelationshipService } from '../../../../../core/data/relationship.service';
import { RelationshipTypeService } from '../../../../../core/data/relationship-type.service';
@@ -21,8 +20,6 @@ import { AppState } from '../../../../../app.reducer';
import { Context } from '../../../../../core/shared/context.model';
import { Relationship } from '../../../../../core/shared/item-relationships/relationship.model';
import { MetadataValue } from '../../../../../core/shared/metadata.models';
import { ItemSearchResult } from '../../../../object-collection/shared/item-search-result.model';
import { NameVariantListState } from './name-variant.reducer';
@Component({
selector: 'ds-dynamic-lookup-relation-modal',
@@ -62,7 +59,7 @@ export class DsDynamicLookupRelationModalComponent implements OnInit {
ngOnInit(): void {
this.selection$ = this.selectableListService.getSelectableList(this.listId).pipe(map((listState: SelectableListState) => hasValue(listState) && hasValue(listState.selection) ? listState.selection : []));
if (this.relationshipOptions.nameVariants) {
this.context = Context.Submission;
this.context = Context.Workspace;
}
}

View File

@@ -168,6 +168,7 @@ import { PublicationSearchResultGridElementComponent } from './object-grid/searc
import { ListableObjectDirective } from './object-collection/shared/listable-object/listable-object.directive';
import { SearchLabelComponent } from './search/search-labels/search-label/search-label.component';
import { ItemMetadataRepresentationListElementComponent } from './object-list/metadata-representation-list-element/item/item-metadata-representation-list-element.component';
import { MetadataRepresentationListComponent } from '../+item-page/simple/metadata-representation-list/metadata-representation-list.component';
const MODULES = [
// Do NOT include UniversalModule, HttpModule, or JsonpModule here
@@ -319,7 +320,8 @@ const COMPONENTS = [
ItemTypeBadgeComponent,
ItemSelectComponent,
CollectionSelectComponent,
MetadataRepresentationLoaderComponent
MetadataRepresentationLoaderComponent,
MetadataRepresentationListComponent,
];
const ENTRY_COMPONENTS = [