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.
88 lines
2.5 KiB
TypeScript
88 lines
2.5 KiB
TypeScript
import { AnyAction } from 'redux';
|
|
|
|
import { Canvas } from '../canvas';
|
|
|
|
import { AnnotationState } from './interfaces';
|
|
import { AnnotationActionTypes } from '../actions/annotation-actions';
|
|
|
|
const defaultState: AnnotationState = {
|
|
canvasInstance: new Canvas(),
|
|
canvasIsReady: false,
|
|
jobInstance: null,
|
|
frame: 0,
|
|
playing: false,
|
|
annotations: [],
|
|
frameData: null,
|
|
dataFetching: false,
|
|
jobFetching: false,
|
|
};
|
|
|
|
export default (state = defaultState, action: AnyAction): AnnotationState => {
|
|
switch (action.type) {
|
|
case AnnotationActionTypes.GET_JOB: {
|
|
return {
|
|
...defaultState,
|
|
jobFetching: true,
|
|
};
|
|
}
|
|
case AnnotationActionTypes.GET_JOB_SUCCESS: {
|
|
return {
|
|
...defaultState,
|
|
jobFetching: false,
|
|
jobInstance: action.payload.jobInstance,
|
|
frame: action.payload.frame,
|
|
frameData: action.payload.frameData,
|
|
annotations: action.payload.annotations,
|
|
};
|
|
}
|
|
case AnnotationActionTypes.GET_JOB_FAILED: {
|
|
return {
|
|
...state,
|
|
jobInstance: undefined,
|
|
jobFetching: false,
|
|
};
|
|
}
|
|
case AnnotationActionTypes.CHANGE_FRAME: {
|
|
return {
|
|
...state,
|
|
frameData: null,
|
|
annotations: [],
|
|
dataFetching: true,
|
|
canvasIsReady: false,
|
|
};
|
|
}
|
|
case AnnotationActionTypes.CHANGE_FRAME_SUCCESS: {
|
|
return {
|
|
...state,
|
|
frame: action.payload.frame,
|
|
annotations: action.payload.annotations,
|
|
frameData: action.payload.frameData,
|
|
dataFetching: false,
|
|
};
|
|
}
|
|
case AnnotationActionTypes.CHANGE_FRAME_FAILED: {
|
|
return {
|
|
...state,
|
|
dataFetching: false,
|
|
}; // add notification if failed
|
|
}
|
|
case AnnotationActionTypes.SWITCH_PLAY: {
|
|
return {
|
|
...state,
|
|
playing: action.payload.playing,
|
|
};
|
|
}
|
|
case AnnotationActionTypes.CONFIRM_CANVAS_READY: {
|
|
return {
|
|
...state,
|
|
canvasIsReady: true,
|
|
};
|
|
}
|
|
default: {
|
|
return {
|
|
...state,
|
|
};
|
|
}
|
|
}
|
|
};
|