function milliToString(milliSeconds, maxValue, showDays = false) {
const negative = milliSeconds < 0;
if (negative) {
milliSeconds = -milliSeconds;
}
let d;
if (showDays) {
d = Math.trunc(milliSeconds / (60000 * 60 * 24));
milliSeconds = milliSeconds - 60000 * 60 * 24 * d;
}
const h = Math.trunc(milliSeconds / (60000 * 60));
milliSeconds = milliSeconds - 60000 * 60 * h;
const m = Math.trunc(milliSeconds / 60000);
milliSeconds = milliSeconds - 60000 * m;
const s = Math.trunc(milliSeconds / 1000);
milliSeconds = milliSeconds - 1000 * s;
const frac = milliSeconds;
let result = m ? m + ' m ' : '';
if (maxValue < 60000 * 60) {
if (s) {
result = result + s + ' s ';
}
}
if (maxValue < 5000) {
result = frac ? result + frac + ' ms ' : result;
}
if (h) {
result = h + ' h ' + result;
}
if (d) {
result = d + 'd ' + result;
}
if (negative) {
result = '-' + result;
}
return result.trim();
}