From 35be122eeaf2906efccb007191b11dfbd213ae98 Mon Sep 17 00:00:00 2001 From: lotte Date: Mon, 25 Feb 2019 09:57:46 +0100 Subject: [PATCH] bug fixing --- resources/i18n/en.json | 2 +- .../edit-in-place-field.component.html | 15 ++-- .../edit-in-place-field.component.ts | 73 +++++++++---------- .../item-metadata.component.html | 1 + .../item-metadata/item-metadata.component.ts | 23 +++++- .../object-updates/object-updates.reducer.ts | 2 +- .../input-suggestions.component.html | 3 +- .../input-suggestions.component.ts | 16 ++-- src/app/shared/utils/auto-focus.directive.ts | 1 - .../shared/utils/click-outside.directive.ts | 8 +- src/app/shared/utils/debounce.directive.ts | 12 +-- .../utils/in-list-validator.directive.ts | 5 +- src/app/shared/utils/validator.functions.ts | 12 ++- 13 files changed, 93 insertions(+), 80 deletions(-) diff --git a/resources/i18n/en.json b/resources/i18n/en.json index 2174e0c2bf..7838bfdd25 100644 --- a/resources/i18n/en.json +++ b/resources/i18n/en.json @@ -175,7 +175,7 @@ }, "view": { "head": "View Item", - "title": "Item Edit - Item" + "title": "Item Edit - View" }, "curate": { "head": "Curate", diff --git a/src/app/+item-page/edit-item-page/item-metadata/edit-in-place-field/edit-in-place-field.component.html b/src/app/+item-page/edit-item-page/item-metadata/edit-in-place-field/edit-in-place-field.component.html index e20b2a5c84..05eb03dd12 100644 --- a/src/app/+item-page/edit-item-page/item-metadata/edit-in-place-field/edit-in-place-field.component.html +++ b/src/app/+item-page/edit-item-page/item-metadata/edit-in-place-field/edit-in-place-field.component.html @@ -7,19 +7,20 @@
{{"item.edit.metadata.metadatafield.invalid" | translate}} + *ngIf="(valid | async) === false">{{"item.edit.metadata.metadatafield.invalid" | translate}} diff --git a/src/app/+item-page/edit-item-page/item-metadata/edit-in-place-field/edit-in-place-field.component.ts b/src/app/+item-page/edit-item-page/item-metadata/edit-in-place-field/edit-in-place-field.component.ts index 7d4922de43..47bcc66537 100644 --- a/src/app/+item-page/edit-item-page/item-metadata/edit-in-place-field/edit-in-place-field.component.ts +++ b/src/app/+item-page/edit-item-page/item-metadata/edit-in-place-field/edit-in-place-field.component.ts @@ -11,7 +11,7 @@ import { FieldChangeType } from '../../../../core/data/object-updates/object-upd import { FieldUpdate } from '../../../../core/data/object-updates/object-updates.reducer'; import { ObjectUpdatesService } from '../../../../core/data/object-updates/object-updates.service'; import { getSucceededRemoteData } from '../../../../core/shared/operators'; -import { FormControl } from '@angular/forms'; +import { NgModel } from '@angular/forms'; @Component({ // tslint:disable-next-line:component-selector @@ -27,14 +27,22 @@ export class EditInPlaceFieldComponent implements OnInit, OnChanges { * The current field, value and state of the metadatum */ @Input() fieldUpdate: FieldUpdate; + /** * The current url of this page */ @Input() url: string; + + /** + * List of strings with all metadata field keys available + */ + @Input() metadataFields: string[]; + /** * The metadatum of this field */ metadata: Metadatum; + /** * Emits whether or not this field is currently editable */ @@ -50,11 +58,6 @@ export class EditInPlaceFieldComponent implements OnInit, OnChanges { */ metadataFieldSuggestions: BehaviorSubject = new BehaviorSubject([]); - /** - * List of strings with all metadata field keys available - */ - metadataFields: Observable; - constructor( private metadataFieldService: RegistryService, private objectUpdatesService: ObjectUpdatesService, @@ -67,26 +70,26 @@ export class EditInPlaceFieldComponent implements OnInit, OnChanges { ngOnInit(): void { this.editable = this.objectUpdatesService.isEditable(this.url, this.metadata.uuid); this.valid = this.objectUpdatesService.isValid(this.url, this.metadata.uuid); - this.metadataFields = this.findMetadataFields() } /** * Sends a new change update for this field to the object updates service */ - update(control?: FormControl) { + update(ngModel?: NgModel) { this.objectUpdatesService.saveChangeFieldUpdate(this.url, this.metadata); - if (hasValue(control)) { - this.checkValidity(control); + if (hasValue(ngModel)) { + this.checkValidity(ngModel); } } /** * Method to check the validity of a form control - * @param control The form control to check + * @param ngModel */ - private checkValidity(control: FormControl) { - control.updateValueAndValidity(); - this.objectUpdatesService.setValidFieldUpdate(this.url, this.metadata.uuid, control.valid); + private checkValidity(ngModel: NgModel) { + ngModel.control.setValue(ngModel.viewModel); + ngModel.control.updateValueAndValidity(); + this.objectUpdatesService.setValidFieldUpdate(this.url, this.metadata.uuid, ngModel.control.valid); } /** @@ -124,30 +127,24 @@ export class EditInPlaceFieldComponent implements OnInit, OnChanges { * @param query The query to look for */ findMetadataFieldSuggestions(query: string): void { - this.metadataFieldService.queryMetadataFields(query).pipe( - // getSucceededRemoteData(), - take(1), - map((data) => data.payload.page) - ).subscribe( - (fields: MetadataField[]) => this.metadataFieldSuggestions.next( - fields.map((field: MetadataField) => { - return { - displayValue: field.toString().split('.').join('.​'), - value: field.toString() - } - }) - ) - ); - } - - /** - * Method to request all metadata fields and convert them to a list of strings - */ - findMetadataFields(): Observable { - return this.metadataFieldService.getAllMetadataFields().pipe( - getSucceededRemoteData(), - take(1), - map((remoteData$) => remoteData$.payload.page.map((field: MetadataField) => field.toString()))); + if (isNotEmpty(query)) { + this.metadataFieldService.queryMetadataFields(query).pipe( + // getSucceededRemoteData(), + take(1), + map((data) => data.payload.page) + ).subscribe( + (fields: MetadataField[]) => this.metadataFieldSuggestions.next( + fields.map((field: MetadataField) => { + return { + displayValue: field.toString().split('.').join('.​'), + value: field.toString() + }; + }) + ) + ); + } else { + this.metadataFieldSuggestions.next([]); + } } /** diff --git a/src/app/+item-page/edit-item-page/item-metadata/item-metadata.component.html b/src/app/+item-page/edit-item-page/item-metadata/item-metadata.component.html index 03b0e143b4..496429a3ba 100644 --- a/src/app/+item-page/edit-item-page/item-metadata/item-metadata.component.html +++ b/src/app/+item-page/edit-item-page/item-metadata/item-metadata.component.html @@ -33,6 +33,7 @@ + (dsClickOutside)="close();">