@superset-ui/core
Version:
56 lines (45 loc) • 1.79 kB
JavaScript
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import NumberFormatter from '../NumberFormatter';
export default function createMemoryFormatter(
config =
{})
{
const { description, id, label, binary, decimals = 2 } = config;
return new NumberFormatter({
description,
formatFunc: (value) => {
if (value === 0) return '0B';
const sign = value > 0 ? '' : '-';
const absValue = Math.abs(value);
const suffixes = binary ?
['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB'] :
['B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB', 'RB', 'QB'];
const base = binary ? 1024 : 1000;
const i = Math.min(
suffixes.length - 1,
Math.floor(Math.log(absValue) / Math.log(base))
);
return `${sign}${parseFloat((absValue / Math.pow(base, i)).toFixed(decimals))}${suffixes[i]}`;
},
id: id != null ? id : 'memory_format',
label: label != null ? label : `Memory formatter`
});
}
//# sourceMappingURL=createMemoryFormatter.js.map