mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-08-26 13:07:14 +00:00
feat(groups): reset group traffic without touching client counters
The group page shows traffic counting per group, but the only reset available zeroed every member client's up/down counters (and their quotas) via bulkResetTraffic. Group traffic is a derived sum of client traffic, so zeroing the group display previously required mutating the clients themselves. Add a display-only baseline: ClientGroup gains reset_up/reset_down columns (additive, handled by AutoMigrate). ResetGroupTraffic snapshots the group's current up/down sum into the baseline, and ListGroups now reports max(0, sum - baseline). Client counters are left untouched and no Xray restart is triggered. A new POST /panel/api/clients/groups/ resetTraffic endpoint drives it, creating the client_groups row when the group exists only as a derived label. The groups page action now calls the new endpoint; confirm/success strings updated across all 13 locales to reflect group-only semantics.
This commit is contained in:
@@ -934,8 +934,8 @@
|
||||
"deleteSuccess": "تم مسح المجموعة من {count} عميل.",
|
||||
"resetTraffic": "إعادة تعيين حركة المرور",
|
||||
"resetConfirmTitle": "إعادة تعيين حركة المرور للمجموعة {name}؟",
|
||||
"resetConfirmContent": "يصفر up/down لجميع {count} عميل في هذه المجموعة.",
|
||||
"resetSuccess": "تمت إعادة تعيين حركة المرور لـ {count} عميل.",
|
||||
"resetConfirmContent": "يعيد تعيين عداد حركة مرور المجموعة فقط؛ ولا تتأثر عدادات العملاء الفرديين.",
|
||||
"resetSuccess": "تمت إعادة تعيين حركة مرور المجموعة {name}.",
|
||||
"adjustSuccess": "تم ضبط {count} عميل في {name}.",
|
||||
"emptyForAction": "هذه المجموعة فارغة.",
|
||||
"deleteGroupOnly": "حذف المجموعة (مع الاحتفاظ بالعملاء)",
|
||||
|
||||
@@ -937,8 +937,8 @@
|
||||
"deleteSuccess": "Cleared group from {count} client(s).",
|
||||
"resetTraffic": "Reset traffic",
|
||||
"resetConfirmTitle": "Reset traffic for group {name}?",
|
||||
"resetConfirmContent": "This zeros up/down for all {count} client(s) in this group.",
|
||||
"resetSuccess": "Reset traffic for {count} client(s).",
|
||||
"resetConfirmContent": "This resets only the group's traffic counter. Individual client counters are not affected.",
|
||||
"resetSuccess": "Group {name} traffic reset.",
|
||||
"adjustSuccess": "Adjusted {count} client(s) in {name}.",
|
||||
"emptyForAction": "This group has no clients yet.",
|
||||
"deleteGroupOnly": "Delete group (keep clients)",
|
||||
|
||||
@@ -934,8 +934,8 @@
|
||||
"deleteSuccess": "Grupo limpiado de {count} cliente(s).",
|
||||
"resetTraffic": "Restablecer tráfico",
|
||||
"resetConfirmTitle": "¿Restablecer tráfico del grupo {name}?",
|
||||
"resetConfirmContent": "Esto pone a cero up/down para los {count} cliente(s) de este grupo.",
|
||||
"resetSuccess": "Tráfico restablecido en {count} cliente(s).",
|
||||
"resetConfirmContent": "Esto restablece solo el contador de tráfico del grupo. Los contadores de cada cliente no se ven afectados.",
|
||||
"resetSuccess": "Tráfico del grupo {name} restablecido.",
|
||||
"adjustSuccess": "Ajustados {count} cliente(s) en {name}.",
|
||||
"emptyForAction": "Este grupo aún no tiene clientes.",
|
||||
"deleteGroupOnly": "Eliminar grupo (conservar clientes)",
|
||||
|
||||
@@ -934,8 +934,8 @@
|
||||
"deleteSuccess": "گروه از {count} کاربر پاک شد.",
|
||||
"resetTraffic": "بازنشانی ترافیک",
|
||||
"resetConfirmTitle": "بازنشانی ترافیک گروه {name}؟",
|
||||
"resetConfirmContent": "این عمل آپلود/دانلود تمام {count} کاربر این گروه را صفر میکند.",
|
||||
"resetSuccess": "ترافیک {count} کاربر بازنشانی شد.",
|
||||
"resetConfirmContent": "این فقط شمارندهی ترافیک گروه را صفر میکند؛ شمارندهی تکتک کاربران دستنخورده میماند.",
|
||||
"resetSuccess": "ترافیک گروه {name} صفر شد.",
|
||||
"adjustSuccess": "{count} کاربر در {name} تنظیم شد.",
|
||||
"emptyForAction": "این گروه هنوز کاربری ندارد.",
|
||||
"deleteGroupOnly": "حذف گروه (نگه داشتن کاربران)",
|
||||
|
||||
@@ -934,8 +934,8 @@
|
||||
"deleteSuccess": "Grup dihapus dari {count} klien.",
|
||||
"resetTraffic": "Reset trafik",
|
||||
"resetConfirmTitle": "Reset trafik grup {name}?",
|
||||
"resetConfirmContent": "Ini mengatur ulang up/down ke 0 untuk semua {count} klien di grup ini.",
|
||||
"resetSuccess": "Trafik direset untuk {count} klien.",
|
||||
"resetConfirmContent": "Ini hanya mengatur ulang penghitung trafik grup. Penghitung tiap klien tidak terpengaruh.",
|
||||
"resetSuccess": "Trafik grup {name} direset.",
|
||||
"adjustSuccess": "{count} klien di {name} disesuaikan.",
|
||||
"emptyForAction": "Grup ini belum memiliki klien.",
|
||||
"deleteGroupOnly": "Hapus grup (pertahankan klien)",
|
||||
|
||||
@@ -934,8 +934,8 @@
|
||||
"deleteSuccess": "{count} クライアントのグループをクリアしました。",
|
||||
"resetTraffic": "トラフィックをリセット",
|
||||
"resetConfirmTitle": "グループ {name} のトラフィックをリセット?",
|
||||
"resetConfirmContent": "このグループ内のすべての {count} クライアントの up/down をゼロにします。",
|
||||
"resetSuccess": "{count} クライアントのトラフィックをリセットしました。",
|
||||
"resetConfirmContent": "グループのトラフィックカウンターのみをリセットします。個々のクライアントのカウンターには影響しません。",
|
||||
"resetSuccess": "グループ {name} のトラフィックをリセットしました。",
|
||||
"adjustSuccess": "{name} 内の {count} クライアントを調整しました。",
|
||||
"emptyForAction": "このグループにはまだクライアントがありません。",
|
||||
"deleteGroupOnly": "グループ削除 (クライアントは保持)",
|
||||
|
||||
@@ -934,8 +934,8 @@
|
||||
"deleteSuccess": "Grupo limpo de {count} cliente(s).",
|
||||
"resetTraffic": "Redefinir tráfego",
|
||||
"resetConfirmTitle": "Redefinir tráfego do grupo {name}?",
|
||||
"resetConfirmContent": "Isso zera up/down para todos os {count} cliente(s) deste grupo.",
|
||||
"resetSuccess": "Tráfego redefinido para {count} cliente(s).",
|
||||
"resetConfirmContent": "Isso redefine apenas o contador de tráfego do grupo. Os contadores de cada cliente não são afetados.",
|
||||
"resetSuccess": "Tráfego do grupo {name} redefinido.",
|
||||
"adjustSuccess": "Ajustados {count} cliente(s) em {name}.",
|
||||
"emptyForAction": "Este grupo ainda não tem clientes.",
|
||||
"deleteGroupOnly": "Excluir grupo (manter clientes)",
|
||||
|
||||
@@ -934,8 +934,8 @@
|
||||
"deleteSuccess": "Группа очищена у {count} клиент(ов).",
|
||||
"resetTraffic": "Сбросить трафик",
|
||||
"resetConfirmTitle": "Сбросить трафик группы {name}?",
|
||||
"resetConfirmContent": "Это обнулит up/down для всех {count} клиент(ов) в этой группе.",
|
||||
"resetSuccess": "Сброшен трафик у {count} клиент(ов).",
|
||||
"resetConfirmContent": "Это сбросит только счётчик трафика группы. Счётчики отдельных клиентов не затрагиваются.",
|
||||
"resetSuccess": "Трафик группы {name} сброшен.",
|
||||
"adjustSuccess": "Скорректировано {count} клиент(ов) в {name}.",
|
||||
"emptyForAction": "В этой группе пока нет клиентов.",
|
||||
"deleteGroupOnly": "Удалить группу (сохранить клиентов)",
|
||||
|
||||
@@ -934,8 +934,8 @@
|
||||
"deleteSuccess": "{count} kullanıcının grubu temizlendi.",
|
||||
"resetTraffic": "Trafiği Sıfırla",
|
||||
"resetConfirmTitle": "{name} Grubunun Trafiğini Sıfırla?",
|
||||
"resetConfirmContent": "Bu, bu gruptaki tüm {count} kullanıcının yukarı/aşağı trafiğini sıfırlar.",
|
||||
"resetSuccess": "{count} kullanıcının trafiği sıfırlandı.",
|
||||
"resetConfirmContent": "Bu yalnızca grubun trafik sayacını sıfırlar. Tek tek kullanıcı sayaçları etkilenmez.",
|
||||
"resetSuccess": "{name} grubunun trafiği sıfırlandı.",
|
||||
"adjustSuccess": "{name} içinde {count} kullanıcı ayarlandı.",
|
||||
"emptyForAction": "Bu grupta henüz kullanıcı yok.",
|
||||
"deleteGroupOnly": "Grubu Sil (Kullanıcıları Tut)",
|
||||
|
||||
@@ -934,8 +934,8 @@
|
||||
"deleteSuccess": "Групу очищено у {count} клієнт(ів).",
|
||||
"resetTraffic": "Скинути трафік",
|
||||
"resetConfirmTitle": "Скинути трафік групи {name}?",
|
||||
"resetConfirmContent": "Це обнулить up/down для всіх {count} клієнт(ів) у цій групі.",
|
||||
"resetSuccess": "Скинуто трафік у {count} клієнт(ів).",
|
||||
"resetConfirmContent": "Це скине лише лічильник трафіку групи. Лічильники окремих клієнтів не змінюються.",
|
||||
"resetSuccess": "Трафік групи {name} скинуто.",
|
||||
"adjustSuccess": "Скориговано {count} клієнт(ів) у {name}.",
|
||||
"emptyForAction": "У цій групі ще немає клієнтів.",
|
||||
"deleteGroupOnly": "Видалити групу (зберегти клієнтів)",
|
||||
|
||||
@@ -934,8 +934,8 @@
|
||||
"deleteSuccess": "Đã xóa nhóm khỏi {count} client.",
|
||||
"resetTraffic": "Đặt lại lưu lượng",
|
||||
"resetConfirmTitle": "Đặt lại lưu lượng nhóm {name}?",
|
||||
"resetConfirmContent": "Việc này đưa up/down về 0 cho tất cả {count} client trong nhóm.",
|
||||
"resetSuccess": "Đã đặt lại lưu lượng cho {count} client.",
|
||||
"resetConfirmContent": "Việc này chỉ đặt lại bộ đếm lưu lượng của nhóm. Bộ đếm của từng client không bị ảnh hưởng.",
|
||||
"resetSuccess": "Đã đặt lại lưu lượng nhóm {name}.",
|
||||
"adjustSuccess": "Đã điều chỉnh {count} client trong {name}.",
|
||||
"emptyForAction": "Nhóm này chưa có client.",
|
||||
"deleteGroupOnly": "Xóa nhóm (giữ client)",
|
||||
|
||||
@@ -934,8 +934,8 @@
|
||||
"deleteSuccess": "已清除 {count} 个客户端的分组。",
|
||||
"resetTraffic": "重置流量",
|
||||
"resetConfirmTitle": "重置分组 {name} 的流量?",
|
||||
"resetConfirmContent": "这将清零此分组中所有 {count} 个客户端的上行/下行流量。",
|
||||
"resetSuccess": "已重置 {count} 个客户端的流量。",
|
||||
"resetConfirmContent": "这只会清零该分组的流量计数器,不影响各个客户端的计数器。",
|
||||
"resetSuccess": "已重置分组 {name} 的流量。",
|
||||
"adjustSuccess": "已调整 {name} 中的 {count} 个客户端。",
|
||||
"emptyForAction": "此分组尚无客户端。",
|
||||
"deleteGroupOnly": "删除分组(保留客户端)",
|
||||
|
||||
@@ -934,8 +934,8 @@
|
||||
"deleteSuccess": "已清除 {count} 個客戶端的群組。",
|
||||
"resetTraffic": "重置流量",
|
||||
"resetConfirmTitle": "重置群組 {name} 的流量?",
|
||||
"resetConfirmContent": "這將將此群組中所有 {count} 個客戶端的上行/下行流量歸零。",
|
||||
"resetSuccess": "已重置 {count} 個客戶端的流量。",
|
||||
"resetConfirmContent": "這只會將此群組的流量計數器歸零,不影響各個客戶端的計數器。",
|
||||
"resetSuccess": "已重置群組 {name} 的流量。",
|
||||
"adjustSuccess": "已調整 {name} 中的 {count} 個客戶端。",
|
||||
"emptyForAction": "此群組尚無客戶端。",
|
||||
"deleteGroupOnly": "刪除群組(保留客戶端)",
|
||||
|
||||
Reference in New Issue
Block a user