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

// 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;
}
}
};