blob: 890d5283e8b783b7927478e4d73b50bb3fbd266c [file] [log] [blame]
// Copyright 2021 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import {getLocalizedString, registerUIStrings} from './i18nImpl.js';
const UIStrings = {
/**
*@description μs is the short form of micro-seconds and the placeholder is a number
*@example {2} PH1
*/
fmms: '{PH1} μs',
/**
*@description ms is the short form of milli-seconds and the placeholder is a decimal number
*@example {2.14} PH1
*/
fms: '{PH1} ms',
/**
*@description s is short for seconds and the placeholder is a decimal number
*@example {2.14} PH1
*/
fs: '{PH1} s',
/**
*@description min is short for minutes and the placeholder is a decimal number
*@example {2.2} PH1
*/
fmin: '{PH1} min',
/**
*@description hrs is short for hours and the placeholder is a decimal number
*@example {2.2} PH1
*/
fhrs: '{PH1} hrs',
/**
*@description days formatting and the placeholder is a decimal number
*@example {2.2} PH1
*/
fdays: '{PH1} days',
};
const str_ = registerUIStrings('core/i18n/time-utilities.ts', UIStrings);
const i18nString = getLocalizedString.bind(undefined, str_);
export const preciseMillisToString = function(ms: number, precision?: number): string {
precision = precision || 0;
return i18nString(UIStrings.fms, {PH1: ms.toFixed(precision)});
};
export const millisToString = function(ms: number, higherResolution?: boolean): string {
if (!isFinite(ms)) {
return '-';
}
if (ms === 0) {
return '0';
}
if (higherResolution && ms < 0.1) {
return i18nString(UIStrings.fmms, {PH1: (ms * 1000).toFixed(0)});
}
if (higherResolution && ms < 1000) {
return i18nString(UIStrings.fms, {PH1: (ms).toFixed(2)});
}
if (ms < 1000) {
return i18nString(UIStrings.fms, {PH1: (ms).toFixed(0)});
}
const seconds = ms / 1000;
if (seconds < 60) {
return i18nString(UIStrings.fs, {PH1: (seconds).toFixed(2)});
}
const minutes = seconds / 60;
if (minutes < 60) {
return i18nString(UIStrings.fmin, {PH1: (minutes).toFixed(1)});
}
const hours = minutes / 60;
if (hours < 24) {
return i18nString(UIStrings.fhrs, {PH1: (hours).toFixed(1)});
}
const days = hours / 24;
return i18nString(UIStrings.fdays, {PH1: (days).toFixed(1)});
};
export const secondsToString = function(seconds: number, higherResolution?: boolean): string {
if (!isFinite(seconds)) {
return '-';
}
return millisToString(seconds * 1000, higherResolution);
};