import React, { useEffect, useState, useCallback } from 'react'; import { DisplayHelpInfos, DisplayTimeType, IOTTimeSliderProps } from './interface'; import { formatTime } from './utils'; import Slider from './fatSlider/fatSlider'; import NormalIcon from '../../base/normalIcon'; import {dataSource} from "../sliderConfig"; import './style/index.less'; const prefixCls = 'iot-time-slider-out'; const IOTTimeSlider: React.FC = ({ streamId, streamName, title, subTitle, icon, min, max, step, timeConver, disabled = false, unit = 'min', unitdesc, curValue, leftIcon, rightIcon, startHandler = (val: any) => { }, endHandler = (val: any) => { }, ...rest }) => { const [displayValue, setDisplayValue] = useState(''); // const [displayHelpInfos, setDisplayHelpInfos] = useState({ minVal: Number(min), maxVal: Number(max), stepVal: Number(step), initValue: curValue, displayTimeType: 'mm:ss' }); // useEffect(() => { // const { hoursFlag, minutesFlag, secondsFlag } = timeConver; // const _max = Number.parseInt(max); // const _min = Number.parseInt(min); // const _step = Number.parseInt(step); // const _curValue = curValue; // const _displayHelpInfos: DisplayHelpInfos = { minVal: _min, maxVal: _max, stepVal: _step, initValue: _curValue, displayTimeType: 'mm:ss' }; // // 展示精确到秒 // if (secondsFlag) { // // 默认单位是分钟 // if (unit === 'min') { // _displayHelpInfos.maxVal = _displayHelpInfos.maxVal * 60; // _displayHelpInfos.minVal = _displayHelpInfos.minVal * 60; // _displayHelpInfos.stepVal = _displayHelpInfos.stepVal * 60; // _displayHelpInfos.initValue = _displayHelpInfos.initValue * 60; // } // // 默认单位是小时 // if (unit === 'h') { // _displayHelpInfos.maxVal = _displayHelpInfos.maxVal * 60 * 60; // _displayHelpInfos.minVal = _displayHelpInfos.minVal * 60 * 60; // _displayHelpInfos.stepVal = _displayHelpInfos.stepVal * 60 * 60; // _displayHelpInfos.initValue = _displayHelpInfos.initValue * 60 * 60; // } // // 展示格式设置 // if (minutesFlag) { // // 展示为 时:分:秒格式 // if (hoursFlag) { // _displayHelpInfos.displayTimeType = 'hh:mm:ss'; // // 展示为 分:秒格式 // } else { // _displayHelpInfos.displayTimeType = 'mm:ss'; // } // } else { // _displayHelpInfos.displayTimeType = 'ss'; // } // // 展示精确到分钟 // } else if (minutesFlag) { // // 默认单位是小时 // if (unit === 'h') { // _displayHelpInfos.maxVal = _displayHelpInfos.maxVal * 60; // _displayHelpInfos.minVal = _displayHelpInfos.minVal * 60; // _displayHelpInfos.stepVal = _displayHelpInfos.stepVal * 60; // _displayHelpInfos.initValue = _displayHelpInfos.initValue * 60; // } // // 默认单位是秒 // if (unit === 's') { // _displayHelpInfos.maxVal = _displayHelpInfos.maxVal / 60; // _displayHelpInfos.minVal = _displayHelpInfos.minVal / 60; // _displayHelpInfos.stepVal = _displayHelpInfos.stepVal / 60; // _displayHelpInfos.initValue = _displayHelpInfos.initValue / 60; // } // // 展示格式设置 // // 展示为 时:分格式 // if (hoursFlag) { // _displayHelpInfos.displayTimeType = 'hh:mm'; // } else { // _displayHelpInfos.displayTimeType = 'mm'; // } // // 展示精确到小时 // } else if (hoursFlag) { // // 默认单位是分钟 // if (unit === 'min') { // _displayHelpInfos.maxVal = _displayHelpInfos.maxVal / 60; // _displayHelpInfos.minVal = _displayHelpInfos.minVal / 60; // _displayHelpInfos.stepVal = _displayHelpInfos.stepVal / 60; // _displayHelpInfos.initValue = _displayHelpInfos.initValue / 60; // } // // 默认单位是秒 // if (unit === 's') { // _displayHelpInfos.maxVal = _displayHelpInfos.maxVal / (60 * 60); // _displayHelpInfos.minVal = _displayHelpInfos.minVal / (60 * 60); // _displayHelpInfos.stepVal = _displayHelpInfos.stepVal / (60 * 60); // _displayHelpInfos.initValue = _displayHelpInfos.initValue / (60 * 60); // } // _displayHelpInfos.displayTimeType = 'hh'; // } // setDisplayHelpInfos({ ..._displayHelpInfos }); // }, [timeConver, step, max, min, curValue, unit]); const onChange = (val: any) => { const value = formatTime(val, unit, timeConver); setDisplayValue(value); }; useEffect(() => { const value = formatTime(Number.parseInt(curValue), unit, timeConver); setDisplayValue(value); }, [curValue, timeConver]) return (
{ icon?.show && (
) }
{title}
{displayValue} {timeConver.descText}
50) } curValue={Number.parseInt(`${curValue}`)} dotsData={dataSource(min, max, step)} disabled={false} onchange={(val: any) => { const item = { streamId, value: val, }; endHandler(item); }} move={(val: any) => { onChange(val); }} start={() => { startHandler('start'); }} >
); }; export default IOTTimeSlider;