Skip to content

Commit d1143c3

Browse files
committed
Issue 53451: JS error when deleting numeric filter values with Between operator
1 parent faefc59 commit d1143c3

3 files changed

Lines changed: 28 additions & 4 deletions

File tree

packages/components/releaseNotes/components.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
# @labkey/components
22
Components, models, actions, and utility functions for LabKey applications and pages
33

4+
### version TBD
5+
*Released*: TBD
6+
- Issue 53451: JS error when deleting numeric filter values with Between operator
7+
48
### version 6.56.0
59
*Released*: 11 July 2025
610
- Package updates

packages/components/src/internal/components/search/utils.test.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { QueryInfo } from '../../../public/QueryInfo';
44
import { QueryColumn } from '../../../public/QueryColumn';
55
import { SCHEMAS } from '../../schemas';
66

7-
import { TEXT_TYPE } from '../domainproperties/PropDescType';
7+
import { INTEGER_TYPE, TEXT_TYPE } from '../domainproperties/PropDescType';
88

99
import { NOT_ANY_FILTER_TYPE } from '../../url/NotAnyFilterType';
1010

@@ -370,6 +370,12 @@ describe('getUpdateFilterExpressionFilter', () => {
370370
jsonType: 'string',
371371
fieldKey,
372372
});
373+
const integerField = new QueryColumn({
374+
name: 'integerField',
375+
rangeURI: INTEGER_TYPE.rangeURI,
376+
jsonType: 'int',
377+
fieldKey: 'integerField',
378+
});
373379

374380
const anyOp = {
375381
betweenOperator: false,
@@ -446,24 +452,36 @@ describe('getUpdateFilterExpressionFilter', () => {
446452
expect(getUpdateFilterExpressionFilter(betweenOp, stringField, 'x', 'z', 'a')).toStrictEqual(
447453
Filter.create(fieldKey, 'a,z', Filter.Types.BETWEEN)
448454
);
455+
expect(getUpdateFilterExpressionFilter(betweenOp, integerField, 1, 100, 11)).toStrictEqual(
456+
Filter.create(integerField.fieldKey, '11,100', Filter.Types.BETWEEN)
457+
);
449458
});
450459

451460
test('update between filter second value', () => {
452461
expect(getUpdateFilterExpressionFilter(betweenOp, stringField, null, null, 'y', true)).toStrictEqual(
453462
Filter.create(fieldKey, 'y', Filter.Types.BETWEEN)
454463
);
464+
expect(getUpdateFilterExpressionFilter(betweenOp, integerField, null, null, 11, true)).toStrictEqual(
465+
Filter.create(integerField.fieldKey, '11', Filter.Types.BETWEEN)
466+
);
455467
});
456468

457469
test('remove between filter second value', () => {
458470
expect(getUpdateFilterExpressionFilter(betweenOp, stringField, 'x', 'z', null, true)).toStrictEqual(
459471
Filter.create(fieldKey, 'x', Filter.Types.BETWEEN)
460472
);
473+
expect(getUpdateFilterExpressionFilter(betweenOp, integerField, 10, 100, null, true)).toStrictEqual(
474+
Filter.create(integerField.fieldKey, '10', Filter.Types.BETWEEN)
475+
);
461476
});
462477

463478
test('clear between filter values', () => {
464479
expect(getUpdateFilterExpressionFilter(betweenOp, stringField, 'x', 'z', null, null, true)).toStrictEqual(
465480
Filter.create(fieldKey, null, Filter.Types.BETWEEN)
466481
);
482+
expect(getUpdateFilterExpressionFilter(betweenOp, integerField, 10, 100, null, null, true)).toStrictEqual(
483+
Filter.create(integerField.fieldKey, null, Filter.Types.BETWEEN)
484+
);
467485
});
468486

469487
test('in filter type with value string', () => {

packages/components/src/internal/components/search/utils.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -251,13 +251,15 @@ export function getUpdateFilterExpressionFilter(
251251
value = null;
252252
} else if (isSecondValue) {
253253
if (newFilterValue == null) {
254-
value = previousFirstFilterValue != null ? previousFirstFilterValue : '';
254+
value = previousFirstFilterValue != null ? previousFirstFilterValue.toString() : '';
255255
} else {
256-
value = (previousFirstFilterValue != null ? previousFirstFilterValue + ',' : '') + newFilterValue;
256+
value =
257+
(previousFirstFilterValue != null ? previousFirstFilterValue + ',' : '') +
258+
newFilterValue.toString();
257259
}
258260
} else {
259261
if (newFilterValue == null) {
260-
value = previousSecondFilterValue != null ? previousSecondFilterValue : '';
262+
value = previousSecondFilterValue != null ? previousSecondFilterValue.toString() : '';
261263
} else {
262264
value = newFilterValue + (previousSecondFilterValue != null ? ',' + previousSecondFilterValue : '');
263265
}

0 commit comments

Comments
 (0)