function sizeUnitsConversion(limit) {
if (Number(limit) === 0) return { size: '', units: '' }
let size = ''
let units = ''
let lowerUnits = ''
if (Number(limit) < 0.1 * 1024) {
size = Number(limit).toFixed(2)
units = 'B'
} else if (Number(limit) < 0.1 * 1024 * 1024) {
size = (Number(limit) / 1024).toFixed(2)
units = 'KB'
lowerUnits = 'kb'
} else if (Number(limit) < 0.1 * 1024 * 1024 * 1024) {
size = (Number(limit) / (1024 * 1024)).toFixed(2)
units = 'MB'
lowerUnits = 'mb'
} else {
size = (Number(limit) / (1024 * 1024 * 1024)).toFixed(2)
units = 'GB'
lowerUnits = 'gb'
}
const sizeStr = size + ''
const index = sizeStr.indexOf('.')
const dou = sizeStr.substr(index + 1, 2)
if (dou === '00') {
return sizeStr.substring(0, index) + sizeStr.substr(index + 3, 2)
}
return { size, units, lowerUnits }
}
function sizeUnitsTransform(original, transform, size) {
if (original.toUpperCase() === transform.toUpperCase()) {
return { size: Number(size), original }
}
const k = 1024
const sizeArr = [
'B', 'KB', 'MB', 'GB', 'TB'
]
const fIndex = sizeArr.findIndex(item => item === original.toUpperCase())
const tIndex = sizeArr.findIndex(item => item === transform.toUpperCase())
if (fIndex < tIndex) {
return { size: Number(size / Math.pow(k, tIndex - fIndex)), original }
} else if (tIndex < fIndex) {
return { size: Number(size * Math.pow(k, fIndex - tIndex)), original }
}
}
function conversionData(type, size, unit) {
let suffix = ''
if (type === 'data') {
let activeUnit = unit
if (unit.indexOf('ps') !== -1) {
activeUnit = unit.split('ps')[0]
suffix = `ps`
}
if (unit.indexOf('/') !== -1) {
activeUnit = unit.split('/')[0]
suffix = `/${unit.split('/')[1]}`
}
const sizeUnitsTransformResult = sizeUnitsTransform(`${activeUnit}`, 'b', size).size
return { ...sizeUnitsConversion(sizeUnitsTransformResult), suffix, original: activeUnit }
} else if (type === 'time') {
const date = new Date(size * 1000)
return date.getDay()
} else if (type === 'status') {
return size === 1 ? '正常' : '异常'
}
}
console.log(conversionData('data', 99999999, 'kb/s'))
console.log(conversionData('time', 99999999))
console.log(conversionData('status', 1))
function transformNewData(unit, value) {
const activeUnit = unit.toUpperCase()
const unitS = [ 'B', 'KB', 'MB', 'GB', 'TB' ]
const idx = unitS.findIndex(item => item === activeUnit)
if (idx !== -1) {
return conversionData('data', value, activeUnit)
}
}
console.log(transformNewData('b', 99999999))
console