@@ -56,6 +56,8 @@ import Typography from '@mui/material/Typography';
56
56
import { Edit } from '@material-ui/icons' ;
57
57
import { DJANGO_CONTEXT } from '../../../../utils/djangoContext' ;
58
58
import { getFontColorByBackgroundColor } from '../../../../utils/colors' ;
59
+ import { api , METHOD } from '../../../../utils/api' ;
60
+ import { base_url } from '../../../routes/constants' ;
59
61
60
62
const useStyles = makeStyles ( theme => ( {
61
63
container : {
@@ -346,7 +348,8 @@ const useStyles = makeStyles(theme => ({
346
348
categoryCell : {
347
349
padding : '4px 8px' ,
348
350
fontWeight : 'bold' ,
349
- textWrap : 'nowrap'
351
+ textWrap : 'nowrap' ,
352
+ fontSize : 12
350
353
}
351
354
} ) ) ;
352
355
@@ -382,7 +385,9 @@ const MoleculeView = memo(
382
385
disableP,
383
386
disableC,
384
387
hideImage,
385
- showExpandedView
388
+ showExpandedView,
389
+ headerWidths,
390
+ setHeaderWidthsHandler
386
391
} ) => {
387
392
// const [countOfVectors, setCountOfVectors] = useState('-');
388
393
// const [cmpds, setCmpds] = useState('-');
@@ -457,6 +462,7 @@ const MoleculeView = memo(
457
462
const [ densityModalOpen , setDensityModalOpen ] = useState ( false ) ;
458
463
const [ moleculeTooltipOpen , setMoleculeTooltipOpen ] = useState ( false ) ;
459
464
const [ tagPopoverOpen , setTagPopoverOpen ] = useState ( null ) ;
465
+ const [ centroidRes , setCentroidRes ] = useState ( '' ) ;
460
466
461
467
const moleculeImgRef = useRef ( null ) ;
462
468
@@ -470,6 +476,33 @@ const MoleculeView = memo(
470
476
setTagEditModalOpenNew ( tagEditorOpenObs ) ;
471
477
} , [ tagEditorOpenObs ] ) ;
472
478
479
+ const XCA_TAGS_CATEGORIES = [ 'CanonSites' , 'ConformerSites' , 'CrystalformSites' , 'Crystalforms' , 'Quatassemblies' ] ;
480
+
481
+ useEffect ( ( ) => {
482
+ api ( {
483
+ url : `${ base_url } /api/canon_sites/` ,
484
+ method : METHOD . GET
485
+ } )
486
+ . then ( resp => {
487
+ const canonSite = resp . data . results . find ( canonSite => canonSite . id === data . canon_site_conf ) ;
488
+ setCentroidRes ( canonSite ? canonSite . centroid_res : '' ) ;
489
+ } )
490
+ . catch ( err => {
491
+ console . log ( 'error fetching centroid_res from canon_sites' , err ) ;
492
+ setCentroidRes ( '' ) ;
493
+ } ) ;
494
+ } , [ data . canon_site_conf ] ) ;
495
+
496
+ useEffect ( ( ) => {
497
+ if ( showExpandedView ) {
498
+ setHeaderWidthsHandler ( getTagType ( 'CanonSites' ) ?. tag , 'TagName' ) ;
499
+ setHeaderWidthsHandler ( centroidRes , 'CentroidRes' ) ;
500
+ XCA_TAGS_CATEGORIES . forEach ( tagCategory => {
501
+ setHeaderWidthsHandler ( getTagLabel ( tagCategory ) , tagCategory ) ;
502
+ } )
503
+ }
504
+ } , [ showExpandedView , getTagType , getTagLabel , centroidRes , setHeaderWidthsHandler , XCA_TAGS_CATEGORIES ] ) ;
505
+
473
506
const handlePopoverOpen = event => {
474
507
setTagPopoverOpen ( event . currentTarget ) ;
475
508
} ;
@@ -1061,6 +1094,21 @@ const MoleculeView = memo(
1061
1094
return fontSize ;
1062
1095
} ;
1063
1096
1097
+ const getTagLabel = useCallback ( tagCategory => {
1098
+ const tagTypeObject = getTagType ( tagCategory ) ;
1099
+ let tagLabel = '' ;
1100
+ if ( tagTypeObject ) {
1101
+ if ( tagCategory === 'CrystalformSites' ) {
1102
+ // "chop" more of CrystalformSites name
1103
+ tagLabel = tagTypeObject . upload_name . substring ( tagTypeObject . upload_name . indexOf ( '-' ) + 1 ) . trim ( ) ;
1104
+ tagLabel = tagLabel . substring ( tagLabel . indexOf ( '-' ) + 1 ) . trim ( ) ;
1105
+ } else {
1106
+ tagLabel = tagTypeObject . upload_name . substring ( tagTypeObject . upload_name . indexOf ( '-' ) + 1 ) . trim ( ) ;
1107
+ }
1108
+ }
1109
+ return tagLabel ;
1110
+ } , [ getTagType ] ) ;
1111
+
1064
1112
return (
1065
1113
< >
1066
1114
< Grid
@@ -1359,7 +1407,7 @@ const MoleculeView = memo(
1359
1407
// wrap="nowrap"
1360
1408
style = { { height : "100%" } }
1361
1409
>
1362
- { [ 'CanonSites' , 'ConformerSites' , 'CrystalformSites' , 'Crystalforms' , 'Quatassemblies' ] . map ( tagCategory => {
1410
+ { XCA_TAGS_CATEGORIES . map ( tagCategory => {
1363
1411
const tagTypeObject = getTagType ( tagCategory ) ;
1364
1412
const tagLabel = tagCategory === 'ConformerSites' ? tagTypeObject . tag_prefix . replace ( getTagType ( 'CanonSites' ) ?. tag_prefix , '' ) : tagTypeObject ?. tag_prefix ;
1365
1413
return < Tooltip
@@ -1414,24 +1462,23 @@ const MoleculeView = memo(
1414
1462
</ div > }
1415
1463
</ Grid >
1416
1464
{ showExpandedView && < Grid item container alignItems = 'center' wrap = "nowrap" >
1417
- { [ 'CanonSites' , 'ConformerSites' , 'CrystalformSites' , 'Crystalforms' , 'Quatassemblies' ] . map ( ( tagCategory , index ) => {
1418
- const tagTypeObject = getTagType ( tagCategory ) ;
1419
- let tagLabel = '' ;
1420
- if ( tagTypeObject ) {
1421
- if ( tagCategory === 'CrystalformSites' ) {
1422
- // "chop" more of CrystalformSites name
1423
- tagLabel = tagTypeObject . upload_name . substring ( tagTypeObject . upload_name . indexOf ( '-' ) + 1 ) ;
1424
- tagLabel = tagLabel . substring ( tagLabel . indexOf ( '-' ) + 1 ) ;
1425
- } else {
1426
- tagLabel = tagTypeObject . upload_name . substring ( tagTypeObject . upload_name . indexOf ( '-' ) + 1 ) ;
1427
- }
1428
- }
1465
+ < Tooltip title = { "CanonSite TagName" } >
1466
+ < Grid item align = "center" className = { classes . categoryCell } style = { { minWidth : headerWidths . TagName } } >
1467
+ { getTagType ( 'CanonSites' ) ?. tag }
1468
+ </ Grid >
1469
+ </ Tooltip >
1470
+ { XCA_TAGS_CATEGORIES . map ( ( tagCategory , index ) => {
1429
1471
return < Tooltip title = { PLURAL_TO_SINGULAR [ tagCategory ] } key = { index } >
1430
- < Grid item align = "center" className = { classes . categoryCell } style = { { fontSize : 12 } } >
1431
- { tagLabel }
1472
+ < Grid item align = "center" className = { classes . categoryCell } style = { { minWidth : headerWidths [ tagCategory ] } } >
1473
+ { getTagLabel ( tagCategory ) }
1432
1474
</ Grid >
1433
1475
</ Tooltip >
1434
1476
} ) }
1477
+ < Tooltip title = { "CentroidRes" } >
1478
+ < Grid item align = "center" className = { classes . categoryCell } style = { { minWidth : headerWidths . CentroidRes } } >
1479
+ { centroidRes }
1480
+ </ Grid >
1481
+ </ Tooltip >
1435
1482
</ Grid > }
1436
1483
</ Grid >
1437
1484
< SvgTooltip
0 commit comments