UNPKG

linkmore-design

Version:

🌈 🚀lm组件库。🚀

227 lines • 7.63 kB
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; // import { Button, Tabs } from 'linkmore-design' import Button from "../button"; import Tabs from "../tabs"; import React, { useContext, useEffect, useState } from 'react'; import { dayRegex, hourRegex, minuteRegex, monthRegex, secondRegex, weekRegex, yearRegex } from "./cron-regex"; import DayPane from "./DayPane"; import HourPane from "./HourPane"; import MinutePane from "./MinutePane"; import MonthPane from "./MonthPane"; import SecondPane from "./SecondPane"; import WeekPane from "./WeekPane"; import YearPane from "./YearPanel"; import QnnReactCronContext from "./GlobalContext"; QnnReactCronContext.displayName = 'qnn-react-cron config provider'; var QnnReactCronContextProvider = QnnReactCronContext.Provider; import { TABKEY_ENUM } from '.'; var Cron = function Cron(props) { var _useContext = useContext(QnnReactCronContext), _useContext$language = _useContext.language, language = _useContext$language === void 0 ? {} : _useContext$language; var _language$paneTitle = language.paneTitle, paneTitle = _language$paneTitle === void 0 ? {} : _language$paneTitle; var style = props.style, value = props.value, onOk = props.onOk, footer = props.footer, getCronFns = props.getCronFns, _props$panesShow = props.panesShow, panesShow = _props$panesShow === void 0 ? {} : _props$panesShow, _props$defaultTab = props.defaultTab, defaultTab = _props$defaultTab === void 0 ? 'second' : _props$defaultTab; var _useState = useState(defaultTab), _useState2 = _slicedToArray(_useState, 2), currentTab = _useState2[0], setCurrentTab = _useState2[1]; var _useState3 = useState('*'), _useState4 = _slicedToArray(_useState3, 2), second = _useState4[0], setSecond = _useState4[1]; var _useState5 = useState('*'), _useState6 = _slicedToArray(_useState5, 2), minute = _useState6[0], setMinute = _useState6[1]; var _useState7 = useState('*'), _useState8 = _slicedToArray(_useState7, 2), hour = _useState8[0], setHour = _useState8[1]; var _useState9 = useState('*'), _useState10 = _slicedToArray(_useState9, 2), day = _useState10[0], setDay = _useState10[1]; var _useState11 = useState('*'), _useState12 = _slicedToArray(_useState11, 2), month = _useState12[0], setMonth = _useState12[1]; var _useState13 = useState('?'), _useState14 = _slicedToArray(_useState13, 2), week = _useState14[0], setWeek = _useState14[1]; var _useState15 = useState('*'), _useState16 = _slicedToArray(_useState15, 2), year = _useState16[0], setYear = _useState16[1]; var onParse = function onParse() { return new Promise(function (resolve) { if (value) { try { var _value$split = value.split(' '), _value$split2 = _slicedToArray(_value$split, 7), secondVal = _value$split2[0], minuteValue = _value$split2[1], hourVal = _value$split2[2], dayVal = _value$split2[3], monthVal = _value$split2[4], weekVal = _value$split2[5], yearVal = _value$split2[6]; secondVal = secondRegex.test(secondVal) ? secondVal : '*'; minuteValue = minuteRegex.test(minuteValue) ? minuteValue : '*'; hourVal = hourRegex.test(hourVal) ? hourVal : '*'; dayVal = dayRegex.test(dayVal) ? dayVal : '*'; monthVal = monthRegex.test(monthVal) ? monthVal : '*'; weekVal = weekRegex.test(weekVal) ? weekVal : '?'; weekVal = dayVal !== '?' ? '?' : weekVal; // console.log('yearVal', value.split(" "), yearVal, yearRegex.test(yearVal)) // return; yearVal = yearRegex.test(yearVal) ? yearVal : '*'; setSecond(secondVal); setMinute(minuteValue); setHour(hourVal); setDay(dayVal); setMonth(monthVal); setWeek(weekVal); setYear(yearVal); resolve({ value: value, secondVal: secondVal, minuteValue: minuteValue, hourVal: hourVal, dayVal: dayVal, monthVal: monthVal, weekVal: weekVal, yearVal: yearVal }); } catch (error) { setSecond('*'); setMinute('*'); setHour('*'); setDay('*'); setMonth('*'); setWeek('?'); setYear('*'); resolve({}); } } else { setSecond('*'); setMinute('*'); setHour('*'); setDay('*'); setMonth('*'); setWeek('?'); setYear('*'); resolve({}); } }); }; var onGenerate = function onGenerate() { if (onOk) { onOk([second, minute, hour, day, month, week, year].join(' ')); } }; var onChangeDay = function onChangeDay(v) { setDay(v); if (v !== '?') { setWeek('?'); } }; var onChangeWeek = function onChangeWeek(v) { setWeek(v); if (v !== '?') { setDay('?'); } }; var TabItems = [panesShow.second !== false && { label: paneTitle.second || '秒', key: TABKEY_ENUM.SECOND, children: /*#__PURE__*/React.createElement(SecondPane, { value: second, onChange: setSecond }) }, panesShow.minute !== false && { label: paneTitle.minute || '分', key: TABKEY_ENUM.MINUTE, children: /*#__PURE__*/React.createElement(MinutePane, { value: minute, onChange: setMinute }) }, panesShow.hour !== false && { label: paneTitle.hour || '时', key: TABKEY_ENUM.HOUR, children: /*#__PURE__*/React.createElement(HourPane, { value: hour, onChange: setHour }) }, panesShow.day !== false && { label: paneTitle.day || '日', key: TABKEY_ENUM.DAY, children: /*#__PURE__*/React.createElement(DayPane, { value: day, onChange: onChangeDay }) }, panesShow.month !== false && { label: paneTitle.month || '月', key: TABKEY_ENUM.MONTH, children: /*#__PURE__*/React.createElement(MonthPane, { value: month, onChange: setMonth }) }, panesShow.week !== false && { label: paneTitle.week || '周', key: TABKEY_ENUM.WEEK, children: /*#__PURE__*/React.createElement(WeekPane, { value: week, onChange: onChangeWeek }) }, panesShow.year !== false && { label: paneTitle.year || '年', key: TABKEY_ENUM.YEAR, children: /*#__PURE__*/React.createElement(YearPane, { value: year, onChange: setYear }) }]; useEffect(function () { getCronFns && getCronFns({ //设置值 onParse: onParse, getValue: function getValue() { return [second, minute, hour, day, month, week, year].join(' '); } }); }); useEffect(function () { onParse(); }, [value]); return /*#__PURE__*/React.createElement("div", { className: 'qnn-react-cron', style: style }, /*#__PURE__*/React.createElement(Tabs, { activeKey: currentTab, onChange: setCurrentTab, className: 'Tabs', items: TabItems }), footer === false || (footer === null ? null : /*#__PURE__*/React.createElement("div", { className: "footer" }, footer || /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, { style: { marginRight: 10 }, onClick: onParse }, "\u89E3\u6790\u5230UI"), /*#__PURE__*/React.createElement(Button, { type: "primary", onClick: onGenerate }, "\u751F\u6210"))))); }; Cron.Provider = QnnReactCronContextProvider; export default Cron;