Skip to content

Commit

Permalink
#462 Mass actions
Browse files Browse the repository at this point in the history
  • Loading branch information
Adriána Kohanová committed Nov 26, 2020
1 parent c5d562e commit 2775d64
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 33 deletions.
7 changes: 7 additions & 0 deletions js/reducers/tracking/actions.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,13 @@ export const appendToActionList = function(track_action) {
};
};

export const appendToUndoRedoActionList = function(track_action) {
return {
type: constants.APPEND_UNDO_REDO_ACTIONS_LIST,
track_action: track_action
};
};

export const setCurrentActionsList = function(current_actions_list) {
return {
type: constants.SET_CURRENT_ACTIONS_LIST,
Expand Down
1 change: 1 addition & 0 deletions js/reducers/tracking/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ const prefix = 'REDUCERS_TRACKING_';
export const constants = {
SET_ACTIONS_LIST: prefix + 'SET_ACTIONS_LIST',
APPEND_ACTIONS_LIST: prefix + 'APPEND_ACTIONS_LIST',
APPEND_UNDO_REDO_ACTIONS_LIST: prefix + 'APPEND_UNDO_REDO_ACTIONS_LIST',
SET_CURRENT_ACTIONS_LIST: prefix + 'SET_CURRENT_ACTIONS_LIST',
SET_IS_TRACKING_COMPOUNDS_RESTORING: prefix + 'SET_IS_TRACKING_COMPOUNDS_RESTORING',
SET_IS_TRACKING_MOLECULES_RESTORING: prefix + 'SET_IS_TRACKING_MOLECULES_RESTORING',
Expand Down
72 changes: 40 additions & 32 deletions js/reducers/tracking/dispatchActions.js
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,8 @@ import {
appendToSendActionList,
setProjectActionList,
setIsActionsSaving,
setIsActionsRestoring
setIsActionsRestoring,
appendToUndoRedoActionList
} from './actions';
import {
setSelectedAll,
Expand Down Expand Up @@ -655,9 +656,9 @@ export const undoAction = (stages = []) => (dispatch, getState) => {
const actionUndoList = state.undoableTrackingReducers.future;
let actions = actionUndoList && actionUndoList[0];
if (actions) {
let actionsLenght = actions.track_actions_list.length;
let actionsLenght = actions.undo_redo_actions_list.length;
actionsLenght = actionsLenght > 0 ? actionsLenght - 1 : actionsLenght;
action = actions.track_actions_list[actionsLenght];
action = actions.undo_redo_actions_list[actionsLenght];

Promise.resolve(dispatch(handleUndoAction(action, stages))).then(() => {
dispatch(setIsUndoRedoAction(false));
Expand All @@ -673,9 +674,9 @@ export const redoAction = (stages = []) => (dispatch, getState) => {

const actions = state.undoableTrackingReducers.present;
if (actions) {
let actionsLenght = actions.track_actions_list.length;
let actionsLenght = actions.undo_redo_actions_list.length;
actionsLenght = actionsLenght > 0 ? actionsLenght - 1 : actionsLenght;
action = actions.track_actions_list[actionsLenght];
action = actions.undo_redo_actions_list[actionsLenght];

Promise.resolve(dispatch(dispatch(handleRedoAction(action, stages)))).then(() => {
dispatch(setIsUndoRedoAction(false));
Expand Down Expand Up @@ -790,82 +791,82 @@ const handleRedoAction = (action, stages) => (dispatch, getState) => {
const type = action.type;
switch (type) {
case actionType.ALL_TURNED_ON:
dispatch(handleAllAction(action, false, majorViewStage, state));
dispatch(handleAllAction(action, true, majorViewStage, state));
break;
case actionType.ALL_TURNED_OFF:
dispatch(handleAllAction(action, true, majorViewStage, state));
dispatch(handleAllAction(action, false, majorViewStage, state));
break;
case actionType.ALL_TURNED_ON_BY_TYPE:
dispatch(handleAllActionByType(action, false, majorViewStage));
dispatch(handleAllActionByType(action, true, majorViewStage));
break;
case actionType.ALL_TURNED_OFF_BY_TYPE:
dispatch(handleAllActionByType(action, true, majorViewStage));
dispatch(handleAllActionByType(action, false, majorViewStage));
break;
case actionType.LIGAND_TURNED_ON:
dispatch(handleMoleculeAction(action, 'ligand', false, majorViewStage, state));
dispatch(handleMoleculeAction(action, 'ligand', true, majorViewStage, state));
break;
case actionType.SIDECHAINS_TURNED_ON:
dispatch(handleMoleculeAction(action, 'protein', false, majorViewStage, state));
dispatch(handleMoleculeAction(action, 'protein', true, majorViewStage, state));
break;
case actionType.INTERACTIONS_TURNED_ON:
dispatch(handleMoleculeAction(action, 'complex', false, majorViewStage, state));
dispatch(handleMoleculeAction(action, 'complex', true, majorViewStage, state));
break;
case actionType.SURFACE_TURNED_ON:
dispatch(handleMoleculeAction(action, 'surface', false, majorViewStage, state));
dispatch(handleMoleculeAction(action, 'surface', true, majorViewStage, state));
break;
case actionType.VECTORS_TURNED_ON:
dispatch(handleMoleculeAction(action, 'vector', false, majorViewStage, state));
dispatch(handleMoleculeAction(action, 'vector', true, majorViewStage, state));
break;
case actionType.LIGAND_TURNED_OFF:
dispatch(handleMoleculeAction(action, 'ligand', true, majorViewStage, state));
dispatch(handleMoleculeAction(action, 'ligand', false, majorViewStage, state));
break;
case actionType.SIDECHAINS_TURNED_OFF:
dispatch(handleMoleculeAction(action, 'protein', true, majorViewStage, state));
dispatch(handleMoleculeAction(action, 'protein', false, majorViewStage, state));
break;
case actionType.INTERACTIONS_TURNED_OFF:
dispatch(handleMoleculeAction(action, 'complex', true, majorViewStage, state));
dispatch(handleMoleculeAction(action, 'complex', false, majorViewStage, state));
break;
case actionType.SURFACE_TURNED_OFF:
dispatch(handleMoleculeAction(action, 'surface', true, majorViewStage, state));
dispatch(handleMoleculeAction(action, 'surface', false, majorViewStage, state));
break;
case actionType.VECTORS_TURNED_OFF:
dispatch(handleMoleculeAction(action, 'vector', true, majorViewStage, state));
dispatch(handleMoleculeAction(action, 'vector', false, majorViewStage, state));
break;
case actionType.VECTOR_SELECTED:
dispatch(setCurrentVector(undefined));
dispatch(setCurrentVector(action.object_name));
break;
case actionType.VECTOR_DESELECTED:
dispatch(setCurrentVector(action.object_name));
dispatch(setCurrentVector(undefined));
break;
case actionType.TARGET_LOADED:
dispatch(handleTargetAction(action, false));
dispatch(handleTargetAction(action, true));
break;
case actionType.SITE_TURNED_ON:
dispatch(handleMoleculeGroupAction(action, false, stageSummaryView, majorViewStage));
dispatch(handleMoleculeGroupAction(action, true, stageSummaryView, majorViewStage));
break;
case actionType.SITE_TURNED_OFF:
dispatch(handleMoleculeGroupAction(action, true, stageSummaryView, majorViewStage));
dispatch(handleMoleculeGroupAction(action, false, stageSummaryView, majorViewStage));
break;
case actionType.MOLECULE_ADDED_TO_SHOPPING_CART:
dispatch(handleShoppingCartAction(action, false));
dispatch(handleShoppingCartAction(action, true));
break;
case actionType.MOLECULE_REMOVED_FROM_SHOPPING_CART:
dispatch(handleShoppingCartAction(action, true));
dispatch(handleShoppingCartAction(action, false));
break;
case actionType.COMPOUND_SELECTED:
dispatch(handleCompoundAction(action, false));
dispatch(handleCompoundAction(action, true));
break;
case actionType.COMPOUND_DESELECTED:
dispatch(handleCompoundAction(action, true));
dispatch(handleCompoundAction(action, false));
break;
case actionType.REPRESENTATION_CHANGED:
dispatch(handleChangeRepresentationAction(action, false, majorView));
dispatch(handleChangeRepresentationAction(action, true, majorView));
break;
case actionType.REPRESENTATION_ADDED:
dispatch(handleRepresentationAction(action, false, majorView));
dispatch(handleRepresentationAction(action, true, majorView));
break;
case actionType.REPRESENTATION_REMOVED:
dispatch(handleRepresentationAction(action, true, majorView));
dispatch(handleRepresentationAction(action, false, majorView));
break;
default:
break;
Expand Down Expand Up @@ -1168,9 +1169,16 @@ export const getCanRedo = () => (dispatch, getState) => {
};

export const appendAndSendTrackingActions = trackAction => (dispatch, getState) => {
const state = getState();
const isUndoRedoAction = state.trackingReducers.isUndoRedoAction;

if (trackAction && trackAction !== null) {
dispatch(appendToActionList(trackAction));
dispatch(appendToActionList(trackAction, isUndoRedoAction));
dispatch(appendToSendActionList(trackAction));

if (isUndoRedoAction === false) {
dispatch(appendToUndoRedoActionList(trackAction));
}
}

dispatch(checkSendTrackingActions());
Expand Down
8 changes: 7 additions & 1 deletion js/reducers/tracking/trackingReducers.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import undoable, { includeAction } from 'redux-undo';

export const INITIAL_STATE = {
track_actions_list: [],
undo_redo_actions_list: [],
current_actions_list: [],
isTrackingMoleculesRestoring: false,
isTrackingCompoundsRestoring: false,
Expand All @@ -27,6 +28,11 @@ export function trackingReducers(state = INITIAL_STATE, action = {}) {
track_actions_list: [...new Set([...state.track_actions_list, action.track_action])]
});

case constants.APPEND_UNDO_REDO_ACTIONS_LIST:
return Object.assign({}, state, {
undo_redo_actions_list: [...new Set([...state.undo_redo_actions_list, action.track_action])]
});

case constants.SET_CURRENT_ACTIONS_LIST:
return Object.assign({}, state, {
current_actions_list: action.current_actions_list
Expand Down Expand Up @@ -89,5 +95,5 @@ export function trackingReducers(state = INITIAL_STATE, action = {}) {

export const undoableTrackingReducers = undoable(trackingReducers, {
limit: false,
filter: includeAction(constants.APPEND_ACTIONS_LIST)
filter: includeAction(constants.APPEND_UNDO_REDO_ACTIONS_LIST)
});

0 comments on commit 2775d64

Please sign in to comment.