* feat: model hub revamp UI * chore: model description - consistent markdown css * chore: add model versions dropdown * chore: integrate APIs - model sources * chore: update model display name * chore: lint fix * chore: page transition animation * feat: model search dropdown - deeplink * chore: bump cortex version * chore: add remote model sources * chore: model download state * chore: fix model metadata label * chore: polish model detail page markdown * test: fix test cases * chore: initialize default Hub model sources * chore: fix model stats * chore: clean up click outside and inside hooks * feat: change hub banner * chore: lint fix * chore: fix css long model id
39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
export const toGigabytes = (
|
|
input: number,
|
|
options?: { hideUnit?: boolean }
|
|
) => {
|
|
if (!input) return ''
|
|
if (input > 1024 ** 3) {
|
|
return (input / 1024 ** 3).toFixed(2) + (options?.hideUnit ? '' : 'GB')
|
|
} else if (input > 1024 ** 2) {
|
|
return (input / 1024 ** 2).toFixed(2) + (options?.hideUnit ? '' : 'MB')
|
|
} else if (input > 1024) {
|
|
return (input / 1024).toFixed(2) + (options?.hideUnit ? '' : 'KB')
|
|
} else {
|
|
return input + (options?.hideUnit ? '' : 'B')
|
|
}
|
|
}
|
|
|
|
export const formatDownloadPercentage = (
|
|
input: number,
|
|
options?: { hidePercentage?: boolean }
|
|
) => {
|
|
if (options?.hidePercentage) return input <= 1 ? input * 100 : input
|
|
return (input <= 1 ? input * 100 : (input ?? 0)).toFixed(2) + '%'
|
|
}
|
|
|
|
export const formatDownloadSpeed = (input: number | undefined) => {
|
|
if (!input) return '0B/s'
|
|
return toGigabytes(input) + '/s'
|
|
}
|
|
|
|
export const formatTwoDigits = (input: number) => {
|
|
input = Number(input)
|
|
|
|
return input.toFixed(2)
|
|
}
|
|
|
|
export const formatExtensionsName = (input: string) => {
|
|
return input.replace('@janhq/', '').replaceAll('-', ' ')
|
|
}
|