Skip to content

Commit

Permalink
#504 Restore NGL view settings
Browse files Browse the repository at this point in the history
  • Loading branch information
Adriána Kohanová committed Jan 25, 2021
1 parent 4efbbee commit 80744db
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 2 deletions.
20 changes: 18 additions & 2 deletions js/components/preview/viewerControls/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import React, { memo, useState, useContext, useEffect, useCallback } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { Button } from '../../common/Inputs/Button';
import { Settings, Mouse, PersonalVideo, Undo, Redo } from '@material-ui/icons';
import { Settings, Mouse, PersonalVideo, Undo, Redo, Restore } from '@material-ui/icons';
import { ButtonGroup, Grid, makeStyles, Tooltip } from '@material-ui/core';
import { SettingControls } from './settingsControls';
import DisplayControls from './displayControls/';
Expand All @@ -17,7 +17,8 @@ import {
getCanRedo,
getCanUndo,
getUndoActionText,
getRedoActionText
getRedoActionText,
restoreNglViewSettings
} from '../../../../js/reducers/tracking/dispatchActions';
import { NglContext } from '../../nglView/nglProvider';

Expand All @@ -32,6 +33,10 @@ const initDrawers = { [drawers.settings]: false, [drawers.display]: false, [draw
const useStyles = makeStyles(theme => ({
button: {
padding: theme.spacing(1)
},
buttonMargin: {
padding: theme.spacing(1),
marginLeft: theme.spacing(8)
}
}));

Expand Down Expand Up @@ -155,6 +160,17 @@ export const ViewerControls = memo(({}) => {
</Tooltip>
</ButtonGroup>
</Grid>

<Tooltip title="Restore ngl view settings">
<Button
color="primary"
onClick={() => dispatch(restoreNglViewSettings(nglViewList))}
startIcon={<Restore />}
className={classes.buttonMargin}
>
Restore view
</Button>
</Tooltip>
</Grid>
<SettingControls open={drawerSettings[drawers.settings]} onClose={closeAllDrawers} />
<DisplayControls open={drawerSettings[drawers.display]} onClose={closeAllDrawers} />
Expand Down
48 changes: 48 additions & 0 deletions js/reducers/tracking/dispatchActions.js
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ import {
updateComponentRepresentationVisibilityAll,
changeComponentRepresentation
} from '../../../js/reducers/ngl/actions';
import { NGL_PARAMS } from '../../components/nglView/constants';
import * as listType from '../../constants/listTypes';
import { assignRepresentationToComp } from '../../components/nglView/generatingObjects';
import {
Expand Down Expand Up @@ -719,6 +720,53 @@ export const restoreAfterTargetActions = (stages, projectId) => async (dispatch,
}
};

export const restoreNglViewSettings = stages => (dispatch, getState) => {
const state = getState();
const majorView = stages.find(view => view.id === VIEWS.MAJOR_VIEW).stage;
const summaryView = stages.find(view => view.id === VIEWS.SUMMARY_VIEW).stage;

const viewParams = state.nglReducers.viewParams;

const currentActionList = state.trackingReducers.track_actions_list;
const orderedActionList = currentActionList.reverse((a, b) => a.timestamp - b.timestamp);

let backgroundAction = orderedActionList.find(action => action.type === actionType.BACKGROUND_COLOR_CHANGED);
if (backgroundAction && backgroundAction.newSetting) {
let value = backgroundAction.newSetting;
dispatch(setNglBckGrndColor(value, majorView, summaryView));
}

let clipNearAction = orderedActionList.find(action => action.type === actionType.CLIP_NEAR);
if (clipNearAction && clipNearAction.newSetting) {
let value = clipNearAction.newSetting;
dispatch(setNglClipNear(value, viewParams[NGL_PARAMS.clipNear], majorView));
}

let clipFarAction = orderedActionList.find(action => action.type === actionType.CLIP_FAR);
if (clipFarAction && clipFarAction.newSetting) {
let value = clipFarAction.newSetting;
dispatch(setNglClipFar(value, viewParams[NGL_PARAMS.clipFar], majorView));
}

let clipDistAction = orderedActionList.find(action => action.type === actionType.CLIP_DIST);
if (clipDistAction && clipDistAction.newSetting) {
let value = clipDistAction.newSetting;
dispatch(setNglClipDist(value, viewParams[NGL_PARAMS.clipDist], majorView));
}

let fogNearAction = orderedActionList.find(action => action.type === actionType.FOG_NEAR);
if (fogNearAction && fogNearAction.newSetting) {
let value = fogNearAction.newSetting;
dispatch(setNglFogNear(value, viewParams[NGL_PARAMS.fogNear], majorView));
}

let fogFarAction = orderedActionList.find(action => action.type === actionType.FOG_FAR);
if (fogFarAction && fogFarAction.newSetting) {
let value = fogFarAction.newSetting;
dispatch(setNglFogFar(value, viewParams[NGL_PARAMS.fogFar], majorView));
}
};

const restoreNglStateAction = (orderedActionList, stages) => (dispatch, getState) => {
let actions = orderedActionList.filter(action => action.type === actionType.NGL_STATE);
let action = [...actions].pop();
Expand Down

0 comments on commit 80744db

Please sign in to comment.