From cc3bade9909aa0c2a2c23ea319362e3bc38dfdb0 Mon Sep 17 00:00:00 2001 From: Timi Date: Fri, 10 Apr 2026 14:37:14 +0800 Subject: [PATCH] update --- package.json | 2 +- src/api/CommonAPI.ts | 4 ++-- src/types/Model.ts | 4 ++-- src/utils/IOSize.ts | 25 ++++++++++++++++++++----- src/utils/{TextFormat.ts => Text.ts} | 17 ++++++++++------- src/utils/index.ts | 2 +- 6 files changed, 36 insertions(+), 18 deletions(-) rename src/utils/{TextFormat.ts => Text.ts} (78%) diff --git a/package.json b/package.json index e54b0c6..4b51665 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "module": "./dist/timi-web.mjs", "style": "./dist/timi-web.css", "private": false, - "version": "0.0.4", + "version": "0.0.10", "license": "MIT", "scripts": { "dev": "vite", diff --git a/src/api/CommonAPI.ts b/src/api/CommonAPI.ts index 30f7a8b..07c1782 100644 --- a/src/api/CommonAPI.ts +++ b/src/api/CommonAPI.ts @@ -1,7 +1,7 @@ import { TemplateBizType } from "../types"; import Toolkit from "../utils/Toolkit"; import { axios } from "./BaseAPI"; -import TextFormat from "../utils/TextFormat"; +import Text from "../utils/Text"; const getCaptchaAPI = () => axios.defaults.baseURL + "/captcha"; @@ -12,7 +12,7 @@ async function getTemplate(bizType: TemplateBizType, code: string): Promise { - return axios.get(`/setting/${key}?${TextFormat.urlArgs(args)}`); + return axios.get(`/setting/${key}?${Text.urlArgs(args)}`); } async function listSetting(keyMap: Map): Promise> { diff --git a/src/types/Model.ts b/src/types/Model.ts index d7a1f38..20941d3 100644 --- a/src/types/Model.ts +++ b/src/types/Model.ts @@ -71,10 +71,10 @@ export enum ImageType { export type KeyValue = { key: K; - value: V; + value?: V; } export type LabelValue = { label: L; - value: V; + value?: V; } diff --git a/src/utils/IOSize.ts b/src/utils/IOSize.ts index d87ae9b..ddf9c88 100644 --- a/src/utils/IOSize.ts +++ b/src/utils/IOSize.ts @@ -1,3 +1,5 @@ +import Text from "./Text"; + export enum Unit { /** B */ @@ -60,7 +62,10 @@ export default class IOSize { * @param stopUnit 停止单位 * @return */ - public static format(size: number, fixed = 2, stopUnit?: Unit): string { + public static format(size?: number, fixed = 2, stopUnit?: Unit): string { + if (!size) { + return ""; + } const units = Object.keys(Unit); if (0 < size) { for (let i = 0; i < units.length; i++, size /= 1024) { @@ -93,7 +98,7 @@ export default class IOSize { * @throws Error 格式无效 */ public static parse(sizeStr: string): number { - if (!sizeStr || sizeStr.trim() === "") { + if (sizeStr.trim() === "") { throw new Error("not found sizeStr"); } // 正则匹配:可选符号 + 数字(含小数点)+ 可选空格 + 单位 @@ -160,13 +165,23 @@ export default class IOSize { /** * 转换值到字节量 * - * @param value 值 + * @param val 值 * @param unit 单位 * @return 字节量 */ - private static toBytes(value: number, unit: Unit): number { + private static toBytes(val: number | undefined, unit: Unit): number { + if (!val) { + return 0; + } const units = Object.values(Unit); const ordinal = units.indexOf(unit); - return Math.round(value * Math.pow(1024, ordinal)); + return Math.round(val * Math.pow(1024, ordinal)); + } + + public static speed(val?: number) { + if (!val) { + return ""; + } + return Text.unit(IOSize.format(val, 2), " / s"); } } diff --git a/src/utils/TextFormat.ts b/src/utils/Text.ts similarity index 78% rename from src/utils/TextFormat.ts rename to src/utils/Text.ts index 5fda045..6051492 100644 --- a/src/utils/TextFormat.ts +++ b/src/utils/Text.ts @@ -1,6 +1,6 @@ import IOSize from "./IOSize"; -export default class TextFormat { +export default class Text { public static keyValue(obj: object, assign: string, split: string): string { let result = ""; @@ -40,15 +40,18 @@ export default class TextFormat { if (Number.isNaN(val)) { return ""; } - return val.toFixed(fixed) + unit; + val = val.toFixed(fixed); } - return val.trim() + unit; + return `${val.trim()} ${unit}`; }; - public static speed(val?: number) { - if (!val) { - return ""; + public static display(val: string | number | null | undefined) { + if (typeof val === "string") { + return val.trim() || ""; } - return this.unit(IOSize.format(val, 2), " / s"); + if (typeof val === "number" && Number.isFinite(val)) { + return val.toString(); + } + return ""; } } diff --git a/src/utils/index.ts b/src/utils/index.ts index bf34e40..3ea2ed5 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -7,7 +7,7 @@ export { default as Prismjs } from "./Prismjs"; export { default as Resizer } from "./Resizer"; export { default as Scroller } from "./Scroller"; export { default as Storage } from "./Storage"; -export { default as Format } from "./TextFormat"; +export { default as Text } from "./Text"; export { default as Time } from "./Time"; export { default as Toolkit } from "./Toolkit"; export { default as IconMapper } from "./IconMapper";