feat(group): add node group management UI
Add node group management interface with automatic user assignment and traffic-based grouping. Features: - Node group CRUD with traffic range configuration - Three grouping modes: average, subscription-based, and traffic-based - Group recalculation with preview and history tracking - Subscribe-to-group mapping management - User subscription group locking - Group calculation history with detailed reports - Multi-language support (en-US, zh-CN) - Enhanced node and subscription forms with group selection
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
"accountEnable": "Account Enable",
|
||||
"add": "Add",
|
||||
"administrator": "Administrator",
|
||||
"all": "All",
|
||||
"areaCodePlaceholder": "Area code",
|
||||
"authMethodsTitle": "Auth Methods",
|
||||
"avatar": "Avatar",
|
||||
@@ -17,6 +18,9 @@
|
||||
"confirm": "Confirm",
|
||||
"confirmDelete": "Confirm Delete",
|
||||
"confirmOffline": "Confirm Offline",
|
||||
"confirmResetToken": "Confirm Reset Subscription Address",
|
||||
"confirmResumeSubscribe": "Confirm Resume Subscription",
|
||||
"confirmStopSubscribe": "Confirm Stop Subscription",
|
||||
"copySubscription": "Copy Subscription",
|
||||
"copySuccess": "Copied successfully",
|
||||
"create": "Create",
|
||||
@@ -29,12 +33,14 @@
|
||||
"deleteDescription": "This action cannot be undone.",
|
||||
"deleteSubscriptionDescription": "This action cannot be undone.",
|
||||
"deleteSuccess": "Deleted successfully",
|
||||
"isDeleted": "Status",
|
||||
"deviceLimit": "Device Limit",
|
||||
"download": "Download",
|
||||
"downloadTraffic": "Download Traffic",
|
||||
"edit": "Edit",
|
||||
"editGroup": "Edit Group",
|
||||
"editSubscription": "Edit Subscription",
|
||||
"editUserGroup": "Edit User Group",
|
||||
"editUserGroupDescription": "Edit user group assignment and lock status",
|
||||
"enable": "Enable",
|
||||
"expiredAt": "Expired At",
|
||||
"expireTime": "expireTime",
|
||||
@@ -44,6 +50,7 @@
|
||||
"invalidEmailFormat": "Invalid email format",
|
||||
"inviteCode": "Invite Code",
|
||||
"inviteCodePlaceholder": "Enter invite code",
|
||||
"isDeleted": "Status",
|
||||
"kickOfflineConfirm": "kickOfflineConfirm",
|
||||
"kickOfflineSuccess": "Device kicked offline",
|
||||
"lastSeen": "Last Seen",
|
||||
@@ -73,37 +80,29 @@
|
||||
"referrerUserId": "Referrer User ID",
|
||||
"remove": "Remove",
|
||||
"resetLogs": "Reset Logs",
|
||||
"resetTraffic": "Reset Traffic",
|
||||
"toggleStatus": "Toggle Status",
|
||||
"resetSubscriptionToken": "Reset Token",
|
||||
"resetSubscriptionTokenDescription": "This will reset the subscription token. Old links will become invalid.",
|
||||
"resetSubscriptionTraffic": "Reset Traffic",
|
||||
"resetSubscriptionTrafficDescription": "This will reset the subscription traffic counters.",
|
||||
"toggleSubscriptionStatus": "Toggle Status",
|
||||
"toggleSubscriptionStatusDescription": "This will toggle the subscription status.",
|
||||
"resetTime": "Reset Time",
|
||||
"resetToken": "Reset Subscription Address",
|
||||
"saving": "Saving...",
|
||||
"resetTokenDescription": "This will reset the subscription address and regenerate a new token.",
|
||||
"resetTokenSuccess": "Subscription address reset successfully",
|
||||
"confirmResetToken": "Confirm Reset Subscription Address",
|
||||
"resumeSubscribe": "Resume Subscription",
|
||||
"selectGroup": "Select a group",
|
||||
"resumeSubscribeDescription": "This will resume the subscription and allow the user to use it.",
|
||||
"resumeSubscribeSuccess": "Subscription resumed successfully",
|
||||
"save": "Save",
|
||||
"shortCode": "Short Code",
|
||||
"speedLimit": "Speed Limit",
|
||||
"startTime": "startTime",
|
||||
"status": "Status",
|
||||
"statusActive": "Active",
|
||||
"statusDeducted": "Deducted",
|
||||
"statusExpired": "Expired",
|
||||
"statusFinished": "Finished",
|
||||
"statusPending": "Pending",
|
||||
"statusStopped": "Stopped",
|
||||
"stopSubscribe": "Stop Subscription",
|
||||
"stopSubscribeDescription": "This will stop the subscription temporarily. User will not be able to use it.",
|
||||
"stopSubscribeSuccess": "Subscription stopped successfully",
|
||||
"confirmStopSubscribe": "Confirm Stop Subscription",
|
||||
"resumeSubscribe": "Resume Subscription",
|
||||
"resumeSubscribeDescription": "This will resume the subscription and allow the user to use it.",
|
||||
"resumeSubscribeSuccess": "Subscription resumed successfully",
|
||||
"confirmResumeSubscribe": "Confirm Resume Subscription",
|
||||
"status": "Status",
|
||||
"statusPending": "Pending",
|
||||
"statusActive": "Active",
|
||||
"statusFinished": "Finished",
|
||||
"statusExpired": "Expired",
|
||||
"statusDeducted": "Deducted",
|
||||
"statusStopped": "Stopped",
|
||||
"save": "Save",
|
||||
"speedLimit": "Speed Limit",
|
||||
"startTime": "startTime",
|
||||
"subscription": "Subscription",
|
||||
"subscriptionId": "subscriptionId",
|
||||
"subscriptionInfo": "subscriptionInfo",
|
||||
@@ -119,11 +118,13 @@
|
||||
"trafficDetails": "Traffic Details",
|
||||
"trafficLimit": "Traffic Limit",
|
||||
"trafficStats": "Traffic Stats",
|
||||
"trafficUsage": "trafficUsage",
|
||||
"trafficUsage": "Traffic Usage",
|
||||
"remainingTraffic": "Remaining Traffic",
|
||||
"unlimited": "unlimited",
|
||||
"unverified": "Unverified",
|
||||
"update": "Update",
|
||||
"updateSuccess": "Updated successfully",
|
||||
"groupUpdated": "Group updated successfully",
|
||||
"upload": "Upload",
|
||||
"uploadTraffic": "Upload Traffic",
|
||||
"userAgent": "User Agent",
|
||||
@@ -134,5 +135,17 @@
|
||||
"userList": "User List",
|
||||
"userName": "Username",
|
||||
"userProfile": "User Profile",
|
||||
"verified": "Verified"
|
||||
"userGroup": "User Group",
|
||||
"verified": "Verified",
|
||||
"locked": "Locked",
|
||||
"lockGroup": "Lock Group",
|
||||
"lockGroupDescription": "Prevent automatic grouping from changing this user's group",
|
||||
"groupLocked": "Group Locked",
|
||||
"previewNodes": "Preview Nodes",
|
||||
"availableNodes": "Available Nodes",
|
||||
"name": "Name",
|
||||
"address": "Address",
|
||||
"noNodesAvailable": "No nodes available",
|
||||
"nodeGroup": "Node Group",
|
||||
"publicNodes": "Public Nodes"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user