scenario.tsx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import { createSlice } from "@reduxjs/toolkit";
  2. interface ScenarioState {
  3. name: string | null;
  4. step:'sleep',
  5. schedule: {
  6. fast: {
  7. start_time: string | null;
  8. end_time: string | null;
  9. } | null;
  10. sleep: {
  11. start_time: string | null;
  12. end_time: string | null;
  13. } | null;
  14. } | null;
  15. }
  16. const initialState: ScenarioState = {
  17. name: null,
  18. step:'sleep',
  19. schedule: null,
  20. }
  21. const scenarioSlice = createSlice({
  22. name: 'schedule',
  23. initialState,
  24. reducers: {
  25. setStep(state, action) {
  26. state.step = action.payload;
  27. },
  28. setScenarioName(state, action) {
  29. state.name = action.payload;
  30. console.log(state.name);
  31. },
  32. setScenario(state, action) {
  33. state.schedule = action.payload.schedule;
  34. state.name = action.payload.name;
  35. },
  36. setFastSchedule(state, action) {
  37. if (state.schedule == null){
  38. state.schedule = {
  39. fast: {
  40. start_time: null,
  41. end_time: null,
  42. },
  43. sleep: {
  44. start_time: null,
  45. end_time: null,
  46. }
  47. }
  48. }
  49. state.schedule!.fast = action.payload;
  50. },
  51. setSleepSchedule(state, action) {
  52. state.schedule!.sleep = action.payload;
  53. },
  54. }
  55. });
  56. export default scenarioSlice.reducer;
  57. export const { setScenarioName,setScenario, setFastSchedule, setSleepSchedule,setStep } = scenarioSlice.actions;