diff --git a/src/Model/Utility/utility.ts b/src/Model/Utility/utility.ts index d9dab6ef..046d0652 100644 --- a/src/Model/Utility/utility.ts +++ b/src/Model/Utility/utility.ts @@ -29,13 +29,23 @@ export class HandlerManager { } // filters -export function filterObjectsByStringEntries(reference: {[key: string]: string}, objects: any[]): any[] { +export type ComparableObject = {[key: string]: string}; +export function filterObjectsByStringEntries( + reference: ComparableObject, + converter: (T) => ComparableObject, + objects: T[] +): any[] { const matches: any[] = []; object_loop: for (const object of objects) { - reference_entry_loop: for (const referenceEntry of Object.entries(reference)) { + reference_entry_loop: for (const referenceEntry of Object.entries( + reference + )) { const [key, value] = referenceEntry; - if (object[key] != value) continue object_loop + if (value == "") continue reference_entry_loop; + + const comparableObject: ComparableObject = converter(object); + if (comparableObject[key] != value) continue object_loop; } matches.push(object); }