dtable-utils
Version:
dtable common utils
86 lines (80 loc) • 3.07 kB
JavaScript
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 };