@samitouri / QOSami-HFS / commits / d9bafae7

admin/monitoring: use "kB/s" instead of "KB/s"

Massimo Melina committed Dec 1, 2023 at 19:31 UTC d9bafae71207548019babd6d6a918f99b42158d8
2 files changed +14 -18
admin/src/MonitorPage.ts
+8 -18
@@ -3,21 +3,11 @@
3 import _ from "lodash"
4 import { createElement as h, useMemo, Fragment, useState, ReactNode } from "react"
5 import { apiCall, useApiEvents, useApiEx, useApiList } from "./api"
6 -import { PauseCircle, PlayCircle, LinkOff, Lock, Block, FolderZip, Upload, Download } from '@mui/icons-material'
6 +import { LinkOff, Lock, Block, FolderZip, Upload, Download } from '@mui/icons-material'
7 import { Box, Chip, ChipProps, Tooltip } from '@mui/material'
8 import { DataTable } from './DataTable'
9 -import {
10 - formatBytes,
11 - IconBtn,
12 - IconProgress,
13 - iconTooltip,
14 - ipForUrl,
15 - manipulateConfig,
16 - useBreakpoint,
17 - useBatch,
18 - CFG,
19 - usePauseButton
20 -} from "./misc"
9 +import { formatBytes, IconBtn, IconProgress, iconTooltip, ipForUrl, manipulateConfig, useBreakpoint, useBatch,
10 + CFG, usePauseButton, formatSpeed } from "./misc"
11 import { Field, SelectField } from '@hfs/mui-grid-form'
12 import { StandardCSSProperties } from '@mui/system/styleFunctionSx/StandardCssProperties'
13 import { toast } from "./dialog"
@@ -47,8 +37,8 @@ function MoreInfo() {
37 sm && pair('connections'),
38 pair('sent', { render: formatBytes, minWidth: '4em' }),
39 sm && pair('got', { render: formatBytes, minWidth: '4em' }),
50 - pair('outSpeed', { label: "Output speed", render: formatSpeed }),
51 - md && pair('inSpeed', { label: "Input speed", render: formatSpeed }),
40 + pair('outSpeed', { label: "Output speed", render: formatSpeedK }),
41 + md && pair('inSpeed', { label: "Input speed", render: formatSpeedK }),
42 )
43
44 type Color = ChipProps['color']
@@ -193,7 +183,7 @@ function Connections() {
183 width: 110,
184 hideUnder: 'sm',
185 type: 'number',
196 - renderCell: ({ value, row }) => formatSpeed(Math.max(value||0, row.inSpeed||0) || undefined),
186 + renderCell: ({ value, row }) => formatSpeedK(Math.max(value||0, row.inSpeed||0) || undefined),
187 mergeRender: { other: 'sent', fontSize: 'small', textAlign: 'right' }
188 },
189 {
@@ -242,6 +232,6 @@ function blockIp(ip: string) {
232 return manipulateConfig('block', data => [...data, { ip }])
233 }
234
245 -function formatSpeed(value: number | undefined) {
246 - return value === undefined ? '' : formatBytes(value * 1000, { post: "B/s", k: 1000, digits: 1 })
235 +function formatSpeedK(value: number | undefined) {
236 + return value === undefined ? '' : formatSpeed(value * 1000, { digits: 1 })
237 }
src/cross.ts
+6
@@ -101,6 +101,12 @@ export function formatBytes(n: number, { post='B', k=1024, digits=NaN }={}) {
101 return nAsString + ' ' + (MULTIPLIERS[i]||'') + post
102 } // formatBytes
103
104 +export function formatSpeed(n: number, options: { digits?: number }={}) {
105 + return formatBytes(n, { post: 'B/s', k: 1000, ...options })
106 + .replace('K', 'k') // ref https://en.wikipedia.org/wiki/Data-rate_units
107 +
108 +}
109 +
110 export function prefix(pre:string, v:string|number|undefined|null|false, post:string='') {
111 return v ? pre+v+post : ''
112 }