opendash
Version:
open.DASH data visualization framework
44 lines • 1.54 kB
JavaScript
// selectUnit is from: https://github.com/formatjs/formatjs/blob/master/packages/intl-utils/src/diff.ts
var MS_PER_SECOND = 1000;
var SECS_PER_MIN = 60;
var SECS_PER_HOUR = SECS_PER_MIN * 60;
var SECS_PER_DAY = SECS_PER_HOUR * 24;
var SECS_PER_WEEK = SECS_PER_DAY * 7;
var THRESHOLDS = {
second: 60,
minute: 60,
hour: 24,
day: 7,
};
export function intlSelectUnit(from, to) {
if (to === void 0) { to = Date.now(); }
var secs = (from.valueOf() - to.valueOf()) / MS_PER_SECOND;
if (Math.abs(secs) < THRESHOLDS.second) {
return [Math.round(secs), "second"];
}
var mins = secs / SECS_PER_MIN;
if (Math.abs(mins) < THRESHOLDS.minute) {
return [Math.round(mins), "minute"];
}
var hours = secs / SECS_PER_HOUR;
if (Math.abs(hours) < THRESHOLDS.hour) {
return [Math.round(hours), "hour"];
}
var days = secs / SECS_PER_DAY;
if (Math.abs(days) < THRESHOLDS.day) {
return [Math.round(days), "day"];
}
var fromDate = new Date(from);
var toDate = new Date(to);
var years = fromDate.getFullYear() - toDate.getFullYear();
if (Math.round(Math.abs(years)) > 0) {
return [Math.round(years), "year"];
}
var months = years * 12 + fromDate.getMonth() - toDate.getMonth();
if (Math.round(Math.abs(months)) > 0) {
return [Math.round(months), "month"];
}
var weeks = secs / SECS_PER_WEEK;
return [Math.round(weeks), "week"];
}
//# sourceMappingURL=intlSelectUnit.js.map