import React, { useEffect, useState } from 'react' import { Checkbox, Radio } from '../components' import { genArray, getSlotType, splitToNumbers } from '../utils/utils' import type { PanelBase } from '../interface' import { SlotType } from '../interface' export default function Second({ visible, value, onChange }: PanelBase) { const [ready, setReady] = useState(false); const [innerValue, setInnerValue] = useState(''); const [type, setType] = useState(getSlotType(value)); const [range0, setRange0] = useState('1'); const [range1, setRange1] = useState('2'); const [step0, setStep0] = useState('0'); const [step1, setStep1] = useState('1'); const [arr, setArr] = useState([0]); useEffect(() => { let newValue = ''; if (type === SlotType.ALL) { newValue = '*'; } else if (type === SlotType.RANGE) { newValue = `${range0}-${range1}`; } else if (type === SlotType.STEP) { newValue = `${step0}/${step1}`; } else if (type === SlotType.ITERATOR) { newValue = arr.length === 0 ? '?' : arr.join(','); } if (newValue !== innerValue) { setInnerValue(newValue) if (ready) onChange(newValue) } }, [type, range0, range1, step0, step1, arr]) useEffect(() => { if (value === undefined || value === '' || value === innerValue) { if (!ready) setReady(true) return; } setInnerValue(value); if (value === '*') { setType(SlotType.ALL) } else if (value.indexOf('-') > -1) { setType(SlotType.RANGE) const ss = value.split('-') setRange0(ss[0]) setRange1(ss[1]) } else if (value.indexOf('/') > -1) { setType(SlotType.STEP) const ss = value.split('/') setStep0(ss[0]) setStep1(ss[1]) } else { setType(SlotType.ITERATOR) const newArr:number[] = splitToNumbers(value) setArr(newArr) } if (!ready) setReady(true) }, [value]) function handleChangeArrChecked(s: number) { let newArr = [ ...arr, s ]; if (arr.indexOf(s) > -1) { newArr = arr.filter((i) => i !== s); } newArr.sort((a,b) => a-b); setArr(newArr); } return (
setType(SlotType.ALL)} />
setType(SlotType.RANGE)} />
setRange0(e.target.value)} />
到
setRange1(e.target.value)} />
秒
setType(SlotType.STEP)} />
setStep0(e.target.value)} />
秒开始,每
setStep1(e.target.value)} />
秒执行一次
setType(SlotType.ITERATOR)} />
{genArray(0, 59).map((i) => ( -1} onChange={() => handleChangeArrChecked(i)} style={{ width: 60 }} /> ))}
) };