linkmore-design
Version:
🌈 🚀lm组件库。🚀
227 lines • 7.63 kB
JavaScript
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;