You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
260 lines
7.5 KiB
TypeScript
260 lines
7.5 KiB
TypeScript
// Copyright (C) 2020 Intel Corporation
|
|
//
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
import { AnyAction } from 'redux';
|
|
|
|
import { BoundariesActionTypes } from 'actions/boundaries-actions';
|
|
import { AuthActionTypes } from 'actions/auth-actions';
|
|
import { SettingsActionTypes } from 'actions/settings-actions';
|
|
import { AnnotationActionTypes } from 'actions/annotation-actions';
|
|
|
|
import {
|
|
SettingsState,
|
|
GridColor,
|
|
FrameSpeed,
|
|
ColorBy,
|
|
} from './interfaces';
|
|
|
|
const defaultState: SettingsState = {
|
|
shapes: {
|
|
colorBy: ColorBy.INSTANCE,
|
|
opacity: 3,
|
|
selectedOpacity: 30,
|
|
blackBorders: false,
|
|
showBitmap: false,
|
|
},
|
|
workspace: {
|
|
autoSave: false,
|
|
autoSaveInterval: 15 * 60 * 1000,
|
|
aamZoomMargin: 100,
|
|
showObjectsTextAlways: false,
|
|
showAllInterpolationTracks: false,
|
|
},
|
|
player: {
|
|
frameStep: 10,
|
|
frameSpeed: FrameSpeed.Usual,
|
|
resetZoom: false,
|
|
rotateAll: false,
|
|
grid: false,
|
|
gridSize: 100,
|
|
gridColor: GridColor.White,
|
|
gridOpacity: 100,
|
|
brightnessLevel: 100,
|
|
contrastLevel: 100,
|
|
saturationLevel: 100,
|
|
},
|
|
};
|
|
|
|
export default (state = defaultState, action: AnyAction): SettingsState => {
|
|
switch (action.type) {
|
|
case SettingsActionTypes.SWITCH_ROTATE_ALL: {
|
|
return {
|
|
...state,
|
|
player: {
|
|
...state.player,
|
|
rotateAll: action.payload.rotateAll,
|
|
},
|
|
};
|
|
}
|
|
case SettingsActionTypes.SWITCH_GRID: {
|
|
return {
|
|
...state,
|
|
player: {
|
|
...state.player,
|
|
grid: action.payload.grid,
|
|
},
|
|
};
|
|
}
|
|
case SettingsActionTypes.CHANGE_GRID_SIZE: {
|
|
return {
|
|
...state,
|
|
player: {
|
|
...state.player,
|
|
gridSize: action.payload.gridSize,
|
|
},
|
|
};
|
|
}
|
|
case SettingsActionTypes.CHANGE_GRID_COLOR: {
|
|
return {
|
|
...state,
|
|
player: {
|
|
...state.player,
|
|
gridColor: action.payload.gridColor,
|
|
},
|
|
};
|
|
}
|
|
case SettingsActionTypes.CHANGE_GRID_OPACITY: {
|
|
return {
|
|
...state,
|
|
player: {
|
|
...state.player,
|
|
gridOpacity: action.payload.gridOpacity,
|
|
},
|
|
};
|
|
}
|
|
case SettingsActionTypes.CHANGE_SHAPES_COLOR_BY: {
|
|
return {
|
|
...state,
|
|
shapes: {
|
|
...state.shapes,
|
|
colorBy: action.payload.colorBy,
|
|
},
|
|
};
|
|
}
|
|
case SettingsActionTypes.CHANGE_SHAPES_OPACITY: {
|
|
return {
|
|
...state,
|
|
shapes: {
|
|
...state.shapes,
|
|
opacity: action.payload.opacity,
|
|
},
|
|
};
|
|
}
|
|
case SettingsActionTypes.CHANGE_SELECTED_SHAPES_OPACITY: {
|
|
return {
|
|
...state,
|
|
shapes: {
|
|
...state.shapes,
|
|
selectedOpacity: action.payload.selectedOpacity,
|
|
},
|
|
};
|
|
}
|
|
case SettingsActionTypes.CHANGE_SHAPES_BLACK_BORDERS: {
|
|
return {
|
|
...state,
|
|
shapes: {
|
|
...state.shapes,
|
|
blackBorders: action.payload.blackBorders,
|
|
},
|
|
};
|
|
}
|
|
case SettingsActionTypes.CHANGE_SHOW_UNLABELED_REGIONS: {
|
|
return {
|
|
...state,
|
|
shapes: {
|
|
...state.shapes,
|
|
showBitmap: action.payload.showBitmap,
|
|
},
|
|
};
|
|
}
|
|
case SettingsActionTypes.CHANGE_FRAME_STEP: {
|
|
return {
|
|
...state,
|
|
player: {
|
|
...state.player,
|
|
frameStep: action.payload.frameStep,
|
|
},
|
|
};
|
|
}
|
|
case SettingsActionTypes.CHANGE_FRAME_SPEED: {
|
|
return {
|
|
...state,
|
|
player: {
|
|
...state.player,
|
|
frameSpeed: action.payload.frameSpeed,
|
|
},
|
|
};
|
|
}
|
|
case SettingsActionTypes.SWITCH_RESET_ZOOM: {
|
|
return {
|
|
...state,
|
|
player: {
|
|
...state.player,
|
|
resetZoom: action.payload.resetZoom,
|
|
},
|
|
};
|
|
}
|
|
case SettingsActionTypes.CHANGE_BRIGHTNESS_LEVEL: {
|
|
return {
|
|
...state,
|
|
player: {
|
|
...state.player,
|
|
brightnessLevel: action.payload.level,
|
|
},
|
|
};
|
|
}
|
|
case SettingsActionTypes.CHANGE_CONTRAST_LEVEL: {
|
|
return {
|
|
...state,
|
|
player: {
|
|
...state.player,
|
|
contrastLevel: action.payload.level,
|
|
},
|
|
};
|
|
}
|
|
case SettingsActionTypes.CHANGE_SATURATION_LEVEL: {
|
|
return {
|
|
...state,
|
|
player: {
|
|
...state.player,
|
|
saturationLevel: action.payload.level,
|
|
},
|
|
};
|
|
}
|
|
case SettingsActionTypes.SWITCH_AUTO_SAVE: {
|
|
return {
|
|
...state,
|
|
workspace: {
|
|
...state.workspace,
|
|
autoSave: action.payload.autoSave,
|
|
},
|
|
};
|
|
}
|
|
case SettingsActionTypes.CHANGE_AUTO_SAVE_INTERVAL: {
|
|
return {
|
|
...state,
|
|
workspace: {
|
|
...state.workspace,
|
|
autoSaveInterval: action.payload.autoSaveInterval,
|
|
},
|
|
};
|
|
}
|
|
case SettingsActionTypes.CHANGE_AAM_ZOOM_MARGIN: {
|
|
return {
|
|
...state,
|
|
workspace: {
|
|
...state.workspace,
|
|
aamZoomMargin: action.payload.aamZoomMargin,
|
|
},
|
|
};
|
|
}
|
|
case SettingsActionTypes.SWITCH_SHOWNIG_INTERPOLATED_TRACKS: {
|
|
return {
|
|
...state,
|
|
workspace: {
|
|
...state.workspace,
|
|
showAllInterpolationTracks: action.payload.showAllInterpolationTracks,
|
|
},
|
|
};
|
|
}
|
|
case SettingsActionTypes.SWITCH_SHOWING_OBJECTS_TEXT_ALWAYS: {
|
|
return {
|
|
...state,
|
|
workspace: {
|
|
...state.workspace,
|
|
showObjectsTextAlways: action.payload.showObjectsTextAlways,
|
|
},
|
|
};
|
|
}
|
|
case BoundariesActionTypes.RESET_AFTER_ERROR:
|
|
case AnnotationActionTypes.GET_JOB_SUCCESS: {
|
|
const { job } = action.payload;
|
|
|
|
return {
|
|
...defaultState,
|
|
player: {
|
|
...defaultState.player,
|
|
resetZoom: job && job.task.mode === 'annotation',
|
|
},
|
|
};
|
|
}
|
|
case AuthActionTypes.LOGOUT_SUCCESS: {
|
|
return { ...defaultState };
|
|
}
|
|
default: {
|
|
return state;
|
|
}
|
|
}
|
|
};
|