UNPKG

dtable-utils

Version:

dtable common utils

59 lines (54 loc) 2.07 kB
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 };