diff --git a/components/src/atoms/InputField/index.tsx b/components/src/atoms/InputField/index.tsx index 8a9eb76c2d8..8933ca5345c 100644 --- a/components/src/atoms/InputField/index.tsx +++ b/components/src/atoms/InputField/index.tsx @@ -234,6 +234,7 @@ export const InputField = React.forwardRef( return ( Mixing{{times}} times in{{labware}}", + "mix_repetitions": "Mix repetitions", "module": "Module", "move_labware": { "gripper": "Move{{labware}}tousing gripper", @@ -68,7 +69,7 @@ "select_dispense_wells": "Select destination wells using a {{displayName}}", "select_labware": "Select labware", "select_mix_labware": "Select a mix labware", - "select_mix_wells": "Select wells using a {{displayName}}", + "select_wells": "Select wells using a {{displayName}}", "select_nozzles": "Select nozzles", "select_pipette": "Select a pipette", "select_tip_location": "Select pick up tip location", diff --git a/protocol-designer/src/assets/localization/en/tooltip.json b/protocol-designer/src/assets/localization/en/tooltip.json index 3bd438e8587..32e195bc390 100644 --- a/protocol-designer/src/assets/localization/en/tooltip.json +++ b/protocol-designer/src/assets/localization/en/tooltip.json @@ -28,41 +28,43 @@ "step_fields": { "defaults": { - "aspirate_wells": "Selected source wells", - "aspirate_labware": "Select a source labware to use", "aspirate_airGap_checkbox": "Aspirate air before moving to next well", "aspirate_delay_checkbox": "Delay pipette movement after each aspirate in this step, including any Air Gap", "aspirate_delay_mmFromBottom": "Distance from the bottom of the well", "aspirate_flowRate": "The speed at which the pipette aspirates", + "aspirate_labware": "Select a source labware to use", "aspirate_mix_checkbox": "Pipette up and down before aspirating", "aspirate_mmFromBottom": "Adjust tip position for aspirate", "aspirate_touchTip_checkbox": "Touch tip to each side of well after aspirating", "aspirate_touchTip_mmFromBottom": "Distance from the bottom of the well", + "aspirate_wells": "Selected source wells", "blowout_checkbox": "Where to dispose of remaining volume in tip", + "blowout_flowRate": "Blowout speed", "blowout_location": "Where to dispose of remaining volume in tip", + "blowout_z_offset": "The height at which blowout occurs from the top of the well", "changeTip": "Choose when the robot picks up fresh tips", - "dispense_wells": "Selected destination wells", - "dispense_labware": "Select a destination labware to use", "dispense_airGap_checkbox": "Aspirate air before moving to Trash to dispose of tip. Tip will be disposed of at the end of steps using this setting.", "dispense_delay_checkbox": "Delay pipette movement after each dispense in this step", "dispense_delay_mmFromBottom": "Distance from the bottom of the well", "dispense_flowRate": "The speed at which the pipette dispenses", + "dispense_labware": "Select a destination labware to use", "dispense_mix_checkbox": "Pipette up and down after dispensing", "dispense_mmFromBottom": "Adjust tip position for dispense", "dispense_touchTip_checkbox": "Touch tip to each side of well after dispensing and other dispense advanced setting commands", "dispense_touchTip_mmFromBottom": "Distance from the bottom of the well", + "dispense_wells": "Selected destination wells", "disposalVolume_checkbox": "Aspirate extra volume that is disposed of after a multi-dispense is complete. We recommend a disposal volume of at least the pipette's minimum.", "dropTip_location": "Choose where you would like to drop tip", "heaterShakerSetTimer": "Once this counter has elapsed, the module will deactivate the heater and shaker", + "labware": "Select a labware to use", "mix_mmFromBottom": "Adjust tip position", "mix_touchTip_checkbox": "Touch tip to each side of the well after mixing", "mix_touchTip_mmFromBottom": "Distance from the bottom of the well", "pipette": "Select the pipette you want to use", "preWetTip": "Pre-wet pipette tip by aspirating and dispensing 2/3 of the tip's max volume", - "volume": "Volume to dispense in each well", - "blowout_z_offset": "The height at which blowout occurs from the top of the well", - "blowout_flowRate": "Blowout speed", - "setTemperature": "Select the temperature to set your module to" + "setTemperature": "Select the temperature to set your module to", + "wells": "Select wells", + "volume": "Volume to dispense in each well" }, "indeterminate": { "aspirate_airGap_checkbox": "Not all selected steps are using this setting", @@ -79,6 +81,7 @@ }, "mix": { "disabled": { + "wells": "Select a labware before selecting wells", "mix_mmFromBottom": "Tip position adjustment is not supported", "blowout_z_offset": "Blowout location and destination labware must first be selected" } diff --git a/protocol-designer/src/molecules/InputStepFormField/index.tsx b/protocol-designer/src/molecules/InputStepFormField/index.tsx index 1c05b07e1fc..93dde06295f 100644 --- a/protocol-designer/src/molecules/InputStepFormField/index.tsx +++ b/protocol-designer/src/molecules/InputStepFormField/index.tsx @@ -1,14 +1,5 @@ import { useTranslation } from 'react-i18next' -import { - COLORS, - DIRECTION_COLUMN, - Flex, - Icon, - InputField, - SPACING, - Tooltip, - useHoverTooltip, -} from '@opentrons/components' +import { Flex, InputField, SPACING } from '@opentrons/components' import type { FieldProps } from '../../components/StepEditForm/types' interface InputStepFormFieldProps extends FieldProps { @@ -38,29 +29,14 @@ export function InputStepFormField( ...otherProps } = props const { t } = useTranslation('tooltip') - const [targetProps, tooltipProps] = useHoverTooltip() return ( - - - {showTooltip ? ( - <> - - - - - {t(`${tooltipContent}`)} - - - ) : null} - + { dispatch(stepsActions.setWellSelectionLabwareKey(key)) } + const handleOpen = (): void => { if (onFieldFocus) { onFieldFocus() @@ -109,7 +110,7 @@ export const WellSelectionField = ( {t(`tooltip:${tooltipContent}`)} TODO: wire this up +import { useSelector } from 'react-redux' +import { useTranslation } from 'react-i18next' +import { DIRECTION_COLUMN, Divider, Flex } from '@opentrons/components' +import { InputStepFormField } from '../../../../../../molecules' +import { + getLabwareEntities, + getPipetteEntities, +} from '../../../../../../step-forms/selectors' +import { getEnableReturnTip } from '../../../../../../feature-flags/selectors' +import { + ChangeTipField, + DropTipField, + LabwareField, + PartialTipField, + PickUpTipField, + PipetteField, + TipWellSelectionField, + TiprackField, + VolumeField, + WellSelectionField, +} from '../../PipetteFields' +import type { StepFormProps } from '../../types' + +export function MixTools(props: StepFormProps): JSX.Element { + const { propsForFields, formData, toolboxStep } = props + const pipettes = useSelector(getPipetteEntities) + const enableReturnTip = useSelector(getEnableReturnTip) + const labwares = useSelector(getLabwareEntities) + const { t } = useTranslation(['application', 'form']) + const is96Channel = + propsForFields.pipette.value != null && + pipettes[String(propsForFields.pipette.value)].name === 'p1000_96' + const userSelectedPickUpTipLocation = + labwares[String(propsForFields.pickUpTip_location.value)] != null + const userSelectedDropTipLocation = + labwares[String(propsForFields.dropTip_location.value)] != null + + return toolboxStep === 0 ? ( + + + {is96Channel ? : null} + + + + + + + + + + + + + + + {enableReturnTip ? ( + <> + + {userSelectedPickUpTipLocation ? ( + <> + + + + ) : null} + + ) : null} + + + {userSelectedDropTipLocation && enableReturnTip ? ( + <> + + + + ) : null} + + ) : ( +
wire this up
+ ) }