From 506890cf2ca961bd5ebde37c637e4e6d88022ca9 Mon Sep 17 00:00:00 2001 From: cnathe Date: Tue, 22 Jul 2025 11:31:04 -0500 Subject: [PATCH 01/17] GitHub Issue 783: Hide domain designer field Advanced Settings that are not currently implemented in app --- packages/components/releaseNotes/components.md | 4 ++++ .../components/domainproperties/AdvancedSettings.tsx | 7 +++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/components/releaseNotes/components.md b/packages/components/releaseNotes/components.md index f37d519b16..2dc1450f3a 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 +- GitHub Issue 783: Hide domain designer field Advanced Settings that are not currently implemented in app + ### version 6.56.2 *Released*: 21 July 2025 - Issue 53451: JS error when deleting numeric filter values with Between operator diff --git a/packages/components/src/internal/components/domainproperties/AdvancedSettings.tsx b/packages/components/src/internal/components/domainproperties/AdvancedSettings.tsx index 6de4dd032f..1b70b278f2 100644 --- a/packages/components/src/internal/components/domainproperties/AdvancedSettings.tsx +++ b/packages/components/src/internal/components/domainproperties/AdvancedSettings.tsx @@ -3,7 +3,7 @@ import { List } from 'immutable'; import { ActionURL } from '@labkey/api'; import { Modal } from '../../Modal'; -import { getSubmitButtonClass } from '../../app/utils'; +import { getSubmitButtonClass, isApp } from '../../app/utils'; import { ADVANCED_FIELD_EDITOR_TOPIC, @@ -243,6 +243,9 @@ export class AdvancedSettings extends React.PureComponent { const { field, showDefaultValueSettings } = this.props; + // GitHub Issue #783: we don't yet support default values in the App + if (isApp()) return false; + // some domains just don't support default values if (!showDefaultValueSettings) return false; @@ -479,7 +482,7 @@ export class AdvancedSettings extends React.PureComponent - {PropDescType.isMvEnableable(field.dataType.rangeURI) && !field.isCalculatedField() && ( + {PropDescType.isMvEnableable(field.dataType.rangeURI) && !field.isCalculatedField() && !isApp() && ( Date: Tue, 22 Jul 2025 11:33:03 -0500 Subject: [PATCH 02/17] GitHub Issue 788: Domain Designer better handling of invalid lookup query value for Sample data type --- .../components/releaseNotes/components.md | 1 + .../domainproperties/SampleFieldOptions.tsx | 32 +++++++++++++++---- .../components/domainproperties/models.tsx | 25 ++++++++++++--- 3 files changed, 48 insertions(+), 10 deletions(-) diff --git a/packages/components/releaseNotes/components.md b/packages/components/releaseNotes/components.md index 2dc1450f3a..6985a98644 100644 --- a/packages/components/releaseNotes/components.md +++ b/packages/components/releaseNotes/components.md @@ -4,6 +4,7 @@ Components, models, actions, and utility functions for LabKey applications and p ### version TBD *Released*: TBD - GitHub Issue 783: Hide domain designer field Advanced Settings that are not currently implemented in app +- GitHub Issue 788: Domain Designer better handling of invalid lookup query value for Sample data type ### version 6.56.2 *Released*: 21 July 2025 diff --git a/packages/components/src/internal/components/domainproperties/SampleFieldOptions.tsx b/packages/components/src/internal/components/domainproperties/SampleFieldOptions.tsx index 944a7b2eec..5c6ce8a58b 100644 --- a/packages/components/src/internal/components/domainproperties/SampleFieldOptions.tsx +++ b/packages/components/src/internal/components/domainproperties/SampleFieldOptions.tsx @@ -11,7 +11,7 @@ import { LabelHelpTip } from '../base/LabelHelpTip'; import { isFieldFullyLocked } from './propertiesUtil'; import { fetchQueries } from './actions'; import { createFormInputId, createFormInputName } from './utils'; -import { ALL_SAMPLES_DISPLAY_TEXT, DOMAIN_FIELD_SAMPLE_TYPE, DOMAIN_VALIDATOR_LOOKUP } from './constants'; +import { DOMAIN_FIELD_SAMPLE_TYPE, DOMAIN_VALIDATOR_LOOKUP } from './constants'; import { DomainField, encodeLookup, @@ -35,6 +35,7 @@ interface SampleFieldProps extends ITypeDependentProps { } interface State { + isValidOptions?: boolean; loadingState: LoadingState; sampleTypes: List; validateLookup: boolean; @@ -48,7 +49,7 @@ export class SampleFieldOptions extends PureComponent { }; componentDidMount = async (): Promise => { - const { original, field } = this.props; + const { original, field, value } = this.props; this.setState({ loadingState: LoadingState.LOADING }); @@ -60,7 +61,14 @@ export class SampleFieldOptions extends PureComponent { .filter(st => st.type.isInteger()) // Remove rowId duplicates .toList(); + let isValidOptions = true; + if (value !== SAMPLE_TYPE_OPTION_VALUE && sampleTypes.size > 0) { + const optionValues = sampleTypes.map(st => encodeLookup(st.name, st.type)); + isValidOptions = optionValues.includes(value); + } + this.setState({ + isValidOptions, loadingState: LoadingState.LOADED, sampleTypes, validateLookup: field.isNew() || !!field.lookupValidator, @@ -73,6 +81,7 @@ export class SampleFieldOptions extends PureComponent { onFieldChange = (evt): void => { this.props.onChange(evt.target.id, evt.target.value); + this.setState({ isValidOptions: true }); }; addLookupValidator = (evt): void => { @@ -88,9 +97,8 @@ export class SampleFieldOptions extends PureComponent { }; render() { - const { index, label, lockType, value, domainIndex } = this.props; - - const { loadingState, sampleTypes, validateLookup } = this.state; + const { index, label, lockType, value, domainIndex, field } = this.props; + const { loadingState, sampleTypes, validateLookup, isValidOptions } = this.state; const isLoaded = !isLoading(loadingState); const id = createFormInputId(DOMAIN_FIELD_SAMPLE_TYPE, domainIndex, index); @@ -129,13 +137,25 @@ export class SampleFieldOptions extends PureComponent { disabled={isFieldFullyLocked(lockType)} name={createFormInputName(DOMAIN_FIELD_SAMPLE_TYPE)} onChange={this.onFieldChange} - value={value || ALL_SAMPLES_DISPLAY_TEXT} + value={value || SAMPLE_TYPE_OPTION_VALUE} > {!isLoaded && ( )} + {!isValidOptions && ( + + )} {isLoaded && ( )} - {!isValidOption && ( + {field && !field.lookupIsValid && ( @@ -312,21 +312,23 @@ export class AdvancedSettings extends React.PureComponentDefault Value Options
- +
@@ -342,9 +344,9 @@ export class AdvancedSettings extends React.PureComponent Set Default Values @@ -378,16 +380,16 @@ export class AdvancedSettings extends React.PureComponent
- +
{
Lookup Validator
Ensure Value Exists in Lookup Target diff --git a/packages/components/src/internal/components/domainproperties/actions.test.ts b/packages/components/src/internal/components/domainproperties/actions.test.ts index 07a58091e0..b581b56fcd 100644 --- a/packages/components/src/internal/components/domainproperties/actions.test.ts +++ b/packages/components/src/internal/components/domainproperties/actions.test.ts @@ -22,8 +22,8 @@ import { QueryColumn } from '../../../public/QueryColumn'; import { ConceptModel, OntologyModel } from '../ontology/models'; import { - TEST_LKSM_PROFESSIONAL_MODULE_CONTEXT, TEST_LKS_STARTER_MODULE_CONTEXT, + TEST_LKSM_PROFESSIONAL_MODULE_CONTEXT, TEST_LKSM_STARTER_MODULE_CONTEXT, } from '../../productFixtures'; diff --git a/packages/components/src/internal/components/domainproperties/models.tsx b/packages/components/src/internal/components/domainproperties/models.tsx index c7d091799e..21c3d149af 100644 --- a/packages/components/src/internal/components/domainproperties/models.tsx +++ b/packages/components/src/internal/components/domainproperties/models.tsx @@ -1128,7 +1128,8 @@ export class DomainField const lookupType = LOOKUP_TYPE.set('rangeURI', rawField.rangeURI) as PropDescType; const lookupContainer = rawField.lookupContainer === null ? undefined : rawField.lookupContainer; const lookupSchema = resolveLookupSchema(rawField, dataType); - const lookupQuery = rawField.lookupQuery || (dataType === SAMPLE_TYPE ? SCHEMAS.EXP_TABLES.MATERIALS.queryName : undefined); + const lookupQuery = + rawField.lookupQuery || (dataType === SAMPLE_TYPE ? SCHEMAS.EXP_TABLES.MATERIALS.queryName : undefined); const lookupQueryValue = resolveLookupQueryValue(lookupType, lookupSchema, lookupQuery, isSampleType); return { From cb82b591c5a3baa5f9bd2540c363ccb45e1a38ee Mon Sep 17 00:00:00 2001 From: cnathe Date: Mon, 4 Aug 2025 13:56:58 -0500 Subject: [PATCH 16/17] 6.58.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 536a143547..0350f3eb22 100644 --- a/packages/components/package-lock.json +++ b/packages/components/package-lock.json @@ -1,12 +1,12 @@ { "name": "@labkey/components", - "version": "6.57.0-assayDesignerFixes258.2", + "version": "6.58.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@labkey/components", - "version": "6.57.0-assayDesignerFixes258.2", + "version": "6.58.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 1e8240d7e0..b1dfc3de24 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -1,6 +1,6 @@ { "name": "@labkey/components", - "version": "6.57.0-assayDesignerFixes258.2", + "version": "6.58.0", "description": "Components, models, actions, and utility functions for LabKey applications and pages", "sideEffects": false, "files": [ From f3e9460b04e48eb32aacb0e558a322b7cdc323b1 Mon Sep 17 00:00:00 2001 From: cnathe Date: Mon, 4 Aug 2025 13:57:22 -0500 Subject: [PATCH 17/17] Update release notes with version number and release date --- packages/components/releaseNotes/components.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/components/releaseNotes/components.md b/packages/components/releaseNotes/components.md index 199b1db209..30936ae2ec 100644 --- a/packages/components/releaseNotes/components.md +++ b/packages/components/releaseNotes/components.md @@ -1,8 +1,8 @@ # @labkey/components Components, models, actions, and utility functions for LabKey applications and pages -### version TBD -*Released*: TBD +### version 6.58.0 +*Released*: 4 August 2025 - GitHub Issue 783: Hide domain designer field Advanced Settings that are not currently implemented in app - GitHub Issue 788: Domain Designer better handling of invalid lookup query value for Sample data type