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