leon 1 yıl önce
ebeveyn
işleme
26d476bb41

+ 28 - 5
src/_health/components/post_moment_time.tsx

@@ -11,10 +11,14 @@ import NewDurationPicker from '../base/new_durationpicker';
 import NewButton, { NewButtonType } from '../base/new_button';
 import dayjs from 'dayjs';
 
+let isYesterdayTarget = false
 export default function PostMomentTime(props: {
     title?: string,
     time: string,
-    onChange: any, dismiss: any
+    isTemp: boolean,
+    onChange: any,
+    moment?: any,
+    dismiss: any
 }) {
     const health = useSelector((state: any) => state.health);
     const [showDurationPicker, setShowDurationPicker] = useState(false)
@@ -61,7 +65,7 @@ export default function PostMomentTime(props: {
             return strTime + 'Today';
         } else if (dt.isSame(yesterday, 'day')) {
             return strTime + 'Yesterday';
-        }else if (dt.isSame(tomorrow, 'day')) {
+        } else if (dt.isSame(tomorrow, 'day')) {
             return strTime + 'Tomorrow';
         } else {
             return strTime + dt.format('MM-DD');
@@ -101,6 +105,21 @@ export default function PostMomentTime(props: {
             </View>
         </View>
     }
+
+    function scheduleTime() {
+        if (props.moment) {
+            var timestamp = props.moment.target.timestamp
+            var time = parseInt(dayjs(timestamp).format('HHmm'))
+            var now = parseInt(dayjs().format('HHmm'))
+            if (time > now) {
+                isYesterdayTarget = true
+                return `Scheduled for ${dayjs(timestamp).format('HH:mm')} yesterday`
+            }
+            isYesterdayTarget = false
+            return `Scheduled for ${dayjs(timestamp).format('HH:mm')} today`
+        }
+        return 'Scheduled for xxx today'
+    }
     /*
     type={expandIndex == index ? NewButtonType.alpha : NewButtonType.gray}
                     color={iFast ? MainColorType.fast : MainColorType.sleep}
@@ -111,7 +130,8 @@ export default function PostMomentTime(props: {
         confirm={() => {
             props.onChange({
                 time: time,
-                duration: minutes
+                duration: minutes,
+                isYesterday: isYesterday
             })
         }}
         themeColor={getThemeColor(health.mode)}>
@@ -149,9 +169,12 @@ export default function PostMomentTime(props: {
                     }} color={getThemeColor(health.mode)} />
                 }
                 {
-                    !showDurationPicker && <View className='picker_time_card_footer'>
+                    !props.isTemp && !showDurationPicker && <View className='picker_time_card_footer' onClick={() => {
+                        setIsYesterday(isYesterdayTarget)
+                        setTime(dayjs(props.moment.target.timestamp).format('HH:mm'))
+                    }}>
                         <IconCalendar width={rpxToPx(24)} color='#5C7099' />
-                        <Text style={{ color: '#5C7099', marginLeft: rpxToPx(12), fontSize: rpxToPx(26) }}>Scheduled for xxx today</Text>
+                        <Text style={{ color: '#5C7099', marginLeft: rpxToPx(12), fontSize: rpxToPx(26) }}>{scheduleTime()}</Text>
                     </View>
                 }
 

+ 25 - 15
src/_health/pages/add_moment.tsx

@@ -46,7 +46,7 @@ export default function AddMoment() {
     const [timestamp, setTimestamp] = useState(new Date().getTime())
     const [showTimePicker, setShowTimePicker] = useState(false)
     const [showTitlePicker, setShowTitlePicker] = useState(false)
-
+    const [isYesterday,setIsYesterday] = useState(false)
     const [labels, setLabels] = useState<any>([])
 
 
@@ -69,6 +69,7 @@ export default function AddMoment() {
 
     const { event_id, is_temp, schedule_id } = router.params
 
+    const moment = router.params.moment ? JSON.parse(router.params.moment) : null
 
     useEffect(() => {
         global.set_time = new Date().getTime()
@@ -133,14 +134,18 @@ export default function AddMoment() {
         var minute = parseInt(time.split(':')[1] + '')
         date.setHours(hour)
         date.setMinutes(minute)
+        var timestamp = date.getTime()
+        if (isYesterday){
+            timestamp -=24*3600*1000
+        }
 
         var params: any = {
             schedule_id: schedule_id,
             title: title,
             description: desc,
             start: {
-                date: dayjs(date.getTime()).format('YYYYMMDD'),
-                timestamp: date.getTime()
+                date: dayjs(timestamp).format('YYYYMMDD'),
+                timestamp: timestamp
             }
         }
 
@@ -344,10 +349,10 @@ export default function AddMoment() {
                         }} />
                     }
                     <Textarea placeholder="简单描述(选填)" className="textarea"
-                    placeholder-style="color:#B2B2B2"
-                    onInput={e => {
-                        setDesc(e.detail.value)
-                    }} />
+                        placeholder-style="color:#B2B2B2"
+                        onInput={e => {
+                            setDesc(e.detail.value)
+                        }} />
                 </View>
                 {
                     imgUrl.length > 0 ? <Image src={imgUrl} mode="aspectFill" className="cover" onClick={addImage} /> :
@@ -377,14 +382,19 @@ export default function AddMoment() {
             showPicker && timeContent()
         }
         {
-            showTimePicker && <PostMomentTime time={time} onChange={(e) => {
-                const { duration, time } = e;
-                setTime(time)
-                setDurationT(duration)
-                setShowTimePicker(false)
-            }} dismiss={() => {
-                setShowTimePicker(false)
-            }} />
+            showTimePicker && <PostMomentTime
+                time={time}
+                isTemp={is_temp}
+                moment={moment}
+                onChange={(e) => {
+                    const { duration, time,isYesterday } = e;
+                    setTime(time)
+                    setIsYesterday(isYesterday)
+                    setDurationT(duration)
+                    setShowTimePicker(false)
+                }} dismiss={() => {
+                    setShowTimePicker(false)
+                }} />
         }
         {
             showTitlePicker && <Modal testInfo={null}