Skip to content

Commit 4430341

Browse files
shiyaochenshiyaochen
shiyaochen
authored and
shiyaochen
committed
remove directing mapping and use getFlexNameConversion to get the pipette load name
1 parent 63f8e60 commit 4430341

File tree

6 files changed

+29
-34
lines changed

6 files changed

+29
-34
lines changed

protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/LiquidClassesStepTools.tsx

+11-4
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,14 @@ import {
1111
import {
1212
getDisabledLiquidClasses,
1313
getSortedLiquidClassDefs,
14-
PIPETTE_NAMES_MAP,
14+
isFlexPipette,
1515
} from '@opentrons/shared-data'
16+
import { selectors as stepFormSelectors } from '../../../../../../step-forms'
1617
import { getLiquidEntities } from '../../../../../../step-forms/selectors'
1718
import { getLiquidClassDisplayName } from '../../../../../../liquid-defs/utils'
18-
import { selectors as stepFormSelectors } from '../../../../../../step-forms'
19+
import { getFlexNameConversion } from '../../../../../../file-data/selectors/utils'
1920
import type { ChangeEvent, Dispatch, SetStateAction } from 'react'
21+
import type { LiquidClassesOption } from '@opentrons/shared-data'
2022
import type { FieldPropsByName } from '../../types'
2123
import type { FormData } from '../../../../../../form-types'
2224

@@ -35,7 +37,12 @@ export const LiquidClassesStepTools = ({
3537
const pipetteEntities = useSelector(stepFormSelectors.getPipetteEntities)
3638
const sortedLiquidClassDefs = getSortedLiquidClassDefs()
3739
const pipetteName = pipetteEntities[formData.pipette]?.name
38-
const pipetteModel = PIPETTE_NAMES_MAP[pipetteName]
40+
const pipetteSpec = pipetteEntities[formData.pipette]?.spec
41+
const pipetteModel =
42+
isFlexPipette(pipetteName) === true
43+
? getFlexNameConversion(pipetteSpec)
44+
: pipetteName
45+
3946
const { volume, tipRack, pipette, path } = formData
4047
const disabledLiquidClasses = getDisabledLiquidClasses(
4148
{
@@ -137,7 +144,7 @@ export const LiquidClassesStepTools = ({
137144
align: 'vertical',
138145
}}
139146
largeDesktopBorderRadius
140-
disabled={disabledLiquidClasses?.has(name)}
147+
disabled={disabledLiquidClasses?.has(name as LiquidClassesOption)}
141148
/>
142149
)
143150
})}

protocol-designer/src/pages/Designer/ProtocolSteps/StepForm/StepTools/MoveLiquidTools/__tests__/LiquidClassesStepTools.test.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ describe('LiquidClassesStepMoveLiquidTools', () => {
4444
vi.mocked(getPipetteEntities).mockReturnValue({
4545
[pipetteId]: {
4646
name: 'p50_single_flex',
47-
spec: {} as any,
47+
spec: { channels: 1, liquids: { default: { maxVolume: 50 } } } as any,
4848
id: pipetteId,
4949
tiprackLabwareDef: [],
5050
tiprackDefURI: ['mockDefURI1', 'mockDefURI2'],

protocol-designer/src/steplist/formLevel/test/warnings.test.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -339,14 +339,18 @@ describe('Max dispense well volume', () => {
339339

340340
describe('Incompatible liquid classes', () => {
341341
let fieldsWithPipette: {
342-
pipette: { name: string }
342+
pipette: {
343+
name: string
344+
spec: { channels: number; liquids: { default: { maxVolume: number } } }
345+
}
343346
path: string
344347
tipRack: string
345348
}
346349
beforeEach(() => {
347350
fieldsWithPipette = {
348351
pipette: {
349352
name: 'p50_single_flex',
353+
spec: { channels: 1, liquids: { default: { maxVolume: 50 } } },
350354
},
351355
path: 'multiDispense',
352356
tipRack: 'opentrons/opentrons_flex_96_tiprack_50ul/1',

protocol-designer/src/steplist/formLevel/warnings.tsx

+10-3
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@ import {
22
MIN_LIQUID_CLASSES_COMPATIBLE_VOLUME,
33
getIncompatibleLiquidClasses,
44
getWellTotalVolume,
5-
PIPETTE_NAMES_MAP,
5+
isFlexPipette,
66
} from '@opentrons/shared-data'
7+
import { getFlexNameConversion } from '../../file-data/selectors/utils'
78
import type { LabwareDefinition2, PipetteName } from '@opentrons/shared-data'
89
import type { FormError } from './errors'
910

@@ -196,8 +197,11 @@ export const incompatiblePipettePath = (
196197
const { pipette, tipRack, path } = fields
197198
if (!pipette) return null
198199
const pipetteName = pipette.name as PipetteName
200+
const pipetteModel =
201+
isFlexPipette(pipetteName) === true
202+
? getFlexNameConversion(pipette.spec)
203+
: pipetteName
199204

200-
const pipetteModel = PIPETTE_NAMES_MAP[pipetteName]
201205
if (path === 'multiDispense') {
202206
const incompatiblePath = getIncompatibleLiquidClasses(pipetteModel, p =>
203207
p.byTipType.some(
@@ -218,7 +222,10 @@ export const incompatiblePipetteTiprack = (
218222
if (!pipette) return null
219223
const pipetteName = pipette.name as PipetteName
220224

221-
const pipetteModel = PIPETTE_NAMES_MAP[pipetteName]
225+
const pipetteModel =
226+
isFlexPipette(pipetteName) === true
227+
? getFlexNameConversion(pipette.spec)
228+
: pipetteName
222229

223230
const incompatiblePipette = getIncompatibleLiquidClasses(pipetteModel)
224231
const incompatibleTiprack = getIncompatibleLiquidClasses(pipetteModel, p =>

shared-data/js/constants.ts

-23
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import type { CutoutFixtureId, CutoutId, AddressableAreaName } from '../deck'
2-
import type { PipetteName } from './pipettes'
32
import type { ModuleModel, ModuleType } from './types'
43

54
// constants for dealing with robot coordinate system (eg in labwareTools)
@@ -665,25 +664,3 @@ export const WELL_BOTTOM: 'well-bottom' = 'well-bottom'
665664
export const LIQUID_MENISCUS: 'liquid-meniscus' = 'liquid-meniscus'
666665

667666
export const MIN_LIQUID_CLASSES_COMPATIBLE_VOLUME = 10
668-
669-
export const PIPETTE_NAMES_MAP: Record<PipetteName, string> = {
670-
p10_single: 'p10_single',
671-
p10_multi: 'p10_multi',
672-
p20_single_gen2: 'p20_single_gen2',
673-
p20_multi_gen2: 'p20_multi_gen2',
674-
p50_single: 'p50_single',
675-
p50_multi: 'p50_multi',
676-
p50_single_flex: 'flex_1channel_50',
677-
p50_multi_flex: 'flex_8channel_50',
678-
p300_single: 'p300_single',
679-
p300_multi: 'p300_multi',
680-
p300_single_gen2: 'p300_single_gen2',
681-
p300_multi_gen2: 'p300_multi_gen2',
682-
p1000_single: 'p1000_single',
683-
p1000_single_gen2: 'p1000_single_gen2',
684-
p1000_single_flex: 'flex_1channel_1000',
685-
p1000_multi_flex: 'flex_8channel_1000',
686-
p1000_multi_em_flex: 'flex_8channel_1000_em',
687-
p1000_96: 'flex_96channel_1000',
688-
p200_96: 'flex_96channel_200',
689-
}

shared-data/js/helpers/index.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,7 @@ export const getSortedLiquidClassDefs = (): Record<string, LiquidClass> => {
437437

438438
export const getIncompatibleLiquidClasses = (
439439
pipetteModel: string,
440-
additionalFilter?: (p: any) => boolean
440+
additionalFilter?: (p: any) => boolean | null
441441
): LiquidClassesOption[] => {
442442
const liquidClassDefs = getAllLiquidClassDefs()
443443

@@ -447,7 +447,7 @@ export const getIncompatibleLiquidClasses = (
447447
!liquidClass.byPipette?.some(
448448
p =>
449449
p.pipetteModel === pipetteModel &&
450-
(additionalFilter ? additionalFilter(p) : true)
450+
(additionalFilter != null ? additionalFilter(p) : true)
451451
)
452452
)
453453
.map(liquidClass => liquidClass.displayName)

0 commit comments

Comments
 (0)