From b4221213a074c6c892ce871b682abf5b5645ff21 Mon Sep 17 00:00:00 2001 From: UUBulb <35923940+uubulb@users.noreply.github.com> Date: Sat, 10 Jan 2026 17:27:13 +0800 Subject: [PATCH] feat(notification): add option to convert metric units in request body (#147) * feat(notification): add option to convert metric units in request body * rename fields * add prettierignore * chore: auto-fix linting and formatting issues --- .prettierignore | 1 + src/components/notifier.tsx | 23 +++++++++++++++++++++++ src/components/server.tsx | 8 ++++++-- src/components/ui/badge.tsx | 3 +-- src/components/ui/button.tsx | 3 +-- src/components/xui/multi-select.tsx | 3 ++- src/components/xui/overlayless-sheet.tsx | 3 ++- src/locales/en/translation.json | 3 ++- src/locales/zh-CN/translation.json | 3 ++- src/locales/zh-TW/translation.json | 3 ++- src/main.tsx | 1 + src/types/api.ts | 1 + 12 files changed, 44 insertions(+), 11 deletions(-) create mode 100644 .prettierignore diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..2ee4c22 --- /dev/null +++ b/.prettierignore @@ -0,0 +1 @@ +src/main.tsx diff --git a/src/components/notifier.tsx b/src/components/notifier.tsx index af3b93d..debbf15 100644 --- a/src/components/notifier.tsx +++ b/src/components/notifier.tsx @@ -57,6 +57,7 @@ const notificationFormSchema = z.object({ request_body: z.string(), verify_tls: asOptionalField(z.boolean()), skip_check: asOptionalField(z.boolean()), + format_metric_units: asOptionalField(z.boolean()), }) export const NotifierCard: React.FC = ({ data, mutate }) => { @@ -75,6 +76,7 @@ export const NotifierCard: React.FC = ({ data, mutate }) => { request_body: data.request_body ?? "", verify_tls: (data as any).verify_tls ?? false, skip_check: (data as any).skip_check ?? false, + format_metric_units: (data as any).format_body ?? false, } : { name: "", @@ -85,6 +87,7 @@ export const NotifierCard: React.FC = ({ data, mutate }) => { request_body: "", verify_tls: false, skip_check: false, + format_body: false, }, resetOptions: { keepDefaultValues: false, @@ -283,6 +286,26 @@ export const NotifierCard: React.FC = ({ data, mutate }) => { )} /> + ( + + +
+ + +
+
+ +
+ )} + /> @@ -471,7 +473,9 @@ export const ServerCard: React.FC = ({ data, mutate }) => { .billingDataMod ?.startDate ? new Date( - publicNoteObj.billingDataMod!.startDate!, + publicNoteObj + .billingDataMod! + .startDate!, ) : undefined } diff --git a/src/components/ui/badge.tsx b/src/components/ui/badge.tsx index f7c1d40..658a142 100644 --- a/src/components/ui/badge.tsx +++ b/src/components/ui/badge.tsx @@ -23,8 +23,7 @@ const badgeVariants = cva( ) export interface BadgeProps - extends HTMLAttributes, - VariantProps {} + extends HTMLAttributes, VariantProps {} function Badge({ className, variant, ...props }: BadgeProps) { return
diff --git a/src/components/ui/button.tsx b/src/components/ui/button.tsx index f09e440..2571352 100644 --- a/src/components/ui/button.tsx +++ b/src/components/ui/button.tsx @@ -31,8 +31,7 @@ const buttonVariants = cva( ) export interface ButtonProps - extends ButtonHTMLAttributes, - VariantProps { + extends ButtonHTMLAttributes, VariantProps { asChild?: boolean } diff --git a/src/components/xui/multi-select.tsx b/src/components/xui/multi-select.tsx index 43da126..ace38a9 100644 --- a/src/components/xui/multi-select.tsx +++ b/src/components/xui/multi-select.tsx @@ -67,7 +67,8 @@ const multiSelectVariants = cva( * Props for MultiSelect component */ interface MultiSelectProps - extends React.ButtonHTMLAttributes, + extends + React.ButtonHTMLAttributes, VariantProps { /** * An array of option objects to be displayed in the multi-select component. diff --git a/src/components/xui/overlayless-sheet.tsx b/src/components/xui/overlayless-sheet.tsx index 765edb1..e31b188 100644 --- a/src/components/xui/overlayless-sheet.tsx +++ b/src/components/xui/overlayless-sheet.tsx @@ -37,7 +37,8 @@ const sheetVariants = cva( ) interface SheetContentProps - extends ComponentPropsWithoutRef, + extends + ComponentPropsWithoutRef, VariantProps { setOpen: Dispatch> } diff --git a/src/locales/en/translation.json b/src/locales/en/translation.json index ec86726..ddb6648 100644 --- a/src/locales/en/translation.json +++ b/src/locales/en/translation.json @@ -254,5 +254,6 @@ "CopiedToClipboard": "Copied to clipboard", "ClipboardWriteFailed": "Clipboard write failed", "PastedFromClipboard": "Pasted from clipboard", - "ClipboardReadFailed": "Clipboard read failed" + "ClipboardReadFailed": "Clipboard read failed", + "FormatMetricUnits": "Format Metric Units" } diff --git a/src/locales/zh-CN/translation.json b/src/locales/zh-CN/translation.json index b0ad437..9ccb13b 100644 --- a/src/locales/zh-CN/translation.json +++ b/src/locales/zh-CN/translation.json @@ -254,5 +254,6 @@ "CopiedToClipboard": "已复制到剪贴板", "ClipboardWriteFailed": "无法写入剪贴板", "PastedFromClipboard": "已从剪贴板粘贴", - "ClipboardReadFailed": "无法读取剪贴板" + "ClipboardReadFailed": "无法读取剪贴板", + "FormatMetricUnits": "格式化数据单位" } diff --git a/src/locales/zh-TW/translation.json b/src/locales/zh-TW/translation.json index 9126b3e..41d0ed1 100644 --- a/src/locales/zh-TW/translation.json +++ b/src/locales/zh-TW/translation.json @@ -185,5 +185,6 @@ "EditServerConfig": "編輯伺服器配置", "Option": "選項", "Value": "值", - "Preview": "預覽" + "Preview": "預覽", + "FormatMetricUnits": "格式化資料單位" } diff --git a/src/main.tsx b/src/main.tsx index 4f4c7e7..6561d4e 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -1,3 +1,4 @@ +// NOTE: Do not modify the import order unless absolutely necessary. import { createRoot } from "react-dom/client" import { RouterProvider, createBrowserRouter } from "react-router-dom" diff --git a/src/types/api.ts b/src/types/api.ts index 45f46dc..5bed115 100644 --- a/src/types/api.ts +++ b/src/types/api.ts @@ -389,6 +389,7 @@ export interface ModelNotification { updated_at: string url: string verify_tls: boolean + format_metric_units: boolean } export interface ModelNotificationForm {