|
|
import { createSlice, PayloadAction } from '@reduxjs/toolkit'; import { TaskState, TrackRecordSig } from '../../services/wsTypes';
export interface MeasureState { taskState?: TaskState['data']; // leftFinished: boolean;
leftPoints: TrackRecordSig['data'][]; rightPoints: TrackRecordSig['data'][]; measureData:[], measureStatus: string, measureFinishData: [] } const initialState: MeasureState = { taskState: undefined, // leftFinished: false,
leftPoints: [], rightPoints: [], measureData: [], measureStatus: '', measureFinishData: [], };
function isLeftFinished(state: MeasureState) { if ( state.taskState === 'FINISH_RECORD_LEFT' || state.taskState === 'START_RECORD_RIGHT' || state.taskState === 'FINISH_RECORD_RIGHT' ) return true; return false; } let status: 1| 2 ; export const measureSlice = createSlice({ name: 'measure', initialState, reducers: { clearData: (state) => { state.measureFinishData = []; state.leftPoints = []; state.rightPoints = []; state.measureData = []; state.measureStatus = ''; }, updateMeasureStatus: (state, action: PayloadAction<string>) => { state.measureStatus = action.payload }, updateTaskState: (state, action: PayloadAction<TaskState['data']>) => { console.log('action.payload---', action.payload) if ( action.payload === 'SPEED_DETECTED' || action.payload === 'END_RECORD' ) { return; } state.taskState = action.payload; if (action.payload === 'START_RECORD_SIG' || action.payload === 'WRONG_SIDE') { state.leftPoints = []; state.rightPoints = []; } if(action.payload === 'WAITING_FOR_RECORD_THE_1ST_SIDE') { status = 1 }else if(action.payload === 'WAITING_FOR_RECORD_THE_2ND_SIDE') { status = 2 } state.measureStatus = action.payload if((['START_RECORD_LEFT', 'START_RECORD_RIGHT'].includes(action.payload) && status === 1) || (['FINISH_RECORD_LEFT', 'FINISH_RECORD_RIGHT'].includes(action.payload) && status === 1) || ['FINISH_RECORD'].includes(action.payload)) { const audio = new Audio('/audio/ticking.wav'); audio.play().then(() => {}); } }, addNewPoint: (state, action: PayloadAction<TrackRecordSig['data']>) => { if (isLeftFinished(state)) { state.rightPoints.push(action.payload); } else { state.leftPoints.push(action.payload); } }, resetState: (state) => { state.taskState = undefined; state.leftPoints = []; state.rightPoints = []; },
updateMeasureData:(state, { payload })=>{ state.measureData = payload },
updateMeasureFinish: (state, { payload })=>{ console.log('payload--', payload) // if(payload.outline1 && payload.outline1.length){
// state.rightPoints = payload.outline1
// }
// if(payload.outline2 && payload.outline2.length){
// state.leftPoints = payload.outline2
// }
state.measureFinishData = payload }, }, });
export const { updateTaskState, addNewPoint, resetState, updateMeasureData,updateMeasureStatus, updateMeasureFinish, clearData } = measureSlice.actions; export default measureSlice.reducer;
|