dtable-utils
Version:
dtable common utils
59 lines (54 loc) • 2.07 kB
JavaScript
import { DURATION_FORMATS_MAP, DURATION_FORMATS } from '../constants/column.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/formula.js';
import '../constants/sort.js';
import '../constants/group.js';
import { isNumber } from '../number.js';
var formatTextToDuration = function formatTextToDuration(value, data) {
var _ref = data || {},
duration_format = _ref.duration_format;
duration_format = duration_format || DURATION_FORMATS_MAP.H_MM;
if (DURATION_FORMATS.findIndex(function (format) {
return format.type === duration_format;
}) < 0) {
return null;
}
if (value === 0) return 0;
if (!value) return null;
// value is number or string number
var numericDuration = value - 0;
if (isNumber(numericDuration)) return numericDuration;
// value is string
var stringifyDuration = value + '';
var isNegative = stringifyDuration[0] === '-';
if (isNegative) {
stringifyDuration = stringifyDuration.substring(1);
}
var timeParts = stringifyDuration.split(/[::]/); // support ':' and ':'.
var timePartsLen = timeParts.length;
if (timePartsLen === 0) return '';
var hoursIndex;
var minutesIndex;
var secondsIndex;
if (duration_format === DURATION_FORMATS_MAP.H_MM) {
hoursIndex = timePartsLen - 2;
minutesIndex = timePartsLen - 1;
} else {
hoursIndex = timePartsLen - 3;
minutesIndex = timePartsLen - 2;
secondsIndex = timePartsLen - 1;
}
var hours = timeParts[hoursIndex] - 0;
var minutes = timeParts[minutesIndex] - 0;
var seconds = timeParts[secondsIndex] - 0;
if (!isNumber(hours) && !isNumber(minutes) && !isNumber(seconds)) return null;
hours = isNumber(hours) ? hours : 0;
minutes = isNumber(minutes) ? minutes : 0;
seconds = isNumber(seconds) ? seconds : 0;
var result = hours * 3600 + minutes * 60 + seconds;
return isNegative ? -result : result;
};
export { formatTextToDuration };