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 { getScenario, 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'; import Card from './card'; import CellFooter, { CellFooterType } from '../base/cell_footer'; import CellFooterText from '../base/cell_footer_text'; import ChooseDateTime from './choose_date_time'; import { MainColorType } from '@/context/themes/color'; import Taro from '@tarojs/taro'; import { useTranslation } from 'react-i18next'; let isYesterdayTarget = false export default function PostMomentTime(props: { title?: string, date?: 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 [selDate, setSelDate] = useState(props.date ? props.date : dayjs().format('YYYY-MM-DD')) const [showMore, setShowMore] = useState(false) const [time, setTime] = useState(props.time) const [minutes, setMinutes] = useState(30) const { t } = useTranslation() function durationTime() { var hour = Math.floor(minutes / 60) var minute = minutes % 60 var str = '' if (hour > 0) { if (global.language == 'en') { str = hour + (hour == 1 ? ' hr ' : ' hrs ') } else { str = hour + '小时' } } if (minute > 0) { if (global.language == 'en') { str += minute + ' mins' } else { str += minute + '分钟' } } if (hour == 0 && minute == 0) { if (global.language == 'en') { str = '0 mins' } else { 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) }} /> } } function getMinTimestamp() { var scenario = getScenario(health.windows, health.mode) return scenario.picker_min_timestamp } /* type={expandIndex == index ? NewButtonType.alpha : NewButtonType.gray} color={iFast ? MainColorType.fast : MainColorType.sleep} */ return { var date = new Date(selDate + ' ' + time + ':00') var now = new Date() if (date.getTime() > now.getTime()) { setTime(dayjs(now.getTime()).format('HH:mm')) Taro.showToast({ title: t('health.future_time_limit'), icon: 'none' }) return } props.onChange({ date: selDate, time: time, duration: minutes, isYesterday: isYesterday }) }} themeColor={getThemeColor(health.mode)}> { setShowDurationPicker(false) }} time={time} // timeChange={(e) => { // setTime(e) // }} minTimestamp={getMinTimestamp()} // footerTitle={scheduleTime()} enterTimestamp={global.set_time} targetTimestamp={props.moment && props.moment.target ? props.moment.target.timestamp : new Date().getTime()} // tapFooter={() => { // if (time == dayjs(props.moment.target.timestamp).format('HH:mm')) { // setSelDate(dayjs(global.set_time).format('YYYY-MM-DD')) // setTime(dayjs(global.set_time).format('HH:mm')) // } // else { // setSelDate(dayjs(props.moment.target.timestamp).format('YYYY-MM-DD')) // setTime(dayjs(props.moment.target.timestamp).format('HH:mm')) // } // }} date={selDate} change={(e) => { setSelDate(e[0]) setTime(e[1]) }} // dateChange={(e) => { // setSelDate(e) // }} /> {/* { setIsYesterday(!isYesterday) }} /> { setShowDurationPicker(false) }} /> { !showDurationPicker && } { !showDurationPicker && { setTime(e) }} color={getThemeColor(health.mode)} /> } { !props.isTemp && !showDurationPicker && { if (time == dayjs(props.moment.target.timestamp).format('HH:mm')) { setIsYesterday(false) setTime(dayjs(global.set_time).format('HH:mm')) } else { setIsYesterday(isYesterdayTarget) setTime(dayjs(props.moment.target.timestamp).format('HH:mm')) } }}> {scheduleTime()} } */} { showMore ? durationContent() : setShowMore(true)} type={NewButtonType.link} title={global.language == 'en' ? 'Show More' : '查看更多'} /> } }