Ability to Search on Localized Name in Series Relationships (#3560)

This commit is contained in:
Fesaa 2025-03-23 14:38:19 +01:00 committed by GitHub
parent e1e00c8c47
commit acaf308c2e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 12 additions and 5 deletions

View File

@ -17,8 +17,13 @@
<ng-template #badgeItem let-item let-position="idx"> <ng-template #badgeItem let-item let-position="idx">
{{item.name}} ({{libraryNames[item.libraryId]}}) {{item.name}} ({{libraryNames[item.libraryId]}})
</ng-template> </ng-template>
<ng-template #optionItem let-item let-position="idx"> <ng-template #optionItem let-item let-position="idx" let-value="value">
{{item.name}} ({{libraryNames[item.libraryId]}}) @if (item.name.toLowerCase().trim().indexOf(value.toLowerCase().trim()) >= 0) {
{{item.name}}
} @else {
{{item.localizedName}}
}
({{libraryNames[item.libraryId]}})
</ng-template> </ng-template>
</app-typeahead> </app-typeahead>
</div> </div>

View File

@ -153,7 +153,9 @@ export class EditSeriesRelationComponent implements OnInit {
); );
seriesSettings.compareFn = (options: SearchResult[], filter: string) => { seriesSettings.compareFn = (options: SearchResult[], filter: string) => {
return options.filter(m => this.utilityService.filter(m.name, filter)); return options.filter(m => {
return this.utilityService.filter(m.name, filter) || this.utilityService.filter(m.localizedName, filter);
});
} }
seriesSettings.selectionCompareFn = (a: SearchResult, b: SearchResult) => { seriesSettings.selectionCompareFn = (a: SearchResult, b: SearchResult) => {

View File

@ -8,7 +8,7 @@
</ng-container> </ng-container>
<div class="typeahead-input" [ngClass]="{'disabled': disabled}" (click)="onInputFocus($event)"> <div class="typeahead-input" [ngClass]="{'disabled': disabled}" (click)="onInputFocus($event)">
<app-tag-badge *ngFor="let option of optionSelection.selected(); let i = index" fillStyle="filled"> <app-tag-badge *ngFor="let option of optionSelection.selected(); let i = index" fillStyle="filled">
<ng-container [ngTemplateOutlet]="badgeTemplate" [ngTemplateOutletContext]="{ $implicit: option, idx: i }"></ng-container> <ng-container [ngTemplateOutlet]="badgeTemplate" [ngTemplateOutletContext]="{ $implicit: option, idx: i, value: typeaheadControl.value }"></ng-container>
<i class="fa fa-times" *ngIf="!disabled" (click)="toggleSelection(option)" tabindex="0" [attr.aria-label]="t('close')"></i> <i class="fa fa-times" *ngIf="!disabled" (click)="toggleSelection(option)" tabindex="0" [attr.aria-label]="t('close')"></i>
</app-tag-badge> </app-tag-badge>
<input #input [id]="settings.id" type="text" autocomplete="off" formControlName="typeahead" *ngIf="!disabled"> <input #input [id]="settings.id" type="text" autocomplete="off" formControlName="typeahead" *ngIf="!disabled">
@ -31,7 +31,7 @@
<li *ngFor="let option of options; let index = index; trackBy: settings.trackByIdentityFn" (click)="handleOptionClick(option)" <li *ngFor="let option of options; let index = index; trackBy: settings.trackByIdentityFn" (click)="handleOptionClick(option)"
class="list-group-item" role="option" [attr.data-index]="index" class="list-group-item" role="option" [attr.data-index]="index"
(mouseenter)="focusedIndex = index + (showAddItem ? 1 : 0); updateHighlight();"> (mouseenter)="focusedIndex = index + (showAddItem ? 1 : 0); updateHighlight();">
<ng-container [ngTemplateOutlet]="optionTemplate" [ngTemplateOutletContext]="{ $implicit: option, idx: index }"></ng-container> <ng-container [ngTemplateOutlet]="optionTemplate" [ngTemplateOutletContext]="{ $implicit: option, idx: index, value: typeaheadControl.value }"></ng-container>
</li> </li>
<li *ngIf="options.length === 0 && !showAddItem" class="list-group-item no-hover" role="status"> <li *ngIf="options.length === 0 && !showAddItem" class="list-group-item no-hover" role="status">
{{t('no-data')}}{{this.settings.addIfNonExisting ? t('add-custom-item') : ''}} {{t('no-data')}}{{this.settings.addIfNonExisting ? t('add-custom-item') : ''}}