🐛 fix(node): Add country and city fields to the form schema and localization files

This commit is contained in:
web@ppanel 2025-01-16 14:15:40 +07:00
parent 770932e957
commit 8775fb620e
27 changed files with 114 additions and 18 deletions

View File

@ -92,6 +92,8 @@ const protocolConfigSchema = z.discriminatedUnion('protocol', [
const baseFormSchema = z.object({
name: z.string(),
tags: z.array(z.string()).nullish().default([]),
country: z.string().nullish(),
city: z.string().nullish(),
server_addr: z.string(),
speed_limit: z.number().nullish(),
traffic_ratio: z.number().default(1),

View File

@ -160,23 +160,61 @@ export default function NodeForm<T extends { [x: string]: any }>({
)}
/>
</div>
<FormField
control={form.control}
name='tags'
render={({ field }) => (
<FormItem>
<FormLabel>{t('form.tags')}</FormLabel>
<FormControl>
<TagInput
placeholder={t('form.tagsPlaceholder')}
value={field.value || []}
onChange={(value) => form.setValue(field.name, value)}
/>
</FormControl>
<FormMessage />
</FormItem>
)}
/>
<div className='grid grid-cols-5 gap-2'>
<FormField
control={form.control}
name='tags'
render={({ field }) => (
<FormItem className='col-span-3'>
<FormLabel>{t('form.tags')}</FormLabel>
<FormControl>
<TagInput
placeholder={t('form.tagsPlaceholder')}
value={field.value || []}
onChange={(value) => form.setValue(field.name, value)}
/>
</FormControl>
<FormMessage />
</FormItem>
)}
/>
<FormField
control={form.control}
name='country'
render={({ field }) => (
<FormItem>
<FormLabel>{t('form.country')}</FormLabel>
<FormControl>
<EnhancedInput
{...field}
onValueChange={(value) => {
form.setValue(field.name, value);
}}
/>
</FormControl>
<FormMessage />
</FormItem>
)}
/>
<FormField
control={form.control}
name='city'
render={({ field }) => (
<FormItem>
<FormLabel>{t('form.city')}</FormLabel>
<FormControl>
<EnhancedInput
{...field}
onValueChange={(value) => {
form.setValue(field.name, value);
}}
/>
</FormControl>
<FormMessage />
</FormItem>
)}
/>
</div>
<div className='grid grid-cols-3 gap-2'>
<FormField
control={form.control}

View File

@ -123,6 +123,16 @@ export default function NodeTable() {
{
accessorKey: 'server_addr',
header: t('serverAddr'),
cell: ({ row }) => {
return (
<div className='flex gap-1'>
<Badge variant='outline'>
{row.original.country} - {row.original.city}
</Badge>
<Badge variant='outline'>{row.getValue('server_addr')}</Badge>
</div>
);
},
},
{
accessorKey: 'status',

View File

@ -66,7 +66,9 @@
"form": {
"allowInsecure": "Povolit nezabezpečené",
"cancel": "Zrušit",
"city": "Město",
"confirm": "Potvrdit",
"country": "Země",
"edit": "Upravit",
"editSecurity": "Upravit nastavení zabezpečení",
"enableTLS": "Povolit TLS",

View File

@ -66,7 +66,9 @@
"form": {
"allowInsecure": "Unsicher zulassen",
"cancel": "Abbrechen",
"city": "Stadt",
"confirm": "Bestätigen",
"country": "Land",
"edit": "Bearbeiten",
"editSecurity": "Sicherheitskonfiguration bearbeiten",
"enableTLS": "TLS aktivieren",

View File

@ -66,7 +66,9 @@
"form": {
"allowInsecure": "Allow Insecure",
"cancel": "Cancel",
"city": "City",
"confirm": "Confirm",
"country": "Country",
"edit": "Edit",
"editSecurity": "Edit Security Configuration",
"enableTLS": "Enable TLS",

View File

@ -66,7 +66,9 @@
"form": {
"allowInsecure": "Permitir inseguro",
"cancel": "Cancelar",
"city": "Ciudad",
"confirm": "Confirmar",
"country": "País",
"edit": "Editar",
"editSecurity": "Editar configuración de seguridad",
"enableTLS": "Habilitar TLS",

View File

@ -66,7 +66,9 @@
"form": {
"allowInsecure": "Permitir inseguro",
"cancel": "Cancelar",
"city": "Ciudad",
"confirm": "Confirmar",
"country": "País",
"edit": "Editar",
"editSecurity": "Editar configuración de seguridad",
"enableTLS": "Habilitar TLS",

View File

@ -66,7 +66,9 @@
"form": {
"allowInsecure": "اجازه به ناامن",
"cancel": "لغو",
"city": "شهر",
"confirm": "تأیید",
"country": "کشور",
"edit": "ویرایش",
"editSecurity": "ویرایش تنظیمات امنیتی",
"enableTLS": "فعال‌سازی TLS",

View File

@ -66,7 +66,9 @@
"form": {
"allowInsecure": "Salli epävarma",
"cancel": "Peruuta",
"city": "Kaupunki",
"confirm": "Vahvista",
"country": "Maa",
"edit": "Muokkaa",
"editSecurity": "Muokkaa suojausasetuksia",
"enableTLS": "Ota TLS käyttöön",

View File

@ -66,7 +66,9 @@
"form": {
"allowInsecure": "Autoriser l'insécurité",
"cancel": "Annuler",
"city": "Ville",
"confirm": "Confirmer",
"country": "Pays",
"edit": "Éditer",
"editSecurity": "Éditer la configuration de sécurité",
"enableTLS": "Activer TLS",

View File

@ -66,7 +66,9 @@
"form": {
"allowInsecure": "असुरक्षित की अनुमति दें",
"cancel": "रद्द करें",
"city": "शहर",
"confirm": "पुष्टि करें",
"country": "देश",
"edit": "संपादित करें",
"editSecurity": "सुरक्षा कॉन्फ़िगरेशन संपादित करें",
"enableTLS": "TLS सक्षम करें",

View File

@ -66,7 +66,9 @@
"form": {
"allowInsecure": "Nem biztonságos engedélyezése",
"cancel": "Mégse",
"city": "Város",
"confirm": "Megerősít",
"country": "Ország",
"edit": "Szerkesztés",
"editSecurity": "Biztonsági beállítások szerkesztése",
"enableTLS": "TLS engedélyezése",

View File

@ -66,7 +66,9 @@
"form": {
"allowInsecure": "安全でないことを許可",
"cancel": "キャンセル",
"city": "市",
"confirm": "確認",
"country": "国",
"edit": "編集",
"editSecurity": "セキュリティ設定を編集",
"enableTLS": "TLSを有効化",

View File

@ -66,7 +66,9 @@
"form": {
"allowInsecure": "비보안 허용",
"cancel": "취소",
"city": "도시",
"confirm": "확인",
"country": "국가",
"edit": "편집",
"editSecurity": "보안 설정 편집",
"enableTLS": "TLS 활성화",

View File

@ -66,7 +66,9 @@
"form": {
"allowInsecure": "Tillat usikker",
"cancel": "Avbryt",
"city": "By",
"confirm": "Bekreft",
"country": "Land",
"edit": "Rediger",
"editSecurity": "Rediger sikkerhetskonfigurasjon",
"enableTLS": "Aktiver TLS",

View File

@ -66,7 +66,9 @@
"form": {
"allowInsecure": "Zezwól na niebezpieczne",
"cancel": "Anuluj",
"city": "Miasto",
"confirm": "Potwierdź",
"country": "Kraj",
"edit": "Edytuj",
"editSecurity": "Edytuj konfigurację bezpieczeństwa",
"enableTLS": "Włącz TLS",

View File

@ -66,7 +66,9 @@
"form": {
"allowInsecure": "Permitir Inseguro",
"cancel": "Cancelar",
"city": "Cidade",
"confirm": "Confirmar",
"country": "País",
"edit": "Editar",
"editSecurity": "Editar Configuração de Segurança",
"enableTLS": "Habilitar TLS",

View File

@ -66,7 +66,9 @@
"form": {
"allowInsecure": "Permite nesigur",
"cancel": "Anulează",
"city": "Oraș",
"confirm": "Confirmă",
"country": "Țară",
"edit": "Editează",
"editSecurity": "Editează configurația de securitate",
"enableTLS": "Activează TLS",

View File

@ -66,7 +66,9 @@
"form": {
"allowInsecure": "Разрешить небезопасное",
"cancel": "Отмена",
"city": "Город",
"confirm": "Подтвердить",
"country": "Страна",
"edit": "Редактировать",
"editSecurity": "Редактировать настройки безопасности",
"enableTLS": "Включить TLS",

View File

@ -66,7 +66,9 @@
"form": {
"allowInsecure": "อนุญาตไม่ปลอดภัย",
"cancel": "ยกเลิก",
"city": "เมือง",
"confirm": "ยืนยัน",
"country": "ประเทศ",
"edit": "แก้ไข",
"editSecurity": "แก้ไขการตั้งค่าความปลอดภัย",
"enableTLS": "เปิดใช้งานTLS",

View File

@ -66,7 +66,9 @@
"form": {
"allowInsecure": "Güvensizliğe izin ver",
"cancel": "İptal",
"city": "Şehir",
"confirm": "Onayla",
"country": "Ülke",
"edit": "Düzenle",
"editSecurity": "Güvenlik Ayarlarını Düzenle",
"enableTLS": "TLS'i Etkinleştir",

View File

@ -66,7 +66,9 @@
"form": {
"allowInsecure": "Дозволити небезпечні з'єднання",
"cancel": "Скасувати",
"city": "Місто",
"confirm": "Підтвердити",
"country": "Країна",
"edit": "Редагувати",
"editSecurity": "Редагувати налаштування безпеки",
"enableTLS": "Увімкнути TLS",

View File

@ -66,7 +66,9 @@
"form": {
"allowInsecure": "Cho phép không an toàn",
"cancel": "Hủy",
"city": "Thành phố",
"confirm": "Xác nhận",
"country": "Quốc gia",
"edit": "Chỉnh sửa",
"editSecurity": "Chỉnh sửa cấu hình bảo mật",
"enableTLS": "Kích hoạt TLS",

View File

@ -66,7 +66,9 @@
"form": {
"allowInsecure": "允许不安全",
"cancel": "取消",
"city": "城市",
"confirm": "确认",
"country": "国家",
"edit": "编辑",
"editSecurity": "编辑安全性配置",
"enableTLS": "启用TLS",

View File

@ -66,7 +66,9 @@
"form": {
"allowInsecure": "允許不安全",
"cancel": "取消",
"city": "城市",
"confirm": "確認",
"country": "國家",
"edit": "編輯",
"editSecurity": "編輯安全性配置",
"enableTLS": "啟用TLS",

View File

@ -1,5 +1,5 @@
// @ts-ignore
// API 更新时间:
// API 唯一标识:
import * as announcement from './announcement';