UNPKG

dtable-utils

Version:

dtable common utils

86 lines (80 loc) 3.07 kB
import dayjs from 'dayjs'; import { isNumber } from '../number.js'; import '../constants/column.js'; import '../constants/formula.js'; import '../constants/group.js'; import '../cell-value-get/cell-value.js'; import { getFormattedAutoNumber } from '../cell-value-get/auto-number.js'; import { DateUtils } from '../date.js'; import '../constants/filter/filter-column-options.js'; import '../constants/filter/filter-modifier.js'; import '../constants/filter/filter-predicate.js'; import '../constants/filter/filter-is-within.js'; import '../constants/sort.js'; import { AUTO_NUMBER_DATE_FORMAT } from '../constants/auto-number.js'; var formatRateMaxNumberToNumber = function formatRateMaxNumberToNumber(oldCellValue, data) { if (oldCellValue === 0) return 0; if (!oldCellValue) return ''; var _ref = data || {}, rate_max_number = _ref.rate_max_number; return oldCellValue > rate_max_number ? rate_max_number : oldCellValue; }; var formatTextToAutoNumber = function formatTextToAutoNumber(text, autoNumberData) { if (!text || !autoNumberData) return null; var textPrefix = null; var number = isNumber(text) ? text : 0; if (typeof text === 'string') { number = Number(text); if (!isNumber(number)) { var textParts = text.split('-'); var textPartsLength = textParts.length; var textNumber = null; if (textPartsLength === 1) { textNumber = textParts[0]; } else { textPrefix = textParts[0]; textNumber = textParts[1]; } number = textNumber && Number(textNumber); if (!isNumber(number)) { return null; } } } if (number < 1) { return null; } var prefix_type = autoNumberData.prefix_type, prefix = autoNumberData.prefix, digits = autoNumberData.digits; number = parseInt(number); // 1. use the prefix supplied by autoNumberData if the text can only contains number. // 2. only number will be kept if has no prefix_type in the autoNumberData. if (!textPrefix || !prefix_type) { var newPrefix = prefix_type === 'date' ? dayjs().format(AUTO_NUMBER_DATE_FORMAT) : prefix; return getFormattedAutoNumber(number, digits, newPrefix); } // 3. string prefix: the 'textPrefix' must be same to autoNumberData's prefix. if (prefix_type === 'string') { if (textPrefix !== prefix) { return null; } return getFormattedAutoNumber(number, digits, prefix); } // 4. date prefix: the format of 'textPrefix' must be consistent with 'YYYYMMDD'. if (prefix_type === 'date') { var matched = textPrefix && textPrefix.length === 8 && /(\d{4})(\d{2})(\d{2})$/.test(textPrefix); if (!matched) { return null; } var year = textPrefix.substring(0, 4); var month = textPrefix.substring(4, 6); var day = textPrefix.substring(6, 8); if (!DateUtils.getValidDate("".concat(year, "-").concat(month, "-").concat(day))) { return null; } return getFormattedAutoNumber(number, digits, textPrefix); } return null; }; export { formatRateMaxNumberToNumber, formatTextToAutoNumber };