Skip to content

Commit

Permalink
fix(protocol-designer): cannot move trash into slot with a module (#1…
Browse files Browse the repository at this point in the history
  • Loading branch information
jerader authored Mar 13, 2024
1 parent 7382daf commit 91498bd
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -129,9 +129,7 @@ describe('Edit Modules Modal', () => {
render(props)
screen.getByText('Thermocycler module')
screen.getByText('warning')
screen.getByText(
'Slot 10 is occupied by a Heater-Shaker. Other modules cannot be placed in front of or behind a Heater-Shaker.'
)
screen.getByText('Cannot place module')
screen.getByText('mock SlotMap')
})
it('renders a heater-shaker for flex and can select different slots', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -395,7 +395,11 @@ const EditModulesModalComponent = (
{slotIssue ? (
<PDAlert
alertType="warning"
title={validation.selectedSlot}
title={
robotType === OT2_ROBOT_TYPE
? t('alert:module_placement.SLOT_OCCUPIED.title')
: validation.selectedSlot
}
description={''}
/>
) : null}
Expand Down
19 changes: 16 additions & 3 deletions protocol-designer/src/step-forms/utils/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { SPAN7_8_10_11_SLOT, TC_SPAN_SLOTS } from '../../constants'
import { hydrateField } from '../../steplist/fieldLevel'
import { LabwareDefByDefURI } from '../../labware-defs'
import type { DeckSlotId, ModuleType } from '@opentrons/shared-data'
import {
import type {
AdditionalEquipmentOnDeck,
InitialDeckSetup,
ModuleOnDeck,
Expand Down Expand Up @@ -120,14 +120,23 @@ export const getSlotIdsBlockedBySpanning = (

return []
}
// TODO(jr, 3/13/24): refactor this util it is messy and confusing
export const getSlotIsEmpty = (
initialDeckSetup: InitialDeckSetup,
slot: string,
/* we don't always want to count the slot as full if there is a staging area present
since labware/wasteChute can still go on top of staging areas **/
includeStagingAreas?: boolean
): boolean => {
// special-casing the TC's slot A1 for the Flex
if (
slot === 'cutoutA1' &&
Object.values(initialDeckSetup.modules).find(
module => module.type === THERMOCYCLER_MODULE_TYPE
)
) {
return false
} else if (
slot === SPAN7_8_10_11_SLOT &&
TC_SPAN_SLOTS.some(slot => !getSlotIsEmpty(initialDeckSetup, slot))
) {
Expand Down Expand Up @@ -157,11 +166,15 @@ export const getSlotIsEmpty = (
return additionalEquipment.location?.includes(slot) && includeStaging
}
})

return (
[
...values(initialDeckSetup.modules).filter(
(moduleOnDeck: ModuleOnDeck) => moduleOnDeck.slot === slot
(moduleOnDeck: ModuleOnDeck) => {
const cutoutForSlotOt2 = slotToCutoutOt2Map[slot]
return cutoutForSlotOt2 != null
? moduleOnDeck.slot === slot
: slot.includes(moduleOnDeck.slot)
}
),
...values(initialDeckSetup.labware).filter(
(labware: LabwareOnDeckType) => labware.slot === slot
Expand Down

0 comments on commit 91498bd

Please sign in to comment.