leon 1 tahun lalu
induk
melakukan
4203bf9109

+ 1 - 1
config/env.ts

@@ -1,3 +1,3 @@
 
 export const APP_VERSION = '1.0.0'
-export const WX_VERSION = '1.4.3'
+export const WX_VERSION = '1.4.5'

+ 12 - 8
src/features/trackTimeDuration/components/ConsolePicker.tsx

@@ -22,7 +22,8 @@ const Component = forwardRef((props: {
     isEnd?: boolean,
     endTimestamp?: number,
     isTimeout?: boolean,
-    isLoading?: boolean
+    isLoading?: boolean,
+    hidenEndTime?:boolean
 }, ref) => {
     const today = new Date();
     const [loaded, setLoaded] = useState(false)
@@ -219,29 +220,32 @@ const Component = forwardRef((props: {
                     immediateChange={true}
                     indicatorStyle='height: 50px;color:red;'>
                     <PickerViewColumn style='flex:0 0 45%'>
-                        {days.map(item => {
+                        {days.map((item,i) => {
                             return (
-                                <View style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', color: '#fff',height:50 }}>{item}</View>
+                                <View key={i} style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', color: '#fff',height:50 }}>{item}</View>
                             );
                         })}
                     </PickerViewColumn>
                     <PickerViewColumn>
-                        {hours.map(item => {
+                        {hours.map((item,j) => {
                             return (
-                                <View style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', color: '#fff',height:50 }}>{item < 10 ? `0${item}` : item}</View>
+                                <View key={j*1000} style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', color: '#fff',height:50 }}>{item < 10 ? `0${item}` : item}</View>
                             );
                         })}
                     </PickerViewColumn>
                     <PickerViewColumn>
-                        {minutes.map(item => {
+                        {minutes.map((item,k) => {
                             return (
-                                <View style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', color: '#fff',height:50 }}>{item < 10 ? `0${item}` : item}</View>
+                                <View key={k*10000} style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', color: '#fff',height:50 }}>{item < 10 ? `0${item}` : item}</View>
                             );
                         })}
                     </PickerViewColumn>
                 </PickerView>
             </View>
-            <Text className="pickerEndTime" style={{ color: props.isTimeout ? 'red' : '#ffffff' }}>{pickerTimeText()}</Text>
+            {
+                !props.hidenEndTime && <Text className="pickerEndTime" style={{ color: props.isTimeout ? 'red' : '#ffffff' }}>{pickerTimeText()}</Text>
+            }
+            
             <View className='modal_operate'>
                 <View className='modal_btn' style={{ backgroundColor: color + alpha }} onClick={cancel}>
                     <Text className='modal_cancel_text' style={{ color: color, fontWeight: 'bold' }}>{t('feature.common.picker_cancel_btn')}</Text>

+ 0 - 7
src/features/trackTimeDuration/components/IndexConsole.tsx

@@ -739,13 +739,6 @@ export default function IndexConsole(props: { record: any, count: number }) {
                     global.refrehWeekly()
                     global.refreshStreaks()
                     refreshDayNight()
-                    var obj = global.checkAccess
-                    if (global.checkAccess) {
-                        console.log('applw')
-                    }
-                    else {
-                        console.log('apple')
-                    }
                     global.checkAccess((res as any).access)
                     // checkAccessProvisional((res as any).access,showFastAlert)
                 }).catch((e) => {

+ 116 - 16
src/features/trackTimeDuration/components/IndexConsoleMuti.tsx

@@ -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>
 }