48 lines
1.2 KiB
JavaScript
48 lines
1.2 KiB
JavaScript
import { bytes, percent } from './utils';
|
|
|
|
let percentText = null;
|
|
let text = null;
|
|
let title = null;
|
|
let bar = null;
|
|
let updateTitle = false;
|
|
|
|
const radius = 73;
|
|
const circumference = 2 * Math.PI * radius;
|
|
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
percentText = document.querySelector('.percent-number');
|
|
text = document.querySelector('.progress-text');
|
|
bar = document.getElementById('bar');
|
|
title = document.querySelector('title');
|
|
});
|
|
|
|
document.addEventListener('blur', function() {
|
|
updateTitle = true;
|
|
});
|
|
|
|
document.addEventListener('focus', function() {
|
|
updateTitle = false;
|
|
return title && (title.textContent = 'Firefox Send');
|
|
});
|
|
|
|
function setProgress(params) {
|
|
const ratio = params.complete / params.total;
|
|
bar.setAttribute('stroke-dashoffset', (1 - ratio) * circumference);
|
|
percentText.textContent = Math.floor(ratio * 100);
|
|
if (updateTitle) {
|
|
title.textContent = percent(ratio);
|
|
}
|
|
document.l10n
|
|
.formatValue('fileSizeProgress', {
|
|
partialSize: bytes(params.complete),
|
|
totalSize: bytes(params.total)
|
|
})
|
|
.then(setText);
|
|
}
|
|
|
|
function setText(str) {
|
|
text.textContent = str;
|
|
}
|
|
|
|
export { setProgress, setText };
|