Skip to content

Commit

Permalink
Merge pull request #233 from bento-platform/chore/network-chrom-ux
Browse files Browse the repository at this point in the history
chore: address confusing UX for network chromosome/assembly
  • Loading branch information
davidlougheed authored Nov 26, 2024
2 parents e11a71a + 688e749 commit 09e460e
Showing 1 changed file with 21 additions and 14 deletions.
35 changes: 21 additions & 14 deletions src/js/components/Beacon/BeaconCommon/VariantsForm.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { type CSSProperties, useEffect, useMemo } from 'react';
import { type CSSProperties, useEffect, useState } from 'react';

import { Col, Form, Row } from 'antd';
import type { DefaultOptionType } from 'antd/es/select/index';
Expand Down Expand Up @@ -70,17 +70,24 @@ const VariantsForm = ({ isNetworkQuery, beaconAssemblyIds }: VariantsFormProps)
const form = Form.useFormInstance();
const currentAssemblyID = Form.useWatch('Assembly ID', form);

// Right now, we cannot figure out the contig options for the network, so we fall back to a normal input box.
const availableContigs = useMemo<ContigOptionType[]>(
() =>
!isNetworkQuery && currentAssemblyID && genomesByID[currentAssemblyID]
? genomesByID[currentAssemblyID].contigs
.map(contigToOption)
.sort(contigOptionSort)
.filter(filterOutHumanLikeExtraContigs)
: [],
[isNetworkQuery, currentAssemblyID, genomesByID]
);
const [availableContigs, setAvailableContigs] = useState<ContigOptionType[]>([]);

useEffect(() => {
// Right now, we cannot figure out the contig options for the network, so we fall back to a normal input box.
if (!isNetworkQuery && currentAssemblyID && genomesByID[currentAssemblyID]) {
setAvailableContigs(
genomesByID[currentAssemblyID].contigs
.map(contigToOption)
.sort(contigOptionSort)
.filter(filterOutHumanLikeExtraContigs)
);
} else {
// Keep existing memory address for existing empty array if availableContigs was already empty, to avoid
// re-render/clearing effect.
setAvailableContigs((ac) => (ac.length ? [] : ac));
}
}, [isNetworkQuery, currentAssemblyID, genomesByID]);

const assemblySelect = !!availableContigs.length;

useEffect(() => {
Expand All @@ -92,7 +99,7 @@ const VariantsForm = ({ isNetworkQuery, beaconAssemblyIds }: VariantsFormProps)
const formFields = {
referenceName: {
name: 'Chromosome',
placeholder: !currentAssemblyID ? t('beacon.select_asm') : '',
placeholder: !isNetworkQuery && !currentAssemblyID ? t('beacon.select_asm') : '',
initialValue: '',
},
start: {
Expand Down Expand Up @@ -130,7 +137,7 @@ const VariantsForm = ({ isNetworkQuery, beaconAssemblyIds }: VariantsFormProps)
<Col span={8}>
<VariantInput
field={formFields.referenceName}
disabled={variantsError || !currentAssemblyID}
disabled={variantsError || (!isNetworkQuery && !currentAssemblyID)}
mode={assemblySelect ? { type: 'select', options: availableContigs } : { type: 'input' }}
/>
</Col>
Expand Down

0 comments on commit 09e460e

Please sign in to comment.