Skip to content

Commit e1a9072

Browse files
baloolaofftherailz
authored andcommitted
Fix #3348 reset time tools state switching to a new map (#3384)
1 parent da6bcc1 commit e1a9072

6 files changed

Lines changed: 58 additions & 0 deletions

File tree

web/client/reducers/__tests__/dimension-test.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,5 +55,16 @@ describe('Test the dimension reducer', () => {
5555
const state = dimension(initialState, action);
5656
expect(state).toExist();
5757
});
58+
it('reset dimension data when switch to a new map', () => {
59+
const action = {
60+
type: 'RESET_CONTROLS'
61+
};
62+
const initialState = {
63+
currentTime: '00:00:00z'
64+
};
65+
const state = dimension(initialState, action);
66+
expect(state).toExist();
67+
expect(state.currentTime).toNotExist();
68+
});
5869

5970
});

web/client/reducers/__tests__/playback-test.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,4 +75,16 @@ describe('playback reducer', () => {
7575
expect(state.metadata.previous).toBe(previous);
7676
expect(state.metadata.forTime).toBe(forTime);
7777
});
78+
it('reset playback data when switch to a new map', () => {
79+
const action = {
80+
type: 'RESET_CONTROLS'
81+
};
82+
const D0 = "2015-11-29T16:17:46.520Z";
83+
const D1 = "2017-11-29T16:17:46.520Z";
84+
const state = playback( {frames: [D0, D1], currentFrame: 0 }, action);
85+
expect(state).toExist();
86+
expect(state.frame).toNotExist();
87+
expect(state.currentFrame).toBe(-1);
88+
});
89+
7890
});

web/client/reducers/__tests__/timeline-test.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,4 +98,20 @@ describe('Test the timeline reducer', () => {
9898
expect(state.rangeData.layer2).toExist();
9999
expect(state.selectedLayer).toNotExist();
100100
});
101+
it('reset timeline data when switch to a new map', () => {
102+
const action = {
103+
type: 'RESET_CONTROLS'
104+
};
105+
const initialState = {
106+
selectedLayer: 'layer3',
107+
rangeData: {
108+
layer1: { range: 'old range', histogram: 'old histogram'},
109+
layer2: { }
110+
}
111+
};
112+
const state = timeline(initialState, action);
113+
expect(state).toExist();
114+
expect(state.rangeData).toNotExist();
115+
expect(state.selectedLayer).toNotExist();
116+
});
101117
});

web/client/reducers/dimension.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
const { UPDATE_LAYER_DIMENSION_DATA, SET_CURRENT_TIME, SET_OFFSET_TIME, MOVE_TIME } = require('../actions/dimension');
22
const { REMOVE_NODE } = require('../actions/layers');
3+
const { RESET_CONTROLS } = require('../actions/controls');
34
const { set } = require('../utils/ImmutableUtils');
45
const moment = require('moment');
56
const {mapValues, pickBy } = require('lodash');
@@ -54,6 +55,9 @@ module.exports = (state = {}, action) => {
5455
const newData = mapValues(state.data, (o) => pickBy(o, (values, keys) => keys !== action.node));
5556
return set(`data`, newData, state);
5657
}
58+
case RESET_CONTROLS: {
59+
return set('data', undefined, set('currentTime', undefined, set('offsetTime', undefined, state)));
60+
}
5761
default:
5862
return state;
5963
}

web/client/reducers/playback.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
const { PLAY, PAUSE, STOP, STATUS, SET_FRAMES, APPEND_FRAMES, FRAMES_LOADING, SET_CURRENT_FRAME, SELECT_PLAYBACK_RANGE, CHANGE_SETTING, UPDATE_METADATA } = require('../actions/playback');
2+
const { RESET_CONTROLS } = require('../actions/controls');
23
const { set } = require('../utils/ImmutableUtils');
34

45
module.exports = (state = { status: STATUS.STOP, currentFrame: -1, settings: {
@@ -45,6 +46,16 @@ module.exports = (state = { status: STATUS.STOP, currentFrame: -1, settings: {
4546
case UPDATE_METADATA: {
4647
return set('metadata', { next: action.next, previous: action.previous, forTime: action.forTime}, state);
4748
}
49+
case RESET_CONTROLS: {
50+
return set('metadata', undefined, set('framesLoading', undefined, set('playbackRange', undefined, set('frames', undefined,
51+
set('currentFrame', -1, set('status', "STOP", set('settings', {
52+
timeStep: 1,
53+
stepUnit: "days",
54+
frameDuration: 5,
55+
following: true
56+
}, state)
57+
))))));
58+
}
4859
default:
4960
return state;
5061
}

web/client/reducers/timeline.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
const { RANGE_CHANGED } = require('../actions/timeline');
22
const { REMOVE_NODE } = require('../actions/layers');
3+
const { RESET_CONTROLS } = require('../actions/controls');
34
const { RANGE_DATA_LOADED, LOADING, SELECT_LAYER, MOUSE_EVENT } = require('../actions/timeline');
45
const { set } = require('../utils/ImmutableUtils');
56
const { assign, pickBy, has } = require('lodash');
@@ -81,6 +82,9 @@ module.exports = (state = {
8182
selectedLayer: state.selectedLayer === action.node ? undefined : state.selectedLayer
8283
});
8384
}
85+
case RESET_CONTROLS: {
86+
return assign({}, state, { range: undefined, rangeData: undefined, selectedLayer: undefined, loading: undefined, MouseEvent: undefined});
87+
}
8488
default:
8589
return state;
8690
}

0 commit comments

Comments
 (0)