From 91e4fef6a35a3f80b56ccd3cefe3feec7959ad37 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 6 Mar 2025 00:30:49 +0100 Subject: [PATCH] catalog-react: support string=number comparisons for entity predicates Signed-off-by: Patrik Oldsberg --- .../predicates/entityPredicateToFilterFunction.test.ts | 6 ++++++ .../src/alpha/predicates/entityPredicateToFilterFunction.ts | 3 +++ 2 files changed, 9 insertions(+) diff --git a/plugins/catalog-react/src/alpha/predicates/entityPredicateToFilterFunction.test.ts b/plugins/catalog-react/src/alpha/predicates/entityPredicateToFilterFunction.test.ts index 3e55bb33bd..c83b213970 100644 --- a/plugins/catalog-react/src/alpha/predicates/entityPredicateToFilterFunction.test.ts +++ b/plugins/catalog-react/src/alpha/predicates/entityPredicateToFilterFunction.test.ts @@ -109,6 +109,8 @@ describe('entityPredicateToFilterFunction', () => { owner: 'g', definition: 'mock', nothing: null, + oneNum: 1, + oneStr: '1', }, relations: [ { @@ -219,6 +221,10 @@ describe('entityPredicateToFilterFunction', () => { ['', { 'spec.nothing': null }], ['w,g,a', { $not: { 'spec.type': 'service' } }], ['', { 'spec.type': null }], + ['a', { 'spec.oneNum': 1 }], + ['a', { 'spec.oneStr': 1 }], + ['a', { 'spec.oneNum': '1' }], + ['a', { 'spec.oneStr': '1' }], [ 's,w', { diff --git a/plugins/catalog-react/src/alpha/predicates/entityPredicateToFilterFunction.ts b/plugins/catalog-react/src/alpha/predicates/entityPredicateToFilterFunction.ts index 56a6efe723..2fa220e9e2 100644 --- a/plugins/catalog-react/src/alpha/predicates/entityPredicateToFilterFunction.ts +++ b/plugins/catalog-react/src/alpha/predicates/entityPredicateToFilterFunction.ts @@ -117,6 +117,9 @@ function valuesAreEqual( if (typeof a === 'string' && typeof b === 'string') { return a.toLocaleUpperCase('en-US') === b.toLocaleUpperCase('en-US'); } + if (typeof a === 'number' || typeof b === 'number') { + return String(a) === String(b); + } if (Array.isArray(a) && Array.isArray(b)) { return a.length === b.length && a.every((v, i) => valuesAreEqual(v, b[i])); }