You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

103 lines
3.2 KiB

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;