ChooseScenario.tsx 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. import { View, Text } from "@tarojs/components";
  2. import Buttons from '@components/Buttons';
  3. import Texts from '@components/Texts';
  4. import Rings from '@components/Rings';
  5. import Footer from '@components/Footer';
  6. import SingleSelect from '../../../components/SingleSelect';
  7. import { ComponentStatus, TextType } from "@utils/types";
  8. import { useTranslation } from 'react-i18next'
  9. import './ChooseScenario.scss'
  10. import { useState } from "react";
  11. import { useReady } from "@tarojs/taro";
  12. import Taro from "@tarojs/taro";
  13. import { useDispatch, useSelector } from "react-redux";
  14. import { setScenario, setScenarioName } from "@/store/scenario";
  15. import { getPlans } from "@/services/trackTimeDuration";
  16. export default function Component() {
  17. const { t } = useTranslation()
  18. const dispatch = useDispatch();
  19. const [selIndex,setSelIndex] = useState(0)
  20. const [scenarios,setScenarios] = useState<any[]>([])
  21. const selScenario = useSelector((state: any) => state.scenario);
  22. useReady(()=>{
  23. console.log(selScenario)
  24. if (selScenario) {
  25. if (selScenario.name == 'FAST_SLEEP'){
  26. setSelIndex(2)
  27. }
  28. else if (selScenario.name == 'SLEEP'){
  29. setSelIndex(1)
  30. }
  31. else {
  32. setSelIndex(0)
  33. }
  34. }
  35. getPlans().then(res=>{
  36. const data = res as { scenarios: any[] };
  37. setScenarios(data.scenarios)
  38. })
  39. })
  40. function next() {
  41. console.log(scenarios);
  42. // var scenario = scenarios[selIndex];
  43. // setScenario(scenario)
  44. Taro.navigateTo({
  45. url: '/pages/SetSchedule'
  46. })
  47. }
  48. function footerContent() {
  49. var style = {}
  50. switch (selIndex) {
  51. case 0:
  52. style = { backgroundColor: '#AAFF00' }
  53. break;
  54. case 1:
  55. style = { backgroundColor: '#00FFFF' }
  56. break;
  57. case 2:
  58. style = {
  59. background: 'linear-gradient(to right, #AAFF00, #00FFFF)'
  60. }
  61. break;
  62. }
  63. return <View>
  64. <Buttons title='Next' onClick={next} style={{...style,width:320}}/>
  65. </View>
  66. }
  67. function items() {
  68. const array: any[] = []
  69. array.push(
  70. <View className="item_row">
  71. <Rings radius={33} strokeWidth={8} color='#AAFF00' canvasId='0' />
  72. <View className="item_txt_bg">
  73. <Text className="item_txt" style={{ color: '#AAFF00' }}>{t('page.choose_scenario.fast')}</Text>
  74. </View>
  75. </View>
  76. );
  77. array.push(
  78. <View className="item_row">
  79. <Rings radius={33} strokeWidth={8} color='#00FFFF' canvasId='1' />
  80. <View className="item_txt_bg">
  81. <Text className="item_txt" style={{ color: '#00FFFF' }}>{t('page.choose_scenario.sleep')}</Text>
  82. </View>
  83. </View>
  84. )
  85. array.push(
  86. <View className="item_row">
  87. <View style={{ position: 'relative', zIndex: 1 }}>
  88. <Rings radius={33} strokeWidth={8} color='#AAFF00' canvasId='3' />
  89. <View style={{ display: 'flex', position: 'absolute', left: 0, right: 0, top: 0, bottom: 0, alignItems: 'center', justifyContent: 'center' }}>
  90. <Rings radius={23} strokeWidth={6} color='#00FFFF' canvasId='4' />
  91. </View>
  92. </View>
  93. <View className="item_txt_bg">
  94. <Text className="item_txt" style={{ color: '#00FFFF' }}>{t('page.choose_scenario.fast_sleep')}</Text>
  95. </View>
  96. </View>
  97. )
  98. return array;
  99. }
  100. function handleItemSelect(index: number) {
  101. setSelIndex(index)
  102. dispatch(setScenario(scenarios[index]) as any)
  103. // dispatch(setScenarioName(scenarios[index].scenario) as any)
  104. }
  105. return <View className="container">
  106. <Texts text={t('page.choose_scenario.title')} type={TextType.primary}></Texts>
  107. <Texts text={t('page.choose_scenario.sub_title')} type={TextType.secondary}></Texts>
  108. <View style={{ height: 20 }} />
  109. <View style={{ position: 'relative', zIndex: 1 }}>
  110. <SingleSelect items={items()} itemSelect={handleItemSelect} selIndex={selIndex}/>
  111. </View>
  112. <Footer child={footerContent()} />
  113. </View>;
  114. }