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

4 months ago
4 months ago
2 months ago
4 months ago
4 months ago
2 months ago
2 months ago
  1. import { createSlice, PayloadAction } from '@reduxjs/toolkit';
  2. import { TaskState, TrackRecordSig } from '../../services/wsTypes';
  3. export interface MeasureState {
  4. taskState?: TaskState['data'];
  5. // leftFinished: boolean;
  6. leftPoints: TrackRecordSig['data'][];
  7. rightPoints: TrackRecordSig['data'][];
  8. measureData:[],
  9. measureStatus: string,
  10. measureFinishData: []
  11. }
  12. const initialState: MeasureState = {
  13. taskState: undefined,
  14. // leftFinished: false,
  15. leftPoints: [],
  16. rightPoints: [],
  17. measureData: [],
  18. measureStatus: '',
  19. measureFinishData: [],
  20. };
  21. function isLeftFinished(state: MeasureState) {
  22. if (
  23. state.taskState === 'FINISH_RECORD_LEFT' ||
  24. state.taskState === 'START_RECORD_RIGHT' ||
  25. state.taskState === 'FINISH_RECORD_RIGHT'
  26. )
  27. return true;
  28. return false;
  29. }
  30. let status: 1| 2 ;
  31. export const measureSlice = createSlice({
  32. name: 'measure',
  33. initialState,
  34. reducers: {
  35. clearData: (state) => {
  36. state.measureFinishData = [];
  37. state.leftPoints = [];
  38. state.rightPoints = [];
  39. state.measureData = [];
  40. state.measureStatus = '';
  41. },
  42. updateMeasureStatus: (state, action: PayloadAction<string>) => {
  43. state.measureStatus = action.payload
  44. },
  45. updateTaskState: (state, action: PayloadAction<TaskState['data']>) => {
  46. console.log('action.payload---', action.payload)
  47. if (
  48. action.payload === 'SPEED_DETECTED' ||
  49. action.payload === 'END_RECORD'
  50. ) {
  51. return;
  52. }
  53. state.taskState = action.payload;
  54. if (action.payload === 'START_RECORD_SIG' || action.payload === 'WRONG_SIDE') {
  55. state.leftPoints = [];
  56. state.rightPoints = [];
  57. }
  58. if(action.payload === 'WAITING_FOR_RECORD_THE_1ST_SIDE') {
  59. status = 1
  60. }else if(action.payload === 'WAITING_FOR_RECORD_THE_2ND_SIDE') {
  61. status = 2
  62. }
  63. state.measureStatus = action.payload
  64. 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)) {
  65. const audio = new Audio('/audio/ticking.wav');
  66. audio.play().then(() => {});
  67. }
  68. },
  69. addNewPoint: (state, action: PayloadAction<TrackRecordSig['data']>) => {
  70. if (isLeftFinished(state)) {
  71. state.rightPoints.push(action.payload);
  72. } else {
  73. state.leftPoints.push(action.payload);
  74. }
  75. },
  76. resetState: (state) => {
  77. state.taskState = undefined;
  78. state.leftPoints = [];
  79. state.rightPoints = [];
  80. },
  81. updateMeasureData:(state, { payload })=>{
  82. state.measureData = payload
  83. },
  84. updateMeasureFinish: (state, { payload })=>{
  85. console.log('payload--', payload)
  86. // if(payload.outline1 && payload.outline1.length){
  87. // state.rightPoints = payload.outline1
  88. // }
  89. // if(payload.outline2 && payload.outline2.length){
  90. // state.leftPoints = payload.outline2
  91. // }
  92. state.measureFinishData = payload
  93. },
  94. },
  95. });
  96. export const { updateTaskState, addNewPoint, resetState, updateMeasureData,updateMeasureStatus, updateMeasureFinish, clearData } = measureSlice.actions;
  97. export default measureSlice.reducer;