import { View, Text, Image } from '@tarojs/components' import './post_moment_time.scss' import NewModal from '../base/new_modal' import { useState } from 'react' import { useSelector } from 'react-redux'; import { getThemeColor } from '@/features/health/hooks/health_hooks'; import { rpxToPx } from '@/utils/tools'; import NewTimePicker from '../base/new_timepicker'; import { IconCalendar, IconTarget } from '@/components/basic/Icons'; import NewDurationPicker from '../base/new_durationpicker'; import NewButton, { NewButtonType } from '../base/new_button'; import dayjs from 'dayjs'; let isYesterdayTarget = false export default function PostMomentTime(props: { title?: string, time: string, isTemp: boolean, onChange: any, moment?: any, dismiss: any }) { const health = useSelector((state: any) => state.health); const [showDurationPicker, setShowDurationPicker] = useState(false) const [isYesterday, setIsYesterday] = useState(false) const [showMore, setShowMore] = useState(false) const [time, setTime] = useState(props.time) const [minutes, setMinutes] = useState(30) function durationTime() { var hour = Math.floor(minutes / 60) var minute = minutes % 60 var str = '' if (hour > 0) { str = hour + '小时' } if (minute > 0) { str += minute + '分钟' } if (hour == 0 && minute == 0) { str = '0分钟' } return str } function endTime() { var now = new Date() var hour = parseInt(time.split(':')[0] + '') var minute = parseInt(time.split(':')[1] + '') now.setHours(hour) now.setMinutes(minute) var timestamp = now.getTime() if (isYesterday) { timestamp = timestamp - 24 * 3600 * 1000 } timestamp = timestamp + minutes * 60 * 1000 const today = dayjs(); const dt = dayjs(timestamp); var strTime = dt.format('HH:mm ') const yesterday = today.subtract(1, 'day'); const tomorrow = today.subtract(-1, 'day'); if (dt.isSame(today, 'day')) { return strTime + 'Today'; } else if (dt.isSame(yesterday, 'day')) { return strTime + 'Yesterday'; } else if (dt.isSame(tomorrow, 'day')) { return strTime + 'Tomorrow'; } else { return strTime + dt.format('MM-DD'); } } function durationContent() { return Duration { setShowDurationPicker(true) }} /> { showDurationPicker && { setMinutes(v) }} /> } Expect to finish at {endTime()} } function scheduleTime() { if (props.moment) { var timestamp = props.moment.target.timestamp var time = parseInt(dayjs(timestamp).format('HHmm')) var now = parseInt(dayjs().format('HHmm')) if (time > now) { isYesterdayTarget = true return `Scheduled for ${dayjs(timestamp).format('HH:mm')} yesterday` } isYesterdayTarget = false return `Scheduled for ${dayjs(timestamp).format('HH:mm')} today` } return 'Scheduled for xxx today' } /* type={expandIndex == index ? NewButtonType.alpha : NewButtonType.gray} color={iFast ? MainColorType.fast : MainColorType.sleep} */ return { props.onChange({ time: time, duration: minutes, isYesterday: isYesterday }) }} themeColor={getThemeColor(health.mode)}> { setIsYesterday(!isYesterday) }} /> { setShowDurationPicker(false) }} /> { !showDurationPicker && } { !showDurationPicker && { setTime(e) }} color={getThemeColor(health.mode)} /> } { !props.isTemp && !showDurationPicker && { setIsYesterday(isYesterdayTarget) setTime(dayjs(props.moment.target.timestamp).format('HH:mm')) }}> {scheduleTime()} } { showMore ? durationContent() : setShowMore(true)} style={{ flexDirection: 'row', width: rpxToPx(142), height: rpxToPx(72), display: 'flex', alignItems: 'center', justifyContent: 'center' }}> More } }