scenario.tsx 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. },
  31. setScenario(state, action) {
  32. state.schedule = action.payload.schedule;
  33. state.name = action.payload.name;
  34. },
  35. setFastSchedule(state, action) {
  36. if (state.schedule == null){
  37. state.schedule = {
  38. fast: {
  39. start_time: null,
  40. end_time: null,
  41. },
  42. sleep: {
  43. start_time: null,
  44. end_time: null,
  45. }
  46. }
  47. }
  48. state.schedule!.fast = action.payload;
  49. },
  50. setSleepSchedule(state, action) {
  51. state.schedule!.sleep = action.payload;
  52. },
  53. }
  54. });
  55. export default scenarioSlice.reducer;
  56. export const { setScenarioName,setScenario, setFastSchedule, setSleepSchedule,setStep } = scenarioSlice.actions;