import { View, Text, Image } from "@tarojs/components"; import './fast_sleep_console.scss' import { rpxToPx } from "@/utils/tools"; import NewButton, { NewButtonType } from "../base/new_button"; import { getThemeColor } from "@/features/health/hooks/health_hooks"; import { jumpPage } from "@/features/trackTimeDuration/hooks/Common"; import dayjs from "dayjs"; import { MainColorType } from "@/context/themes/color"; import showAlert from "@/components/basic/Alert"; import { IconArrow, IconCellArrow, IconCircle, IconError, IconNotification, IconNotificationOff } from "@/components/basic/Icons"; import { useSelector } from "react-redux"; import { delRecord } from "@/services/health"; import { TimeFormatter } from "@/utils/time_format"; import showActionSheet from "@/components/basic/ActionSheet"; import { useTranslation } from "react-i18next"; import ConsoleCell from "./console_cell"; import StatusIndicator, { StatusType } from "../base/status_indicator"; export default function FastSleepConsole(props: { step: number, data: any, del: any }) { const health = useSelector((state: any) => state.health); let navigation, showActionSheetWithOptions; const { t } = useTranslation() function tapLogBtn(index: number) { const { fast, sleep, status } = props.data var single = 0; var is_start = 0; var window = 'FAST' switch (index) { case 0: { single = 1; is_start = 1; } break; case 1: { if (status == 'OG1') { single = 1; is_start = 1; window = 'SLEEP' } else { single = 0; } } break; case 2: { if (status == 'OG2') { single = 1; is_start = 0; window = 'SLEEP' } else { single = 0; } } break; case 3: { if (status == 'OG3') { single = 1; is_start = 0; window = 'FAST' } else { single = 0; } } break; } jumpPage(`/_health/pages/log_time?is_fast_with_sleep=1&index=${index}&initCheck=${health.fast_with_sleep.status == 'OG2_MISALIGNED' ? 1 : 0}&single=${index == 0 ? 1 : 0}&is_start=${is_start}&window=${window}`) /* const isSingle = router.params.single == '1' const isFast = router.params.window == 'FAST' const isStart = router.params.is_start == '1' */ } function goDetail(index) { if (index == 0 && props.data.fast.status == 'OG') { const { event_id, schedule_id } = props.data.fast.timeline[0] jumpPage(`/_health/pages/timeline_detail?event_id=${event_id}&schedule_id=${schedule_id}`) } else if (index == 1 && (props.data.sleep.status == 'OG' || props.data.status == 'OG3')) { const { event_id, schedule_id } = props.data.sleep.timeline[0] jumpPage(`/_health/pages/timeline_detail?event_id=${event_id}&schedule_id=${schedule_id}`) } } function itemDisableStatus(index) { if (index == 0 && props.data.fast.status == 'OG') { return false } else if (index == 1 && (props.data.sleep.status == 'OG' || props.data.status == 'OG3')) { return false } return true } function delConfirm() { const { fast, sleep } = props.data let array: any = [] if (fast.window_id) { array.push(fast.window_id) } if (sleep.window_id) { array.push(sleep.window_id) } showAlert({ title: 'del', content: '确认删除此记录?', showCancel: true, confirm: () => { delRecord(array[0], { ids: array }).then(res => { global.refreshWindow() props.del() }) } }) } function getIconColor(index: number, finish: boolean) { const { fast, sleep } = props.data // if (new Date().getTime() <= fast.target.start_timestamp && health.fast_with_sleep.status == 'WFS') { // return MainColorType.g03 // } switch (index) { case 0: if (!fast.timeline[0].real) { return MainColorType.g02 } break case 1: if (!sleep.timeline[0].real) { return MainColorType.g02 } break case 2: if (!sleep.timeline[1].real) { return MainColorType.g02 } break case 3: if (!fast.timeline[1].real) { return MainColorType.g02 } break } var color = MainColorType.g02 if (index == 1 || index == 2) { color = MainColorType.sleep } else { color = MainColorType.fast } return color; } function processIcon(item, finish, isError) { if (isError) { return } if (finish) { return } return // return // if (item.timeline.reminder) { // return // } // return } function actionList() { var list: any = [] if (!health.finish_setup) { list.push(t('health.finish_setup')) } if (props.data.status != 'WFS') { list.push(t('health.delete_current_record')) } if (health.finish_setup) { list.push(t('health.edit_schedule')) } return list } function showAction() { showActionSheet({ showActionSheetWithOptions: showActionSheetWithOptions, title: t('health.more_actions'), itemList: actionList(), success: (res) => { tapActionSheet(res) } }); } function tapActionSheet(index) { var title = actionList()[index] switch (title) { case t('health.finish_setup'): jumpPage('/_health/pages/guide_begin') break; case t('health.delete_current_record'): delConfirm() break; case t('health.edit_schedule'): jumpPage('/_health/pages/schedules?mode=FAST&isFastSleep=1') break } } function timelineItem(item: any, index: number, count: number) { const { fast, sleep, status } = props.data var showBtn = true; var time = '' var hasDescription = item.moment && item.moment.description var finish = false; switch (index) { case 0: { if (status == 'OG2_NO1' || status == 'WFS') { showBtn = true } else { showBtn = false; finish = true; } time = TimeFormatter.dayjsFormat(fast.target.start_timestamp)//dayjs(fast.target.start_timestamp).format('MM-DD HH:mm') } break; case 1: { if (status == 'WFS' || status == 'OG1') { showBtn = true } else { showBtn = false finish = true; } if (status == 'OG3') { time = TimeFormatter.dayjsFormat(sleep.real.start_timestamp)//dayjs(sleep.real.start_timestamp).format('MM-DD HH:mm') } else { time = TimeFormatter.dayjsFormat(sleep.target.start_timestamp)//dayjs(sleep.target.start_timestamp).format('MM-DD HH:mm') } } break; case 2: { if (status == 'OG3') { showBtn = false finish = true; time = TimeFormatter.dayjsFormat(sleep.real.end_timestamp)//dayjs(sleep.real.end_timestamp).format('MM-DD HH:mm') } else { showBtn = true time = TimeFormatter.dayjsFormat(sleep.target.end_timestamp)//dayjs(sleep.target.end_timestamp).format('MM-DD HH:mm') } } break; case 3: { showBtn = true time = TimeFormatter.dayjsFormat(fast.target.end_timestamp)//dayjs(fast.target.end_timestamp).format('MM-DD HH:mm') } break; } var isError = false; if (health.fast_with_sleep.status == 'OG2_MISALIGNED' && (index == 0 || index == 1)) { isError = true; } function rightView() { if (isError) { return { jumpPage(`/_health/pages/log_time?is_fast_with_sleep=1&index=${1}&single=0&initCheck=1&initIndex=${index}`) }} /> } else { // let themeColor: any = getThemeColor(health.mode) // if (item.target.timestamp >= new Date().getTime()) { // themeColor = MainColorType.g02 // } if (item.timeline.action && item.timeline.action != 'NA') { if (item.timeline.action == 'POST_MOMENT') { return } return = new Date().getTime() ? MainColorType.g02 : getThemeColor(item.mode)} type={item.timeline.target.timestamp >= new Date().getTime() ? NewButtonType.alpha2 : NewButtonType.alpha} title={t('health.log')} width={rpxToPx(128)} height={rpxToPx(72)} bold={true} onClick={() => { tapLogBtn(index) }} /> } if (item.timeline.action && item.timeline.action == 'NA') { // if (health.mode == 'FAST' || health.mode == 'SLEEP') { if (item.moment && item.moment.media && item.moment.media.length > 0) { return } else { return } // } } return // if (item.timeline.action == 'POST_MOMENT'){ // return // } // if (item.moment && item.moment.media && item.moment.media.length > 0) // return // if (showBtn) // return = new Date().getTime() ? MainColorType.link : getThemeColor(item.mode)} // type={item.timeline.target.timestamp >= new Date().getTime() ? NewButtonType.alpha2 : NewButtonType.alpha} // title={'Log'} // width={rpxToPx(128)} // height={rpxToPx(72)} // bold={true} // onClick={() => { // tapLogBtn(index) // }} /> } } return { processIcon(item, finish, isError) } } title={(item.moment && item.moment.title) ? item.moment.title : item.title} description={hasDescription ? item.moment.description : null} disable={itemDisableStatus(index)} onClick={() => { goDetail(index) }} right={rightView()} showLine={true} fullLine={count - 1 == index} /> } return { health.fast_with_sleep.status == 'OG2_MISALIGNED' && Logged times are not in their proper order } { props.step != 2 && props.step != 3 && timelineItem({ title: props.data.fast.timeline[0].title, mode: 'FAST', is_start: true, action: props.data.fast.timeline[0].action, moment: props.data.fast.timeline[0].moment, timeline: props.data.fast.timeline[0] }, 0, 4) } { props.step != 3 && timelineItem({ title: props.data.sleep.timeline[0].title, mode: 'SLEEP', is_start: true, action: props.data.fast.timeline[0].action, moment: props.data.sleep.timeline[0].moment, timeline: props.data.sleep.timeline[0] }, 1, 4) } { props.step != 1 && timelineItem({ title: props.data.sleep.timeline[1].title, mode: 'SLEEP', is_start: false, moment: props.data.sleep.timeline[1].moment, timeline: props.data.sleep.timeline[1] }, 2, 4) } { props.step != 1 && props.step != 2 && timelineItem({ title: props.data.fast.timeline[1].title, mode: 'FAST', is_start: false, moment: props.data.fast.timeline[1].moment, timeline: props.data.fast.timeline[1] }, 3, 4) } { } }