@@ -32,14 +32,15 @@ import {
32
32
moveDatasetMoleculeUpDown ,
33
33
getFirstUnlockedCompoundAfter ,
34
34
getFirstUnlockedCompoundBefore ,
35
- isDatasetCompoundIterrable ,
36
35
isDatasetCompoundLocked ,
37
36
getAllVisibleButNotLockedCompounds ,
38
37
getAllVisibleButNotLockedSelectedCompounds ,
39
38
isCompoundLocked ,
40
39
getFirstUnlockedSelectedCompoundAfter ,
41
40
moveSelectedDatasetMoleculeUpDown ,
42
- getFirstUnlockedSelectedCompoundBefore
41
+ getFirstUnlockedSelectedCompoundBefore ,
42
+ resetSelectedCompoundIterator ,
43
+ resetDatasetIterator
43
44
} from '../redux/dispatchActions' ;
44
45
45
46
import { isAnyInspirationTurnedOn , getFilteredDatasetMoleculeList } from '../redux/selectors' ;
@@ -87,6 +88,7 @@ import RemoveShoppingCartIcon from '@mui/icons-material/RemoveShoppingCart';
87
88
import { compoundsColors } from '../../preview/compounds/redux/constants' ;
88
89
import { LockVisibleCompoundsDialog } from '../lockVisibleCompoundsDialog' ;
89
90
import { fabClasses } from '@mui/material' ;
91
+ import useClipboard from 'react-use-clipboard' ;
90
92
91
93
const useStyles = makeStyles ( theme => ( {
92
94
container : {
@@ -461,7 +463,7 @@ const DatasetMoleculeView = memo(
461
463
// #1249 dataset molecules currently could use side observation molecule for some renders
462
464
const allMolecules = useSelector ( state => state . apiReducers . all_mol_lists ) ;
463
465
const [ pdbData , setPdbData ] = useState ( null ) ;
464
- const isPdbAvailable = ! ! ( data && ( data . pdb_info || pdbData ) ) ;
466
+ const isPdbAvailable = ! ! ( data && ( data . pdb_info || data . site_observation_code ) ) ;
465
467
466
468
useEffect ( ( ) => {
467
469
if ( data . site_observation_code ) {
@@ -470,7 +472,7 @@ const DatasetMoleculeView = memo(
470
472
setPdbData ( molecule ) ;
471
473
}
472
474
} else {
473
- setPdbData ( data . pdb_info ) ;
475
+ setPdbData ( data ) ;
474
476
}
475
477
} , [ data , allMolecules ] ) ;
476
478
@@ -504,6 +506,14 @@ const DatasetMoleculeView = memo(
504
506
const current_style =
505
507
isLigandOn || isProteinOn || isComplexOn || isSurfaceOn ? selected_style : not_selected_style ;
506
508
509
+ const resetIterator = ( ) => {
510
+ if ( inSelectedCompoundsList ) {
511
+ dispatch ( resetSelectedCompoundIterator ( ) ) ;
512
+ } else {
513
+ dispatch ( resetDatasetIterator ( datasetID ) ) ;
514
+ }
515
+ } ;
516
+
507
517
const addNewLigand = ( skipTracking = false ) => {
508
518
dispatch (
509
519
withDisabledDatasetMoleculeNglControlButton ( datasetID , currentID , 'ligand' , ( ) => {
@@ -522,6 +532,7 @@ const DatasetMoleculeView = memo(
522
532
const [ loadingAll , setLoadingAll ] = useState ( false ) ;
523
533
const [ loadingLigand , setLoadingLigand ] = useState ( false ) ;
524
534
const onLigand = calledFromSelectAll => {
535
+ resetIterator ( ) ;
525
536
setLoadingLigand ( true ) ;
526
537
if ( calledFromSelectAll === true && selectedAll . current === true ) {
527
538
if ( isLigandOn === false ) {
@@ -544,22 +555,29 @@ const DatasetMoleculeView = memo(
544
555
} ;
545
556
546
557
const removeSelectedProtein = ( skipTracking = false ) => {
547
- // dispatch(removeDatasetHitProtein(stage, data, colourToggle, datasetID, skipTracking));
548
- dispatch ( removeHitProtein ( stage , pdbData , colourToggle , skipTracking ) ) ;
558
+ if ( data . isCustomPdb ) {
559
+ dispatch ( removeDatasetHitProtein ( stage , data , colourToggle , datasetID , skipTracking ) ) ;
560
+ } else {
561
+ dispatch ( removeHitProtein ( stage , pdbData , colourToggle , skipTracking ) ) ;
562
+ }
549
563
selectedAll . current = false ;
550
564
} ;
551
565
552
566
const addNewProtein = ( skipTracking = false ) => {
553
567
dispatch (
554
568
withDisabledDatasetMoleculeNglControlButton ( datasetID , currentID , 'protein' , ( ) => {
555
- dispatch ( addHitProtein ( stage , pdbData , colourToggle , true , skipTracking , undefined , true ) ) ;
556
- // dispatch(addDatasetHitProtein(stage, data, colourToggle, datasetID, skipTracking));
569
+ if ( data . isCustomPdb ) {
570
+ dispatch ( addDatasetHitProtein ( stage , data , colourToggle , datasetID , skipTracking ) ) ;
571
+ } else {
572
+ dispatch ( addHitProtein ( stage , pdbData , colourToggle , true , skipTracking , undefined , true ) ) ;
573
+ }
557
574
} )
558
575
) ;
559
576
} ;
560
577
561
578
const [ loadingProtein , setLoadingProtein ] = useState ( false ) ;
562
579
const onProtein = calledFromSelectAll => {
580
+ resetIterator ( ) ;
563
581
setLoadingProtein ( true ) ;
564
582
if ( calledFromSelectAll === true && selectedAll . current === true ) {
565
583
if ( isProteinOn === false ) {
@@ -578,22 +596,29 @@ const DatasetMoleculeView = memo(
578
596
} ;
579
597
580
598
const removeSelectedComplex = ( skipTracking = false ) => {
581
- // dispatch(removeDatasetComplex(stage, data, colourToggle, datasetID, skipTracking));
582
- dispatch ( removeComplex ( stage , pdbData , colourToggle , skipTracking ) ) ;
599
+ if ( data . isCustomPdb ) {
600
+ dispatch ( removeDatasetComplex ( stage , data , colourToggle , datasetID , skipTracking ) ) ;
601
+ } else {
602
+ dispatch ( removeComplex ( stage , pdbData , colourToggle , skipTracking ) ) ;
603
+ }
583
604
selectedAll . current = false ;
584
605
} ;
585
606
586
607
const addNewComplex = ( skipTracking = false ) => {
587
608
dispatch (
588
609
withDisabledDatasetMoleculeNglControlButton ( datasetID , currentID , 'complex' , ( ) => {
589
- // dispatch(addDatasetComplex(stage, data, colourToggle, datasetID, skipTracking));
590
- dispatch ( addComplex ( stage , pdbData , colourToggle , skipTracking , undefined , true ) ) ;
610
+ if ( data . isCustomPdb ) {
611
+ dispatch ( addDatasetComplex ( stage , data , colourToggle , datasetID , skipTracking ) ) ;
612
+ } else {
613
+ dispatch ( addComplex ( stage , pdbData , colourToggle , skipTracking , undefined , true ) ) ;
614
+ }
591
615
} )
592
616
) ;
593
617
} ;
594
618
595
619
const [ loadingComplex , setLoadingComplex ] = useState ( false ) ;
596
620
const onComplex = calledFromSelectAll => {
621
+ resetIterator ( ) ;
597
622
setLoadingComplex ( true ) ;
598
623
if ( calledFromSelectAll === true && selectedAll . current === true ) {
599
624
if ( isComplexOn === false ) {
@@ -612,22 +637,29 @@ const DatasetMoleculeView = memo(
612
637
} ;
613
638
614
639
const removeSelectedSurface = ( ) => {
615
- // dispatch(removeDatasetSurface(stage, data, colourToggle, datasetID));
616
- dispatch ( removeSurface ( stage , pdbData , colourToggle ) ) ;
640
+ if ( data . isCustomPdb ) {
641
+ dispatch ( removeDatasetSurface ( stage , data , colourToggle , datasetID ) ) ;
642
+ } else {
643
+ dispatch ( removeSurface ( stage , pdbData , colourToggle ) ) ;
644
+ }
617
645
selectedAll . current = false ;
618
646
} ;
619
647
620
648
const addNewSurface = async ( ) => {
621
649
dispatch (
622
650
withDisabledDatasetMoleculeNglControlButton ( datasetID , currentID , 'surface' , ( ) => {
623
- dispatch ( addSurface ( stage , pdbData , colourToggle , false , undefined , true ) ) ;
624
- // dispatch(addDatasetSurface(stage, data, colourToggle, datasetID));
651
+ if ( data . isCustomPdb ) {
652
+ dispatch ( addDatasetSurface ( stage , data , colourToggle , datasetID ) ) ;
653
+ } else {
654
+ dispatch ( addSurface ( stage , pdbData , colourToggle , false , undefined , true ) ) ;
655
+ }
625
656
} )
626
657
) ;
627
658
} ;
628
659
629
660
const [ loadingSurface , setLoadingSurface ] = useState ( false ) ;
630
661
const onSurface = calledFromSelectAll => {
662
+ resetIterator ( ) ;
631
663
setLoadingSurface ( true ) ;
632
664
if ( calledFromSelectAll === true && selectedAll . current === true ) {
633
665
if ( isSurfaceOn === false ) {
@@ -896,6 +928,7 @@ const DatasetMoleculeView = memo(
896
928
} ;
897
929
898
930
const moleculeTitle = data && data . name ;
931
+ const [ isNameCopied , setNameCopied ] = useClipboard ( moleculeTitle , { successDuration : 5000 } ) ;
899
932
const datasetTitle = datasets ?. find ( item => `${ item . id } ` === `${ datasetID } ` ) ?. title ;
900
933
901
934
const allScores = { ...data ?. numerical_scores , ...data ?. text_scores } ;
@@ -974,7 +1007,13 @@ const DatasetMoleculeView = memo(
974
1007
>
975
1008
< Grid item className = { classes . inheritWidth } >
976
1009
< Tooltip title = { moleculeTitle } placement = "bottom-start" >
977
- < div className = { classNames ( classes . moleculeTitleLabel , isLocked && classes . selectedMolecule ) } >
1010
+ < div
1011
+ className = { classNames ( classes . moleculeTitleLabel , isLocked && classes . selectedMolecule ) }
1012
+ onCopy = { e => {
1013
+ e . preventDefault ( ) ;
1014
+ setNameCopied ( moleculeTitle ) ;
1015
+ } }
1016
+ >
978
1017
{ moleculeTitle }
979
1018
</ div >
980
1019
</ Tooltip >
0 commit comments