Finish memory statistics information

This commit is contained in:
2023-12-08 17:14:32 +08:00
parent 4e2d13c064
commit 633985af8e
3 changed files with 322 additions and 50 deletions

View File

@@ -1,5 +1,6 @@
import ReactDOM from 'react-dom/client'
import FullscreenLoadingMask from '@/components/common/FullscreenLoadingMask'
import { floor } from 'lodash'
export const randomInt = (start: number, end: number) => {
if (start > end) {
@@ -54,3 +55,79 @@ export const removeLoadingMask = (id: string) => {
value.parentNode?.removeChild(value)
})
}
export enum ByteUnit {
B = 'B',
KiB = 'KiB',
Mib = 'Mib',
GiB = 'GiB',
TiB = 'TiB',
PiB = 'PiB',
EiB = 'EiB',
ZiB = 'ZiB',
YiB = 'YiB'
}
export const formatByteSize = (byteSize: number): string => {
const BASE = 1024
if (byteSize <= -1) {
return byteSize.toString()
}
if (floor(byteSize / BASE) <= 0) {
return formatByte(byteSize, ByteUnit.B)
}
byteSize /= BASE
if (floor(byteSize / BASE) <= 0) {
return formatByte(byteSize, ByteUnit.KiB)
}
byteSize /= BASE
if (floor(byteSize / BASE) <= 0) {
return formatByte(byteSize, ByteUnit.Mib)
}
byteSize /= BASE
if (floor(byteSize / BASE) <= 0) {
return formatByte(byteSize, ByteUnit.GiB)
}
byteSize /= BASE
if (floor(byteSize / BASE) <= 0) {
return formatByte(byteSize, ByteUnit.TiB)
}
byteSize /= BASE
if (floor(byteSize / BASE) <= 0) {
return formatByte(byteSize, ByteUnit.PiB)
}
byteSize /= BASE
if (floor(byteSize / BASE) <= 0) {
return formatByte(byteSize, ByteUnit.EiB)
}
byteSize /= BASE
if (floor(byteSize / BASE) <= 0) {
return formatByte(byteSize, ByteUnit.ZiB)
}
byteSize /= BASE
return formatByte(byteSize, ByteUnit.YiB)
}
const formatByte = (size: number, unit: ByteUnit): string => {
let precision
if ((size * 1000) % 10 > 0) {
precision = 3
} else if ((size * 100) % 10 > 0) {
precision = 2
} else if ((size * 10) % 10 > 0) {
precision = 1
} else {
precision = 0
}
return `${size.toFixed(precision)}${unit}`
}