use namevariants based on config

This commit is contained in:
Art Lowel
2020-04-15 10:34:35 +02:00
parent 44801701c9
commit 06cc028c80
12 changed files with 50 additions and 19 deletions

View File

@@ -1990,6 +1990,8 @@
"submission.sections.describe.relationship-lookup.search-tab.tab-title.isFundingOfPublication": "Search for Funding", "submission.sections.describe.relationship-lookup.search-tab.tab-title.isFundingOfPublication": "Search for Funding",
"submission.sections.describe.relationship-lookup.search-tab.tab-title.isChildOrgUnitOf": "Search for Organizational Units",
"submission.sections.describe.relationship-lookup.selection-tab.tab-title": "Current Selection ({{ count }})", "submission.sections.describe.relationship-lookup.selection-tab.tab-title": "Current Selection ({{ count }})",
"submission.sections.describe.relationship-lookup.title.isJournalIssueOfPublication": "Journal Issues", "submission.sections.describe.relationship-lookup.title.isJournalIssueOfPublication": "Journal Issues",
@@ -2022,6 +2024,8 @@
"submission.sections.describe.relationship-lookup.selection-tab.title.isFundingOfPublication": "Selected Funding", "submission.sections.describe.relationship-lookup.selection-tab.title.isFundingOfPublication": "Selected Funding",
"submission.sections.describe.relationship-lookup.selection-tab.title.isChildOrgUnitOf": "Selected Organizational Unit",
"submission.sections.describe.relationship-lookup.selection-tab.title.sherpaJournal": "Search Results", "submission.sections.describe.relationship-lookup.selection-tab.title.sherpaJournal": "Search Results",
"submission.sections.describe.relationship-lookup.selection-tab.title.sherpaPublisher": "Search Results", "submission.sections.describe.relationship-lookup.selection-tab.title.sherpaPublisher": "Search Results",

View File

@@ -9,6 +9,7 @@ export enum Context {
Workflow = 'workflow', Workflow = 'workflow',
Workspace = 'workspace', Workspace = 'workspace',
AdminMenu = 'adminMenu', AdminMenu = 'adminMenu',
SubmissionModal = 'submissionModal', EntitySearchModalWithNameVariants = 'EntitySearchModalWithNameVariants',
EntitySearchModal = 'EntitySearchModal',
AdminSearch = 'adminSearch', AdminSearch = 'adminSearch',
} }

View File

@@ -7,7 +7,7 @@ import { Component, Inject, OnInit } from '@angular/core';
import { Metadata } from '../../../../../core/shared/metadata.utils'; import { Metadata } from '../../../../../core/shared/metadata.utils';
import { MetadataValue } from '../../../../../core/shared/metadata.models'; import { MetadataValue } from '../../../../../core/shared/metadata.models';
@listableObjectComponent(ExternalSourceEntry, ViewMode.ListElement, Context.SubmissionModal) @listableObjectComponent(ExternalSourceEntry, ViewMode.ListElement, Context.EntitySearchModalWithNameVariants)
@Component({ @Component({
selector: 'ds-external-source-entry-list-submission-element', selector: 'ds-external-source-entry-list-submission-element',
styleUrls: ['./external-source-entry-list-submission-element.component.scss'], styleUrls: ['./external-source-entry-list-submission-element.component.scss'],

View File

@@ -3,8 +3,13 @@
<!-- <ds-thumbnail [thumbnail]="getThumbnail() | async" [defaultImage]="'assets/images/orgunit-placeholder.svg'"></ds-thumbnail>--> <!-- <ds-thumbnail [thumbnail]="getThumbnail() | async" [defaultImage]="'assets/images/orgunit-placeholder.svg'"></ds-thumbnail>-->
<!-- </div>--> <!-- </div>-->
<div class="flex-grow-1"> <div class="flex-grow-1">
<ds-org-unit-input-suggestions [suggestions]="allSuggestions" [(ngModel)]="selectedName" (clickSuggestion)="select($event)" <ds-org-unit-input-suggestions *ngIf="useNameVariants" [suggestions]="allSuggestions" [(ngModel)]="selectedName" (clickSuggestion)="select($event)"
(submitSuggestion)="selectCustom($event)"></ds-org-unit-input-suggestions> (submitSuggestion)="selectCustom($event)"></ds-org-unit-input-suggestions>
<div *ngIf="!useNameVariants"
class="lead"
[innerHTML]="firstMetadataValue('organization.legalName')"></div>
<span class="text-muted"> <span class="text-muted">
<span *ngIf="dso.allMetadata('organization.address.addressLocality').length > 0" <span *ngIf="dso.allMetadata('organization.address.addressLocality').length > 0"
class="item-list-address-locality"> class="item-list-address-locality">

View File

@@ -20,7 +20,8 @@ import { ItemDataService } from '../../../../../core/data/item-data.service';
import { SelectableListService } from '../../../../../shared/object-list/selectable-list/selectable-list.service'; import { SelectableListService } from '../../../../../shared/object-list/selectable-list/selectable-list.service';
import { NameVariantModalComponent } from '../../name-variant-modal/name-variant-modal.component'; import { NameVariantModalComponent } from '../../name-variant-modal/name-variant-modal.component';
@listableObjectComponent('OrgUnitSearchResult', ViewMode.ListElement, Context.SubmissionModal) @listableObjectComponent('OrgUnitSearchResult', ViewMode.ListElement, Context.EntitySearchModal)
@listableObjectComponent('OrgUnitSearchResult', ViewMode.ListElement, Context.EntitySearchModalWithNameVariants)
@Component({ @Component({
selector: 'ds-person-search-result-list-submission-element', selector: 'ds-person-search-result-list-submission-element',
styleUrls: ['./org-unit-search-result-list-submission-element.component.scss'], styleUrls: ['./org-unit-search-result-list-submission-element.component.scss'],
@@ -34,6 +35,7 @@ export class OrgUnitSearchResultListSubmissionElementComponent extends SearchRes
allSuggestions: string[]; allSuggestions: string[];
selectedName: string; selectedName: string;
alternativeField = 'dc.title.alternative'; alternativeField = 'dc.title.alternative';
useNameVariants = false;
constructor(protected truncatableService: TruncatableService, constructor(protected truncatableService: TruncatableService,
private relationshipService: RelationshipService, private relationshipService: RelationshipService,
@@ -48,6 +50,10 @@ export class OrgUnitSearchResultListSubmissionElementComponent extends SearchRes
ngOnInit() { ngOnInit() {
super.ngOnInit(); super.ngOnInit();
this.useNameVariants = this.context === Context.EntitySearchModalWithNameVariants;
if (this.useNameVariants) {
const defaultValue = this.firstMetadataValue('organization.legalName'); const defaultValue = this.firstMetadataValue('organization.legalName');
const alternatives = this.allMetadataValues(this.alternativeField); const alternatives = this.allMetadataValues(this.alternativeField);
this.allSuggestions = [defaultValue, ...alternatives]; this.allSuggestions = [defaultValue, ...alternatives];
@@ -59,6 +65,7 @@ export class OrgUnitSearchResultListSubmissionElementComponent extends SearchRes
} }
); );
} }
}
select(value) { select(value) {
this.selectableListService.isObjectSelected(this.listID, this.object) this.selectableListService.isObjectSelected(this.listID, this.object)

View File

@@ -20,7 +20,7 @@ import { MetadataValue } from '../../../../../core/shared/metadata.models';
import { ItemDataService } from '../../../../../core/data/item-data.service'; import { ItemDataService } from '../../../../../core/data/item-data.service';
import { SelectableListService } from '../../../../../shared/object-list/selectable-list/selectable-list.service'; import { SelectableListService } from '../../../../../shared/object-list/selectable-list/selectable-list.service';
@listableObjectComponent('PersonSearchResult', ViewMode.ListElement, Context.SubmissionModal) @listableObjectComponent('PersonSearchResult', ViewMode.ListElement, Context.EntitySearchModalWithNameVariants)
@Component({ @Component({
selector: 'ds-person-search-result-list-submission-element', selector: 'ds-person-search-result-list-submission-element',
styleUrls: ['./person-search-result-list-submission-element.component.scss'], styleUrls: ['./person-search-result-list-submission-element.component.scss'],

View File

@@ -126,8 +126,10 @@ export class DsDynamicLookupRelationModalComponent implements OnInit, OnDestroy
this.selection$.pipe(take(1)).subscribe((selection) => this.selection$.pipe(take(1)).subscribe((selection) =>
selection.map((s: SearchResult<Item>) => this.addNameVariantSubscription(s)) selection.map((s: SearchResult<Item>) => this.addNameVariantSubscription(s))
); );
if (this.relationshipOptions.nameVariants) { if (this.relationshipOptions.nameVariants === 'true') {
this.context = Context.SubmissionModal; this.context = Context.EntitySearchModalWithNameVariants;
} else {
this.context = Context.EntitySearchModal;
} }
this.externalSourcesRD$ = this.externalSourceService.findAll(); this.externalSourcesRD$ = this.externalSourceService.findAll();

View File

@@ -105,7 +105,7 @@ export class ExternalSourceEntryImportModalComponent implements OnInit {
/** /**
* The context we're currently in (submission) * The context we're currently in (submission)
*/ */
context = Context.SubmissionModal; context = Context.EntitySearchModalWithNameVariants;
/** /**
* List ID for selecting local entities * List ID for selecting local entities

View File

@@ -7,7 +7,7 @@ export class RelationshipOptions {
relationshipType: string; relationshipType: string;
filter: string; filter: string;
searchConfiguration: string; searchConfiguration: string;
nameVariants: boolean; nameVariants: string;
get metadataField() { get metadataField() {
return RELATION_METADATA_PREFIX + this.relationshipType return RELATION_METADATA_PREFIX + this.relationshipType

View File

@@ -74,6 +74,8 @@ export class ListableObjectComponentLoaderComponent implements OnInit {
(componentRef.instance as any).linkType = this.linkType; (componentRef.instance as any).linkType = this.linkType;
(componentRef.instance as any).listID = this.listID; (componentRef.instance as any).listID = this.listID;
(componentRef.instance as any).showLabel = this.showLabel; (componentRef.instance as any).showLabel = this.showLabel;
(componentRef.instance as any).context = this.context;
(componentRef.instance as any).viewMode = this.viewMode;
} }
/** /**

View File

@@ -34,6 +34,16 @@ export class AbstractListableElementComponent<T extends ListableObject> {
*/ */
@Input() showLabel: boolean = true; @Input() showLabel: boolean = true;
/**
* The context we matched on to get this component
*/
@Input() context: Context;
/**
* The viewmode we matched on to get this component
*/
@Input() viewMode: ViewMode;
/** /**
* The available link types * The available link types
*/ */

View File

@@ -4,7 +4,7 @@
[id]="'object' + index" [id]="'object' + index"
[ngModel]="selected$ | async" [ngModel]="selected$ | async"
(ngModelChange)="selectCheckbox($event)"> (ngModelChange)="selectCheckbox($event)">
<input *ngIf="!selectionConfig.repeatable" class="form-check-input" type="radio" <input *ngIf="!selectionConfig.repeatable" class="form-check-input mt-2" type="radio"
[name]="'radio' + index" [name]="'radio' + index"
[id]="'object' + index" [id]="'object' + index"
[checked]="selected$ | async" [checked]="selected$ | async"