Skip to content

Commit

Permalink
Merge branch 'master' into #455
Browse files Browse the repository at this point in the history
  • Loading branch information
boriskovar-m2ms authored Dec 10, 2020
2 parents 653e165 + bacb410 commit 260e01c
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 89 deletions.
12 changes: 4 additions & 8 deletions js/components/nglView/redux/dispatchActions.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { setDuckYankData, setMolGroupOn, setPanddaSiteOn } from '../../../reduce
import * as listTypes from '../../../constants/listTypes';
import { selectVectorAndResetCompounds } from '../../../reducers/selection/dispatchActions';

export const toggleMoleculeGroup = (molGroupId, summaryViewStage, majorViewStage) => (dispatch, getState) => {
export const toggleMoleculeGroup = (molGroupId, summaryViewStage) => (dispatch, getState) => {
const state = getState();
const molGroupSelection = state.selectionReducers.mol_group_selection;
const objIdx = molGroupSelection.indexOf(molGroupId);
Expand Down Expand Up @@ -58,11 +58,7 @@ export const toggleMoleculeGroup = (molGroupId, summaryViewStage, majorViewStage
throw new Error(error);
});
dispatch(
clearAfterDeselectingMoleculeGroup({
molGroupId,
currentMolGroup,
majorViewStage
})
clearAfterDeselectingMoleculeGroup()
);
}
};
Expand Down Expand Up @@ -117,9 +113,9 @@ export const handleNglViewPick = (stage, pickingProxy, getNglView) => (dispatch,
const type = name.split('_')[0];
const pk = parseInt(name.split('_')[1], 10);
if (type === OBJECT_TYPE.MOLECULE_GROUP && getNglView(VIEWS.MAJOR_VIEW)) {
dispatch(toggleMoleculeGroup(pk, stage, getNglView(VIEWS.MAJOR_VIEW).stage));
dispatch(toggleMoleculeGroup(pk, stage));
} else if (type === OBJECT_TYPE.MOLGROUPS_SELECT && getNglView(VIEWS.MAJOR_VIEW)) {
dispatch(toggleMoleculeGroup(pk, stage, getNglView(VIEWS.MAJOR_VIEW).stage));
dispatch(toggleMoleculeGroup(pk, stage));
} else if (type === listTypes.PANDDA_SITE) {
dispatch(setPanddaSiteOn(pk));
}
Expand Down
48 changes: 42 additions & 6 deletions js/components/preview/molecule/moleculeList.js
Original file line number Diff line number Diff line change
Expand Up @@ -292,11 +292,41 @@ export const MoleculeList = memo(({ height, setFilterItemsHeight, filterItemsHei
// Used for MoleculeListSortFilterDialog when using textSearch
const joinedMoleculeListsCopy = useMemo(() => [...joinedMoleculeLists], [joinedMoleculeLists]);

if (isActiveFilter) {
joinedMoleculeLists = filterMolecules(joinedMoleculeLists, filter);
} else {
joinedMoleculeLists = useMemo(
() => addSelectedMoleculesFromUnselectedSites(joinedMoleculeLists, proteinList),
[addSelectedMoleculesFromUnselectedSites, joinedMoleculeLists, proteinList]
);
joinedMoleculeLists = useMemo(
() => addSelectedMoleculesFromUnselectedSites(joinedMoleculeLists, complexList),
[addSelectedMoleculesFromUnselectedSites, joinedMoleculeLists, complexList]
);
joinedMoleculeLists = useMemo(
() => addSelectedMoleculesFromUnselectedSites(joinedMoleculeLists, fragmentDisplayList),
[addSelectedMoleculesFromUnselectedSites, joinedMoleculeLists, fragmentDisplayList]
);
joinedMoleculeLists = useMemo(
() => addSelectedMoleculesFromUnselectedSites(joinedMoleculeLists, surfaceList),
[addSelectedMoleculesFromUnselectedSites, joinedMoleculeLists, surfaceList]
);
joinedMoleculeLists = useMemo(
() => addSelectedMoleculesFromUnselectedSites(joinedMoleculeLists, densityList),
[addSelectedMoleculesFromUnselectedSites, joinedMoleculeLists, densityList]
);
joinedMoleculeLists = useMemo(
() => addSelectedMoleculesFromUnselectedSites(joinedMoleculeLists, vectorOnList),
[addSelectedMoleculesFromUnselectedSites, joinedMoleculeLists, vectorOnList]
);

// Used for MoleculeListSortFilterDialog when using textSearch
// Also used for displaying filter, since using the original would perform deadlock when creating a filter which matches
// 0 molecules
const joinedMoleculeListsCopy = useMemo(() => [...joinedMoleculeLists], [joinedMoleculeLists]);

if (!isActiveFilter) {
// default sort is by site
joinedMoleculeLists.sort((a, b) => a.site - b.site || a.number - b.number);
} else {
joinedMoleculeLists = filterMolecules(joinedMoleculeLists, filter);
}

const loadNextMolecules = () => {
Expand Down Expand Up @@ -409,6 +439,12 @@ export const MoleculeList = memo(({ height, setFilterItemsHeight, filterItemsHei
}
}, [isActiveFilter, setFilterItemsHeight]);

useEffect(() => {
if (!joinedMoleculeListsCopy.length) {
dispatch(setSortDialogOpen(false));
}
}, [dispatch, joinedMoleculeListsCopy.length]);

const handleFilterChange = filter => {
const filterSet = Object.assign({}, filter);
for (let attr of MOL_ATTRIBUTES) {
Expand Down Expand Up @@ -621,7 +657,7 @@ export const MoleculeList = memo(({ height, setFilterItemsHeight, filterItemsHei
};

const actions = [
<FormControl className={classes.formControl} disabled={!(object_selection || []).length || sortDialogOpen}>
<FormControl className={classes.formControl} disabled={!joinedMoleculeListsCopy.length || sortDialogOpen}>
<Select
className={classes.select}
value={predefinedFilter}
Expand Down Expand Up @@ -658,7 +694,7 @@ export const MoleculeList = memo(({ height, setFilterItemsHeight, filterItemsHei

<IconButton
color={'inherit'}
disabled={!(object_selection || []).length}
disabled={!joinedMoleculeListsCopy.length}
onClick={() => dispatch(hideAllSelectedMolecules(majorViewStage, joinedMoleculeLists))}
>
<Tooltip title="Hide all">
Expand All @@ -676,7 +712,7 @@ export const MoleculeList = memo(({ height, setFilterItemsHeight, filterItemsHei
}
}}
color={'inherit'}
disabled={!(object_selection || []).length || predefinedFilter !== 'none'}
disabled={!joinedMoleculeListsCopy.length || predefinedFilter !== 'none'}
>
<Tooltip title="Filter/Sort">
<FilterList />
Expand Down
77 changes: 3 additions & 74 deletions js/components/preview/moleculeGroups/redux/dispatchActions.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
import {
complexObjectTypes,
generateComplex,
generateMolecule,
generateSphere
} from '../../molecule/molecules_helpers';
import { VIEWS } from '../../../../constants/constants';
Expand All @@ -10,19 +7,12 @@ import {
deleteObject,
loadObject
} from '../../../../reducers/ngl/dispatchActions';
import { selectJoinedMoleculeList } from '../../molecule/redux/selectors';
import {
removeFromComplexList,
removeFromProteinList,
removeFromSurfaceList,
removeFromFragmentDisplayList,
removeFromVectorOnList,
resetSelectionState,
setComplexList,
setFilter,
setFragmentDisplayList,
setMolGroupSelection,
setObjectSelection,
setVectorList,
setVectorOnList
} from '../../../../reducers/selection/actions';
Expand All @@ -35,68 +25,11 @@ import { resetCurrentCompoundsSettings } from '../../compounds/redux/actions';
import { reloadSession } from '../../../snapshot/redux/dispatchActions';
import { resetRestoringState } from '../../../../reducers/tracking/dispatchActions';

export const clearAfterDeselectingMoleculeGroup = ({ molGroupId, currentMolGroup, majorViewStage }) => (
dispatch,
getState
export const clearAfterDeselectingMoleculeGroup = () => (
dispatch
) => {
dispatch(setObjectSelection([molGroupId]));

let site;
const state = getState();
const vector_list = state.selectionReducers.vector_list;

// loop through all molecules
selectJoinedMoleculeList(state).forEach(mol => {
site = mol.site;

// remove Ligand
dispatch(
deleteObject(
Object.assign({ display_div: VIEWS.MAJOR_VIEW }, generateMolecule(mol.protein_code, mol.sdf_info)),
majorViewStage
)
);

// remove Complex, Protein, Surface
Object.keys(complexObjectTypes).forEach(type => {
dispatch(
deleteObject(
Object.assign(
{ display_div: VIEWS.MAJOR_VIEW },
generateComplex(mol.protein_code, mol.sdf_info, mol.molecule_protein, type)
),
majorViewStage
)
);
});
});

// remove all Vectors
vector_list
.filter(v => v.site === site)
.forEach(item => {
dispatch(deleteObject(Object.assign({ display_div: VIEWS.MAJOR_VIEW }, item), majorViewStage));
});

dispatch(setObjectSelection(undefined));

// remove all molecule orientations
dispatch(setMoleculeOrientations({}));

// remove all selected ALCV of given site
currentMolGroup.mol_id.forEach(moleculeID => {
// remove Ligand, Complex, Vectors from selection
//Ligand
dispatch(removeFromFragmentDisplayList({ id: moleculeID }));
// Complex
dispatch(removeFromComplexList({ id: moleculeID }));
// Protein
dispatch(removeFromProteinList({ id: moleculeID }));
// Surface
dispatch(removeFromSurfaceList({ id: moleculeID }));
// Vectors
dispatch(removeFromVectorOnList({ id: moleculeID }));
});
};

export const saveMoleculeGroupsToNglView = (molGroupList, stage, projectId) => dispatch => {
Expand Down Expand Up @@ -267,11 +200,7 @@ export const onDeselectMoleculeGroup = ({ moleculeGroup, stageSummaryView, major
const selectionCopy = mol_group_selection.slice();
const objIdx = mol_group_selection.indexOf(moleculeGroup.id);
dispatch(
clearAfterDeselectingMoleculeGroup({
molGroupId: moleculeGroup.id,
currentMolGroup,
majorViewStage
})
clearAfterDeselectingMoleculeGroup()
);
selectionCopy.splice(objIdx, 1);
dispatch(
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "fragalysis-frontend",
"version": "0.9.30",
"version": "0.9.37",
"description": "Frontend for fragalysis",
"main": "webpack.config.js",
"scripts": {
Expand Down

0 comments on commit 260e01c

Please sign in to comment.