import { View, Text } from "@tarojs/components";
import './Metric.scss'
import { setAuth } from "../hooks/werun";
import { useReady } from "@tarojs/taro";
import { useSelector } from "react-redux";
import { useEffect, useState } from "react";
import Taro from "@tarojs/taro";
import { metricCards, uploadMetric, uploadSteps } from "@/services/trackSomething";
import { TimeFormatter } from "@/utils/time_format";
import MetricItem from "./MetricItem";
import { get } from "http";
import Modal from "@/components/Modal";
import PickerViews from "@/components/PickerViews";
import LimitPickers from "@/components/LimitPickers";
export default function Component(props: any) {
const user = useSelector((state: any) => state.user);
const [list, setList] = useState([])
const [isModalOpen, setIsModalOpen] = useState(false);
const [isTimePickerOpen, setIsTimePickerOpen] = useState(false);
const [pickerValue, setPickerValue] = useState([]);
const [pickerItems, setPickerItems] = useState([]);
const [isPoint, setIsPoint] = useState(false)
const [metricItem, setMetricItem] = useState({})
const [strTime, setStrTime] = useState('')
const [time, setTime] = useState(0)
//未登录<->已登录 状态切换时,执行一次授权检查
useEffect(() => {
}, [user.isLogin])
useReady(() => {
getCards();
})
const openModal = () => {
setIsModalOpen(true);
};
const closeModal = () => {
setIsModalOpen(false);
};
function getCards() {
metricCards().then(res => {
setList((res as any).cards)
})
}
//ts 把数组items: [{code: "_walk", value: 2180},{code: "_walk", value: 4444}]中的value取出来,/分割,组成字符串,如2180/4444
function getValues(items) {
var values = ''
items.map((item, index) => {
if (index == 0) {
values = item.value
}
else {
values = values + '/' + item.value
}
})
return values
}
function goDetail(item) {
if (user.isLogin) {
Taro.navigateTo({
url: '/pages/RecordsHistory?type=metric&code=' + item.code
})
}
else {
Taro.navigateTo({
url: '/pages/ChooseAuth'
})
}
}
function record(item: any) {
if (user.isLogin) {
setMetricItem(item)
var now = new Date();
var t = (now.getHours() < 10 ? '0' + now.getHours() : now.getHours()) + ":" + (now.getMinutes() < 10 ? '0' + now.getMinutes() : now.getMinutes());
setStrTime(t)
setTime(now.getTime())
if (item.schemas[0].type == 'DECIMAL') {
pointPicker(item.schemas[0])
}
else if (item.schemas.length > 1) {
}
else {
singlePicker(item.schemas[0])
}
}
else {
Taro.navigateTo({
url: '/pages/ChooseAuth'
})
}
}
function pointPicker(item: any) {
var min = item.min
var max = item.max
var step = item.step
var value = item.default_value
var items: number[] = []
var items2: number[] = []
var value0Index = 0
var value1Index = 0
for (var i = min; i <= max; i++) {
if (i == Math.floor(value)) {
value0Index = i - min
}
items.push(i)
// items2.push(i)
}
for (var i = 0; i <= 9; i++) {
items2.push(i)
}
value1Index = 10 * (value - Math.floor(value));
setPickerValue([value0Index, value1Index] as any)
setPickerItems([items, items2] as any)
setIsPoint(true)
openModal()
}
function singlePicker(item: any) {
var min = item.min
var max = item.max
var step = 1//item.step
var value = item.default_value
var items: number[] = []
for (var i = min; i <= max; i += step) {
if (i == value) {
setPickerValue([i - min] as any)
}
items.push(i)
}
setPickerItems([items] as any)
setIsPoint(false)
openModal()
}
function pickerChanged(e) {
closeModal();
var params = {}
var date = new Date(time)
var strDate = (date.getFullYear() + '') + (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : (date.getMonth() + 1)) + (date.getDate() < 10 ? '0' + date.getDate() : date.getDate());
if ((metricItem as any).schemas[0].type == 'DECIMAL') {
var array = pickerItems;
var value = array[0][e[0]] + '.' + array[1][e[1]]
console.log(value)
params = {
code: (metricItem as any).code,
timestamp: time,
date: strDate,
items: [{ code: (metricItem as any).schemas[0].code, value: value }]
}
}
else if ((metricItem as any).schemas.length > 1) {
}
else {
var array = pickerItems;
var value = array[0][e[0]] + ''
console.log(value)
params = {
code: (metricItem as any).code,
timestamp: time,
date: strDate,
items: [{ code: (metricItem as any).schemas[0].code, value: value }]
}
}
uploadMetric(params).then(res => {
getCards();
})
}
function showTimePicker() {
setIsTimePickerOpen(true)
}
function chooseTime(e){
setTime(e);
setStrTime(TimeFormatter.formatTimestamp(e))
setIsTimePickerOpen(false)
}
const limit = new Date().getTime() - 7 * 3600 * 1000 * 24;
return
{
list.map((item: any, index: number) => {
var unit = ''
var value = '无记录'
var desc = '记录解锁趋势'
if (item.latest_record) {
unit = item.schemas[0].default_unit
value = getValues(item.latest_record.items)
desc = TimeFormatter.formatTimestamp(item.latest_record.timestamp)
}
return { goDetail(item) }}
onClick={() => { record(item) }}
/>
})
}
{
isModalOpen &&
{(metricItem as any).name}
{strTime}
{isPoint &&
.
}
}
{
isTimePickerOpen && setIsTimePickerOpen(false)}>
{ setIsTimePickerOpen(false) }} onChange={(e) => {
chooseTime(e)
// pickerConfirm(e)
// hidePicker()
}} />
}
/*
return */
return
行走
{
!allowRun && 未开启
}
{
!allowRun && 开启步数仅自己可见
}
{
allowRun && stepInfo && {(stepInfo as any).step}步
}
{
allowRun && stepInfo && {TimeFormatter.formatTimestamp(lastTime)}
}
{allowRun ? '打卡' : '开启'}
}