import { useState, useEffect } from 'react'; import {CaretUpOutlined, CaretDownOutlined, CaretRightOutlined} from '@ant-design/icons' import moment from 'moment'; export const formatNumber = (value, format) => Number.isInteger(format) && Number.isFinite(value) ? (+value).toFixed(format) : (+value).toPrecision(4) export const ValueDisplay = ({prefix, value, suffix, isArrowVisible, format}) =>{ const [val, setVal] = useState('---') const [arrowState, setArrowState] = useState({ preVal: NaN, preTimestamp: Date.now(), direction: 0, }) useEffect(()=>{ if(value === undefined || value === null || value === '-' || value === '--'){ setVal('---') return } if(Number.isFinite(+value)){ if ((isArrowVisible) && (arrowState.preTimestamp + 1000 < Date.now())) { let direction = 0 if (value > arrowState.preVal) direction = 1 if (value < arrowState.preVal) direction = -1 setArrowState({ preVal: value, preTimestamp: Date.now(), direction: direction, }) } setVal(formatNumber(value, format)) return } if(value.length > 4){ let valueDate = moment(value) if(valueDate.isValid()){ setVal(valueDate.format(format)) return } } setVal(value) },[value, isArrowVisible, arrowState, format]) let arrow = null if(isArrowVisible) switch (arrowState.direction){ case 0: arrow = break case 1: arrow = break case -1: arrow = break default: break } return({prefix} {val} {suffix}{arrow}) } export const Display = (props)=>{ const {label} = props return
{label}
}