|
@@ -5,10 +5,12 @@ import getStatus from "../hooks/Record";
|
|
|
import { ColorType } from "@/context/themes/color";
|
|
import { ColorType } from "@/context/themes/color";
|
|
|
import { useTranslation } from "react-i18next";
|
|
import { useTranslation } from "react-i18next";
|
|
|
import { useEffect, useState } from "react";
|
|
import { useEffect, useState } from "react";
|
|
|
|
|
+import { useSelector } from "react-redux";
|
|
|
|
|
|
|
|
export default function TimelineFastSleep(props: { data: any, title?: string, first_real_check_time?: number }) {
|
|
export default function TimelineFastSleep(props: { data: any, title?: string, first_real_check_time?: number }) {
|
|
|
const { t } = useTranslation()
|
|
const { t } = useTranslation()
|
|
|
const [diffTimeZone, setDiffTimeZone] = useState(false)
|
|
const [diffTimeZone, setDiffTimeZone] = useState(false)
|
|
|
|
|
+ const scenario = useSelector((state: any) => state.scenario);
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
useEffect(() => {
|
|
|
var split = new Date().toString().split(' ');
|
|
var split = new Date().toString().split(' ');
|
|
@@ -38,55 +40,29 @@ export default function TimelineFastSleep(props: { data: any, title?: string, fi
|
|
|
|
|
|
|
|
}, [props.data])
|
|
}, [props.data])
|
|
|
|
|
|
|
|
|
|
+
|
|
|
function formateTime(obj: any, isEnd: boolean) {
|
|
function formateTime(obj: any, isEnd: boolean) {
|
|
|
if (isEnd) {
|
|
if (isEnd) {
|
|
|
if (obj.real_end_time) {
|
|
if (obj.real_end_time) {
|
|
|
- return diffTimeZone?TimeFormatter.timelineFullFormatTime(obj.real_end_time):TimeFormatter.timelineFormatTime(obj.real_end_time)
|
|
|
|
|
|
|
+ var newTimestamp = TimeFormatter.transferTimestamp(obj.real_end_time,obj.real_end_time_zone)
|
|
|
|
|
+ return diffTimeZone ? TimeFormatter.timelineFullFormatTime(newTimestamp) : TimeFormatter.timelineFormatTime(obj.real_end_time)
|
|
|
}
|
|
}
|
|
|
else {
|
|
else {
|
|
|
- return diffTimeZone?TimeFormatter.timelineFullFormatTime(obj.target_end_time):TimeFormatter.timelineFormatTime(obj.target_end_time)
|
|
|
|
|
|
|
+ return diffTimeZone ? TimeFormatter.timelineFullFormatTime(obj.target_end_time) : TimeFormatter.timelineFormatTime(obj.target_end_time)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
else {
|
|
else {
|
|
|
if (obj.real_start_time) {
|
|
if (obj.real_start_time) {
|
|
|
- return diffTimeZone?TimeFormatter.timelineFullFormatTime(obj.real_start_time):TimeFormatter.timelineFormatTime(obj.real_start_time)
|
|
|
|
|
|
|
+ var newTimestamp = TimeFormatter.transferTimestamp(obj.real_start_time,obj.real_start_time_zone)
|
|
|
|
|
+ return diffTimeZone ? TimeFormatter.timelineFullFormatTime(newTimestamp) : TimeFormatter.timelineFormatTime(obj.real_start_time)
|
|
|
}
|
|
}
|
|
|
else {
|
|
else {
|
|
|
- return diffTimeZone?TimeFormatter.timelineFullFormatTime(obj.target_start_time):TimeFormatter.timelineFormatTime(obj.target_start_time)
|
|
|
|
|
|
|
+ return diffTimeZone ? TimeFormatter.timelineFullFormatTime(obj.target_start_time) : TimeFormatter.timelineFormatTime(obj.target_start_time)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // function formateTime(obj: any, isEnd: boolean) {
|
|
|
|
|
- // if (isEnd) {
|
|
|
|
|
- // if (obj.real_end_time) {
|
|
|
|
|
- // if (obj.real_end_time_zone) {
|
|
|
|
|
- // var newTimestamp = TimeFormatter.transferTimestamp(obj.real_end_time, obj.real_end_time_zone)
|
|
|
|
|
- // return TimeFormatter.timelineFormatTime(newTimestamp)
|
|
|
|
|
- // }
|
|
|
|
|
- // return TimeFormatter.timelineFormatTime(obj.real_end_time)
|
|
|
|
|
- // }
|
|
|
|
|
- // else {
|
|
|
|
|
- // return TimeFormatter.timelineFormatTime(obj.target_end_time)
|
|
|
|
|
- // }
|
|
|
|
|
- // }
|
|
|
|
|
- // else {
|
|
|
|
|
- // if (obj.real_start_time) {
|
|
|
|
|
- // if (obj.real_end_time_zone) {
|
|
|
|
|
- // var newTimestamp = TimeFormatter.transferTimestamp(obj.real_start_time, obj.real_start_time_zone)
|
|
|
|
|
- // return TimeFormatter.timelineFormatTime(newTimestamp)
|
|
|
|
|
- // }
|
|
|
|
|
-
|
|
|
|
|
- // return TimeFormatter.timelineFormatTime(obj.real_start_time, obj.real_start_time_zone)
|
|
|
|
|
- // }
|
|
|
|
|
- // else {
|
|
|
|
|
- // return TimeFormatter.timelineFormatTime(obj.target_start_time)
|
|
|
|
|
- // }
|
|
|
|
|
- // }
|
|
|
|
|
-
|
|
|
|
|
- // }
|
|
|
|
|
-
|
|
|
|
|
function showDate(obj: any, isEnd: boolean) {
|
|
function showDate(obj: any, isEnd: boolean) {
|
|
|
var dt = 0
|
|
var dt = 0
|
|
|
if (isEnd) {
|
|
if (isEnd) {
|
|
@@ -137,8 +113,29 @@ export default function TimelineFastSleep(props: { data: any, title?: string, fi
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ function getWaitForStartDate(time: string) {
|
|
|
|
|
+ var strTime
|
|
|
|
|
+ if (scenario.name == 'SLEEP') {
|
|
|
|
|
+ strTime = scenario.schedule.sleep.start_time
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
|
|
+ strTime = scenario.schedule.fast.start_time
|
|
|
|
|
+ }
|
|
|
|
|
+ var count = parseInt(strTime.split(':')[0]) * 60 + parseInt(strTime.split(':')[1])
|
|
|
|
|
+ var count2 = parseInt(time.split(':')[0]) * 60 + parseInt(time.split(':')[1])
|
|
|
|
|
+ if (count > count2) {
|
|
|
|
|
+ return global.language == 'en' ? 'Tomorrow' : '明天'
|
|
|
|
|
+ }
|
|
|
|
|
+ return ''
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
var timelineItems: any = [];
|
|
var timelineItems: any = [];
|
|
|
- if (props.data.fast) {
|
|
|
|
|
|
|
+ /*
|
|
|
|
|
+ attention:
|
|
|
|
|
+ status == 待开始时
|
|
|
|
|
+ timeline的时间不以时间戳进行处理,而是以target时间字符串进行显示
|
|
|
|
|
+ */
|
|
|
|
|
+ if (props.data.fast && scenario.name != 'SLEEP') {
|
|
|
var timeZone = ''
|
|
var timeZone = ''
|
|
|
if (props.data.fast.real_start_time_zone) {
|
|
if (props.data.fast.real_start_time_zone) {
|
|
|
timeZone = ' ' + props.data.fast.real_start_time_zone
|
|
timeZone = ' ' + props.data.fast.real_start_time_zone
|
|
@@ -149,13 +146,14 @@ export default function TimelineFastSleep(props: { data: any, title?: string, fi
|
|
|
title: getStatus(true, true, props.data) == 'padding' ?
|
|
title: getStatus(true, true, props.data) == 'padding' ?
|
|
|
t('feature.track_time_duration.common.start_fast') :
|
|
t('feature.track_time_duration.common.start_fast') :
|
|
|
t('feature.track_time_duration.common.started_fasting'),
|
|
t('feature.track_time_duration.common.started_fasting'),
|
|
|
- content: formateTime(props.data.fast, false),
|
|
|
|
|
- date: diffTimeZone?timeZone:showDate(props.data.fast, false) ? formateDate(props.data.fast, false) : '',
|
|
|
|
|
|
|
+ content: props.data.status == 'WAIT_FOR_START' ? scenario.schedule.fast.start_time : formateTime(props.data.fast, false),
|
|
|
|
|
+ date: props.data.status == 'WAIT_FOR_START' ? '' :
|
|
|
|
|
+ (diffTimeZone ? timeZone : showDate(props.data.fast, false) ? formateDate(props.data.fast, false) : ''),
|
|
|
color: global.fastColor ? global.fastColor : ColorType.fast
|
|
color: global.fastColor ? global.fastColor : ColorType.fast
|
|
|
}
|
|
}
|
|
|
)
|
|
)
|
|
|
}
|
|
}
|
|
|
- if (props.data.sleep) {
|
|
|
|
|
|
|
+ if (props.data.sleep && scenario.name != 'FAST') {
|
|
|
var timeZone = ''
|
|
var timeZone = ''
|
|
|
if (props.data.sleep.real_start_time_zone) {
|
|
if (props.data.sleep.real_start_time_zone) {
|
|
|
timeZone = ' ' + props.data.sleep.real_start_time_zone
|
|
timeZone = ' ' + props.data.sleep.real_start_time_zone
|
|
@@ -166,13 +164,14 @@ export default function TimelineFastSleep(props: { data: any, title?: string, fi
|
|
|
title: getStatus(false, true, props.data) == 'padding' ?
|
|
title: getStatus(false, true, props.data) == 'padding' ?
|
|
|
t('feature.track_time_duration.common.start_sleep') :
|
|
t('feature.track_time_duration.common.start_sleep') :
|
|
|
t('feature.track_time_duration.common.started_sleeping'),
|
|
t('feature.track_time_duration.common.started_sleeping'),
|
|
|
- content: formateTime(props.data.sleep, false),
|
|
|
|
|
- date: diffTimeZone?timeZone:showDate(props.data.sleep, false) ? formateDate(props.data.sleep, false) : '',
|
|
|
|
|
|
|
+ content: props.data.status == 'WAIT_FOR_START' ? scenario.schedule.sleep.start_time : formateTime(props.data.sleep, false),
|
|
|
|
|
+ date: props.data.status == 'WAIT_FOR_START' ? getWaitForStartDate(scenario.schedule.sleep.start_time) :
|
|
|
|
|
+ (diffTimeZone ? timeZone : showDate(props.data.sleep, false) ? formateDate(props.data.sleep, false) : ''),
|
|
|
color: global.sleepColor ? global.sleepColor : ColorType.sleep
|
|
color: global.sleepColor ? global.sleepColor : ColorType.sleep
|
|
|
}
|
|
}
|
|
|
)
|
|
)
|
|
|
}
|
|
}
|
|
|
- if (props.data.sleep) {
|
|
|
|
|
|
|
+ if (props.data.sleep && scenario.name != 'FAST') {
|
|
|
var timeZone = ''
|
|
var timeZone = ''
|
|
|
if (props.data.sleep.real_end_time_zone) {
|
|
if (props.data.sleep.real_end_time_zone) {
|
|
|
timeZone = ' ' + props.data.sleep.real_end_time_zone
|
|
timeZone = ' ' + props.data.sleep.real_end_time_zone
|
|
@@ -183,13 +182,14 @@ export default function TimelineFastSleep(props: { data: any, title?: string, fi
|
|
|
title: getStatus(false, false, props.data) == 'padding' ?
|
|
title: getStatus(false, false, props.data) == 'padding' ?
|
|
|
t('feature.track_time_duration.common.end_sleep') :
|
|
t('feature.track_time_duration.common.end_sleep') :
|
|
|
t('feature.track_time_duration.common.ended_sleeping'),
|
|
t('feature.track_time_duration.common.ended_sleeping'),
|
|
|
- content: formateTime(props.data.sleep, true),
|
|
|
|
|
- date: diffTimeZone?timeZone:showDate(props.data.sleep, true) ? formateDate(props.data.sleep, true) : '',
|
|
|
|
|
|
|
+ content: props.data.status == 'WAIT_FOR_START' ? scenario.schedule.sleep.end_time : formateTime(props.data.sleep, true),
|
|
|
|
|
+ date: props.data.status == 'WAIT_FOR_START' ? getWaitForStartDate(scenario.schedule.sleep.end_time) :
|
|
|
|
|
+ (diffTimeZone ? timeZone : showDate(props.data.sleep, true) ? formateDate(props.data.sleep, true) : ''),
|
|
|
color: global.sleepColor ? global.sleepColor : ColorType.sleep
|
|
color: global.sleepColor ? global.sleepColor : ColorType.sleep
|
|
|
}
|
|
}
|
|
|
)
|
|
)
|
|
|
}
|
|
}
|
|
|
- if (props.data.fast) {
|
|
|
|
|
|
|
+ if (props.data.fast && scenario.name != 'SLEEP') {
|
|
|
var timeZone = ''
|
|
var timeZone = ''
|
|
|
if (props.data.fast.real_end_time_zone) {
|
|
if (props.data.fast.real_end_time_zone) {
|
|
|
timeZone = ' ' + props.data.fast.real_end_time_zone
|
|
timeZone = ' ' + props.data.fast.real_end_time_zone
|
|
@@ -200,8 +200,9 @@ export default function TimelineFastSleep(props: { data: any, title?: string, fi
|
|
|
title: getStatus(true, false, props.data) == 'padding' ?
|
|
title: getStatus(true, false, props.data) == 'padding' ?
|
|
|
t('feature.track_time_duration.common.end_fast') :
|
|
t('feature.track_time_duration.common.end_fast') :
|
|
|
t('feature.track_time_duration.common.ended_fasting'),
|
|
t('feature.track_time_duration.common.ended_fasting'),
|
|
|
- content: formateTime(props.data.fast, true),
|
|
|
|
|
- date: diffTimeZone?timeZone:showDate(props.data.fast, true) ? formateDate(props.data.fast, true) : '',
|
|
|
|
|
|
|
+ content: props.data.status == 'WAIT_FOR_START' ? scenario.schedule.fast.end_time : formateTime(props.data.fast, true),
|
|
|
|
|
+ date: props.data.status == 'WAIT_FOR_START' ? getWaitForStartDate(scenario.schedule.fast.end_time) :
|
|
|
|
|
+ (diffTimeZone ? timeZone : showDate(props.data.fast, true) ? formateDate(props.data.fast, true) : ''),
|
|
|
color: global.fastColor ? global.fastColor : ColorType.fast
|
|
color: global.fastColor ? global.fastColor : ColorType.fast
|
|
|
}
|
|
}
|
|
|
)
|
|
)
|