UNPKG

@edugouvfr/ngx-dsfr

Version:

NgxDsfr est un portage Angular des éléments d'interface du Système de Design de l'État Français (DSFR).

68 lines 8.93 kB
import { convertMimeType2FileFormat } from '../../components/download/dsfr-mime.type'; const KILO_OCTETS = 1024; const MEGA_OCTETS = KILO_OCTETS * 1024; const GIGA_OCTETS = MEGA_OCTETS * 1024; /** * Construit le libellé de détail dans un composant de téléchargement lorsque ce libellé n'est pas fourni par le Dsfr * @param mimeType Type mime du fichier * @param sizeBytes Nombre d'octets * @param sizeUnit Unité utilisée dans la restitution * @return par exemple 'PDF - 10 octets' */ export function downloadDetail(mimeType, sizeBytes, sizeUnit) { return !sizeBytes ? convertMimeType2FileFormat(mimeType) || '' : convertMimeType2FileFormat(mimeType) + ' - ' + fileSizeToString(sizeBytes, sizeUnit); } /** * Retourne la taille sous forme de string sous forme de 'nombre unité' * @param bytes Taille à transformer exprimée en octets * @param sizeUnit Si true, l'unité sera en bytes (KB, MB, ... ) sinon en octets (ko, mo, ...) */ function fileSizeToString(bytes, sizeUnit) { if (!bytes) return ''; const bytesUnit = sizeUnit === 'bytes'; let fileSize; let fileSizeUnit; if (bytes < KILO_OCTETS) { fileSize = bytes; fileSizeUnit = bytesUnit ? FileSizeUnit.BYTES : FileSizeUnit.OCTETS; } else if (bytes < MEGA_OCTETS) { fileSize = bytes / 1024; fileSizeUnit = bytesUnit ? FileSizeUnit.KB : FileSizeUnit.KO; } else if (bytes < GIGA_OCTETS) { fileSize = bytes / 1048576; fileSizeUnit = bytesUnit ? FileSizeUnit.MB : FileSizeUnit.MO; } else { fileSize = bytes / 1073741824; fileSizeUnit = bytesUnit ? FileSizeUnit.GB : FileSizeUnit.GO; } fileSize = Math.round(fileSize * 100) / 100; // @since 1.8, les options régionales sont prise en compte pour les décimales //FIXME: ne devrait-ton pas transmettre la locale depuis l'extérieur de manière à pouvoir la transmettre depuis i18nService ? const localSize = fileSize.toLocaleString(); return localSize + ' ' + fileSizeUnit; } // -- Constantes d'unités de taille de fichier ------------------------------------------------------------------------- // TODO Un peu bizarre ces noms ? var FileSizeUnit; (function (FileSizeUnit) { FileSizeUnit["OCTETS"] = "octets"; FileSizeUnit["KO"] = "ko"; FileSizeUnit["MO"] = "Mo"; FileSizeUnit["GO"] = "Go"; FileSizeUnit["BYTES"] = "bytes"; FileSizeUnit["KB"] = "KB"; FileSizeUnit["MB"] = "MB"; FileSizeUnit["GB"] = "GB"; })(FileSizeUnit || (FileSizeUnit = {})); export var DsfrFileSizeUnitConst; (function (DsfrFileSizeUnitConst) { DsfrFileSizeUnitConst.BYTES = 'bytes'; DsfrFileSizeUnitConst.OCTETS = 'octets'; })(DsfrFileSizeUnitConst || (DsfrFileSizeUnitConst = {})); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1kc2ZyLWNvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvdXRpbHMvZmlsZS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUV0RixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUM7QUFDekIsTUFBTSxXQUFXLEdBQUcsV0FBVyxHQUFHLElBQUksQ0FBQztBQUN2QyxNQUFNLFdBQVcsR0FBRyxXQUFXLEdBQUcsSUFBSSxDQUFDO0FBRXZDOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsUUFBZ0IsRUFBRSxTQUE2QixFQUFFLFFBQTBCO0lBQ3hHLE9BQU8sQ0FBQyxTQUFTO1FBQ2YsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUU7UUFDNUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDM0YsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLGdCQUFnQixDQUFDLEtBQWEsRUFBRSxRQUEyQjtJQUNsRSxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBRXRCLE1BQU0sU0FBUyxHQUFHLFFBQVEsS0FBSyxPQUFPLENBQUM7SUFFdkMsSUFBSSxRQUFnQixDQUFDO0lBQ3JCLElBQUksWUFBb0IsQ0FBQztJQUV6QixJQUFJLEtBQUssR0FBRyxXQUFXLEVBQUU7UUFDdkIsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixZQUFZLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO0tBQ3JFO1NBQU0sSUFBSSxLQUFLLEdBQUcsV0FBVyxFQUFFO1FBQzlCLFFBQVEsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLFlBQVksR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7S0FDOUQ7U0FBTSxJQUFJLEtBQUssR0FBRyxXQUFXLEVBQUU7UUFDOUIsUUFBUSxHQUFHLEtBQUssR0FBRyxPQUFPLENBQUM7UUFDM0IsWUFBWSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztLQUM5RDtTQUFNO1FBQ0wsUUFBUSxHQUFHLEtBQUssR0FBRyxVQUFVLENBQUM7UUFDOUIsWUFBWSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztLQUM5RDtJQUVELFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7SUFFNUMsNkVBQTZFO0lBQzdFLDZIQUE2SDtJQUM3SCxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDNUMsT0FBTyxTQUFTLEdBQUcsR0FBRyxHQUFHLFlBQVksQ0FBQztBQUN4QyxDQUFDO0FBRUQsd0hBQXdIO0FBRXhILGlDQUFpQztBQUNqQyxJQUFLLFlBU0o7QUFURCxXQUFLLFlBQVk7SUFDZixpQ0FBaUIsQ0FBQTtJQUNqQix5QkFBUyxDQUFBO0lBQ1QseUJBQVMsQ0FBQTtJQUNULHlCQUFTLENBQUE7SUFDVCwrQkFBZSxDQUFBO0lBQ2YseUJBQVMsQ0FBQTtJQUNULHlCQUFTLENBQUE7SUFDVCx5QkFBUyxDQUFBO0FBQ1gsQ0FBQyxFQVRJLFlBQVksS0FBWixZQUFZLFFBU2hCO0FBRUQsTUFBTSxLQUFXLHFCQUFxQixDQUdyQztBQUhELFdBQWlCLHFCQUFxQjtJQUN2QiwyQkFBSyxHQUFHLE9BQU8sQ0FBQztJQUNoQiw0QkFBTSxHQUFHLFFBQVEsQ0FBQztBQUNqQyxDQUFDLEVBSGdCLHFCQUFxQixLQUFyQixxQkFBcUIsUUFHckMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb252ZXJ0TWltZVR5cGUyRmlsZUZvcm1hdCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvZG93bmxvYWQvZHNmci1taW1lLnR5cGUnO1xuXG5jb25zdCBLSUxPX09DVEVUUyA9IDEwMjQ7XG5jb25zdCBNRUdBX09DVEVUUyA9IEtJTE9fT0NURVRTICogMTAyNDtcbmNvbnN0IEdJR0FfT0NURVRTID0gTUVHQV9PQ1RFVFMgKiAxMDI0O1xuXG4vKipcbiAqIENvbnN0cnVpdCBsZSBsaWJlbGzDqSBkZSBkw6l0YWlsIGRhbnMgdW4gY29tcG9zYW50IGRlIHTDqWzDqWNoYXJnZW1lbnQgbG9yc3F1ZSBjZSBsaWJlbGzDqSBuJ2VzdCBwYXMgZm91cm5pIHBhciBsZSBEc2ZyXG4gKiBAcGFyYW0gbWltZVR5cGUgVHlwZSBtaW1lIGR1IGZpY2hpZXJcbiAqIEBwYXJhbSBzaXplQnl0ZXMgTm9tYnJlIGQnb2N0ZXRzXG4gKiBAcGFyYW0gc2l6ZVVuaXQgVW5pdMOpIHV0aWxpc8OpZSBkYW5zIGxhIHJlc3RpdHV0aW9uXG4gKiBAcmV0dXJuIHBhciBleGVtcGxlICdQREYgLSAxMCBvY3RldHMnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkb3dubG9hZERldGFpbChtaW1lVHlwZTogc3RyaW5nLCBzaXplQnl0ZXM6IG51bWJlciB8IHVuZGVmaW5lZCwgc2l6ZVVuaXQ6IERzZnJGaWxlU2l6ZVVuaXQpOiBzdHJpbmcge1xuICByZXR1cm4gIXNpemVCeXRlc1xuICAgID8gY29udmVydE1pbWVUeXBlMkZpbGVGb3JtYXQobWltZVR5cGUpIHx8ICcnXG4gICAgOiBjb252ZXJ0TWltZVR5cGUyRmlsZUZvcm1hdChtaW1lVHlwZSkgKyAnIC0gJyArIGZpbGVTaXplVG9TdHJpbmcoc2l6ZUJ5dGVzLCBzaXplVW5pdCk7XG59XG5cbi8qKlxuICogUmV0b3VybmUgbGEgdGFpbGxlIHNvdXMgZm9ybWUgZGUgc3RyaW5nIHNvdXMgZm9ybWUgZGUgJ25vbWJyZSB1bml0w6knXG4gKiBAcGFyYW0gYnl0ZXMgVGFpbGxlIMOgIHRyYW5zZm9ybWVyIGV4cHJpbcOpZSBlbiBvY3RldHNcbiAqIEBwYXJhbSBzaXplVW5pdCBTaSB0cnVlLCBsJ3VuaXTDqSBzZXJhIGVuIGJ5dGVzIChLQiwgTUIsIC4uLiApIHNpbm9uIGVuIG9jdGV0cyAoa28sIG1vLCAuLi4pXG4gKi9cbmZ1bmN0aW9uIGZpbGVTaXplVG9TdHJpbmcoYnl0ZXM6IG51bWJlciwgc2l6ZVVuaXQ/OiBEc2ZyRmlsZVNpemVVbml0KTogc3RyaW5nIHtcbiAgaWYgKCFieXRlcykgcmV0dXJuICcnO1xuXG4gIGNvbnN0IGJ5dGVzVW5pdCA9IHNpemVVbml0ID09PSAnYnl0ZXMnO1xuXG4gIGxldCBmaWxlU2l6ZTogbnVtYmVyO1xuICBsZXQgZmlsZVNpemVVbml0OiBzdHJpbmc7XG5cbiAgaWYgKGJ5dGVzIDwgS0lMT19PQ1RFVFMpIHtcbiAgICBmaWxlU2l6ZSA9IGJ5dGVzO1xuICAgIGZpbGVTaXplVW5pdCA9IGJ5dGVzVW5pdCA/IEZpbGVTaXplVW5pdC5CWVRFUyA6IEZpbGVTaXplVW5pdC5PQ1RFVFM7XG4gIH0gZWxzZSBpZiAoYnl0ZXMgPCBNRUdBX09DVEVUUykge1xuICAgIGZpbGVTaXplID0gYnl0ZXMgLyAxMDI0O1xuICAgIGZpbGVTaXplVW5pdCA9IGJ5dGVzVW5pdCA/IEZpbGVTaXplVW5pdC5LQiA6IEZpbGVTaXplVW5pdC5LTztcbiAgfSBlbHNlIGlmIChieXRlcyA8IEdJR0FfT0NURVRTKSB7XG4gICAgZmlsZVNpemUgPSBieXRlcyAvIDEwNDg1NzY7XG4gICAgZmlsZVNpemVVbml0ID0gYnl0ZXNVbml0ID8gRmlsZVNpemVVbml0Lk1CIDogRmlsZVNpemVVbml0Lk1PO1xuICB9IGVsc2Uge1xuICAgIGZpbGVTaXplID0gYnl0ZXMgLyAxMDczNzQxODI0O1xuICAgIGZpbGVTaXplVW5pdCA9IGJ5dGVzVW5pdCA/IEZpbGVTaXplVW5pdC5HQiA6IEZpbGVTaXplVW5pdC5HTztcbiAgfVxuXG4gIGZpbGVTaXplID0gTWF0aC5yb3VuZChmaWxlU2l6ZSAqIDEwMCkgLyAxMDA7XG5cbiAgLy8gQHNpbmNlIDEuOCwgbGVzIG9wdGlvbnMgcsOpZ2lvbmFsZXMgc29udCBwcmlzZSBlbiBjb21wdGUgcG91ciBsZXMgZMOpY2ltYWxlc1xuICAvL0ZJWE1FOiBuZSBkZXZyYWl0LXRvbiBwYXMgdHJhbnNtZXR0cmUgbGEgbG9jYWxlIGRlcHVpcyBsJ2V4dMOpcmlldXIgZGUgbWFuacOocmUgw6AgcG91dm9pciBsYSB0cmFuc21ldHRyZSBkZXB1aXMgaTE4blNlcnZpY2UgP1xuICBjb25zdCBsb2NhbFNpemUgPSBmaWxlU2l6ZS50b0xvY2FsZVN0cmluZygpO1xuICByZXR1cm4gbG9jYWxTaXplICsgJyAnICsgZmlsZVNpemVVbml0O1xufVxuXG4vLyAtLSBDb25zdGFudGVzIGQndW5pdMOpcyBkZSB0YWlsbGUgZGUgZmljaGllciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFRPRE8gVW4gcGV1IGJpemFycmUgY2VzIG5vbXMgP1xuZW51bSBGaWxlU2l6ZVVuaXQge1xuICBPQ1RFVFMgPSAnb2N0ZXRzJyxcbiAgS08gPSAna28nLFxuICBNTyA9ICdNbycsXG4gIEdPID0gJ0dvJyxcbiAgQllURVMgPSAnYnl0ZXMnLFxuICBLQiA9ICdLQicsXG4gIE1CID0gJ01CJyxcbiAgR0IgPSAnR0InLFxufVxuXG5leHBvcnQgbmFtZXNwYWNlIERzZnJGaWxlU2l6ZVVuaXRDb25zdCB7XG4gIGV4cG9ydCBjb25zdCBCWVRFUyA9ICdieXRlcyc7XG4gIGV4cG9ydCBjb25zdCBPQ1RFVFMgPSAnb2N0ZXRzJztcbn1cblxuZXhwb3J0IHR5cGUgRHNmckZpbGVTaXplVW5pdCA9ICh0eXBlb2YgRHNmckZpbGVTaXplVW5pdENvbnN0KVtrZXlvZiB0eXBlb2YgRHNmckZpbGVTaXplVW5pdENvbnN0XTtcbiJdfQ==