|
|
@@ -5,10 +5,15 @@ import { alphaToHex, rpxToPx } from "@/utils/tools";
|
|
|
import { ColorType } from "@/context/themes/color";
|
|
|
import "@/components/layout/Modal.scss";
|
|
|
import './IndexConsoleMuti.scss';
|
|
|
-import { useState } from "react";
|
|
|
+import { useRef, useState } from "react";
|
|
|
import { batchClocks, getLocalPush } from "../actions/TrackTimeActions";
|
|
|
import dayjs from "dayjs";
|
|
|
+import Modal from "@/components/layout/Modal.weapp";
|
|
|
+import ConsolePicker from "./ConsolePicker";
|
|
|
|
|
|
+let min = 0
|
|
|
+let max = 0
|
|
|
+let defaultTimestamp = 0
|
|
|
export default function IndexConsoleMuti(props: { status: string, event: string, close: Function }) {
|
|
|
const { t } = useTranslation();
|
|
|
const isLoading = false;
|
|
|
@@ -18,6 +23,9 @@ export default function IndexConsoleMuti(props: { status: string, event: string,
|
|
|
const [fastEnd, setFastEnd] = useState<any>(0)
|
|
|
const [sleepStart, setSleepStart] = useState<any>(0)
|
|
|
const [sleepEnd, setSleepEnd] = useState<any>(0)
|
|
|
+ const [showPicker, setShowPicker] = useState(false)
|
|
|
+ const [operateType, setOperateType] = useState('startFast')
|
|
|
+ const limitPickerRef = useRef(null)
|
|
|
|
|
|
|
|
|
function cancel() {
|
|
|
@@ -29,35 +37,35 @@ export default function IndexConsoleMuti(props: { status: string, event: string,
|
|
|
var sleep: any = {}
|
|
|
switch (props.event) {
|
|
|
case 'start_sleep':
|
|
|
- fast.real_start_time = new Date().getTime() - 100*1000
|
|
|
+ fast.real_start_time = new Date().getTime() - 100 * 1000
|
|
|
fast.real_start_date = dayjs().format('YYYYMMDD')
|
|
|
sleep.real_start_time = new Date().getTime() - 50
|
|
|
sleep.real_start_date = dayjs().format('YYYYMMDD')
|
|
|
break;
|
|
|
case 'end_sleep':
|
|
|
if (props.status == 'WAIT_FOR_START') {
|
|
|
- fast.real_start_time = new Date().getTime() - 100*1000
|
|
|
+ fast.real_start_time = new Date().getTime() - 100 * 1000
|
|
|
fast.real_start_date = dayjs().format('YYYYMMDD')
|
|
|
}
|
|
|
- sleep.real_start_time = new Date().getTime() - 50*1000
|
|
|
+ sleep.real_start_time = new Date().getTime() - 50 * 1000
|
|
|
sleep.real_start_date = dayjs().format('YYYYMMDD')
|
|
|
sleep.real_end_time = new Date().getTime()
|
|
|
sleep.real_end_date = dayjs().format('YYYYMMDD')
|
|
|
break;
|
|
|
case 'end_fast':
|
|
|
if (props.status == 'WAIT_FOR_START') {
|
|
|
- fast.real_start_time = new Date().getTime() - 100*1000
|
|
|
+ fast.real_start_time = new Date().getTime() - 100 * 1000
|
|
|
fast.real_start_date = dayjs().format('YYYYMMDD')
|
|
|
|
|
|
- sleep.real_start_time = new Date().getTime() - 50*1000
|
|
|
+ sleep.real_start_time = new Date().getTime() - 50 * 1000
|
|
|
sleep.real_start_date = dayjs().format('YYYYMMDD')
|
|
|
|
|
|
}
|
|
|
else if (props.status == 'ONGOING1') {
|
|
|
- sleep.real_start_time = new Date().getTime() - 50*1000
|
|
|
+ sleep.real_start_time = new Date().getTime() - 50 * 1000
|
|
|
sleep.real_start_date = dayjs().format('YYYYMMDD')
|
|
|
}
|
|
|
- sleep.real_end_time = new Date().getTime() - 20*1000
|
|
|
+ sleep.real_end_time = new Date().getTime() - 20 * 1000
|
|
|
sleep.real_end_date = dayjs().format('YYYYMMDD')
|
|
|
fast.real_end_time = new Date().getTime()
|
|
|
fast.real_end_date = dayjs().format('YYYYMMDD')
|
|
|
@@ -80,9 +88,27 @@ export default function IndexConsoleMuti(props: { status: string, event: string,
|
|
|
})
|
|
|
}
|
|
|
|
|
|
+ function tapItem(index: number) {
|
|
|
+ setShowPicker(true);
|
|
|
+ switch (index) {
|
|
|
+ case 0:
|
|
|
+ setOperateType('startFast')
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ setOperateType('startSleep')
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ setOperateType('endSleep')
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ setOperateType('endFast')
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
function startFastCell() {
|
|
|
- return <View className="new_item_cell">
|
|
|
- <Text className="new_item_cell_title">Start Fast</Text>
|
|
|
+ return <View className="new_item_cell" onClick={() => tapItem(0)}>
|
|
|
+ <Text className="new_item_cell_title">{t('feature.track_time_duration.common.start_fast')}</Text>
|
|
|
<View style={{ flex: 1 }} />
|
|
|
<Text className="new_item_cell_desc">Pick Time</Text>
|
|
|
<Image className="cell_arrow" src={require('@/assets/images/arrow3.png')} />
|
|
|
@@ -90,8 +116,8 @@ export default function IndexConsoleMuti(props: { status: string, event: string,
|
|
|
}
|
|
|
|
|
|
function startSleepCell() {
|
|
|
- return <View className="new_item_cell">
|
|
|
- <Text className="new_item_cell_title">Start Sleep</Text>
|
|
|
+ return <View className="new_item_cell" onClick={() => tapItem(1)}>
|
|
|
+ <Text className="new_item_cell_title">{t('feature.track_time_duration.common.start_sleep')}</Text>
|
|
|
<View style={{ flex: 1 }} />
|
|
|
<Text className="new_item_cell_desc">Pick Time</Text>
|
|
|
<Image className="cell_arrow" src={require('@/assets/images/arrow3.png')} />
|
|
|
@@ -99,8 +125,8 @@ export default function IndexConsoleMuti(props: { status: string, event: string,
|
|
|
}
|
|
|
|
|
|
function endSleepCell() {
|
|
|
- return <View className="new_item_cell">
|
|
|
- <Text className="new_item_cell_title">End Sleep</Text>
|
|
|
+ return <View className="new_item_cell" onClick={() => tapItem(2)}>
|
|
|
+ <Text className="new_item_cell_title">{t('feature.track_time_duration.common.end_sleep')}</Text>
|
|
|
<View style={{ flex: 1 }} />
|
|
|
<Text className="new_item_cell_desc">Pick Time</Text>
|
|
|
<Image className="cell_arrow" src={require('@/assets/images/arrow3.png')} />
|
|
|
@@ -108,14 +134,85 @@ export default function IndexConsoleMuti(props: { status: string, event: string,
|
|
|
}
|
|
|
|
|
|
function endFastCell() {
|
|
|
- return <View className="new_item_cell">
|
|
|
- <Text className="new_item_cell_title">End Fast</Text>
|
|
|
+ return <View className="new_item_cell" onClick={() => tapItem(3)}>
|
|
|
+ <Text className="new_item_cell_title">{t('feature.track_time_duration.common.end_fast')}</Text>
|
|
|
<View style={{ flex: 1 }} />
|
|
|
<Text className="new_item_cell_desc">Pick Time</Text>
|
|
|
<Image className="cell_arrow" src={require('@/assets/images/arrow3.png')} />
|
|
|
</View>
|
|
|
}
|
|
|
|
|
|
+ function modalContent() {
|
|
|
+ return <Modal
|
|
|
+ testInfo={null}
|
|
|
+ dismiss={() => {
|
|
|
+ setShowPicker(false)
|
|
|
+ }}
|
|
|
+ confirm={() => { }}>
|
|
|
+ {
|
|
|
+ timePickerContent()
|
|
|
+ }
|
|
|
+ </Modal>
|
|
|
+ }
|
|
|
+
|
|
|
+ function timePickerContent() {
|
|
|
+ defaultTimestamp = new Date().getTime()
|
|
|
+ min = defaultTimestamp - 1 * 24 * 3600 * 1000
|
|
|
+ max = defaultTimestamp
|
|
|
+
|
|
|
+ var title = t('feature.track_time_duration.common.start_fast')
|
|
|
+ if (operateType == 'endFast') {
|
|
|
+ title = t('feature.track_time_duration.common.end_fast')
|
|
|
+ }
|
|
|
+ else if (operateType == 'startSleep') {
|
|
|
+ title = t('feature.track_time_duration.common.start_sleep')
|
|
|
+ }
|
|
|
+ else if (operateType == 'endSleep') {
|
|
|
+ title = t('feature.track_time_duration.common.end_sleep')
|
|
|
+ }
|
|
|
+ var color = operateType == 'startFast' || operateType == 'endFast' ? ColorType.fast : ColorType.sleep
|
|
|
+ var endTimestamp = min
|
|
|
+ // if (operateType == 'endFast') {
|
|
|
+ // endTimestamp = currentRecord.fast.target_end_time
|
|
|
+ // }
|
|
|
+ // else if (operateType == 'endSleep') {
|
|
|
+ // endTimestamp = currentRecord.sleep.target_end_time
|
|
|
+ // }
|
|
|
+
|
|
|
+ var duration = 0
|
|
|
+ // if (operateType == 'startFast' && currentRecord.fast) {
|
|
|
+ // duration = currentRecord.fast.target_end_time - currentRecord.fast.target_start_time
|
|
|
+ // }
|
|
|
+ // if (operateType == 'startSleep' && currentRecord.sleep) {
|
|
|
+ // duration = currentRecord.sleep.target_end_time - currentRecord.sleep.target_start_time
|
|
|
+ // }
|
|
|
+
|
|
|
+ return <View className="modal_content">
|
|
|
+ <ConsolePicker ref={limitPickerRef}
|
|
|
+ themeColor={color}
|
|
|
+ title={title}
|
|
|
+ onCancel={() => {
|
|
|
+ setShowPicker(false)
|
|
|
+ }}
|
|
|
+ min={min}
|
|
|
+ max={max}
|
|
|
+ current={defaultTimestamp}
|
|
|
+ duration={duration}
|
|
|
+ endTimestamp={endTimestamp}
|
|
|
+ isFast={operateType == 'startFast' || operateType == 'endFast'}
|
|
|
+ isEnd={operateType == 'endFast' || operateType == 'endSleep'}
|
|
|
+ isTimeout={false}
|
|
|
+ isLoading={false}
|
|
|
+ hidenEndTime={true}
|
|
|
+ onChange={(e) => {
|
|
|
+
|
|
|
+ global.pauseIndexTimer = false
|
|
|
+ }}
|
|
|
+ />
|
|
|
+
|
|
|
+ </View>
|
|
|
+ }
|
|
|
+
|
|
|
return <View className="modal_content">
|
|
|
<View style={{
|
|
|
marginLeft: rpxToPx(46),
|
|
|
@@ -182,5 +279,8 @@ export default function IndexConsoleMuti(props: { status: string, event: string,
|
|
|
|
|
|
|
|
|
</View>
|
|
|
+ {
|
|
|
+ showPicker && modalContent()
|
|
|
+ }
|
|
|
</View>
|
|
|
}
|