123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import { strings } from '../constants';
- /**
- * 从 insetInputStr 字符串解析出 insetInputValue 对象
- * Parse the insetInputValue object from the insetInputStr string
- *
- * @example
- * ```
- * '2022-02-01' => { monthLeft: { dateInput: '2022-02-01' } }
- * '2022-02-01 00:00:00' => { monthLeft: { dateInput: '2022-02-01', timeInput: '00:00:00' } }
- * '2022-02-01 00:00:00 ~ 2022-02-15 00:00:00' => { monthLeft: { dateInput: '2022-02-01', timeInput: '00:00:00'}, monthRight: { dateInput: '2022-02-15', timeInput: '00:00:00' } }
- *
- * '2022-0' => { monthLeft: { dateInput: '2022-0' } }
- * '2022-02-01 00:00:' => { monthLeft: { dateInput: '2022-02-01', timeInput: '00:00:' } }
- * '2022-02-01 00:00:00 ~ ' => { monthLeft: { dateInput: '2022-02-01', timeInput: '00:00:00'}, monthRight: { dateInput: '', timeInput: '' } }
- * ' ~ 2022-02-15 00:00:00' => { monthLeft: { dateInput: '', timeInput: '' }, monthRight: { dateInput: '2022-02-15', timeInput: '00:00:00' } }
- * ```
- */
- export default function getInsetInputValueFromInsetInputStr(options: { inputValue: string; rangeSeparator: string; type: typeof strings.TYPE_SET[number] }) {
- const timeSeparator = ' ';
- const { inputValue = '', rangeSeparator, type } = options;
- let leftDateInput, leftTimeInput, rightDateInput, rightTimeInput;
- const insetInputValue = {
- monthLeft: {
- dateInput: '',
- timeInput: '',
- },
- monthRight: {
- dateInput: '',
- timeInput: '',
- }
- };
- switch (type) {
- case 'date':
- case 'month':
- insetInputValue.monthLeft.dateInput = inputValue;
- break;
- case 'dateRange':
- [leftDateInput = '', rightDateInput = ''] = inputValue.split(rangeSeparator);
- insetInputValue.monthLeft.dateInput = leftDateInput;
- insetInputValue.monthRight.dateInput = rightDateInput;
- break;
- case 'dateTime':
- [leftDateInput = '', leftTimeInput = ''] = inputValue.split(timeSeparator);
- insetInputValue.monthLeft.dateInput = leftDateInput;
- insetInputValue.monthLeft.timeInput = leftTimeInput;
- break;
- case 'dateTimeRange':
- const [leftInput = '', rightInput = ''] = inputValue.split(rangeSeparator);
- [leftDateInput = '', leftTimeInput = ''] = leftInput.split(timeSeparator);
- [rightDateInput = '', rightTimeInput = ''] = rightInput.split(timeSeparator);
- insetInputValue.monthLeft.dateInput = leftDateInput;
- insetInputValue.monthLeft.timeInput = leftTimeInput;
- insetInputValue.monthRight.dateInput = rightDateInput;
- insetInputValue.monthRight.timeInput = rightTimeInput;
- break;
- }
- return insetInputValue;
- }
|