linkmore-design
Version:
🌈 🚀lm组件库。🚀
203 lines (201 loc) • 6.81 kB
JavaScript
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _button = _interopRequireDefault(require("../button"));
var _tabs = _interopRequireDefault(require("../tabs"));
var _react = _interopRequireWildcard(require("react"));
var _cronRegex = require("./cron-regex");
var _DayPane = _interopRequireDefault(require("./DayPane"));
var _HourPane = _interopRequireDefault(require("./HourPane"));
var _MinutePane = _interopRequireDefault(require("./MinutePane"));
var _MonthPane = _interopRequireDefault(require("./MonthPane"));
var _SecondPane = _interopRequireDefault(require("./SecondPane"));
var _WeekPane = _interopRequireDefault(require("./WeekPane"));
var _YearPanel = _interopRequireDefault(require("./YearPanel"));
var _GlobalContext = _interopRequireDefault(require("./GlobalContext"));
var _ = require(".");
// import { Button, Tabs } from 'linkmore-design'
_GlobalContext.default.displayName = 'qnn-react-cron config provider';
const QnnReactCronContextProvider = _GlobalContext.default.Provider;
const Cron = props => {
const {
language = {}
} = (0, _react.useContext)(_GlobalContext.default);
const {
paneTitle = {}
} = language;
const {
style,
value,
onOk,
footer,
getCronFns,
panesShow = {},
defaultTab = 'second'
} = props;
const [currentTab, setCurrentTab] = (0, _react.useState)(defaultTab);
const [second, setSecond] = (0, _react.useState)('*');
const [minute, setMinute] = (0, _react.useState)('*');
const [hour, setHour] = (0, _react.useState)('*');
const [day, setDay] = (0, _react.useState)('*');
const [month, setMonth] = (0, _react.useState)('*');
const [week, setWeek] = (0, _react.useState)('?');
const [year, setYear] = (0, _react.useState)('*');
const onParse = () => {
return new Promise(resolve => {
if (value) {
try {
let [secondVal, minuteValue, hourVal, dayVal, monthVal, weekVal, yearVal] = value.split(' ');
secondVal = _cronRegex.secondRegex.test(secondVal) ? secondVal : '*';
minuteValue = _cronRegex.minuteRegex.test(minuteValue) ? minuteValue : '*';
hourVal = _cronRegex.hourRegex.test(hourVal) ? hourVal : '*';
dayVal = _cronRegex.dayRegex.test(dayVal) ? dayVal : '*';
monthVal = _cronRegex.monthRegex.test(monthVal) ? monthVal : '*';
weekVal = _cronRegex.weekRegex.test(weekVal) ? weekVal : '?';
weekVal = dayVal !== '?' ? '?' : weekVal;
// console.log('yearVal', value.split(" "), yearVal, yearRegex.test(yearVal))
// return;
yearVal = _cronRegex.yearRegex.test(yearVal) ? yearVal : '*';
setSecond(secondVal);
setMinute(minuteValue);
setHour(hourVal);
setDay(dayVal);
setMonth(monthVal);
setWeek(weekVal);
setYear(yearVal);
resolve({
value,
secondVal,
minuteValue,
hourVal,
dayVal,
monthVal,
weekVal,
yearVal
});
} catch (error) {
setSecond('*');
setMinute('*');
setHour('*');
setDay('*');
setMonth('*');
setWeek('?');
setYear('*');
resolve({});
}
} else {
setSecond('*');
setMinute('*');
setHour('*');
setDay('*');
setMonth('*');
setWeek('?');
setYear('*');
resolve({});
}
});
};
const onGenerate = () => {
if (onOk) {
onOk([second, minute, hour, day, month, week, year].join(' '));
}
};
const onChangeDay = v => {
setDay(v);
if (v !== '?') {
setWeek('?');
}
};
const onChangeWeek = v => {
setWeek(v);
if (v !== '?') {
setDay('?');
}
};
const TabItems = [panesShow.second !== false && {
label: paneTitle.second || 'ç§’',
key: _.TABKEY_ENUM.SECOND,
children: /*#__PURE__*/_react.default.createElement(_SecondPane.default, {
value: second,
onChange: setSecond
})
}, panesShow.minute !== false && {
label: paneTitle.minute || '分',
key: _.TABKEY_ENUM.MINUTE,
children: /*#__PURE__*/_react.default.createElement(_MinutePane.default, {
value: minute,
onChange: setMinute
})
}, panesShow.hour !== false && {
label: paneTitle.hour || 'æ—¶',
key: _.TABKEY_ENUM.HOUR,
children: /*#__PURE__*/_react.default.createElement(_HourPane.default, {
value: hour,
onChange: setHour
})
}, panesShow.day !== false && {
label: paneTitle.day || 'æ—¥',
key: _.TABKEY_ENUM.DAY,
children: /*#__PURE__*/_react.default.createElement(_DayPane.default, {
value: day,
onChange: onChangeDay
})
}, panesShow.month !== false && {
label: paneTitle.month || '月',
key: _.TABKEY_ENUM.MONTH,
children: /*#__PURE__*/_react.default.createElement(_MonthPane.default, {
value: month,
onChange: setMonth
})
}, panesShow.week !== false && {
label: paneTitle.week || '周',
key: _.TABKEY_ENUM.WEEK,
children: /*#__PURE__*/_react.default.createElement(_WeekPane.default, {
value: week,
onChange: onChangeWeek
})
}, panesShow.year !== false && {
label: paneTitle.year || 'å¹´',
key: _.TABKEY_ENUM.YEAR,
children: /*#__PURE__*/_react.default.createElement(_YearPanel.default, {
value: year,
onChange: setYear
})
}];
(0, _react.useEffect)(() => {
getCronFns && getCronFns({
//设置值
onParse,
getValue: () => [second, minute, hour, day, month, week, year].join(' ')
});
});
(0, _react.useEffect)(() => {
onParse();
}, [value]);
return /*#__PURE__*/_react.default.createElement("div", {
className: 'qnn-react-cron',
style: style
}, /*#__PURE__*/_react.default.createElement(_tabs.default, {
activeKey: currentTab,
onChange: setCurrentTab,
className: 'Tabs',
items: TabItems
}), footer === false || (footer === null ? null : /*#__PURE__*/_react.default.createElement("div", {
className: "footer"
}, footer || /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_button.default, {
style: {
marginRight: 10
},
onClick: onParse
}, "\u89E3\u6790\u5230UI"), /*#__PURE__*/_react.default.createElement(_button.default, {
type: "primary",
onClick: onGenerate
}, "\u751F\u6210")))));
};
Cron.Provider = QnnReactCronContextProvider;
var _default = Cron;
exports.default = _default;