Skip to content

Commit 8865cd4

Browse files
authored
Fix Issue 53342 (#1820)
- Remove AssayResultsForSamplesButton, AssayResultsForSamplesMenuItem - moved to ui-premium - Add createSnapshotSelectionKeyStr - Remove getJobCreationHref - Remove getSelectedSampleIdsFromSelectionKey - Remove getURLParamsForSampleSelectionKey - getLookupRowIdsFromSelection: Add optional keyColumn arg
1 parent c0ee84d commit 8865cd4

File tree

14 files changed

+44
-367
lines changed

14 files changed

+44
-367
lines changed

packages/components/package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/components/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@labkey/components",
3-
"version": "6.52.5",
3+
"version": "6.53.0",
44
"description": "Components, models, actions, and utility functions for LabKey applications and pages",
55
"sideEffects": false,
66
"files": [

packages/components/releaseNotes/components.md

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

4+
### version 6.53.0
5+
*Released*: 1 July 2025
6+
- Remove AssayResultsForSamplesButton, AssayResultsForSamplesMenuItem
7+
- moved to ui-premium
8+
- Add createSnapshotSelectionKeyStr
9+
- Remove getJobCreationHref
10+
- Remove getSelectedSampleIdsFromSelectionKey
11+
- Remove getURLParamsForSampleSelectionKey
12+
- getLookupRowIdsFromSelection: Add optional keyColumn arg
13+
- Export getSamplesTestAPIWrapper
14+
415
### version 6.52.5
516
*Released*: 30 June 2025
617
- Issue 53360: Pass user comment through after naming pattern warning

packages/components/src/index.ts

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -347,10 +347,6 @@ import {
347347
} from './internal/components/entities/models';
348348
import { EntityMoveModal } from './internal/components/entities/EntityMoveModal';
349349
import { EntityMoveConfirmationModal } from './internal/components/entities/EntityMoveConfirmationModal';
350-
import {
351-
AssayResultsForSamplesButton,
352-
AssayResultsForSamplesMenuItem,
353-
} from './internal/components/entities/AssayResultsForSamplesButton';
354350
import { SampleAliquotViewSelector } from './internal/components/entities/SampleAliquotViewSelector';
355351
import { GridAliquotViewSelector } from './internal/components/entities/GridAliquotViewSelector';
356352
import {
@@ -393,7 +389,6 @@ import {
393389
getLookupRowIdsFromSelection,
394390
getSampleSet,
395391
getSampleTypeDetails,
396-
getSelectedSampleIdsFromSelectionKey,
397392
getSelectionLineageData,
398393
updateSampleStorageData,
399394
} from './internal/components/samples/actions';
@@ -416,7 +411,6 @@ import {
416411
getSampleStatusColor,
417412
getSampleStatusContainerFilter,
418413
getSampleStatusType,
419-
getURLParamsForSampleSelectionKey,
420414
isAllSamplesSchema,
421415
isSampleOperationPermitted,
422416
isSamplesSchema,
@@ -535,7 +529,6 @@ import {
535529
getEntityDescription,
536530
getEntityNoun,
537531
getInitialParentChoices,
538-
getJobCreationHref,
539532
getSampleIdCellKey,
540533
getUniqueIdColumnMetadata,
541534
isDataClassEntity,
@@ -560,6 +553,7 @@ import { Pagination } from './internal/components/pagination/Pagination';
560553
import {
561554
createOrderedSnapshotSelectionKey,
562555
createSnapshotSelectionKey,
556+
createSnapshotSelectionKeyStr,
563557
getQueryModelExportParams,
564558
runDetailsColumnsForQueryModel,
565559
} from './public/QueryModel/utils';
@@ -906,6 +900,7 @@ import { ModalButtons } from './internal/ModalButtons';
906900
import { getSecurityTestAPIWrapper } from './internal/components/security/APIWrapper';
907901
import { getFolderTestAPIWrapper } from './internal/components/container/FolderAPIWrapper';
908902
import { getLabelsTestAPIWrapper } from './internal/components/labels/APIWrapper';
903+
import { getSamplesTestAPIWrapper } from './internal/components/samples/APIWrapper';
909904
import { OverlayTrigger, useOverlayTriggerState } from './internal/OverlayTrigger';
910905
import { Tooltip } from './internal/Tooltip';
911906
import { Popover } from './internal/Popover';
@@ -1169,8 +1164,6 @@ export {
11691164
AssayPickerTabs,
11701165
AssayProtocolModel,
11711166
AssayResultDataType,
1172-
AssayResultsForSamplesButton,
1173-
AssayResultsForSamplesMenuItem,
11741167
AssayRunDataType,
11751168
AssayRunOperation,
11761169
AssayStateModel,
@@ -1229,6 +1222,7 @@ export {
12291222
createMockWithRouteLeave,
12301223
createOrderedSnapshotSelectionKey,
12311224
createSnapshotSelectionKey,
1225+
createSnapshotSelectionKeyStr,
12321226
createWebDavDirectory,
12331227
DATA_CLASS_DESIGNER_ROLE,
12341228
DATA_IMPORT_FILE_SIZE_LIMITS,
@@ -1394,7 +1388,6 @@ export {
13941388
getImmediateChildLineageFilterValue,
13951389
getInactiveUsers,
13961390
getInitialParentChoices,
1397-
getJobCreationHref,
13981391
getJsonDateFormatString,
13991392
getJsonDateTimeFormatString,
14001393
getJsonFormatString,
@@ -1439,6 +1432,7 @@ export {
14391432
getSampleStatusColor,
14401433
getSampleStatusContainerFilter,
14411434
getSampleStatusType,
1435+
getSamplesTestAPIWrapper,
14421436
getSampleTypeDetails,
14431437
getSampleTypesFromTransactionIds,
14441438
getSchemaQuery,
@@ -1448,14 +1442,12 @@ export {
14481442
getSelectedDataDeprecated,
14491443
getSelectedPicklistSamples,
14501444
getSelectedRows,
1451-
getSelectedSampleIdsFromSelectionKey,
14521445
getSelectionLineageData,
14531446
getSourceDomainDefaultSystemFields,
14541447
getStoredAmountDisplay,
14551448
getTestAPIWrapper,
14561449
getTimelineEntityUrl,
14571450
getUniqueIdColumnMetadata,
1458-
getURLParamsForSampleSelectionKey,
14591451
getUserProperties,
14601452
getUserRoleDisplay,
14611453
getUsersWithPermissions,

packages/components/src/internal/actions.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -603,6 +603,10 @@ export interface SelectionResponse {
603603
selected: any[];
604604
}
605605

606+
// TODO: this method is only used by AssayImportPanels, and is needed in order to correctly get the filters needed when
607+
// fetching the selected samples. We should remove this method when we address Issue 53378. AssayImportDropdownSection,
608+
// and getImportItemsForAssayDefinitions, should be updated to create a snapshot selection key against exp.materials
609+
// before navigating to the assay import page, similar to what we do when creating workflow jobs.
606610
export async function getSelection(
607611
searchParams: URLSearchParams,
608612
schemaName?: string,
@@ -612,14 +616,12 @@ export async function getSelection(
612616
if (selectionKey) {
613617
let { keys, schemaQuery } = SchemaQuery.parseSelectionKey(selectionKey);
614618

615-
if (keys !== undefined) {
619+
if (keys !== undefined && keys !== '') {
616620
return { resolved: true, schemaQuery, selected: keys.split(';') };
617621
}
618622

619-
if (!schemaQuery) {
620-
if (schemaName && queryName) {
621-
schemaQuery = new SchemaQuery(schemaName, queryName);
622-
}
623+
if (!schemaQuery && schemaName && queryName) {
624+
schemaQuery = new SchemaQuery(schemaName, queryName);
623625
}
624626

625627
if (!schemaQuery) {

packages/components/src/internal/components/entities/AssayResultsForSamplesButton.test.tsx

Lines changed: 0 additions & 45 deletions
This file was deleted.

packages/components/src/internal/components/entities/AssayResultsForSamplesButton.tsx

Lines changed: 0 additions & 73 deletions
This file was deleted.

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

Lines changed: 0 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { List, Map } from 'immutable';
2-
import { Filter } from '@labkey/api';
32

43
import {
54
TEST_LKS_STARTER_MODULE_CONTEXT,
@@ -12,8 +11,6 @@ import { SchemaQuery } from '../../../public/SchemaQuery';
1211

1312
import { QueryInfo } from '../../../public/QueryInfo';
1413

15-
import { makeTestQueryModel } from '../../../public/QueryModel/testUtils';
16-
1714
import { ViewInfo } from '../../ViewInfo';
1815

1916
import { CellMessage, EditorModel, ValueDescriptor } from '../editable/models';
@@ -28,7 +25,6 @@ import {
2825
getEntityNoun,
2926
getIdentifyingColumns,
3027
getInitialParentChoices,
31-
getJobCreationHref,
3228
getSampleIdCellKey,
3329
parseEntityParentKey,
3430
sampleDeleteDependencyText,
@@ -275,60 +271,6 @@ describe('sampleDeleteDependencyText', () => {
275271
});
276272
});
277273

278-
describe('getJobCreationHref', () => {
279-
const schemaQuery = new SchemaQuery('s', 'q');
280-
const queryInfo = new QueryInfo({ pkCols: ['pk'], schemaQuery });
281-
const modelId = 'id';
282-
const queryModel = makeTestQueryModel(schemaQuery, queryInfo, undefined, undefined, undefined, modelId);
283-
284-
test('singleSelect', () => {
285-
expect(getJobCreationHref(queryModel).toString()).toContain('selectionKey=id');
286-
const queryModelWithKeyValue = queryModel.mutate({ keyValue: 'key' });
287-
expect(getJobCreationHref(queryModelWithKeyValue).toString()).toContain('selectionKey=appkey%7Cs%2Fq%7Ckey');
288-
});
289-
test('filters', () => {
290-
expect(getJobCreationHref(queryModel, undefined, true).toString()).toBe('/workflow/new?selectionKey=id');
291-
292-
const queryModelWithFilters = queryModel.mutate({ filterArray: [Filter.create('TEST COL', 'TEST VALUE')] });
293-
expect(getJobCreationHref(queryModelWithFilters, undefined, true).toString()).toBe(
294-
'/workflow/new?selectionKey=id&query.TEST%20COL~eq=TEST%20VALUE'
295-
);
296-
});
297-
test('with filters but ignoreFilter', () => {
298-
expect(getJobCreationHref(queryModel, undefined, true).toString()).toBe('/workflow/new?selectionKey=id');
299-
300-
const queryModelWithFilters = queryModel.mutate({ filterArray: [Filter.create('TEST COL', 'TEST VALUE')] });
301-
expect(
302-
getJobCreationHref(queryModelWithFilters, undefined, true, undefined, false, null, true).toString()
303-
).toBe('/workflow/new?selectionKey=id&selectionKeyType=snapshot');
304-
});
305-
test('templateId', () => {
306-
expect(getJobCreationHref(queryModel).toString()).not.toContain('templateId');
307-
expect(getJobCreationHref(queryModel, 1).toString()).toContain('templateId=1');
308-
expect(getJobCreationHref(queryModel, '1').toString()).toContain('templateId=1');
309-
});
310-
test('samplesIncluded', () => {
311-
expect(getJobCreationHref(queryModel).toString()).toBe('/workflow/new?selectionKey=id&sampleTab=search');
312-
expect(getJobCreationHref(queryModel, undefined, true).toString()).toBe('/workflow/new?selectionKey=id');
313-
});
314-
test('picklistName', () => {
315-
expect(getJobCreationHref(queryModel).toString()).not.toContain('picklistName');
316-
expect(getJobCreationHref(queryModel, undefined, false, 'name').toString()).toContain('picklistName=name');
317-
});
318-
test('isAssay', () => {
319-
expect(getJobCreationHref(queryModel).toString()).not.toContain('isAssay');
320-
expect(getJobCreationHref(queryModel, undefined, true, undefined, true).toString()).toBe(
321-
'/workflow/new?selectionKey=id'
322-
);
323-
expect(getJobCreationHref(queryModel, undefined, true, undefined, false, 'sampleFieldKey').toString()).toBe(
324-
'/workflow/new?selectionKey=id'
325-
);
326-
expect(getJobCreationHref(queryModel, undefined, true, undefined, true, 'sampleFieldKey').toString()).toBe(
327-
'/workflow/new?selectionKey=id&assayProtocol=s&isAssay=true&sampleFieldKey=sampleFieldKey'
328-
);
329-
});
330-
});
331-
332274
describe('getIdentifyingColumns', () => {
333275
const columns = [
334276
{ fieldKey: 'intCol', jsonType: 'int', name: 'intCol' },

0 commit comments

Comments
 (0)