From f9b470359a981f4d37eba9c266c539131c3ab5d8 Mon Sep 17 00:00:00 2001 From: cnathe Date: Tue, 26 May 2026 14:37:06 -0500 Subject: [PATCH 01/10] resolveDuplicatesAsName() update to check for "barcode" identifier --- .../src/internal/util/messaging.test.ts | 31 +++++++++++++++++++ .../src/internal/util/messaging.tsx | 3 +- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/packages/components/src/internal/util/messaging.test.ts b/packages/components/src/internal/util/messaging.test.ts index bbb90b576d..8351693ac7 100644 --- a/packages/components/src/internal/util/messaging.test.ts +++ b/packages/components/src/internal/util/messaging.test.ts @@ -551,4 +551,35 @@ describe('resolveDuplicatesAsName', () => { ); }); }); + + describe('barcode constraint', () => { + const barcodeError = + 'ERROR: duplicate key value violates unique constraint "uq_box_barcode"\n' + + ' Detail: Key (barcode)=(BC-123) already exists.'; + + test('uses "barcode" identifier when constraint is uq_box_barcode', () => { + expect(resolveDuplicatesAsName(barcodeError, 'boxes')).toBe( + "There was a problem creating your boxes. Duplicate barcode 'BC-123' found." + ); + }); + + test('uq_box_barcode check is case-insensitive', () => { + const upperCaseError = barcodeError.replace('uq_box_barcode', 'UQ_BOX_BARCODE'); + expect(resolveDuplicatesAsName(upperCaseError, 'boxes')).toBe( + "There was a problem creating your boxes. Duplicate barcode 'BC-123' found." + ); + }); + + test('uses "name" identifier when constraint is not uq_box_barcode', () => { + expect(resolveDuplicatesAsName('Key (name)=(BC-123) already exists.', 'boxes')).toBe( + "There was a problem creating your boxes. Duplicate name 'BC-123' found." + ); + }); + + test('respects optional params', () => { + expect(resolveDuplicatesAsName(barcodeError, 'box', 'boxes', 'importing')).toBe( + "There was a problem importing your boxes. Duplicate barcode 'BC-123' found." + ); + }); + }); }); diff --git a/packages/components/src/internal/util/messaging.tsx b/packages/components/src/internal/util/messaging.tsx index 34eb3b83b6..5f975f9eaf 100644 --- a/packages/components/src/internal/util/messaging.tsx +++ b/packages/components/src/internal/util/messaging.tsx @@ -75,7 +75,8 @@ export function resolveDuplicatesAsName( } let retMsg = `There was a problem ${verbPresParticiple || 'creating'} your ${nounPlural || noun || 'data'}.`; if (name) { - retMsg += ` Duplicate name '${name}' found.`; + const identifierType = errorMsg.toLowerCase().indexOf('uq_box_barcode') > -1 ? 'barcode' : 'name'; + retMsg += ` Duplicate ${identifierType} '${name}' found.`; } else { retMsg += ` Check the existing ${nounPlural || noun || 'data'} for possible duplicates and make sure any referenced ${ nounPlural || noun || 'data' From 8e0a76422be727c34d784d055dd944df2874c893 Mon Sep 17 00:00:00 2001 From: cnathe Date: Tue, 26 May 2026 14:37:22 -0500 Subject: [PATCH 02/10] 7.38.1-fb-terminalStorageUseBarcode.0 --- packages/components/package-lock.json | 4 ++-- packages/components/package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/components/package-lock.json b/packages/components/package-lock.json index 416931ae6e..fe5d37dcce 100644 --- a/packages/components/package-lock.json +++ b/packages/components/package-lock.json @@ -1,12 +1,12 @@ { "name": "@labkey/components", - "version": "7.38.0", + "version": "7.38.1-fb-terminalStorageUseBarcode.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@labkey/components", - "version": "7.38.0", + "version": "7.38.1-fb-terminalStorageUseBarcode.0", "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { "@hello-pangea/dnd": "18.0.1", diff --git a/packages/components/package.json b/packages/components/package.json index 23faf43b45..ef22e4681b 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -1,6 +1,6 @@ { "name": "@labkey/components", - "version": "7.38.0", + "version": "7.38.1-fb-terminalStorageUseBarcode.0", "description": "Components, models, actions, and utility functions for LabKey applications and pages", "sideEffects": false, "files": [ From 3a8a5b78234dce78dcb5b68f77e0dfc82308a56b Mon Sep 17 00:00:00 2001 From: labkey-susanh Date: Tue, 26 May 2026 14:47:51 -0700 Subject: [PATCH 03/10] add `StorageUnitBarcode` as an allowed field for import --- packages/components/releaseNotes/components.md | 4 ++++ .../src/internal/components/samples/constants.ts | 8 +++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/components/releaseNotes/components.md b/packages/components/releaseNotes/components.md index 1c04d7cf6f..6c7e54c262 100644 --- a/packages/components/releaseNotes/components.md +++ b/packages/components/releaseNotes/components.md @@ -1,6 +1,10 @@ # @labkey/components Components, models, actions, and utility functions for LabKey applications and pages +### version TBD +*Released*: TBD +- add `StorageUnitBarcode` as an allowed field for import + ### version 7.38.0 *Released*: 21 May 2026 - Accessibility improvements for app pages: Keyboard Interactions diff --git a/packages/components/src/internal/components/samples/constants.ts b/packages/components/src/internal/components/samples/constants.ts index facc3d503e..34c350b41e 100644 --- a/packages/components/src/internal/components/samples/constants.ts +++ b/packages/components/src/internal/components/samples/constants.ts @@ -200,12 +200,18 @@ export const SAMPLE_STORAGE_COLUMNS_WITH_SUBSELECT_EXPR = [ 'StorageLocation', ]; -export const SAMPLE_INSERT_EXTRA_COLUMNS = [...AMOUNT_AND_UNITS_COLUMNS, ...SAMPLE_STORAGE_COLUMNS, ALIQUOTED_FROM_COL]; +export const SAMPLE_INSERT_EXTRA_COLUMNS = [ + ...AMOUNT_AND_UNITS_COLUMNS, + ...SAMPLE_STORAGE_COLUMNS, + ALIQUOTED_FROM_COL, + 'StorageUnitBarcode', +]; export const SAMPLE_IMPORT_EXTRA_ALLOWED_COLUMNS = [ ...SAMPLE_INSERT_EXTRA_COLUMNS, 'SampleID', 'EnteredStorage', 'ExpirationDate', + 'StorageUnitBarcode', ]; export const SAMPLE_DATA_EXPORT_CONFIG = { From f1d32afe9fe63383c49ad0d4c56a69875426b30d Mon Sep 17 00:00:00 2001 From: labkey-susanh Date: Tue, 26 May 2026 14:49:22 -0700 Subject: [PATCH 04/10] @labkey/components v7.38.1-fb-terminalStorageUseBarcode.1 --- packages/components/package-lock.json | 4 ++-- packages/components/package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/components/package-lock.json b/packages/components/package-lock.json index fe5d37dcce..9bba3f0663 100644 --- a/packages/components/package-lock.json +++ b/packages/components/package-lock.json @@ -1,12 +1,12 @@ { "name": "@labkey/components", - "version": "7.38.1-fb-terminalStorageUseBarcode.0", + "version": "7.38.1-fb-terminalStorageUseBarcode.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@labkey/components", - "version": "7.38.1-fb-terminalStorageUseBarcode.0", + "version": "7.38.1-fb-terminalStorageUseBarcode.1", "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { "@hello-pangea/dnd": "18.0.1", diff --git a/packages/components/package.json b/packages/components/package.json index ef22e4681b..817c1f5d9e 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -1,6 +1,6 @@ { "name": "@labkey/components", - "version": "7.38.1-fb-terminalStorageUseBarcode.0", + "version": "7.38.1-fb-terminalStorageUseBarcode.1", "description": "Components, models, actions, and utility functions for LabKey applications and pages", "sideEffects": false, "files": [ From 7fb4a895580da93ea28ec76673ea44d0e21f01dc Mon Sep 17 00:00:00 2001 From: cnathe Date: Wed, 27 May 2026 07:29:39 -0500 Subject: [PATCH 05/10] @labkey/components 7.38.2-fb-terminalStorageUseBarcode.0 --- packages/components/package-lock.json | 4 ++-- packages/components/package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/components/package-lock.json b/packages/components/package-lock.json index f54e8318a8..f0ccd4bffb 100644 --- a/packages/components/package-lock.json +++ b/packages/components/package-lock.json @@ -1,12 +1,12 @@ { "name": "@labkey/components", - "version": "7.38.1", + "version": "7.38.2-fb-terminalStorageUseBarcode.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@labkey/components", - "version": "7.38.1", + "version": "7.38.2-fb-terminalStorageUseBarcode.0", "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { "@hello-pangea/dnd": "18.0.1", diff --git a/packages/components/package.json b/packages/components/package.json index f46d8faf90..f4cae66ba2 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -1,6 +1,6 @@ { "name": "@labkey/components", - "version": "7.38.1", + "version": "7.38.2-fb-terminalStorageUseBarcode.0", "description": "Components, models, actions, and utility functions for LabKey applications and pages", "sideEffects": false, "files": [ From 5c135348640a99370a531ff8f7ef036cb109cb20 Mon Sep 17 00:00:00 2001 From: cnathe Date: Wed, 27 May 2026 12:55:33 -0500 Subject: [PATCH 06/10] 7.39.2-fb-terminalStorageUseBarcode.0 --- packages/components/package-lock.json | 4 ++-- packages/components/package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/components/package-lock.json b/packages/components/package-lock.json index b39e1db101..22741294db 100644 --- a/packages/components/package-lock.json +++ b/packages/components/package-lock.json @@ -1,12 +1,12 @@ { "name": "@labkey/components", - "version": "7.39.1", + "version": "7.39.2-fb-terminalStorageUseBarcode.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@labkey/components", - "version": "7.39.1", + "version": "7.39.2-fb-terminalStorageUseBarcode.0", "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { "@hello-pangea/dnd": "18.0.1", diff --git a/packages/components/package.json b/packages/components/package.json index 19c7ba1c93..1893155e32 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -1,6 +1,6 @@ { "name": "@labkey/components", - "version": "7.39.1", + "version": "7.39.2-fb-terminalStorageUseBarcode.0", "description": "Components, models, actions, and utility functions for LabKey applications and pages", "sideEffects": false, "files": [ From 6564c808e739d139c11188ba962001f3f7860b57 Mon Sep 17 00:00:00 2001 From: cnathe Date: Tue, 2 Jun 2026 14:29:57 -0500 Subject: [PATCH 07/10] 7.41.1-fb-terminalStorageUseBarcode.0 --- packages/components/package-lock.json | 4 ++-- packages/components/package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/components/package-lock.json b/packages/components/package-lock.json index 18780237de..56e94018eb 100644 --- a/packages/components/package-lock.json +++ b/packages/components/package-lock.json @@ -1,12 +1,12 @@ { "name": "@labkey/components", - "version": "7.41.0", + "version": "7.41.1-fb-terminalStorageUseBarcode.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@labkey/components", - "version": "7.41.0", + "version": "7.41.1-fb-terminalStorageUseBarcode.0", "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { "@hello-pangea/dnd": "18.0.1", diff --git a/packages/components/package.json b/packages/components/package.json index f4b2e6b088..0fe9596bf0 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -1,6 +1,6 @@ { "name": "@labkey/components", - "version": "7.41.0", + "version": "7.41.1-fb-terminalStorageUseBarcode.0", "description": "Components, models, actions, and utility functions for LabKey applications and pages", "sideEffects": false, "files": [ From d1e64c5623177a532b0d6343ea248f994b7e07b8 Mon Sep 17 00:00:00 2001 From: cnathe Date: Tue, 2 Jun 2026 15:45:19 -0500 Subject: [PATCH 08/10] update release notes --- packages/components/releaseNotes/components.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/components/releaseNotes/components.md b/packages/components/releaseNotes/components.md index 70ddecc8c6..fdbd35e91f 100644 --- a/packages/components/releaseNotes/components.md +++ b/packages/components/releaseNotes/components.md @@ -3,7 +3,9 @@ Components, models, actions, and utility functions for LabKey applications and p ### version TBD *Released*: TBD -- add `StorageUnitBarcode` as an allowed field for import +- App support for terminal storage barcodes + - add `StorageUnitBarcode` as an allowed field for import + - Updated resolveDuplicatesAsName() to check for the "barcode" identifier ### version 7.41.0 *Released*: 1 June 2026 From 2f625c6d92df6f248876d45bb1e6780a8533a75b Mon Sep 17 00:00:00 2001 From: labkey-susanh Date: Tue, 2 Jun 2026 14:11:42 -0700 Subject: [PATCH 09/10] Remove StorageUnitBarcode from SAMPLE_INSERT_EXTRA_COLUMNS to remove from templates --- packages/components/src/internal/components/samples/constants.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/components/src/internal/components/samples/constants.ts b/packages/components/src/internal/components/samples/constants.ts index 26547c85bd..0d232253be 100644 --- a/packages/components/src/internal/components/samples/constants.ts +++ b/packages/components/src/internal/components/samples/constants.ts @@ -208,7 +208,6 @@ export const SAMPLE_INSERT_EXTRA_COLUMNS = [ ...AMOUNT_AND_UNITS_COLUMNS, ...SAMPLE_STORAGE_COLUMNS, ALIQUOTED_FROM_COL, - 'StorageUnitBarcode', ]; export const SAMPLE_IMPORT_EXTRA_ALLOWED_COLUMNS = [ ...SAMPLE_INSERT_EXTRA_COLUMNS, From a9a00d4e0fe9124f2b4955f799035dd4f7c0f0f1 Mon Sep 17 00:00:00 2001 From: labkey-susanh Date: Tue, 2 Jun 2026 14:13:14 -0700 Subject: [PATCH 10/10] @labkey/components v7.41.1-fb-terminalStorageUseBarcode.1 --- packages/components/package-lock.json | 4 ++-- packages/components/package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/components/package-lock.json b/packages/components/package-lock.json index 56e94018eb..81c589a4c2 100644 --- a/packages/components/package-lock.json +++ b/packages/components/package-lock.json @@ -1,12 +1,12 @@ { "name": "@labkey/components", - "version": "7.41.1-fb-terminalStorageUseBarcode.0", + "version": "7.41.1-fb-terminalStorageUseBarcode.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@labkey/components", - "version": "7.41.1-fb-terminalStorageUseBarcode.0", + "version": "7.41.1-fb-terminalStorageUseBarcode.1", "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { "@hello-pangea/dnd": "18.0.1", diff --git a/packages/components/package.json b/packages/components/package.json index 0fe9596bf0..85a51c745c 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -1,6 +1,6 @@ { "name": "@labkey/components", - "version": "7.41.1-fb-terminalStorageUseBarcode.0", + "version": "7.41.1-fb-terminalStorageUseBarcode.1", "description": "Components, models, actions, and utility functions for LabKey applications and pages", "sideEffects": false, "files": [