@@ -212,6 +212,37 @@ const useLogic = (isExprCalls) => {
212212 // filters
213213 const [ filters , setFilters ] = useState ( { } ) ;
214214
215+ const resetForm = ( isSpeciesChange = false , preserveGenes = false ) => {
216+ // console.log(`[useLogic.resetForm] resetForm called with:`, {isSpeciesChange, preserveGenes});
217+ if ( ! preserveGenes ) {
218+ // console.log(`[useLogic.resetForm] Clearing genes in resetForm`);
219+ setSelectedGene ( [ ] ) ;
220+ }
221+ setSelectedCellTypes ( [ ] ) ;
222+ setSelectedStrain ( [ ] ) ;
223+ setSelectedTissue ( [ ] ) ;
224+ setSelectedSexes ( [ ] ) ;
225+ setSelectedDevStages ( [ ] ) ;
226+ setHasCellTypeSubStructure ( true ) ;
227+ setHasTissueSubStructure ( true ) ;
228+ setDevStageSubStructure ( true ) ;
229+ if ( ! isSpeciesChange ) {
230+ setSelectedSpecies ( EMPTY_SPECIES_VALUE ) ;
231+ setSelectedExpOrAssay ( [ ] ) ;
232+ }
233+ } ;
234+
235+ const getSexesAndDevStageForSpecies = ( ) => {
236+ api . search . species . speciesDevelopmentSexe ( selectedSpecies . value ) . then ( ( resp ) => {
237+ if ( resp . code === 200 ) {
238+ setSpeciesSexes ( resp . data ?. requestDetails ?. requestedSpeciesSexes ) ;
239+ setDevStages ( resp . data ?. requestDetails ?. requestedSpeciesDevStageOntology ) ;
240+ } else {
241+ setSpeciesSexes ( [ ] ) ;
242+ }
243+ } ) ;
244+ } ;
245+
215246 const updateSelectedSpecies = ( newSpecies , preserveGenes = false ) => {
216247 setSelectedSpecies ( newSpecies ) ;
217248 if ( newSpecies . value !== EMPTY_SPECIES_VALUE . value ) {
@@ -933,17 +964,6 @@ const useLogic = (isExprCalls) => {
933964 } ) ;
934965 } ;
935966
936- const getSexesAndDevStageForSpecies = ( ) => {
937- api . search . species . speciesDevelopmentSexe ( selectedSpecies . value ) . then ( ( resp ) => {
938- if ( resp . code === 200 ) {
939- setSpeciesSexes ( resp . data ?. requestDetails ?. requestedSpeciesSexes ) ;
940- setDevStages ( resp . data ?. requestDetails ?. requestedSpeciesDevStageOntology ) ;
941- } else {
942- setSpeciesSexes ( [ ] ) ;
943- }
944- } ) ;
945- } ;
946-
947967 const AutoCompleteByType = ( type , mappingFn ) =>
948968 useCallback (
949969 async ( query ) => {
@@ -1120,6 +1140,49 @@ const useLogic = (isExprCalls) => {
11201140 useEffect ( ( ) => {
11211141 // console.log(`[useLogic.js] loc.search CHANGED:`, loc.search);
11221142
1143+ // Add function to process gene list
1144+ const processGeneList = async ( geneListParam ) => {
1145+ if ( ! geneListParam ) return ;
1146+
1147+ setIsProcessingGeneList ( true ) ;
1148+ const geneIds = geneListParam . split ( / [ \r \n ] + / ) ;
1149+
1150+ try {
1151+ // Get search results for all genes
1152+ const searchResults = await Promise . all ( geneIds . map ( ( geneId ) => api . search . genes . geneSearchResult ( geneId ) ) ) ;
1153+
1154+ // Process results
1155+ const validResults = searchResults . filter (
1156+ ( result ) => result . code === 200 && result . data . result . totalMatchCount === 1
1157+ ) ;
1158+
1159+ // Set species
1160+ const firstSpecies = validResults [ 0 ] . data . result . geneMatches [ 0 ] . gene . species ;
1161+ const speciesValue = {
1162+ label : getSpeciesLabel ( firstSpecies ) ,
1163+ value : firstSpecies . id ,
1164+ } ;
1165+
1166+ // Set genes
1167+ const genes = validResults . map ( ( result ) => {
1168+ const { gene } = result . data . result . geneMatches [ 0 ] ;
1169+ return {
1170+ label : getGeneLabel ( gene ) ,
1171+ value : gene . geneId ,
1172+ } ;
1173+ } ) ;
1174+
1175+ // Update state with species and genes
1176+ setIsInitializingFromUrl ( true ) ;
1177+ setSelectedSpeciesFromUrl ( speciesValue ) ;
1178+ setSelectedGene ( genes ) ;
1179+ } catch ( error ) {
1180+ console . error ( 'Error processing gene list:' , error ) ;
1181+ } finally {
1182+ setIsProcessingGeneList ( false ) ;
1183+ }
1184+ } ;
1185+
11231186 const searchParams = new URLSearchParams ( loc . search ) ;
11241187 const geneList = searchParams . get ( 'gene_list' ) ;
11251188 if ( geneList ) {
@@ -1133,26 +1196,6 @@ const useLogic = (isExprCalls) => {
11331196 }
11341197 } , [ loc . search ] ) ;
11351198
1136- const resetForm = ( isSpeciesChange = false , preserveGenes = false ) => {
1137- // console.log(`[useLogic.resetForm] resetForm called with:`, {isSpeciesChange, preserveGenes});
1138- if ( ! preserveGenes ) {
1139- // console.log(`[useLogic.resetForm] Clearing genes in resetForm`);
1140- setSelectedGene ( [ ] ) ;
1141- }
1142- setSelectedCellTypes ( [ ] ) ;
1143- setSelectedStrain ( [ ] ) ;
1144- setSelectedTissue ( [ ] ) ;
1145- setSelectedSexes ( [ ] ) ;
1146- setSelectedDevStages ( [ ] ) ;
1147- setHasCellTypeSubStructure ( true ) ;
1148- setHasTissueSubStructure ( true ) ;
1149- setDevStageSubStructure ( true ) ;
1150- if ( ! isSpeciesChange ) {
1151- setSelectedSpecies ( EMPTY_SPECIES_VALUE ) ;
1152- setSelectedExpOrAssay ( [ ] ) ;
1153- }
1154- } ;
1155-
11561199 // Expand or collapse a term
11571200 const onToggleExpandCollapse = ( term ) => {
11581201 // console.log(`[useLogic] onToggleExpandCollapse:\n${JSON.stringify(term)}`);
@@ -1215,49 +1258,6 @@ const useLogic = (isExprCalls) => {
12151258 // console.log(`[useLogic] DONE onToggleExpandCollapse.`);
12161259 } ;
12171260
1218- // Add function to process gene list
1219- const processGeneList = async ( geneListParam ) => {
1220- if ( ! geneListParam ) return ;
1221-
1222- setIsProcessingGeneList ( true ) ;
1223- const geneIds = geneListParam . split ( / [ \r \n ] + / ) ;
1224-
1225- try {
1226- // Get search results for all genes
1227- const searchResults = await Promise . all ( geneIds . map ( ( geneId ) => api . search . genes . geneSearchResult ( geneId ) ) ) ;
1228-
1229- // Process results
1230- const validResults = searchResults . filter (
1231- ( result ) => result . code === 200 && result . data . result . totalMatchCount === 1
1232- ) ;
1233-
1234- // Set species
1235- const firstSpecies = validResults [ 0 ] . data . result . geneMatches [ 0 ] . gene . species ;
1236- const speciesValue = {
1237- label : getSpeciesLabel ( firstSpecies ) ,
1238- value : firstSpecies . id ,
1239- } ;
1240-
1241- // Set genes
1242- const genes = validResults . map ( ( result ) => {
1243- const { gene } = result . data . result . geneMatches [ 0 ] ;
1244- return {
1245- label : getGeneLabel ( gene ) ,
1246- value : gene . geneId ,
1247- } ;
1248- } ) ;
1249-
1250- // Update state with species and genes
1251- setIsInitializingFromUrl ( true ) ;
1252- setSelectedSpeciesFromUrl ( speciesValue ) ;
1253- setSelectedGene ( genes ) ;
1254- } catch ( error ) {
1255- console . error ( 'Error processing gene list:' , error ) ;
1256- } finally {
1257- setIsProcessingGeneList ( false ) ;
1258- }
1259- } ;
1260-
12611261 return {
12621262 searchResult,
12631263 maxExpScore,
0 commit comments