dtable-utils
Version:
dtable common utils
95 lines (85 loc) • 3.49 kB
JavaScript
Object.defineProperty(exports, '__esModule', { value: true });
var dayjs = require('dayjs');
var number = require('../number.js');
require('../constants/column.js');
require('../constants/formula.js');
require('../constants/group.js');
require('../cell-value-get/cell-value.js');
var autoNumber$1 = require('../cell-value-get/auto-number.js');
var date = require('../date.js');
require('../constants/filter/filter-column-options.js');
require('../constants/filter/filter-modifier.js');
require('../constants/filter/filter-predicate.js');
require('../constants/filter/filter-is-within.js');
require('../constants/sort.js');
var autoNumber = require('../constants/auto-number.js');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var dayjs__default = /*#__PURE__*/_interopDefaultLegacy(dayjs);
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$1 = number.isNumber(text) ? text : 0;
if (typeof text === 'string') {
number$1 = Number(text);
if (!number.isNumber(number$1)) {
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$1 = textNumber && Number(textNumber);
if (!number.isNumber(number$1)) {
return null;
}
}
}
if (number$1 < 1) {
return null;
}
var prefix_type = autoNumberData.prefix_type,
prefix = autoNumberData.prefix,
digits = autoNumberData.digits;
number$1 = parseInt(number$1);
// 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__default["default"]().format(autoNumber.AUTO_NUMBER_DATE_FORMAT) : prefix;
return autoNumber$1.getFormattedAutoNumber(number$1, digits, newPrefix);
}
// 3. string prefix: the 'textPrefix' must be same to autoNumberData's prefix.
if (prefix_type === 'string') {
if (textPrefix !== prefix) {
return null;
}
return autoNumber$1.getFormattedAutoNumber(number$1, 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 (!date.DateUtils.getValidDate("".concat(year, "-").concat(month, "-").concat(day))) {
return null;
}
return autoNumber$1.getFormattedAutoNumber(number$1, digits, textPrefix);
}
return null;
};
exports.formatRateMaxNumberToNumber = formatRateMaxNumberToNumber;
exports.formatTextToAutoNumber = formatTextToAutoNumber;
;