import Buttons from "@/components/basic/Buttons"; import { setPlan } from "@/services/trackTimeDuration"; import { setScenario, setStep } from "@/store/scenario"; import { View, Text, PageContainer } from "@tarojs/components"; import "./SetSchedule.scss"; import Taro, { useDidShow, useReady } from "@tarojs/taro"; import { useEffect, useRef, useState } from "react"; import { useDispatch, useSelector } from "react-redux"; import Footer from "@/components/layout/Footer"; import PickerViews from "@/components/input/PickerViews"; import { durationDatas, durationIndex, durationTime, pickerDurations } from "../hooks/Console"; import { TimeFormatter } from "@/utils/time_format"; import Modal from "@/components/layout/Modal"; import Dial from './Dial'; import TimePicker from "@/features/common/TimePicker"; import { SetScheduleBtn } from "@/features/common/SpecBtns"; import Layout from "@/components/layout/layout"; import { NaviBarTitleShowType, TemplateType } from "@/utils/types"; import { useTranslation } from "react-i18next"; import { ColorType } from "@/context/themes/color"; import TitleView from "./TitleView"; import { jumpPage } from "../hooks/Common"; export default function Component() { const isFastFirst = true; const { t } = useTranslation() const dispatch = useDispatch(); const canvasRef = useRef(null); const [scenario] = useState(useSelector((state: any) => state.scenario)) // const scenario = useSelector((state: any) => state.scenario); const common = useSelector((state: any) => state.common); const [isOpen, setIsOpen] = useState(false) const [isTimeOpen, setIsTimeOpen] = useState(false) const [btnDisable, setBtnDisable] = useState(false) const pickerRef = useRef(null); // const [count,setCount] = useState(0) const [beginChange, setBeginChange] = useState(true) const [operateType, setOperateType] = useState(0) const [isModalTimePicker,setIsModalTimePicker] = useState(false) var scheduleObj: { start_time: any; end_time: any; }; if (scenario.name == 'FAST') { scheduleObj = scenario.schedule.fast } else if (scenario.name == 'SLEEP') { scheduleObj = scenario.schedule.sleep } else { if (scenario.step == 'fast') { scheduleObj = scenario.schedule.fast } else { scheduleObj = scenario.schedule.sleep } } const [startTime, setStartTime] = useState(scheduleObj.start_time) const [endTime, setEndTime] = useState(scheduleObj.end_time) global.startTime = startTime global.endTime = endTime const [pickerValue, setPickerValue] = useState(durationIndex(scheduleObj.start_time, scheduleObj.end_time, common)) const [hours, setHours] = useState(durationTime(scheduleObj.start_time, scheduleObj.end_time)[0]) const [minutes, setMinutes] = useState(durationTime(scheduleObj.start_time, scheduleObj.end_time)[1]) const [chooseStart, setChooseStart] = useState(true) const [count, setCount] = useState(0) useReady(() => { if (global.schedule_fast && scenario.step == 'fast') { scheduleObj = global.schedule_fast } if (global.schedule_sleep && scenario.step == 'sleep') { scheduleObj = global.schedule_sleep } setStartTime(scheduleObj.start_time) setEndTime(scheduleObj.end_time) setPickerValue(durationIndex(scheduleObj.start_time, scheduleObj.end_time, common)) setHours(durationTime(scheduleObj.start_time, scheduleObj.end_time)[0]) setMinutes(durationTime(scheduleObj.start_time, scheduleObj.end_time)[1]) // var title = scenario.step == 'fast' ? 'Fast schedule' : 'Sleep schedule' // Taro.setNavigationBarTitle({ // title: title // }) }) useEffect(() => { if (isOpen || isTimeOpen) { global.disableCanvasGesture = true } else { global.disableCanvasGesture = false } }, [isOpen, isTimeOpen]) useDidShow(() => { setCount(count + 1) }) function start() { if (scenario.name == 'FAST' || scenario.name == 'SLEEP') { setBtnDisable(true) setPlan({ scenario: scenario.name, schedule: scenario.name == 'FAST' ? { fast: { start_time: startTime, end_time: endTime, } } : { sleep: { start_time: startTime, end_time: endTime, } } }).then(res => { setBtnDisable(false) global.checkData() Taro.navigateBack({ delta: 3 }) }).catch(e => { setBtnDisable(false) }) } else { if ((scenario.step == 'fast' && isFastFirst) || (scenario.step == 'sleep' && !isFastFirst)) { var obj = JSON.parse(JSON.stringify(scenario)) if (isFastFirst) { obj.schedule.fast = { start_time: startTime, end_time: endTime, } dispatch(setStep('sleep')) dispatch(setScenario(obj)) } else { obj.schedule.sleep = { start_time: startTime, end_time: endTime, } dispatch(setStep('fast')) dispatch(setScenario(obj)) } saveTempCache(startTime, endTime) jumpPage('/pages/clock/SetSchedule') } else { commit() } } } function saveTempCache(strStart, strEnd) { if (scenario.step == 'fast') { global.schedule_fast = { start_time: strStart, end_time: strEnd, } } if (scenario.step == 'sleep') { global.schedule_sleep = { start_time: strStart, end_time: strEnd, } } } function commit() { setBtnDisable(true) setPlan({ scenario: scenario.name, schedule: { fast: { start_time: isFastFirst ? scenario.schedule.fast.start_time : startTime, end_time: isFastFirst ? scenario.schedule.fast.end_time : endTime, }, sleep: { start_time: !isFastFirst ? scenario.schedule.sleep.start_time : startTime, end_time: !isFastFirst ? scenario.schedule.sleep.end_time : endTime, } } }).then(res => { setBtnDisable(false) dispatch(setStep('fast')) global.checkData() Taro.navigateBack({ delta: 4 }) }).catch(e => { setBtnDisable(false) }) } function onStartTimeChange(e: string) { setIsTimeOpen(false) setBeginChange(true) setStartTime(e) setPickerValue(durationIndex(e, endTime, common)) setHours(durationTime(e, endTime)[0]) setMinutes(durationTime(e, endTime)[1]) saveTempCache(e, endTime); global.updateDial(e, endTime) } function onEndTimeChange(e: string) { setIsTimeOpen(false) setBeginChange(false) setEndTime(e) setPickerValue(durationIndex(startTime, e, common)) setHours(durationTime(startTime, e)[0]) setMinutes(durationTime(startTime, e)[1]) saveTempCache(startTime, e); console.log(e) global.updateDial(startTime, e) } function showPicker() { setIsOpen(true) } function durationChange(e) { var count = (e[0] + common.duration.min) * 60 + e[1] * common.duration.step var h = parseInt(count / 60) var m = count % 60 setHours(h) setMinutes(m) setPickerValue(e) setIsOpen(false) if (beginChange) { var strEnd = TimeFormatter.calculateTimeByTimeRange(count, startTime, true) setEndTime(strEnd); saveTempCache(startTime, strEnd) global.updateDial(startTime, strEnd) } else { var strStart = TimeFormatter.calculateTimeByTimeRange(count, endTime, false) setStartTime(strStart); saveTempCache(strStart, endTime) global.updateDial(strStart, endTime) } } global.startDuration = (type) => { setOperateType(type) } global.updateDuration = (start, end) => { var startCount = parseInt(start.split(':')[0]) * 60 + parseInt(start.split(':')[1]) var endCount = parseInt(end.split(':')[0]) * 60 + parseInt(end.split(':')[1]) if (operateType == 1 && startCount % 30 == 0) { Taro.vibrateShort({ type: 'medium', }) } else if (operateType == 2 && endCount % 30 == 0) { Taro.vibrateShort({ type: 'medium', }) } else if (operateType == 3 && (startCount % 30 == 0 || endCount % 30 == 0)) { Taro.vibrateShort({ type: 'medium', }) } setStartTime(start) setEndTime(end) setPickerValue(durationIndex(start, end, common)) setHours(durationTime(start, end)[0]) setMinutes(durationTime(start, end)[1]) saveTempCache(start, end) } global.endDuration = () => { setOperateType(0) } function layoutContent() { return { setIsOpen(false) }} /> } function pickerTitle() { if (scenario.step == 'fast') { if (chooseStart) { return t('feature.track_time_duration.dial.picker_fast_schedule_start_time'); } return t('feature.track_time_duration.dial.picker_fast_schedule_end_time'); } else { if (chooseStart) { return t('feature.track_time_duration.dial.picker_sleep_schedule_start_time'); } return t('feature.track_time_duration.dial.picker_sleep_schedule_end_time'); } } function timeContent() { return { setIsTimeOpen(false) }} /> } function detail() { return {/* {t('page.set_schedule.fast_subtitle')} */} { setIsModalTimePicker(true) setChooseStart(true) setIsTimeOpen(true) }}> {t('feature.track_time_duration.dial.start_time')} {startTime} { setIsModalTimePicker(true) setChooseStart(false) setIsTimeOpen(true) }}> {t('feature.track_time_duration.dial.end_time')} {endTime} { setIsModalTimePicker(false);setIsOpen(true) }}> {t('feature.track_time_duration.dial.duration')} {hours > 0 ? hours + '小时' : ''}{minutes > 0 ? minutes + '分钟' : ''}
start()} />
{/* { setIsOpen(false); setIsTimeOpen(false) }} show={isOpen || isTimeOpen} round={true} overlay={true} position='bottom' > { isModalTimePicker?timeContent():layoutContent() } */} { isOpen && setIsOpen(false)} confirm={() => { setIsOpen(false) durationChange(pickerRef.current.getConfirmData()) }} /> } { isTimeOpen && setIsTimeOpen(false)} confirm={() => { setIsTimeOpen(false) }} /> }
} return { detail() } ; }