dtable-utils
Version:
dtable common utils
93 lines (87 loc) • 3.22 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var column = require('../constants/column.js');
var getMathRoundedDuration = function getMathRoundedDuration(num, duration_format) {
var decimalDigits = column.DURATION_DECIMAL_DIGITS[duration_format];
if (decimalDigits < 1) {
return num;
}
var ratio = Math.pow(10, decimalDigits);
return Math.round(num * ratio) / ratio;
};
var getDurationDecimalSuffix = function getDurationDecimalSuffix(duration_format, decimal) {
if (duration_format === column.DURATION_FORMATS_MAP.H_MM_SS_S) {
return decimal === 0 ? '.0' : '';
}
if (duration_format === column.DURATION_FORMATS_MAP.H_MM_SS_SS) {
if (decimal === 0) {
return '.00';
}
if (decimal < 10) {
return '0';
}
return '';
}
if (duration_format === column.DURATION_FORMATS_MAP.H_MM_SS_SSS) {
if (decimal === 0) {
return '.000';
}
if (decimal < 10) {
return '00';
}
if (decimal < 100) {
return '0';
}
}
return '';
};
/**
* Get formatted duration.
* @param {number} duration e.g. 100
* @param {object} formats { duration_format: 'h:mm', ... }
* @returns formatted duration, string
*/
var getDurationDisplayString = function getDurationDisplayString(duration, formats) {
if (!duration && duration !== 0) return '';
var _ref = formats || {},
duration_format = _ref.duration_format;
duration_format = duration_format || column.DURATION_FORMATS_MAP.H_MM;
if (column.DURATION_FORMATS.findIndex(function (format) {
return format.type === duration_format;
}) < 0) {
return '';
}
if (duration === 0) {
return column.DURATION_ZERO_DISPLAY[duration_format];
}
var includeDecimal = duration_format.indexOf('.') > -1;
var positiveValue = Math.abs(duration);
if (!includeDecimal) {
positiveValue = Math.round(positiveValue);
}
positiveValue = getMathRoundedDuration(positiveValue, duration_format);
var decimalParts = String(positiveValue).split('.');
var decimalPartsLen = decimalParts.length;
var decimal = 0;
if (decimalPartsLen > 1) {
decimal = decimalParts[decimalPartsLen - 1];
decimal = decimal ? decimal - 0 : 0;
}
var decimalDigits = column.DURATION_DECIMAL_DIGITS[duration_format];
var decimalSuffix = getDurationDecimalSuffix(duration_format, decimal);
var hours = parseInt(positiveValue / 3600);
var minutes = parseInt((positiveValue - hours * 3600) / 60);
var displayString = duration < 0 ? '-' : '';
if (duration_format === column.DURATION_FORMATS_MAP.H_MM) {
displayString += "".concat(hours, ":").concat(minutes > 9 ? minutes : "0".concat(minutes));
return displayString;
}
var seconds = Number.parseFloat((positiveValue - hours * 3600 - minutes * 60).toFixed(decimalDigits));
minutes = minutes > 9 ? minutes : "0".concat(minutes);
seconds = seconds > 9 ? seconds : "0".concat(seconds);
displayString += "".concat(hours, ":").concat(minutes, ":").concat(seconds).concat(decimalSuffix);
return displayString;
};
exports.getDurationDecimalSuffix = getDurationDecimalSuffix;
exports.getDurationDisplayString = getDurationDisplayString;
exports.getMathRoundedDuration = getMathRoundedDuration;