|
@@ -0,0 +1,1311 @@
|
|
|
|
|
+import { PageContainer, Switch, Text, View, Image } from '@tarojs/components'
|
|
|
|
|
+import './DayNightCard.scss'
|
|
|
|
|
+import { ColorType } from '@/context/themes/color'
|
|
|
|
|
+import { useEffect, useState } from 'react'
|
|
|
|
|
+import Box from '@/components/layout/Box'
|
|
|
|
|
+import Taro, { useDidShow } from '@tarojs/taro'
|
|
|
|
|
+import { clearLocation, getPerm, latestLocation, uploadPerm } from '@/services/user'
|
|
|
|
|
+import { useDispatch, useSelector } from 'react-redux'
|
|
|
|
|
+import { useTranslation } from 'react-i18next'
|
|
|
|
|
+import { TimeFormatter } from '@/utils/time_format'
|
|
|
|
|
+import { systemLocation } from '@/services/common'
|
|
|
|
|
+import { setDayRingData, showDay } from '@/store/day'
|
|
|
|
|
+import { setNightRingData, showNight, updateMember } from '@/store/night'
|
|
|
|
|
+import Modal from '@/components/layout/Modal.weapp'
|
|
|
|
|
+import { rpxToPx } from '@/utils/tools'
|
|
|
|
|
+import { jumpPage } from '@/features/trackTimeDuration/hooks/Common'
|
|
|
|
|
+import DayNightDetailPopup from './DayNightDetailPopup'
|
|
|
|
|
+import { RealRing, CurrentDot } from "@/features/trackTimeDuration/components/Rings";
|
|
|
|
|
+import Rings from "./Rings";
|
|
|
|
|
+import { bigRingRadius, getBgRing, getCommon, getDot, ringWidth } from '../hooks/RingData'
|
|
|
|
|
+import '@/utils/ring_card.scss';
|
|
|
|
|
+import { IconNight, IconSunrise, IconSunset } from '@/components/basic/Icons'
|
|
|
|
|
+
|
|
|
|
|
+let useNavigation;
|
|
|
|
|
+if (process.env.TARO_ENV == 'rn') {
|
|
|
|
|
+ useNavigation = require("@react-navigation/native").useNavigation
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+let locationDetail;
|
|
|
|
|
+
|
|
|
|
|
+let sunriseA = new Date()
|
|
|
|
|
+sunriseA.setHours(6)
|
|
|
|
|
+sunriseA.setMinutes(0)
|
|
|
|
|
+sunriseA.setSeconds(0)
|
|
|
|
|
+sunriseA.setMilliseconds(0)
|
|
|
|
|
+const sunsetA = new Date()
|
|
|
|
|
+sunsetA.setHours(18)
|
|
|
|
|
+sunsetA.setMinutes(0)
|
|
|
|
|
+sunsetA.setSeconds(0)
|
|
|
|
|
+sunsetA.setMilliseconds(0)
|
|
|
|
|
+
|
|
|
|
|
+const sunriseB = new Date()
|
|
|
|
|
+sunriseB.setHours(6)
|
|
|
|
|
+sunriseB.setMinutes(0)
|
|
|
|
|
+sunriseB.setSeconds(0)
|
|
|
|
|
+sunriseB.setMilliseconds(0)
|
|
|
|
|
+
|
|
|
|
|
+let lastDayInfo: any = null;
|
|
|
|
|
+let lastNightInfo: any = null;
|
|
|
|
|
+let joingMember = false
|
|
|
|
|
+export default function DayNightCard(props: { isNight: boolean, count: number }) {
|
|
|
|
|
+ const user = useSelector((state: any) => state.user);
|
|
|
|
|
+ const dayStore = useSelector((state: any) => state.day);
|
|
|
|
|
+ const nightStore = useSelector((state: any) => state.night);
|
|
|
|
|
+ const [authInfo, setAuthInfo] = useState(global.locationDetail ? global.locationDetail : null)
|
|
|
|
|
+ const [sunriseTime, setSunriseTime] = useState('06:00')
|
|
|
|
|
+ const [sunriseTmrTime, setSunriseTmrTime] = useState('06:00')
|
|
|
|
|
+ const [sunsetTime, setSunsetTime] = useState('18:00')
|
|
|
|
|
+
|
|
|
|
|
+ const [sunriseDate, setSunriseDate] = useState<any>(sunriseA)
|
|
|
|
|
+ const [sunriseTmrDate, setSunriseTmrDate] = useState<any>(new Date(sunriseB.getTime() + 24 * 3600 * 1000))
|
|
|
|
|
+ const [sunsetDate, setSunsetDate] = useState<any>(sunsetA)
|
|
|
|
|
+ const [status,setStatus] = useState('')
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ const [showDetailModal, setShowDetailModal] = useState(false)
|
|
|
|
|
+ const [showDetailPopup, setShowDetailPopup] = useState(false)
|
|
|
|
|
+ const [detail, setDetail] = useState(null)
|
|
|
|
|
+ // const [locationDetail, setLocationDetail] = useState(null)
|
|
|
|
|
+
|
|
|
|
|
+ const [nightDate, setNightDate] = useState(new Date())
|
|
|
|
|
+ const [dayDate, setDayDate] = useState(new Date())
|
|
|
|
|
+ const dispatch = useDispatch();
|
|
|
|
|
+ const { t } = useTranslation()
|
|
|
|
|
+ const isMember = true;
|
|
|
|
|
+ let navigation;
|
|
|
|
|
+ if (useNavigation) {
|
|
|
|
|
+ navigation = useNavigation()
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ useEffect(() => {
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ if (user.isLogin) {
|
|
|
|
|
+ if (global.locationDetail) {
|
|
|
|
|
+ locationDetail = global.locationDetail
|
|
|
|
|
+ setAuthInfo(locationDetail)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ getLatestLocation()
|
|
|
|
|
+
|
|
|
|
|
+ if (props.isNight) {
|
|
|
|
|
+ global.refreshNight = () => {
|
|
|
|
|
+ getLatestLocation()
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
|
|
+ global.refreshDay = () => {
|
|
|
|
|
+ getLatestLocation()
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ } else {
|
|
|
|
|
+ setSunriseTime('06:00');
|
|
|
|
|
+ setSunriseTmrTime('06:00')
|
|
|
|
|
+ setSunsetTime('18:00')
|
|
|
|
|
+ setSunriseDate(sunriseA)
|
|
|
|
|
+ setSunriseTmrDate(new Date(sunriseB.getTime() + 24 * 3600 * 1000))
|
|
|
|
|
+ setSunsetDate(sunsetA)
|
|
|
|
|
+ }
|
|
|
|
|
+ }, [user.isLogin])
|
|
|
|
|
+
|
|
|
|
|
+ useEffect(() => {
|
|
|
|
|
+ locationDetail = global.locationDetail
|
|
|
|
|
+ setAuthInfo(locationDetail)
|
|
|
|
|
+ }, [global.locationDetail])
|
|
|
|
|
+
|
|
|
|
|
+ useEffect(() => {
|
|
|
|
|
+ if (locationDetail)
|
|
|
|
|
+ updateDate(locationDetail)
|
|
|
|
|
+ if (props.isNight) {
|
|
|
|
|
+ global.clearNightLocation = () => {
|
|
|
|
|
+ clearCacheData()
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
|
|
+ global.clearDayLocation = () => {
|
|
|
|
|
+ clearCacheData()
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }, [])
|
|
|
|
|
+
|
|
|
|
|
+ useEffect(() => {
|
|
|
|
|
+ if (locationDetail) {
|
|
|
|
|
+ var detail: any = locationDetail
|
|
|
|
|
+ var now = new Date()
|
|
|
|
|
+ if (now.getHours() == 0 && now.getMinutes() == 0 && now.getSeconds() == 0) {
|
|
|
|
|
+ detail.daylights.splice(0, 1)
|
|
|
|
|
+ }
|
|
|
|
|
+ locationDetail = detail
|
|
|
|
|
+
|
|
|
|
|
+ // setLocationDetail(detail)
|
|
|
|
|
+ updateDate(detail)
|
|
|
|
|
+ }
|
|
|
|
|
+ }, [props.count])
|
|
|
|
|
+
|
|
|
|
|
+ useEffect(() => {
|
|
|
|
|
+ // if (user.test_user && joingMember) {
|
|
|
|
|
+ // auth()
|
|
|
|
|
+ // }
|
|
|
|
|
+ if (!isMember) {
|
|
|
|
|
+ lastNightInfo = null
|
|
|
|
|
+ lastDayInfo = null
|
|
|
|
|
+ locationDetail = null
|
|
|
|
|
+ setAuthInfo(null)
|
|
|
|
|
+ setSunriseTime('06:00')
|
|
|
|
|
+ setSunriseTmrTime('06:00')
|
|
|
|
|
+ setSunsetTime('18:00')
|
|
|
|
|
+ dispatch(updateMember({ isMember: isMember, gpsInfo: null }))
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ dispatch(setDayRingData({
|
|
|
|
|
+ date: new Date().getTime(),
|
|
|
|
|
+ sunrise: '06:00',
|
|
|
|
|
+ sunset: '18:00'
|
|
|
|
|
+ }))
|
|
|
|
|
+ dispatch(setNightRingData({
|
|
|
|
|
+ date: new Date().getTime(),
|
|
|
|
|
+ sunrise: '06:00',
|
|
|
|
|
+ sunset: '18:00'
|
|
|
|
|
+ }))
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
|
|
+ getGPSCache()
|
|
|
|
|
+ }
|
|
|
|
|
+ }, [user.test_user])
|
|
|
|
|
+
|
|
|
|
|
+ useDidShow(() => {
|
|
|
|
|
+ if (!user.isLogin) {
|
|
|
|
|
+ dispatch(showNight(false))
|
|
|
|
|
+ dispatch(showDay(false))
|
|
|
|
|
+ Taro.setStorage({
|
|
|
|
|
+ key: 'showNightRing',
|
|
|
|
|
+ data: false
|
|
|
|
|
+ })
|
|
|
|
|
+ Taro.setStorage({
|
|
|
|
|
+ key: 'showDayRing',
|
|
|
|
|
+ data: false
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ function getLatestLocation() {
|
|
|
|
|
+ var today = new Date()
|
|
|
|
|
+ var yesterday = new Date(today.getTime() - 24 * 3600 * 1000)
|
|
|
|
|
+ var tomorrow = new Date(today.getTime() + 24 * 3600 * 1000 * 3)
|
|
|
|
|
+ var strYesterday = `${yesterday.getFullYear()}-${TimeFormatter.padZero(yesterday.getMonth() + 1)}-${TimeFormatter.padZero(yesterday.getDate())}`
|
|
|
|
|
+ var strTomorrow = `${tomorrow.getFullYear()}-${TimeFormatter.padZero(tomorrow.getMonth() + 1)}-${TimeFormatter.padZero(tomorrow.getDate())}`
|
|
|
|
|
+ latestLocation({
|
|
|
|
|
+ date_start: strYesterday, date_end: strTomorrow
|
|
|
|
|
+ }).then(data => {
|
|
|
|
|
+ console.log(data)
|
|
|
|
|
+ setAuthInfo(data as any)
|
|
|
|
|
+ setDetail(data as any)
|
|
|
|
|
+ updateDate(data)
|
|
|
|
|
+ locationDetail = data
|
|
|
|
|
+ global.locationDetail = locationDetail
|
|
|
|
|
+ Taro.setStorage({
|
|
|
|
|
+ key: 'gps',
|
|
|
|
|
+ data: JSON.stringify(data as any)
|
|
|
|
|
+ })
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ async function getGPSCache() {
|
|
|
|
|
+ var gps = await getStorage('gps')
|
|
|
|
|
+ if (gps && gps.length > 0) {
|
|
|
|
|
+ locationDetail = JSON.parse(gps)
|
|
|
|
|
+ global.locationDetail = JSON.parse(gps)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ async function getStorage(key: string) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ const res = await Taro.getStorage({ key });
|
|
|
|
|
+ return res.data;
|
|
|
|
|
+ } catch {
|
|
|
|
|
+ return '';
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function updateDate(data) {
|
|
|
|
|
+
|
|
|
|
|
+ var today = new Date()
|
|
|
|
|
+ // var yesterday = new Date(today.getTime() - 24 * 3600 * 1000)
|
|
|
|
|
+ var tomorrow = new Date(today.getTime() + 24 * 3600 * 1000)
|
|
|
|
|
+ // var strYesterday = `${yesterday.getFullYear()}-${TimeFormatter.padZero(yesterday.getMonth() + 1)}-${TimeFormatter.padZero(yesterday.getDate())}`
|
|
|
|
|
+ // var strTomorrow = `${tomorrow.getFullYear()}-${TimeFormatter.padZero(tomorrow.getMonth() + 1)}-${TimeFormatter.padZero(tomorrow.getDate())}`
|
|
|
|
|
+ if (isMember && data && data.daylights && data.daylights.length > 0) {
|
|
|
|
|
+ var yesterdayDate = new Date(data.daylights[0].date + 'T' + data.daylights[0].sunset)
|
|
|
|
|
+ var todaySunriseDate = new Date(data.daylights[1].date + 'T' + data.daylights[1].sunrise)
|
|
|
|
|
+ var todaySunsetDate = new Date(data.daylights[1].date + 'T' + data.daylights[1].sunset)
|
|
|
|
|
+ var tomorrowSunriseDate = new Date(data.daylights[2].date + 'T' + data.daylights[2].sunrise)
|
|
|
|
|
+ var tomorrowSunsetDate = new Date(data.daylights[2].date + 'T' + data.daylights[2].sunset)
|
|
|
|
|
+
|
|
|
|
|
+ // var tomorrowSunsetDate = new Date(data.daylights[2].date + 'T' + data.daylights[2].sunset)
|
|
|
|
|
+ //今天凌晨日出前
|
|
|
|
|
+ if (yesterdayDate.getTime() < today.getTime() && today.getTime() < todaySunriseDate.getTime()) {
|
|
|
|
|
+ setNightDate(yesterdayDate)
|
|
|
|
|
+ setDayDate(today)
|
|
|
|
|
+ if (props.isNight) {
|
|
|
|
|
+ setSunsetTime(data.daylights[0].sunset)
|
|
|
|
|
+ setSunriseTmrTime(data.daylights[1].sunrise)
|
|
|
|
|
+ setSunsetDate(yesterdayDate)
|
|
|
|
|
+ setSunriseTmrDate(todaySunriseDate)
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
|
|
+ setSunriseTime(data.daylights[1].sunrise)
|
|
|
|
|
+ setSunsetTime(data.daylights[1].sunset)
|
|
|
|
|
+ setSunriseDate(todaySunriseDate)
|
|
|
|
|
+ setSunsetDate(todaySunsetDate)
|
|
|
|
|
+ }
|
|
|
|
|
+ updateNightStore(yesterdayDate, data.daylights[1].sunrise, data.daylights[0].sunset)
|
|
|
|
|
+ updateDayStore(today, data.daylights[1].sunrise, data.daylights[1].sunset)
|
|
|
|
|
+ }
|
|
|
|
|
+ //今天白天(今天出日后-日落前)
|
|
|
|
|
+ else if (todaySunriseDate.getTime() < today.getTime() && today.getTime() < todaySunsetDate.getTime()) {
|
|
|
|
|
+ setNightDate(todaySunsetDate)
|
|
|
|
|
+ setDayDate(todaySunriseDate)
|
|
|
|
|
+ if (props.isNight) {
|
|
|
|
|
+ setSunsetTime(data.daylights[1].sunset)
|
|
|
|
|
+ setSunriseTmrTime(data.daylights[2].sunrise)
|
|
|
|
|
+ setSunsetDate(todaySunsetDate)
|
|
|
|
|
+ setSunriseTmrDate(tomorrowSunriseDate)
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
|
|
+ setSunriseTime(data.daylights[1].sunrise)
|
|
|
|
|
+ setSunsetTime(data.daylights[1].sunset)
|
|
|
|
|
+ setSunsetDate(todaySunsetDate)
|
|
|
|
|
+ setSunriseDate(todaySunriseDate)
|
|
|
|
|
+ }
|
|
|
|
|
+ updateNightStore(today, data.daylights[2].sunrise, data.daylights[1].sunset)
|
|
|
|
|
+ updateDayStore(today, data.daylights[1].sunrise, data.daylights[1].sunset)
|
|
|
|
|
+ }
|
|
|
|
|
+ //今天夜晚
|
|
|
|
|
+ else if (today.getTime() > todaySunsetDate.getTime() && today.getTime() < tomorrowSunriseDate.getTime()) {
|
|
|
|
|
+ setNightDate(todaySunsetDate)
|
|
|
|
|
+ setDayDate(tomorrowSunriseDate)
|
|
|
|
|
+ if (props.isNight) {
|
|
|
|
|
+ setSunsetTime(data.daylights[1].sunset)
|
|
|
|
|
+ setSunriseTmrTime(data.daylights[2].sunrise)
|
|
|
|
|
+ setSunsetDate(todaySunsetDate)
|
|
|
|
|
+ setSunriseTmrDate(tomorrowSunriseDate)
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
|
|
+ setSunriseTime(data.daylights[2].sunrise)
|
|
|
|
|
+ setSunsetTime(data.daylights[2].sunset)
|
|
|
|
|
+ setSunriseDate(tomorrowSunriseDate)
|
|
|
|
|
+ setSunsetDate(tomorrowSunsetDate)
|
|
|
|
|
+ }
|
|
|
|
|
+ updateNightStore(today, data.daylights[2].sunrise, data.daylights[1].sunset)
|
|
|
|
|
+ updateDayStore(tomorrowSunriseDate, data.daylights[2].sunrise, data.daylights[2].sunset)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
|
|
+ locationDetail = null
|
|
|
|
|
+ setAuthInfo(null)
|
|
|
|
|
+ setSunriseTime('06:00')
|
|
|
|
|
+ setSunriseTmrTime('06:00')
|
|
|
|
|
+ setSunsetTime('18:00')
|
|
|
|
|
+ dispatch(updateMember({ isMember: isMember, gpsInfo: null }))
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ dispatch(setDayRingData({
|
|
|
|
|
+ date: new Date().getTime(),
|
|
|
|
|
+ sunrise: '06:00',
|
|
|
|
|
+ sunset: '18:00'
|
|
|
|
|
+ }))
|
|
|
|
|
+ dispatch(setNightRingData({
|
|
|
|
|
+ date: new Date().getTime(),
|
|
|
|
|
+ sunrise: '06:00',
|
|
|
|
|
+ sunset: '18:00'
|
|
|
|
|
+ }))
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function updateNightStore(date, sunrise, sunset) {
|
|
|
|
|
+ if (lastNightInfo && lastNightInfo.date.getDate() == new Date(date).getDate() &&
|
|
|
|
|
+ lastNightInfo.sunrise == sunrise &&
|
|
|
|
|
+ lastNightInfo.sunset == sunset
|
|
|
|
|
+ ) {
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ lastNightInfo = {
|
|
|
|
|
+ date,
|
|
|
|
|
+ sunrise,
|
|
|
|
|
+ sunset
|
|
|
|
|
+ }
|
|
|
|
|
+ dispatch(setNightRingData({
|
|
|
|
|
+ date: date.getTime(),
|
|
|
|
|
+ sunrise: sunrise,
|
|
|
|
|
+ sunset: sunset
|
|
|
|
|
+ }))
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function updateDayStore(date, sunrise, sunset) {
|
|
|
|
|
+ if (lastDayInfo && lastDayInfo.date.getDate() == new Date(date).getDate() &&
|
|
|
|
|
+ lastDayInfo.sunrise == sunrise &&
|
|
|
|
|
+ lastDayInfo.sunset == sunset
|
|
|
|
|
+ ) {
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ lastDayInfo = {
|
|
|
|
|
+ date,
|
|
|
|
|
+ sunrise,
|
|
|
|
|
+ sunset
|
|
|
|
|
+ }
|
|
|
|
|
+ dispatch(setDayRingData({
|
|
|
|
|
+ date: date.getTime(),
|
|
|
|
|
+ sunrise: sunrise,
|
|
|
|
|
+ sunset: sunset
|
|
|
|
|
+ }))
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function tapCard(e) {
|
|
|
|
|
+ // if (process.env.TARO_ENV == 'weapp') {
|
|
|
|
|
+ // e.stopPropagation()
|
|
|
|
|
+ // }
|
|
|
|
|
+ if (!user.isLogin) {
|
|
|
|
|
+ jumpPage('/pages/account/ChooseAuth', 'ChooseAuth', navigation)
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!dayStore.showDayRing) {
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ setShowDetailPopup(true)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function auth(e?: any) {
|
|
|
|
|
+ if (e && process.env.TARO_ENV == 'weapp') {
|
|
|
|
|
+ e.stopPropagation()
|
|
|
|
|
+ }
|
|
|
|
|
+ var today = new Date()
|
|
|
|
|
+ var yesterday = new Date(today.getTime() - 24 * 3600 * 1000)
|
|
|
|
|
+ var tomorrow = new Date(today.getTime() + 24 * 3600 * 1000 * 3)
|
|
|
|
|
+ var strYesterday = `${yesterday.getFullYear()}-${TimeFormatter.padZero(yesterday.getMonth() + 1)}-${TimeFormatter.padZero(yesterday.getDate())}`
|
|
|
|
|
+ var strTomorrow = `${tomorrow.getFullYear()}-${TimeFormatter.padZero(tomorrow.getMonth() + 1)}-${TimeFormatter.padZero(tomorrow.getDate())}`
|
|
|
|
|
+ // systemLocation({
|
|
|
|
|
+ // lat: 77,
|
|
|
|
|
+ // lng: 20,
|
|
|
|
|
+ // date_start: strYesterday,
|
|
|
|
|
+ // date_end: strTomorrow,
|
|
|
|
|
+ // coordinate_system_standard: 'GCJ-02'
|
|
|
|
|
+ // }).then(data => {
|
|
|
|
|
+ // })
|
|
|
|
|
+ // return
|
|
|
|
|
+
|
|
|
|
|
+ if (process.env.TARO_ENV == 'rn') {
|
|
|
|
|
+ Taro.getLocation({
|
|
|
|
|
+ success(res) {
|
|
|
|
|
+ systemLocation({
|
|
|
|
|
+ lat: res.latitude,
|
|
|
|
|
+ lng: res.longitude,
|
|
|
|
|
+ // name: 'app test',
|
|
|
|
|
+ // address: 'app test',
|
|
|
|
|
+ date_start: strYesterday,
|
|
|
|
|
+ date_end: strTomorrow,
|
|
|
|
|
+ // coordinate_system_standard: 'GCJ-02'
|
|
|
|
|
+ }).then(data => {
|
|
|
|
|
+ console.log('get Location', data)
|
|
|
|
|
+ updateDate(data);
|
|
|
|
|
+ locationDetail = data;
|
|
|
|
|
+ global.locationDetail = locationDetail
|
|
|
|
|
+ setAuthInfo(data as any)
|
|
|
|
|
+ setSunriseTime((data as any).daylights[0].sunrise)
|
|
|
|
|
+ setSunriseTmrTime((data as any).daylights[1].sunrise)
|
|
|
|
|
+ setSunsetTime((data as any).daylights[0].sunset)
|
|
|
|
|
+ Taro.setStorage({
|
|
|
|
|
+ key: 'gps',
|
|
|
|
|
+ data: JSON.stringify(data as any)
|
|
|
|
|
+ })
|
|
|
|
|
+ dispatch(updateMember({ isMember: isMember, gpsInfo: (data as any) }))
|
|
|
|
|
+ showRing()
|
|
|
|
|
+ })
|
|
|
|
|
+ },
|
|
|
|
|
+ fail(res) {
|
|
|
|
|
+ if (res.errMsg == 'Permissions denied!') {
|
|
|
|
|
+ alert('aaa')
|
|
|
|
|
+ }
|
|
|
|
|
+ console.log(res)
|
|
|
|
|
+ showRing()
|
|
|
|
|
+ },
|
|
|
|
|
+ complete(res) {
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ joingMember = false;
|
|
|
|
|
+ Taro.chooseLocation({
|
|
|
|
|
+ latitude: authInfo && authInfo.lat ? authInfo.lat : undefined,
|
|
|
|
|
+ longitude: authInfo && authInfo.lat ? authInfo.lng : undefined,
|
|
|
|
|
+ success: function (res) {
|
|
|
|
|
+
|
|
|
|
|
+ systemLocation({
|
|
|
|
|
+ lat: res.latitude,
|
|
|
|
|
+ lng: res.longitude,
|
|
|
|
|
+ name: res.name,
|
|
|
|
|
+ address: res.address,
|
|
|
|
|
+ date_start: strYesterday,
|
|
|
|
|
+ date_end: strTomorrow,
|
|
|
|
|
+ coordinate_system_standard: 'GCJ-02'
|
|
|
|
|
+ }).then(data => {
|
|
|
|
|
+ updateDate(data);
|
|
|
|
|
+ locationDetail = data;
|
|
|
|
|
+ global.locationDetail = locationDetail
|
|
|
|
|
+ setAuthInfo(data as any)
|
|
|
|
|
+ setDetail(data as any)
|
|
|
|
|
+ setSunriseTime((data as any).daylights[0].sunrise)
|
|
|
|
|
+ setSunriseTmrTime((data as any).daylights[1].sunrise)
|
|
|
|
|
+ setSunsetTime((data as any).daylights[0].sunset)
|
|
|
|
|
+ Taro.setStorage({
|
|
|
|
|
+ key: 'gps',
|
|
|
|
|
+ data: JSON.stringify(data as any)
|
|
|
|
|
+ })
|
|
|
|
|
+ showRing()
|
|
|
|
|
+ dispatch(updateMember({ isMember: isMember, gpsInfo: (data as any) }))
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ },
|
|
|
|
|
+ fail(res) {
|
|
|
|
|
+ Taro.showToast({
|
|
|
|
|
+ title: '位置修改失败!\n请重新选择就近位置',
|
|
|
|
|
+ icon: 'none'
|
|
|
|
|
+ })
|
|
|
|
|
+ showRing()
|
|
|
|
|
+ },
|
|
|
|
|
+ complete(res) {
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function showRing() {
|
|
|
|
|
+ dispatch(showNight(true))
|
|
|
|
|
+ dispatch(showDay(true))
|
|
|
|
|
+ Taro.setStorage({
|
|
|
|
|
+ key: 'showNightRing',
|
|
|
|
|
+ data: true
|
|
|
|
|
+ })
|
|
|
|
|
+ Taro.setStorage({
|
|
|
|
|
+ key: 'showDayRing',
|
|
|
|
|
+ data: true
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function getLocation() {
|
|
|
|
|
+ var city = ''
|
|
|
|
|
+ if ((authInfo as any).address) {
|
|
|
|
|
+ if ((authInfo as any).address.city.length > 0) {
|
|
|
|
|
+ city = (authInfo as any).address.city
|
|
|
|
|
+ }
|
|
|
|
|
+ else if ((authInfo as any).address.province.length > 0) {
|
|
|
|
|
+ city = (authInfo as any).address.province
|
|
|
|
|
+ }
|
|
|
|
|
+ else if ((authInfo as any).address.country.length > 0) {
|
|
|
|
|
+ city = (authInfo as any).address.country
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
|
|
+ city = t('feature.track_time_duration.third_ring.unknown')
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
|
|
+ city = t('feature.track_time_duration.third_ring.unknown')
|
|
|
|
|
+ }
|
|
|
|
|
+ // return city +' | '+parseInt(authInfo.lat)+'°'+ ' '+parseInt(authInfo.lng)
|
|
|
|
|
+ return `${city} | ${Math.abs(parseInt(authInfo.lat))}°${parseInt(authInfo.lat) < 0 ? 'S' : 'N'} ${Math.abs(parseInt(authInfo.lng))}°${parseInt(authInfo.lng) < 0 ? 'W' : 'E'}`
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function clearData() {
|
|
|
|
|
+ Taro.showModal({
|
|
|
|
|
+ title: '提示',
|
|
|
|
|
+ content: '确认清除位置数据?',
|
|
|
|
|
+ success: function (res) {
|
|
|
|
|
+ if (res.confirm) {
|
|
|
|
|
+ clearLocation().then(res => {
|
|
|
|
|
+ if (global.clearNightLocation) {
|
|
|
|
|
+ global.clearNightLocation()
|
|
|
|
|
+ }
|
|
|
|
|
+ if (global.clearDayLocation) {
|
|
|
|
|
+ global.clearDayLocation()
|
|
|
|
|
+ }
|
|
|
|
|
+ lastNightInfo = null
|
|
|
|
|
+ lastDayInfo = null
|
|
|
|
|
+ })
|
|
|
|
|
+ } else if (res.cancel) {
|
|
|
|
|
+ console.log('用户点击取消')
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ function clearCacheData() {
|
|
|
|
|
+ locationDetail = null
|
|
|
|
|
+ Taro.removeStorage({ key: 'gps' })
|
|
|
|
|
+ setAuthInfo(null)
|
|
|
|
|
+ setSunriseTime('06:00')
|
|
|
|
|
+ setSunriseTmrTime('06:00')
|
|
|
|
|
+ setSunsetTime('18:00')
|
|
|
|
|
+ dispatch(updateMember({ isMember: isMember, gpsInfo: null }))
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ dispatch(setDayRingData({
|
|
|
|
|
+ date: new Date().getTime(),
|
|
|
|
|
+ sunrise: '06:00',
|
|
|
|
|
+ sunset: '18:00'
|
|
|
|
|
+ }))
|
|
|
|
|
+ dispatch(setNightRingData({
|
|
|
|
|
+ date: new Date().getTime(),
|
|
|
|
|
+ sunrise: '06:00',
|
|
|
|
|
+ sunset: '18:00'
|
|
|
|
|
+ }))
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function detailModalContent() {
|
|
|
|
|
+ var split = new Date().toString().split(' ');
|
|
|
|
|
+ var timezone = split[split.length - 2];
|
|
|
|
|
+ if (!authInfo || !(authInfo as any).lat) {
|
|
|
|
|
+ return <View style={{ height: 100, display: 'flex', alignItems: 'center', justifyContent: 'center', width: rpxToPx(750) }}>
|
|
|
|
|
+ <Text>暂无位置信息</Text>
|
|
|
|
|
+ </View>
|
|
|
|
|
+ }
|
|
|
|
|
+ return <View style={{ display: 'flex', flexDirection: 'column' }}>
|
|
|
|
|
+ {
|
|
|
|
|
+ <View className="cell_bg">
|
|
|
|
|
+ {
|
|
|
|
|
+ <View className="cell_full">
|
|
|
|
|
+ <Text className="cell_title">{t('feature.track_time_duration.third_ring.location')}</Text>
|
|
|
|
|
+ <Text className="cell_value">{authInfo ? getLocation() : t('feature.track_time_duration.third_ring.enter')}</Text>
|
|
|
|
|
+ </View>
|
|
|
|
|
+ }
|
|
|
|
|
+ <View className="cell_line" style={{ height: 1 }} />
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ {
|
|
|
|
|
+ <View className="cell_full" >
|
|
|
|
|
+ <Text className="cell_title">{t('feature.track_time_duration.third_ring.latitude')}</Text>
|
|
|
|
|
+
|
|
|
|
|
+ <Text className="cell_value">{(authInfo as any).lat}</Text>
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ </View>
|
|
|
|
|
+ }
|
|
|
|
|
+ <View className="cell_line" style={{ height: 1 }} />
|
|
|
|
|
+
|
|
|
|
|
+ <View className="cell_full">
|
|
|
|
|
+ <Text className="cell_title" >{t('feature.track_time_duration.third_ring.longitude')}</Text>
|
|
|
|
|
+
|
|
|
|
|
+ <Text className="cell_value">{(authInfo as any).lng}</Text>
|
|
|
|
|
+
|
|
|
|
|
+ </View>
|
|
|
|
|
+ <View className="cell_line" style={{ height: 1 }} />
|
|
|
|
|
+ <View className="cell_full">
|
|
|
|
|
+ <Text className="cell_title">{t('feature.track_time_duration.third_ring.timezone')}</Text>
|
|
|
|
|
+
|
|
|
|
|
+ <Text className="cell_value">{timezone}</Text>
|
|
|
|
|
+
|
|
|
|
|
+ </View>
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ </View>
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ <Text onClick={() => {
|
|
|
|
|
+ clearData()
|
|
|
|
|
+ setShowDetailModal(false)
|
|
|
|
|
+ }} style={{ width: '100%', textAlign: 'center', marginBottom: 50, color: '#fff', marginTop: 20 }}>清除位置</Text>
|
|
|
|
|
+ </View>
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function modalContent2() {
|
|
|
|
|
+ if (process.env.TARO_ENV == 'weapp') {
|
|
|
|
|
+ return <Modal
|
|
|
|
|
+ testInfo={null}
|
|
|
|
|
+ dismiss={() => {
|
|
|
|
|
+ setShowDetailModal(false)
|
|
|
|
|
+ }}
|
|
|
|
|
+ confirm={() => { }}>
|
|
|
|
|
+ {
|
|
|
|
|
+ detailModalContent()
|
|
|
|
|
+ }
|
|
|
|
|
+ </Modal>
|
|
|
|
|
+ }
|
|
|
|
|
+ else if (process.env.TARO_ENV == 'rn') {
|
|
|
|
|
+ return <PageContainer style={{ backgroundColor: '#1c1c1c' }}
|
|
|
|
|
+ // overlayStyle='background-color:rgba(0,0,0,0.9)'
|
|
|
|
|
+ // custom-style='background-color:#1c1c1c'
|
|
|
|
|
+ overlayStyle={{ backgroundColor: 'rgba(0,0,0,0.9)' }}
|
|
|
|
|
+ customStyle={{ backgroundColor: '#1c1c1c' }}
|
|
|
|
|
+ closeOnSlideDown={false}
|
|
|
|
|
+ onBeforeEnter={() => {
|
|
|
|
|
+
|
|
|
|
|
+ }}
|
|
|
|
|
+ onBeforeLeave={() => {
|
|
|
|
|
+ }}
|
|
|
|
|
+ onClick={() => { alert('b') }}
|
|
|
|
|
+ onClickOverlay={() => { alert('a') }}
|
|
|
|
|
+ onAfterLeave={() => { setShowDetailModal(false) }}
|
|
|
|
|
+ show={showDetailModal} round={true} overlay={true} position='bottom'
|
|
|
|
|
+ >
|
|
|
|
|
+ {
|
|
|
|
|
+ detailModalContent()
|
|
|
|
|
+ }
|
|
|
|
|
+ </PageContainer>
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function modalContent() {
|
|
|
|
|
+ if (process.env.TARO_ENV == 'weapp') {
|
|
|
|
|
+ return <Modal
|
|
|
|
|
+ testInfo={null}
|
|
|
|
|
+ dismiss={() => {
|
|
|
|
|
+ setShowDetailPopup(false)
|
|
|
|
|
+ }}
|
|
|
|
|
+ confirm={() => { }}>
|
|
|
|
|
+ <DayNightDetailPopup
|
|
|
|
|
+ sunsetDate={sunsetDate}
|
|
|
|
|
+ sunriseDate={sunriseDate}
|
|
|
|
|
+ sunriseTmrDate={sunriseTmrDate}
|
|
|
|
|
+ sunsetTime={sunsetTime}
|
|
|
|
|
+ sunriseTime={sunriseTime}
|
|
|
|
|
+ sunriseTmrTime={sunriseTmrTime}
|
|
|
|
|
+ isNight={props.isNight}
|
|
|
|
|
+ authInfo={authInfo}
|
|
|
|
|
+ nightDate={nightDate}
|
|
|
|
|
+ dayDate={dayDate}
|
|
|
|
|
+ onClose={() => { setShowDetailPopup(false) }}
|
|
|
|
|
+ />
|
|
|
|
|
+ </Modal>
|
|
|
|
|
+ }
|
|
|
|
|
+ else if (process.env.TARO_ENV == 'rn') {
|
|
|
|
|
+ return <PageContainer style={{ backgroundColor: '#1c1c1c' }}
|
|
|
|
|
+ // overlayStyle='background-color:rgba(0,0,0,0.9)'
|
|
|
|
|
+ // custom-style='background-color:#1c1c1c'
|
|
|
|
|
+ overlayStyle={{ backgroundColor: 'rgba(0,0,0,0.9)' }}
|
|
|
|
|
+ customStyle={{ backgroundColor: '#1c1c1c' }}
|
|
|
|
|
+ closeOnSlideDown={false}
|
|
|
|
|
+ onBeforeEnter={() => {
|
|
|
|
|
+
|
|
|
|
|
+ }}
|
|
|
|
|
+ onBeforeLeave={() => {
|
|
|
|
|
+ }}
|
|
|
|
|
+ onClick={() => { alert('b') }}
|
|
|
|
|
+ onClickOverlay={() => { alert('a') }}
|
|
|
|
|
+ onAfterLeave={() => { setShowDetailPopup(false) }}
|
|
|
|
|
+ show={showDetailModal} round={true} overlay={true} position='bottom'
|
|
|
|
|
+ >
|
|
|
|
|
+ <DayNightDetailPopup
|
|
|
|
|
+ sunsetDate={sunsetDate}
|
|
|
|
|
+ sunriseDate={sunriseDate}
|
|
|
|
|
+ sunriseTmrDate={sunriseTmrDate}
|
|
|
|
|
+ sunsetTime={sunsetTime}
|
|
|
|
|
+ sunriseTime={sunriseTime}
|
|
|
|
|
+ sunriseTmrTime={sunriseTmrTime}
|
|
|
|
|
+ isNight={props.isNight}
|
|
|
|
|
+ authInfo={authInfo}
|
|
|
|
|
+ nightDate={nightDate}
|
|
|
|
|
+ dayDate={dayDate}
|
|
|
|
|
+ onClose={() => { setShowDetailPopup(false) }}
|
|
|
|
|
+ />
|
|
|
|
|
+ </PageContainer>
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ function getSunsetTime() {
|
|
|
|
|
+ if (props.isNight) {
|
|
|
|
|
+ if (!authInfo || !(authInfo as any).lat) {
|
|
|
|
|
+ if (new Date().getHours() >= 6) {
|
|
|
|
|
+ return `${sunsetTime}`
|
|
|
|
|
+ }
|
|
|
|
|
+ return `${sunsetTime}`
|
|
|
|
|
+ // return `Yesterday ${sunsetTime} - Today ${sunriseTmrTime}`
|
|
|
|
|
+ }
|
|
|
|
|
+ if (nightDate.getDate() == new Date().getDate()) {
|
|
|
|
|
+ return `${sunsetTime.substring(0, 5)}`
|
|
|
|
|
+ }
|
|
|
|
|
+ return `${sunsetTime.substring(0, 5)}`
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!authInfo || !(authInfo as any).lat) {
|
|
|
|
|
+ if (new Date().getHours() >= 18) {
|
|
|
|
|
+ return `${sunsetTime}`
|
|
|
|
|
+
|
|
|
|
|
+ // return `Tomorrow ${sunriseTime} - ${sunsetTime}`
|
|
|
|
|
+ }
|
|
|
|
|
+ return `${sunsetTime}`
|
|
|
|
|
+ // return `Today ${sunriseTime} - ${sunsetTime}`
|
|
|
|
|
+ }
|
|
|
|
|
+ if (dayDate.getDate() == new Date().getDate()) {
|
|
|
|
|
+ return `${sunsetTime.substring(0, 5)}`
|
|
|
|
|
+ // return `Today ${sunriseTime} - ${sunsetTime}`
|
|
|
|
|
+ }
|
|
|
|
|
+ return `${sunsetTime.substring(0, 5)}`
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function getSunriseTime() {
|
|
|
|
|
+ if (props.isNight) {
|
|
|
|
|
+ if (!authInfo || !(authInfo as any).lat) {
|
|
|
|
|
+ if (new Date().getHours() >= 6) {
|
|
|
|
|
+ return `${sunriseTmrTime}`
|
|
|
|
|
+ }
|
|
|
|
|
+ return `${sunriseTmrTime}`
|
|
|
|
|
+ // return `Yesterday ${sunsetTime} - Today ${sunriseTmrTime}`
|
|
|
|
|
+ }
|
|
|
|
|
+ if (nightDate.getDate() == new Date().getDate()) {
|
|
|
|
|
+ return `${sunriseTmrTime.substring(0, 5)}`
|
|
|
|
|
+ }
|
|
|
|
|
+ return `${sunriseTmrTime.substring(0, 5)}`
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!authInfo || !(authInfo as any).lat) {
|
|
|
|
|
+ if (new Date().getHours() >= 18) {
|
|
|
|
|
+ return `${sunriseTime}`
|
|
|
|
|
+
|
|
|
|
|
+ // return `Tomorrow ${sunriseTime} - ${sunsetTime}`
|
|
|
|
|
+ }
|
|
|
|
|
+ return `${sunriseTime}`
|
|
|
|
|
+ // return `Today ${sunriseTime} - ${sunsetTime}`
|
|
|
|
|
+ }
|
|
|
|
|
+ if (dayDate.getDate() == new Date().getDate()) {
|
|
|
|
|
+ return `${sunriseTime.substring(0, 5)}`
|
|
|
|
|
+ // return `Today ${sunriseTime} - ${sunsetTime}`
|
|
|
|
|
+ }
|
|
|
|
|
+ return `${sunriseTime.substring(0, 5)}`
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ function longClick() {
|
|
|
|
|
+ if (user.isLogin && user.test_user && authInfo)
|
|
|
|
|
+ setShowDetailModal(true)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function showLocationAlert(e) {
|
|
|
|
|
+ if (process.env.TARO_ENV == 'weapp') {
|
|
|
|
|
+ e.stopPropagation()
|
|
|
|
|
+ }
|
|
|
|
|
+ if (isMember && authInfo && authInfo.lat) {
|
|
|
|
|
+ tapCard(e)
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ Taro.showModal({
|
|
|
|
|
+ title: props.isNight ? t('feature.day_night.alert_required_night') : t('feature.day_night.alert_required_day'),
|
|
|
|
|
+ content: props.isNight ? t('feature.day_night.alert_night_content') : t('feature.day_night.alert_day_content'),
|
|
|
|
|
+ confirmText: t('feature.day_night.choose_location'),
|
|
|
|
|
+ cancelText: t('feature.day_night.view_more'),
|
|
|
|
|
+ success: function (res) {
|
|
|
|
|
+ if (res.confirm) {
|
|
|
|
|
+ auth()
|
|
|
|
|
+ // console.log('用户点击确定')
|
|
|
|
|
+ } else if (res.cancel) {
|
|
|
|
|
+ setShowDetailPopup(true)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function tapShow() {
|
|
|
|
|
+ dispatch(showNight(true))
|
|
|
|
|
+ dispatch(showDay(true))
|
|
|
|
|
+ Taro.showModal({
|
|
|
|
|
+ title: 'Login Required',
|
|
|
|
|
+ content: props.isNight ? 'Log in to see your daily local nighttime from sunset to sunrise.' : 'Log in to see your daily local daytime from sunrise to sunset.',
|
|
|
|
|
+ cancelText: 'Later',
|
|
|
|
|
+ confirmText: 'Login',
|
|
|
|
|
+ success: function (res) {
|
|
|
|
|
+ if (res.confirm) {
|
|
|
|
|
+ Taro.setStorage({
|
|
|
|
|
+ key: 'showNightRing',
|
|
|
|
|
+ data: true
|
|
|
|
|
+ })
|
|
|
|
|
+ Taro.setStorage({
|
|
|
|
|
+ key: 'showDayRing',
|
|
|
|
|
+ data: true
|
|
|
|
|
+ })
|
|
|
|
|
+ if (!user.isLogin) {
|
|
|
|
|
+ jumpPage('/pages/account/ChooseAuth', 'ChooseAuth', navigation)
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ } else if (res.cancel) {
|
|
|
|
|
+ dispatch(showNight(false))
|
|
|
|
|
+ dispatch(showDay(false))
|
|
|
|
|
+ Taro.setStorage({
|
|
|
|
|
+ key: 'showNightRing',
|
|
|
|
|
+ data: false
|
|
|
|
|
+ })
|
|
|
|
|
+ Taro.setStorage({
|
|
|
|
|
+ key: 'showDayRing',
|
|
|
|
|
+ data: false
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function operate(e) {
|
|
|
|
|
+ if (process.env.TARO_ENV == 'weapp') {
|
|
|
|
|
+ e.stopPropagation()
|
|
|
|
|
+ }
|
|
|
|
|
+ Taro.showActionSheet({
|
|
|
|
|
+ itemList: ['选择位置', '重置'],
|
|
|
|
|
+ success: function (res) {
|
|
|
|
|
+ switch (res.tapIndex) {
|
|
|
|
|
+ case 0:
|
|
|
|
|
+ auth()
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 1:
|
|
|
|
|
+ reset()
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ fail: function (res) {
|
|
|
|
|
+ console.log(res.errMsg)
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function reset() {
|
|
|
|
|
+ var content = ''
|
|
|
|
|
+ if (props.isNight) {
|
|
|
|
|
+ if (authInfo && authInfo.lat) {
|
|
|
|
|
+ content = 'Local times for sunset and sunrise, together with the nighttime ring will turn off, and your location data will be cleared. '
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
|
|
+ content = 'Sunset and sunrise times, together with the nighttime ring will turn off.'
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
|
|
+ if (authInfo && authInfo.lat) {
|
|
|
|
|
+ content = 'Local times for sunrise and sunset, together with the daytime ring will turn off, and your location data will be cleared. '
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
|
|
+ content = 'Sunrise and sunset times, together with the daytime ring will turn off.'
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ Taro.showModal({
|
|
|
|
|
+ title: 'Reset Alert',
|
|
|
|
|
+ content: content,
|
|
|
|
|
+ success: function (res) {
|
|
|
|
|
+ if (res.confirm) {
|
|
|
|
|
+ if (user.isLogin) {
|
|
|
|
|
+ uploadPerm({ show_ring: false })
|
|
|
|
|
+ }
|
|
|
|
|
+ clearLocation().then(res => {
|
|
|
|
|
+ if (global.clearNightLocation) {
|
|
|
|
|
+ global.clearNightLocation()
|
|
|
|
|
+ }
|
|
|
|
|
+ if (global.clearDayLocation) {
|
|
|
|
|
+ global.clearDayLocation()
|
|
|
|
|
+ }
|
|
|
|
|
+ lastNightInfo = null
|
|
|
|
|
+ lastDayInfo = null
|
|
|
|
|
+
|
|
|
|
|
+ dispatch(showNight(false))
|
|
|
|
|
+ dispatch(showDay(false))
|
|
|
|
|
+ Taro.setStorage({
|
|
|
|
|
+ key: 'showNightRing',
|
|
|
|
|
+ data: false
|
|
|
|
|
+ })
|
|
|
|
|
+ Taro.setStorage({
|
|
|
|
|
+ key: 'showDayRing',
|
|
|
|
|
+ data: false
|
|
|
|
|
+ })
|
|
|
|
|
+ })
|
|
|
|
|
+ } else if (res.cancel) {
|
|
|
|
|
+ console.log('用户点击取消')
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function nightRing() {
|
|
|
|
|
+ var common = getCommon(null, true)
|
|
|
|
|
+ common.radius = bigRingRadius;
|
|
|
|
|
+ common.lineWidth = ringWidth;
|
|
|
|
|
+ var bgRing = getBgRing()
|
|
|
|
|
+
|
|
|
|
|
+ let realRingBig: RealRing = {
|
|
|
|
|
+ color: ColorType.night + '66',
|
|
|
|
|
+ startArc: 0,
|
|
|
|
|
+ durationArc: 2
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ if (authInfo && authInfo.night_completed && new Date().getTime() > authInfo.night_completed.sunrise_ts) {
|
|
|
|
|
+ realRingBig.color = ColorType.night
|
|
|
|
|
+ var duration = (authInfo.night_completed.sunrise_ts - authInfo.night_completed.sunset_ts) / 1000
|
|
|
|
|
+ var start = new Date(authInfo.night_completed.sunset_ts)
|
|
|
|
|
+ realRingBig.startArc = (start.getHours() * 3600 + start.getMinutes() * 60) / (24 * 3600) * 2 * Math.PI - Math.PI / 2.0;
|
|
|
|
|
+ realRingBig.durationArc = (duration) / (24 * 3600) * 2 * Math.PI;
|
|
|
|
|
+ return <Rings common={common} bgRing={bgRing} targetRing={realRingBig} canvasId={'ddddsss' + 'index_day'} />
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ var sunRise = 24 * 60 + 6 * 60
|
|
|
|
|
+ var sunSet = 18 * 60
|
|
|
|
|
+
|
|
|
|
|
+ var sunRiseObj = nightStore.nightRingSunrise
|
|
|
|
|
+ var sunSetObj = nightStore.nightRingSunset
|
|
|
|
|
+ sunRise = 24 * 60 + parseInt(sunRiseObj.split(':')[0]) * 60 + parseInt(sunRiseObj.split(':')[1])
|
|
|
|
|
+ sunSet = parseInt(sunSetObj.split(':')[0]) * 60 + parseInt(sunSetObj.split(':')[1])
|
|
|
|
|
+ if (sunSetObj.indexOf('PM') != -1) {
|
|
|
|
|
+ sunSet += 12 * 60
|
|
|
|
|
+ }
|
|
|
|
|
+ // }
|
|
|
|
|
+ var duration = sunRise - sunSet
|
|
|
|
|
+ realRingBig.startArc = (sunSet * 60) / (24 * 3600) * 2 * Math.PI - Math.PI / 2.0;
|
|
|
|
|
+ realRingBig.durationArc = (duration * 60) / (24 * 3600) * 2 * Math.PI;
|
|
|
|
|
+
|
|
|
|
|
+ var currentDot = getDot(null, false)
|
|
|
|
|
+ currentDot.color = ColorType.night
|
|
|
|
|
+
|
|
|
|
|
+ var now = new Date()
|
|
|
|
|
+ var t = now.getHours() * 60 + now.getMinutes()
|
|
|
|
|
+ var duration2 = t - sunSet
|
|
|
|
|
+ if (duration2 < 0) {
|
|
|
|
|
+ duration2 += 24 * 60
|
|
|
|
|
+ }
|
|
|
|
|
+ let realRing: RealRing = {
|
|
|
|
|
+ color: ColorType.night,
|
|
|
|
|
+ startArc: (sunSet * 60) / (24 * 3600) * 2 * Math.PI - Math.PI / 2.0,
|
|
|
|
|
+ durationArc: (duration2 * 60) / (24 * 3600) * 2 * Math.PI
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (nightStore.nightRingDate) {
|
|
|
|
|
+ if (new Date(nightStore.nightRingDate).getDate() == new Date().getDate() && new Date().getHours() < 12) {
|
|
|
|
|
+
|
|
|
|
|
+ realRing = null;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (!user.isLogin) {
|
|
|
|
|
+ currentDot = null;
|
|
|
|
|
+ realRing = null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ return <Rings common={common} bgRing={bgRing} targetRing={realRingBig} realRing={duration2 > duration ? null : realRing} currentDot={currentDot} canvasId={'dddd' + 'index_day'} />
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function dayRing() {
|
|
|
|
|
+ var common = getCommon(null, true)
|
|
|
|
|
+ common.radius = bigRingRadius;
|
|
|
|
|
+ common.lineWidth = ringWidth;
|
|
|
|
|
+ var bgRing = getBgRing()
|
|
|
|
|
+
|
|
|
|
|
+ const realRingBig: RealRing = {
|
|
|
|
|
+ color: ColorType.day + '66',
|
|
|
|
|
+ startArc: 0,
|
|
|
|
|
+ durationArc: 2
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (authInfo && authInfo.day_completed && new Date().getTime() > authInfo.day_completed.sunset_ts) {
|
|
|
|
|
+ realRingBig.color = ColorType.day
|
|
|
|
|
+ var duration = (authInfo.day_completed.sunset_ts - authInfo.day_completed.sunrise_ts) / 1000
|
|
|
|
|
+ var start = new Date(authInfo.day_completed.sunrise_ts)
|
|
|
|
|
+ realRingBig.startArc = (start.getHours() * 3600 + start.getMinutes() * 60) / (24 * 3600) * 2 * Math.PI - Math.PI / 2.0;
|
|
|
|
|
+ realRingBig.durationArc = (duration) / (24 * 3600) * 2 * Math.PI;
|
|
|
|
|
+ return <Rings common={common} bgRing={bgRing} targetRing={realRingBig} canvasId={'ddddsss_day' + 'index_day'} />
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ var sunRise = 6 * 60
|
|
|
|
|
+ var sunSet = 18 * 60
|
|
|
|
|
+
|
|
|
|
|
+ var sunRiseObj = dayStore.dayRingSunrise
|
|
|
|
|
+ var sunSetObj = dayStore.dayRingSunset
|
|
|
|
|
+ sunRise = parseInt(sunRiseObj.split(':')[0]) * 60 + parseInt(sunRiseObj.split(':')[1])
|
|
|
|
|
+ sunSet = parseInt(sunSetObj.split(':')[0]) * 60 + parseInt(sunSetObj.split(':')[1])
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ var duration = sunSet - sunRise
|
|
|
|
|
+
|
|
|
|
|
+ realRingBig.startArc = (sunRise * 60) / (24 * 3600) * 2 * Math.PI - Math.PI / 2.0;
|
|
|
|
|
+ realRingBig.durationArc = (duration * 60) / (24 * 3600) * 2 * Math.PI;
|
|
|
|
|
+
|
|
|
|
|
+ var currentDot = getDot(null, false)
|
|
|
|
|
+ var date = new Date()
|
|
|
|
|
+ var minutes = date.getHours() * 60 + date.getMinutes()
|
|
|
|
|
+ if (minutes < sunRise) {
|
|
|
|
|
+ minutes += 1440
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ currentDot.color = ColorType.day
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ var now = new Date()
|
|
|
|
|
+ var t = now.getHours() * 60 + now.getMinutes()
|
|
|
|
|
+ var duration2 = t - sunRise
|
|
|
|
|
+ if (duration2 < 0) {
|
|
|
|
|
+ duration2 += 24 * 60
|
|
|
|
|
+ }
|
|
|
|
|
+ var realRing: RealRing = {
|
|
|
|
|
+ color: ColorType.day,
|
|
|
|
|
+ startArc: (sunRise * 60) / (24 * 3600) * 2 * Math.PI - Math.PI / 2.0,
|
|
|
|
|
+ durationArc: (duration2 * 60) / (24 * 3600) * 2 * Math.PI
|
|
|
|
|
+ }
|
|
|
|
|
+ if (dayStore.dayRingDate) {
|
|
|
|
|
+ if (new Date(dayStore.dayRingDate).getDate() != new Date().getDate()) {
|
|
|
|
|
+ realRing = null;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (!user.isLogin) {
|
|
|
|
|
+ currentDot = null
|
|
|
|
|
+ realRing = null
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return <Rings common={common} bgRing={bgRing} targetRing={realRingBig} realRing={duration2 <= duration ? realRing : null} currentDot={currentDot} canvasId={'day_day2'} />
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function getSunsetDuration() {
|
|
|
|
|
+ if (authInfo && authInfo.night_completed && new Date().getTime() > authInfo.night_completed.sunrise_ts) {
|
|
|
|
|
+ return TimeFormatter.durationFormate(authInfo.night_completed.sunrise_ts, authInfo.night_completed.sunset_ts)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ var now = new Date()
|
|
|
|
|
+ if (props.isNight && sunsetDate) {
|
|
|
|
|
+ if (now.getTime() > sunsetDate.getTime()) {
|
|
|
|
|
+ return TimeFormatter.countdown(sunsetDate.getTime())
|
|
|
|
|
+ }
|
|
|
|
|
+ // return TimeFormatter.countdown(sunsetDate.getTime())
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ var sunRiseObj = nightStore.nightRingSunrise
|
|
|
|
|
+ var sunSetObj = nightStore.nightRingSunset
|
|
|
|
|
+ var sunRise = 24 * 60 + parseInt(sunRiseObj.split(':')[0]) * 60 + parseInt(sunRiseObj.split(':')[1])
|
|
|
|
|
+ var sunSet = parseInt(sunSetObj.split(':')[0]) * 60 + parseInt(sunSetObj.split(':')[1])
|
|
|
|
|
+ if (sunSetObj.indexOf('PM') != -1) {
|
|
|
|
|
+ sunSet += 12 * 60
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ var duration = (sunRise - sunSet) * 60 * 1000
|
|
|
|
|
+
|
|
|
|
|
+ return TimeFormatter.calculateTimeDifference(new Date().getTime(), new Date().getTime() + duration);
|
|
|
|
|
+
|
|
|
|
|
+ // //COMPLETED
|
|
|
|
|
+ // if (time.last_real_check_time && time.status != 'WAIT_FOR_START' && time.status != 'COMPLETED') {
|
|
|
|
|
+ // var target_end_time;
|
|
|
|
|
+ // if (time.scenario == 'SLEEP') {
|
|
|
|
|
+ // target_end_time = time.sleep.target_end_time
|
|
|
|
|
+ // }
|
|
|
|
|
+ // else {
|
|
|
|
|
+ // target_end_time = time.fast.target_end_time
|
|
|
|
|
+ // }
|
|
|
|
|
+
|
|
|
|
|
+ // if (new Date().getTime > target_end_time) {
|
|
|
|
|
+ // //超时
|
|
|
|
|
+ // }
|
|
|
|
|
+ // }
|
|
|
|
|
+
|
|
|
|
|
+ // //WFS
|
|
|
|
|
+ // //ONGOING 显示正计时
|
|
|
|
|
+ // return ''
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function getSunriseDuration() {
|
|
|
|
|
+ if (authInfo && authInfo.day_completed && new Date().getTime() > authInfo.day_completed.sunset_ts) {
|
|
|
|
|
+ return TimeFormatter.durationFormate(authInfo.day_completed.sunrise_ts, authInfo.day_completed.sunset_ts)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ var now = new Date()
|
|
|
|
|
+ if (!props.isNight && sunriseDate) {
|
|
|
|
|
+ if (now.getTime() > sunriseDate.getTime()) {
|
|
|
|
|
+ return TimeFormatter.countdown(sunriseDate.getTime())
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ var sunRiseObj = dayStore.dayRingSunrise
|
|
|
|
|
+ var sunSetObj = dayStore.dayRingSunset
|
|
|
|
|
+ var sunRise = parseInt(sunRiseObj.split(':')[0]) * 60 + parseInt(sunRiseObj.split(':')[1])
|
|
|
|
|
+ var sunSet = parseInt(sunSetObj.split(':')[0]) * 60 + parseInt(sunSetObj.split(':')[1])
|
|
|
|
|
+ if (sunSetObj.indexOf('PM') != -1) {
|
|
|
|
|
+ sunSet += 12 * 60
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ var duration = (sunSet - sunRise) * 60 * 1000
|
|
|
|
|
+
|
|
|
|
|
+ return TimeFormatter.calculateTimeDifference(new Date().getTime(), new Date().getTime() + duration);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function completedDate() {
|
|
|
|
|
+ if (props.isNight) {
|
|
|
|
|
+ if (authInfo && authInfo.night_completed && new Date().getTime() > authInfo.night_completed.sunrise_ts) {
|
|
|
|
|
+ return TimeFormatter.dateDescription(authInfo.night_completed.sunset_ts)
|
|
|
|
|
+ }
|
|
|
|
|
+ return ''
|
|
|
|
|
+ }
|
|
|
|
|
+ if (authInfo && authInfo.day_completed && new Date().getTime() > authInfo.day_completed.sunset_ts) {
|
|
|
|
|
+ return TimeFormatter.dateDescription(authInfo.day_completed.sunrise_ts)
|
|
|
|
|
+ }
|
|
|
|
|
+ return ''
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function showArrow() {
|
|
|
|
|
+ if (props.isNight) {
|
|
|
|
|
+ if (authInfo && authInfo.night_completed && new Date().getTime() > authInfo.night_completed.sunrise_ts) {
|
|
|
|
|
+ return true
|
|
|
|
|
+ }
|
|
|
|
|
+ return false
|
|
|
|
|
+ }
|
|
|
|
|
+ if (authInfo && authInfo.day_completed && new Date().getTime() > authInfo.day_completed.sunset_ts) {
|
|
|
|
|
+ return true
|
|
|
|
|
+ }
|
|
|
|
|
+ return false
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function currentStatus(){
|
|
|
|
|
+ if (showArrow()){
|
|
|
|
|
+ return '过去'
|
|
|
|
|
+ }
|
|
|
|
|
+ var strTime = props.isNight?getSunsetDuration():getSunriseDuration()
|
|
|
|
|
+ return (strTime.indexOf('小时')!=-1||strTime.indexOf('分钟')!=-1)?'即将到来':'当前'
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function footerDesc() {
|
|
|
|
|
+ var now = new Date()
|
|
|
|
|
+ if (props.isNight) {
|
|
|
|
|
+ if (now.getTime() < sunsetDate.getTime()) {
|
|
|
|
|
+ return '距日落' + TimeFormatter.countdown(sunsetDate.getTime())
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ return '距日出' + TimeFormatter.countdown(sunriseTmrDate.getTime())
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (now.getTime() > sunriseDate.getTime() && now.getTime() < sunsetDate.getTime()) {
|
|
|
|
|
+
|
|
|
|
|
+ return '距日落' + TimeFormatter.countdown(sunsetDate.getTime())
|
|
|
|
|
+ }
|
|
|
|
|
+ return '距日出' + TimeFormatter.countdown(sunriseDate.getTime())
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function footerIcon() {
|
|
|
|
|
+ var now = new Date()
|
|
|
|
|
+ if (props.isNight) {
|
|
|
|
|
+ if (now.getTime() < sunsetDate.getTime()) {
|
|
|
|
|
+ return <IconSunset color={ColorType.night + '66'} width={14} />
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ return <IconSunrise color={ColorType.night + '66'} width={14} />
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (now.getTime() > sunriseDate.getTime() && now.getTime() < sunsetDate.getTime()) {
|
|
|
|
|
+
|
|
|
|
|
+ return <IconSunset color={ColorType.day + '66'} width={14} />
|
|
|
|
|
+ }
|
|
|
|
|
+ return <IconSunrise color={ColorType.day + '66'} width={14} />
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return <Box><View style={{ position: 'relative' }}>
|
|
|
|
|
+ {
|
|
|
|
|
+ !user.isLogin && <View style={{ color: '#fff' }} onClick={tapShow}>{props.isNight ? '显示当地夜晚时间' : '显示当地白天时间'}</View>
|
|
|
|
|
+ }
|
|
|
|
|
+ {
|
|
|
|
|
+ user.isLogin && !dayStore.showDayRing && <View style={{ color: '#fff' }} onClick={auth}>{props.isNight ? '显示当地夜晚时间' : '显示当地白天时间'}</View>
|
|
|
|
|
+ }
|
|
|
|
|
+ {
|
|
|
|
|
+ user.isLogin && dayStore.showDayRing && <View style={{ display: 'flex', flexDirection: 'column', zIndex: 1 }} onClick={showLocationAlert} onLongPress={longClick}>
|
|
|
|
|
+
|
|
|
|
|
+ <View className="ring_full_container" style={{ paddingBottom: 0 }}>
|
|
|
|
|
+
|
|
|
|
|
+ <View style={{
|
|
|
|
|
+ display: 'flex',
|
|
|
|
|
+ flexDirection: 'row',
|
|
|
|
|
+ marginTop: 0,
|
|
|
|
|
+ marginBottom: 0,
|
|
|
|
|
+ padding: 0,
|
|
|
|
|
+ alignItems: 'center'
|
|
|
|
|
+ }}>
|
|
|
|
|
+ {
|
|
|
|
|
+ props.isNight ? nightRing() : dayRing()
|
|
|
|
|
+ }
|
|
|
|
|
+ <View style={{ display: 'flex', flexDirection: 'column', flexShrink: 0, flex: 1, marginLeft: rpxToPx(52) }}>
|
|
|
|
|
+ <Text className='ring_card_duration_title'>{props.isNight ? t('feature.common.overnight') : t('feature.common.day')}</Text>
|
|
|
|
|
+ <Text className='ring_card_duration_value' style={{ color: props.isNight ? ColorType.night : ColorType.day }}>{props.isNight ? getSunsetDuration() : getSunriseDuration()}</Text>
|
|
|
|
|
+ {/* <Text className='duration_title2' style={{ marginTop: 4 }}>{!props.isNight ? t('feature.common.overnight') : t('feature.common.day')}</Text> */}
|
|
|
|
|
+ {/* <Text className='duration_value22' style={{ color: !props.isNight ? ColorType.night : ColorType.day }}>{!props.isNight ? getSunsetTime() : getSunriseTime()}</Text> */}
|
|
|
|
|
+
|
|
|
|
|
+ </View>
|
|
|
|
|
+ {/* <View style={{ position: 'absolute', right: -rpxToPx(20), top: -rpxToPx(20) }}>
|
|
|
|
|
+ {
|
|
|
|
|
+ authInfo && authInfo.lat ?
|
|
|
|
|
+ <View style={{ display: 'flex', flexDirection: 'row' }} onClick={operate}>
|
|
|
|
|
+ <View className={props.isNight ? 'night_location_btn' : 'day_location_btn'}>{getLocation()}</View>
|
|
|
|
|
+ </View>
|
|
|
|
|
+ :
|
|
|
|
|
+ <View style={{ display: 'flex', flexDirection: 'row' }} onClick={operate}>
|
|
|
|
|
+ <View className={props.isNight ? 'night_location_btn' : 'day_location_btn'} >
|
|
|
|
|
+ {props.isNight ? t('feature.day_night.get_local_time') : t('feature.day_night.get_local_time_sunrise')}
|
|
|
|
|
+ </View>
|
|
|
|
|
+ </View>
|
|
|
|
|
+ }
|
|
|
|
|
+ </View> */}
|
|
|
|
|
+ <View className='day_card_header'>
|
|
|
|
|
+ <View className='free' style={{ backgroundColor: props.isNight ? ColorType.night : ColorType.day, color: props.isNight ? '#fff' : '#1C1C1C' }}>{currentStatus()}</View>
|
|
|
|
|
+ </View>
|
|
|
|
|
+ <View className='day_card_footer'>
|
|
|
|
|
+ <Text className='day_card_footer_date'>
|
|
|
|
|
+ {
|
|
|
|
|
+ completedDate()
|
|
|
|
|
+ }
|
|
|
|
|
+ </Text>
|
|
|
|
|
+ {
|
|
|
|
|
+ showArrow() && <Image className="card_arrow" src={require('@/assets/images/arrow3.png')} />
|
|
|
|
|
+ }
|
|
|
|
|
+ {
|
|
|
|
|
+ !showArrow() && footerIcon()
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ {
|
|
|
|
|
+ !showArrow() && <Text className='footer_desc_text' style={{ color: props.isNight?ColorType.night:ColorType.day,opacity:0.4 }}>{footerDesc()}</Text>
|
|
|
|
|
+ }
|
|
|
|
|
+ </View>
|
|
|
|
|
+ </View>
|
|
|
|
|
+ </View>
|
|
|
|
|
+ {/* <View style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', marginTop: rpxToPx(36) }}>
|
|
|
|
|
+
|
|
|
|
|
+ {
|
|
|
|
|
+ authInfo && authInfo.lat ?
|
|
|
|
|
+ <View style={{ display: 'flex', flexDirection: 'row' }} onClick={operate}>
|
|
|
|
|
+ <View className={props.isNight ? 'night_location_btn' : 'day_location_btn'}>{getLocation()}</View>
|
|
|
|
|
+ </View>
|
|
|
|
|
+ :
|
|
|
|
|
+ <View style={{ display: 'flex', flexDirection: 'row' }} onClick={operate}>
|
|
|
|
|
+ <View className={props.isNight ? 'night_location_btn' : 'day_location_btn'} >
|
|
|
|
|
+ {props.isNight ? t('feature.day_night.get_local_time') : t('feature.day_night.get_local_time_sunrise')}
|
|
|
|
|
+ </View>
|
|
|
|
|
+ </View>
|
|
|
|
|
+ }
|
|
|
|
|
+ </View> */}
|
|
|
|
|
+ </View>
|
|
|
|
|
+ }
|
|
|
|
|
+ {
|
|
|
|
|
+ showDetailPopup && modalContent()
|
|
|
|
|
+ }
|
|
|
|
|
+ {
|
|
|
|
|
+ showDetailModal && modalContent2()
|
|
|
|
|
+ }
|
|
|
|
|
+ </View>
|
|
|
|
|
+ </Box>
|
|
|
|
|
+}
|