From 799efbb82308562b372d95c5e9ee1f33d509517c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1na=20Kohanov=C3=A1?= Date: Thu, 26 Nov 2020 13:48:43 +0100 Subject: [PATCH] #462 Mass actions --- js/components/datasets/inspirationDialog.js | 2 +- .../datasets/redux/dispatchActions.js | 8 +- js/reducers/tracking/constants.js | 9 +- js/reducers/tracking/dispatchActions.js | 181 +++++++++++++----- js/reducers/tracking/trackingActions.js | 49 +++-- 5 files changed, 176 insertions(+), 73 deletions(-) diff --git a/js/components/datasets/inspirationDialog.js b/js/components/datasets/inspirationDialog.js index 867090fd3..3ad1f5de5 100644 --- a/js/components/datasets/inspirationDialog.js +++ b/js/components/datasets/inspirationDialog.js @@ -258,7 +258,7 @@ export const InspirationDialog = memo( const removeSelectedType = (type, skipTracking = false) => { if (type === 'ligand') { moleculeList.forEach(molecule => { - dispatch(removeType[type](stage, molecule, colourList[molecule.id % colourList.length], false, skipTracking)); + dispatch(removeType[type](stage, molecule, skipTracking)); }); } else { moleculeList.forEach(molecule => { diff --git a/js/components/datasets/redux/dispatchActions.js b/js/components/datasets/redux/dispatchActions.js index 9c72c45a8..4ca875187 100644 --- a/js/components/datasets/redux/dispatchActions.js +++ b/js/components/datasets/redux/dispatchActions.js @@ -455,11 +455,11 @@ export const removeOrAddAllHitProteinsOfList = (areAllSelected, moleculeList = [ if (areAllSelected) { let molecules = dispatch(getSelectedMoleculesByType(type, false, moleculeList)); - dispatch(setDeselectedAllByType(type, molecules)); + dispatch(setDeselectedAllByType(type, null, molecules, true)); dispatch(removeAllHitProteins(moleculeList, stage, true)); } else { let molecules = dispatch(getSelectedMoleculesByType(type, true, moleculeList)); - dispatch(setSelectedAllByType(type, molecules)); + dispatch(setSelectedAllByType(type, null, molecules, true)); dispatch(addAllHitProteins(moleculeList, stage, true)); } }; @@ -497,11 +497,11 @@ export const removeOrAddAllComplexesOfList = (areAllSelected, moleculeList = [], if (areAllSelected) { let molecules = dispatch(getSelectedMoleculesByType(type, false, moleculeList)); - dispatch(setDeselectedAllByType(type, molecules)); + dispatch(setDeselectedAllByType(type, null, molecules, true)); dispatch(removeAllComplexes(moleculeList, stage, true)); } else { let molecules = dispatch(getSelectedMoleculesByType(type, true, moleculeList)); - dispatch(setSelectedAllByType(type, molecules)); + dispatch(setSelectedAllByType(type, null, molecules, true)); dispatch(addAllComplexes(moleculeList, stage, true)); } }; diff --git a/js/reducers/tracking/constants.js b/js/reducers/tracking/constants.js index 7352a1c7b..ad927cbf9 100644 --- a/js/reducers/tracking/constants.js +++ b/js/reducers/tracking/constants.js @@ -57,13 +57,16 @@ export const actionDescription = { TO_SHOPPING_CART: 'to shopping cart', FROM_SHOPPING_CART: 'from shopping cart', LIGAND: 'Ligand', - SIDECHAINS: 'Sidechain', - INTERACTIONS: 'Interaction', + SIDECHAIN: 'Sidechain', + INTERACTION: 'Interaction', VECTOR: 'Vector', SURFACE: 'Surface', SITE: 'Site', TARGET: 'Target', - ALL: 'All' + ALL: 'All', + LIGANDS: 'Ligands', + SIDECHAINS: 'Sidechains', + INTERACTIONS: 'Interactions' }; export const actionObjectType = { diff --git a/js/reducers/tracking/dispatchActions.js b/js/reducers/tracking/dispatchActions.js index 7ae391bcb..41feca1fe 100644 --- a/js/reducers/tracking/dispatchActions.js +++ b/js/reducers/tracking/dispatchActions.js @@ -60,6 +60,18 @@ import { base_url } from '../../components/routes/constants'; import { CONSTANTS } from '../../../js/constants/constants'; import moment from 'moment'; import { appendToActionList, appendToSendActionList, setProjectActionList } from './actions'; +import { + setSelectedAll, + setDeselectedAll, + setSelectedAllByType, + setDeselectedAllByType +} from '../../../js/reducers/selection/actions'; +import { + setSelectedAll as setSelectedAllOfDataset, + setDeselectedAll as setDeselectedAllOfDataset, + setSelectedAllByType as setSelectedAllByTypeOfDataset, + setDeselectedAllByType as setDeselectedAllByTypeOfDataset +} from '../../components/datasets/redux/actions'; export const selectCurrentActionsList = () => (dispatch, getState) => { const state = getState(); @@ -415,48 +427,56 @@ const addTypeCompound = { surface: addDatasetSurface }; -const addNewType = (moleculesAction, actionType, type, stage, state) => dispatch => { +const addNewType = (moleculesAction, actionType, type, stage, state, skipTracking = false) => dispatch => { let actions = moleculesAction.filter(action => action.action_type === actionType); if (actions) { actions.forEach(action => { let data = getMolecule(action.object_name, state); if (data) { - dispatch(addType[type](stage, data, colourList[data.id % colourList.length], true)); + if (type === 'ligand') { + dispatch(addType[type](stage, data, colourList[data.id % colourList.length], true, skipTracking)); + } else { + dispatch(addType[type](stage, data, colourList[data.id % colourList.length], skipTracking)); + } } }); } }; -const addNewTypeOfAction = (action, type, stage, state) => dispatch => { +const addNewTypeOfAction = (action, type, stage, state, skipTracking = false) => dispatch => { if (action) { let data = getMolecule(action.object_name, state); if (data) { if (type === 'ligand') { - dispatch(addType[type](stage, data, colourList[data.id % colourList.length], true)); + dispatch(addType[type](stage, data, colourList[data.id % colourList.length], true, skipTracking)); } else { - dispatch(addType[type](stage, data, colourList[data.id % colourList.length])); + dispatch(addType[type](stage, data, colourList[data.id % colourList.length], skipTracking)); } } } }; -const addNewTypeCompound = (moleculesAction, actionType, type, stage, state) => dispatch => { +const addNewTypeCompound = (moleculesAction, actionType, type, stage, state, skipTracking = false) => dispatch => { let actions = moleculesAction.filter(action => action.action_type === actionType); if (actions) { actions.forEach(action => { let data = getCompound(action, state); if (data) { - dispatch(addTypeCompound[type](stage, data, colourList[data.id % colourList.length], action.dataset_id)); + dispatch( + addTypeCompound[type](stage, data, colourList[data.id % colourList.length], action.dataset_id, skipTracking) + ); } }); } }; -const addNewTypeCompoundOfAction = (action, type, stage, state) => dispatch => { +const addNewTypeCompoundOfAction = (action, type, stage, state, skipTracking = false) => dispatch => { if (action) { let data = getCompound(action, state); if (data) { - dispatch(addTypeCompound[type](stage, data, colourList[data.id % colourList.length], action.dataset_id)); + dispatch( + addTypeCompound[type](stage, data, colourList[data.id % colourList.length], action.dataset_id, skipTracking) + ); } } }; @@ -647,82 +667,82 @@ const handleRedoAction = (action, stages) => (dispatch, getState) => { const type = action.type; switch (type) { case actionType.ALL_TURNED_ON: - dispatch(handleAllAction(action, true, majorViewStage, state)); + dispatch(handleAllAction(action, false, majorViewStage, state)); break; case actionType.ALL_TURNED_OFF: - dispatch(handleAllAction(action, false, majorViewStage, state)); + dispatch(handleAllAction(action, true, majorViewStage, state)); break; case actionType.ALL_TURNED_ON_BY_TYPE: - dispatch(handleAllActionByType(action, true, majorViewStage)); + dispatch(handleAllActionByType(action, false, majorViewStage)); break; case actionType.ALL_TURNED_OFF_BY_TYPE: - dispatch(handleAllActionByType(action, false, majorViewStage)); + dispatch(handleAllActionByType(action, true, majorViewStage)); break; case actionType.LIGAND_TURNED_ON: - dispatch(handleMoleculeAction(action, 'ligand', true, majorViewStage, state)); + dispatch(handleMoleculeAction(action, 'ligand', false, majorViewStage, state)); break; case actionType.SIDECHAINS_TURNED_ON: - dispatch(handleMoleculeAction(action, 'protein', true, majorViewStage, state)); + dispatch(handleMoleculeAction(action, 'protein', false, majorViewStage, state)); break; case actionType.INTERACTIONS_TURNED_ON: - dispatch(handleMoleculeAction(action, 'complex', true, majorViewStage, state)); + dispatch(handleMoleculeAction(action, 'complex', false, majorViewStage, state)); break; case actionType.SURFACE_TURNED_ON: - dispatch(handleMoleculeAction(action, 'surface', true, majorViewStage, state)); + dispatch(handleMoleculeAction(action, 'surface', false, majorViewStage, state)); break; case actionType.VECTORS_TURNED_ON: - dispatch(handleMoleculeAction(action, 'vector', true, majorViewStage, state)); + dispatch(handleMoleculeAction(action, 'vector', false, majorViewStage, state)); break; case actionType.LIGAND_TURNED_OFF: - dispatch(handleMoleculeAction(action, 'ligand', false, majorViewStage, state)); + dispatch(handleMoleculeAction(action, 'ligand', true, majorViewStage, state)); break; case actionType.SIDECHAINS_TURNED_OFF: - dispatch(handleMoleculeAction(action, 'protein', false, majorViewStage, state)); + dispatch(handleMoleculeAction(action, 'protein', true, majorViewStage, state)); break; case actionType.INTERACTIONS_TURNED_OFF: - dispatch(handleMoleculeAction(action, 'complex', false, majorViewStage, state)); + dispatch(handleMoleculeAction(action, 'complex', true, majorViewStage, state)); break; case actionType.SURFACE_TURNED_OFF: - dispatch(handleMoleculeAction(action, 'surface', false, majorViewStage, state)); + dispatch(handleMoleculeAction(action, 'surface', true, majorViewStage, state)); break; case actionType.VECTORS_TURNED_OFF: - dispatch(handleMoleculeAction(action, 'vector', false, majorViewStage, state)); + dispatch(handleMoleculeAction(action, 'vector', true, majorViewStage, state)); break; case actionType.VECTOR_SELECTED: - dispatch(setCurrentVector(action.object_name)); + dispatch(setCurrentVector(undefined)); break; case actionType.VECTOR_DESELECTED: - dispatch(setCurrentVector(undefined)); + dispatch(setCurrentVector(action.object_name)); break; case actionType.TARGET_LOADED: - dispatch(handleTargetAction(action, true)); + dispatch(handleTargetAction(action, false)); break; case actionType.SITE_TURNED_ON: - dispatch(handleMoleculeGroupAction(action, true, stageSummaryView, majorViewStage)); + dispatch(handleMoleculeGroupAction(action, false, stageSummaryView, majorViewStage)); break; case actionType.SITE_TURNED_OFF: - dispatch(handleMoleculeGroupAction(action, false, stageSummaryView, majorViewStage)); + dispatch(handleMoleculeGroupAction(action, true, stageSummaryView, majorViewStage)); break; case actionType.MOLECULE_ADDED_TO_SHOPPING_CART: - dispatch(handleShoppingCartAction(action, true)); + dispatch(handleShoppingCartAction(action, false)); break; case actionType.MOLECULE_REMOVED_FROM_SHOPPING_CART: - dispatch(handleShoppingCartAction(action, false)); + dispatch(handleShoppingCartAction(action, true)); break; case actionType.COMPOUND_SELECTED: - dispatch(handleCompoundAction(action, true)); + dispatch(handleCompoundAction(action, false)); break; case actionType.COMPOUND_DESELECTED: - dispatch(handleCompoundAction(action, false)); + dispatch(handleCompoundAction(action, true)); break; case actionType.REPRESENTATION_CHANGED: - dispatch(handleChangeRepresentationAction(action, true, majorView)); + dispatch(handleChangeRepresentationAction(action, false, majorView)); break; case actionType.REPRESENTATION_ADDED: - dispatch(handleRepresentationAction(action, true, majorView)); + dispatch(handleRepresentationAction(action, false, majorView)); break; case actionType.REPRESENTATION_REMOVED: - dispatch(handleRepresentationAction(action, false, majorView)); + dispatch(handleRepresentationAction(action, true, majorView)); break; default: break; @@ -735,19 +755,27 @@ const handleAllActionByType = (action, isAdd, stage) => (dispatch, getState) => let type = action.control_type; if (action.object_type === actionObjectType.MOLECULE || action.object_type === actionObjectType.INSPIRATION) { if (isAdd) { + dispatch(setSelectedAllByType(type, actionItems, action.object_type === actionObjectType.INSPIRATION)); + actionItems.forEach(data => { if (data) { if (type === 'ligand') { - dispatch(addType[type](stage, data, colourList[data.id % colourList.length], true)); + dispatch(addType[type](stage, data, colourList[data.id % colourList.length], true, true)); } else { - dispatch(addType[type](stage, data, colourList[data.id % colourList.length])); + dispatch(addType[type](stage, data, colourList[data.id % colourList.length], true)); } } }); } else { + dispatch(setDeselectedAllByType(type, actionItems, action.object_type === actionObjectType.INSPIRATION)); + actionItems.forEach(data => { if (data) { - dispatch(removeType[type](stage, data, colourList[data.id % colourList.length])); + if (type === 'ligand') { + dispatch(removeType[type](stage, data, true)); + } else { + dispatch(removeType[type](stage, data, colourList[data.id % colourList.length], true)); + } } }); } @@ -756,18 +784,42 @@ const handleAllActionByType = (action, isAdd, stage) => (dispatch, getState) => action.object_type === actionObjectType.CROSS_REFERENCE ) { if (isAdd) { + dispatch( + setSelectedAllByTypeOfDataset( + type, + action.dataset_id, + actionItems, + action.object_type === actionObjectType.CROSS_REFERENCE + ) + ); + actionItems.forEach(data => { if (data && data.molecule) { dispatch( - addTypeCompound[type](stage, data.molecule, colourList[data.id % colourList.length], data.datasetID) + addTypeCompound[type](stage, data.molecule, colourList[data.id % colourList.length], data.datasetID, true) ); } }); } else { + dispatch( + setDeselectedAllByTypeOfDataset( + type, + action.dataset_id, + actionItems, + action.object_type === actionObjectType.CROSS_REFERENCE + ) + ); + actionItems.forEach(data => { if (data && data.molecule) { dispatch( - removeTypeCompound[type](stage, data.molecule, colourList[data.id % colourList.length], data.datasetID) + removeTypeCompound[type]( + stage, + data.molecule, + colourList[data.id % colourList.length], + data.datasetID, + true + ) ); } }); @@ -776,16 +828,35 @@ const handleAllActionByType = (action, isAdd, stage) => (dispatch, getState) => }; const handleAllAction = (action, isSelected, majorViewStage, state) => (dispatch, getState) => { + let isSelection = + action.object_type === actionObjectType.MOLECULE || action.object_type === actionObjectType.INSPIRATION; + + if (isSelected) { + if (isSelection) { + dispatch(setSelectedAll(action.item, true, true, true)); + } else { + dispatch(setSelectedAllOfDataset(action.dataset_id, action.item, true, true, true)); + } + } else { + if (isSelection) { + dispatch(setDeselectedAll(action.item, action.isLigand, action.isProtein, action.isComplex)); + } else { + dispatch( + setDeselectedAllOfDataset(action.dataset_id, action.item, action.isLigand, action.isProtein, action.isComplex) + ); + } + } + if (action.isLigand) { - dispatch(handleMoleculeAction(action, 'ligand', isSelected, majorViewStage, state)); + dispatch(handleMoleculeAction(action, 'ligand', isSelected, majorViewStage, state, true)); } if (action.isProtein) { - dispatch(handleMoleculeAction(action, 'protein', isSelected, majorViewStage, state)); + dispatch(handleMoleculeAction(action, 'protein', isSelected, majorViewStage, state, true)); } if (action.isComplex) { - dispatch(handleMoleculeAction(action, 'complex', isSelected, majorViewStage, state)); + dispatch(handleMoleculeAction(action, 'complex', isSelected, majorViewStage, state, true)); } }; @@ -905,21 +976,21 @@ const handleMoleculeGroupAction = (action, isSelected, stageSummaryView, majorVi } }; -const handleMoleculeAction = (action, type, isAdd, stage, state) => (dispatch, getState) => { +const handleMoleculeAction = (action, type, isAdd, stage, state, skipTracking) => (dispatch, getState) => { if (action.object_type === actionObjectType.MOLECULE || action.object_type === actionObjectType.INSPIRATION) { if (isAdd) { - dispatch(addNewTypeOfAction(action, type, stage, state)); + dispatch(addNewTypeOfAction(action, type, stage, state, skipTracking)); } else { - dispatch(removeNewType(action, type, stage, state)); + dispatch(removeNewType(action, type, stage, state, skipTracking)); } } else if ( action.object_type === actionObjectType.COMPOUND || action.object_type === actionObjectType.CROSS_REFERENCE ) { if (isAdd) { - dispatch(addNewTypeCompoundOfAction(action, type, stage, state)); + dispatch(addNewTypeCompoundOfAction(action, type, stage, state, skipTracking)); } else { - dispatch(removeNewTypeCompound(action, type, stage, state)); + dispatch(removeNewTypeCompound(action, type, stage, state, skipTracking)); } } }; @@ -939,20 +1010,26 @@ const removeTypeCompound = { surface: removeDatasetSurface }; -const removeNewType = (action, type, stage, state) => dispatch => { +const removeNewType = (action, type, stage, state, skipTracking) => dispatch => { if (action) { let data = getMolecule(action.object_name, state); if (data) { - dispatch(removeType[type](stage, data, colourList[data.id % colourList.length])); + if (type === 'ligand') { + dispatch(removeType[type](stage, data, skipTracking)); + } else { + dispatch(removeType[type](stage, data, colourList[data.id % colourList.length], skipTracking)); + } } } }; -const removeNewTypeCompound = (action, type, stage, state) => dispatch => { +const removeNewTypeCompound = (action, type, stage, state, skipTracking) => dispatch => { if (action) { let data = getCompound(action, state); if (data) { - dispatch(removeTypeCompound[type](stage, data, colourList[data.id % colourList.length], action.dataset_id)); + dispatch( + removeTypeCompound[type](stage, data, colourList[data.id % colourList.length], action.dataset_id, skipTracking) + ); } } }; diff --git a/js/reducers/tracking/trackingActions.js b/js/reducers/tracking/trackingActions.js index 391b6fdfc..adfab5fbd 100644 --- a/js/reducers/tracking/trackingActions.js +++ b/js/reducers/tracking/trackingActions.js @@ -15,7 +15,7 @@ export const findTruckAction = (action, state) => { let project = { projectID, authorID }; let truckAction = null; - if (isUndoRedoAction === false && action.skipTracking !== true) { + if (action.skipTracking !== true) { if (action.type.includes(apiConstants.SET_TARGET_ON)) { if (action.target_on) { let targetName = getTargetName(action.target_on, state); @@ -79,6 +79,7 @@ export const findTruckAction = (action, state) => { isLigand: action.isLigand, isProtein: action.isProtein, isComplex: action.isComplex, + item: action.item, text: `${actionDescription.ALL} ${actionDescription.TURNED_ON} ${objectType} ${getMoleculeTitle( objectName, target_on_name @@ -101,6 +102,7 @@ export const findTruckAction = (action, state) => { isLigand: action.isLigand, isProtein: action.isProtein, isComplex: action.isComplex, + item: action.item, text: `${actionDescription.ALL} ${actionDescription.TURNED_OFF} ${objectType} ${getMoleculeTitle( objectName, target_on_name @@ -111,6 +113,7 @@ export const findTruckAction = (action, state) => { if (action.payload) { let payload = action.payload; let objectType = payload.isInspiration === true ? actionObjectType.INSPIRATION : actionObjectType.MOLECULE; + let paylodTypeDescription = getTypeDescriptionOfSelectedAllAction(payload.type); truckAction = { type: actionType.ALL_TURNED_ON_BY_TYPE, @@ -120,13 +123,14 @@ export const findTruckAction = (action, state) => { object_type: objectType, control_type: payload.type, items: payload.items, - text: `${actionDescription.ALL} ${payload.type} ${actionDescription.TURNED_ON} ${objectType}` + text: `${actionDescription.ALL} ${paylodTypeDescription} ${actionDescription.TURNED_ON} ${objectType}` }; } } else if (action.type === selectionConstants.SET_DESELECTED_ALL_BY_TYPE) { if (action.payload) { let payload = action.payload; let objectType = payload.isInspiration === true ? actionObjectType.INSPIRATION : actionObjectType.MOLECULE; + let paylodTypeDescription = getTypeDescriptionOfSelectedAllAction(payload.type); truckAction = { type: actionType.ALL_TURNED_OFF_BY_TYPE, @@ -136,7 +140,7 @@ export const findTruckAction = (action, state) => { object_type: objectType, control_type: payload.type, items: payload.items, - text: `${actionDescription.ALL} ${payload.type} ${actionDescription.TURNED_OFF} ${objectType}` + text: `${actionDescription.ALL} ${paylodTypeDescription} ${actionDescription.TURNED_OFF} ${objectType}` }; } } else if (action.type.includes(selectionConstants.APPEND_FRAGMENT_DISPLAY_LIST)) { @@ -190,7 +194,7 @@ export const findTruckAction = (action, state) => { object_type: objectType, object_name: objectName, object_id: action.item.id, - text: `${actionDescription.SIDECHAINS} ${actionDescription.TURNED_ON} ${objectType} ${getMoleculeTitle( + text: `${actionDescription.SIDECHAIN} ${actionDescription.TURNED_ON} ${objectType} ${getMoleculeTitle( objectName, target_on_name )}` @@ -209,7 +213,7 @@ export const findTruckAction = (action, state) => { object_type: objectType, object_name: objectName, object_id: action.item.id, - text: `${actionDescription.SIDECHAINS} ${actionDescription.TURNED_OFF} ${objectType} ${getMoleculeTitle( + text: `${actionDescription.SIDECHAIN} ${actionDescription.TURNED_OFF} ${objectType} ${getMoleculeTitle( objectName, target_on_name )}` @@ -228,7 +232,7 @@ export const findTruckAction = (action, state) => { object_type: objectType, object_name: objectName, object_id: action.item.id, - text: `${actionDescription.INTERACTIONS} ${actionDescription.TURNED_ON} ${objectType} ${getMoleculeTitle( + text: `${actionDescription.INTERACTION} ${actionDescription.TURNED_ON} ${objectType} ${getMoleculeTitle( objectName, target_on_name )}` @@ -247,7 +251,7 @@ export const findTruckAction = (action, state) => { object_type: objectType, object_name: objectName, object_id: action.item.id, - text: `${actionDescription.INTERACTIONS} ${actionDescription.TURNED_OFF} ${objectType} ${getMoleculeTitle( + text: `${actionDescription.INTERACTION} ${actionDescription.TURNED_OFF} ${objectType} ${getMoleculeTitle( objectName, target_on_name )}` @@ -431,6 +435,7 @@ export const findTruckAction = (action, state) => { isLigand: action.payload.isLigand, isProtein: action.payload.isProtein, isComplex: action.payload.isComplex, + item: action.payload.item, text: `${actionDescription.ALL} ${actionDescription.TURNED_ON} ${objectType} ${objectName} of dataset: ${action.payload.datasetID}` }; } @@ -452,6 +457,7 @@ export const findTruckAction = (action, state) => { isLigand: action.payload.isLigand, isProtein: action.payload.isProtein, isComplex: action.payload.isComplex, + item: action.payload.item, text: `${actionDescription.ALL} ${actionDescription.TURNED_OFF} ${objectType} ${objectName} of dataset: ${action.payload.datasetID}` }; } @@ -460,6 +466,8 @@ export const findTruckAction = (action, state) => { let payload = action.payload; let objectType = payload.isCrossReference === true ? actionObjectType.CROSS_REFERENCE : actionObjectType.COMPOUND; + let paylodTypeDescription = getTypeDescriptionOfSelectedAllAction(payload.type); + let datasetDescription = payload.datasetID ? `of dataset: ${payload.datasetID}` : ''; truckAction = { type: actionType.ALL_TURNED_ON_BY_TYPE, @@ -469,7 +477,7 @@ export const findTruckAction = (action, state) => { object_type: objectType, control_type: payload.type, items: payload.items, - text: `${actionDescription.ALL} ${payload.type} ${actionDescription.ALL_TURNED_ON} ${objectType} of dataset: ${action.payload.datasetID}` + text: `${actionDescription.ALL} ${paylodTypeDescription} ${actionDescription.TURNED_ON} ${objectType} ${datasetDescription}` }; } } else if (action.type === customDatasetConstants.SET_DESELECTED_ALL_BY_TYPE) { @@ -477,6 +485,8 @@ export const findTruckAction = (action, state) => { let payload = action.payload; let objectType = payload.isCrossReference === true ? actionObjectType.CROSS_REFERENCE : actionObjectType.COMPOUND; + let paylodTypeDescription = getTypeDescriptionOfSelectedAllAction(payload.type); + let datasetDescription = payload.datasetID ? `of dataset: ${payload.datasetID}` : ''; truckAction = { type: actionType.ALL_TURNED_OFF_BY_TYPE, @@ -486,7 +496,7 @@ export const findTruckAction = (action, state) => { object_type: objectType, control_type: payload.type, items: payload.items, - text: `${actionDescription.ALL} ${payload.type} ${actionDescription.ALL_TURNED_OFF} ${objectType} of dataset: ${action.payload.datasetID}` + text: `${actionDescription.ALL} ${paylodTypeDescription} ${actionDescription.TURNED_OFF} ${objectType} ${datasetDescription}` }; } } else if (action.type.includes(customDatasetConstants.APPEND_LIGAND_LIST)) { @@ -540,7 +550,7 @@ export const findTruckAction = (action, state) => { object_name: objectName, object_id: action.payload.item.id, dataset_id: action.payload.datasetID, - text: `${actionDescription.SIDECHAINS} ${actionDescription.TURNED_ON} ${objectType} ${objectName} of dataset: ${action.payload.datasetID}` + text: `${actionDescription.SIDECHAIN} ${actionDescription.TURNED_ON} ${objectType} ${objectName} of dataset: ${action.payload.datasetID}` }; } } else if (action.type.includes(customDatasetConstants.REMOVE_FROM_PROTEIN_LIST)) { @@ -558,7 +568,7 @@ export const findTruckAction = (action, state) => { object_name: objectName, object_id: action.payload.item.id, dataset_id: action.payload.datasetID, - text: `${actionDescription.SIDECHAINS} ${actionDescription.TURNED_OFF} ${objectType} ${objectName} of dataset: ${action.payload.datasetID}` + text: `${actionDescription.SIDECHAIN} ${actionDescription.TURNED_OFF} ${objectType} ${objectName} of dataset: ${action.payload.datasetID}` }; } } else if (action.type.includes(customDatasetConstants.APPEND_COMPLEX_LIST)) { @@ -576,7 +586,7 @@ export const findTruckAction = (action, state) => { object_name: objectName, object_id: action.payload.item.id, dataset_id: action.payload.datasetID, - text: `${actionDescription.INTERACTIONS} ${actionDescription.TURNED_ON} ${objectType} ${objectName} of dataset: ${action.payload.datasetID}` + text: `${actionDescription.INTERACTION} ${actionDescription.TURNED_ON} ${objectType} ${objectName} of dataset: ${action.payload.datasetID}` }; } } else if (action.type.includes(customDatasetConstants.REMOVE_FROM_COMPLEX_LIST)) { @@ -594,7 +604,7 @@ export const findTruckAction = (action, state) => { object_name: objectName, object_id: action.payload.item.id, dataset_id: action.payload.datasetID, - text: `${actionDescription.INTERACTIONS} ${actionDescription.TURNED_OFF} ${objectType} ${objectName} of dataset: ${action.payload.datasetID}` + text: `${actionDescription.INTERACTION} ${actionDescription.TURNED_OFF} ${objectType} ${objectName} of dataset: ${action.payload.datasetID}` }; } } else if (action.type.includes(customDatasetConstants.APPEND_SURFACE_LIST)) { @@ -720,3 +730,16 @@ const getMoleculeName = (moleculeId, state) => { } return moleculeName; }; + +const getTypeDescriptionOfSelectedAllAction = type => { + switch (type) { + case 'ligand': + return actionDescription.LIGANDS; + case 'protein': + return actionDescription.SIDECHAINS; + case 'complex': + return actionDescription.INTERACTIONS; + default: + return type; + } +};