Skip to content

Commit 98a9212

Browse files
committed
feat(bulk-operations): implement bulk operation flow with UI components for applying data limits, expiration dates, and group assignments
1 parent 860e811 commit 98a9212

15 files changed

+1341
-1343
lines changed

dashboard/public/statics/locales/en.json

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1695,7 +1695,7 @@
16951695
"flowMethod": "Flow: {{flow}} | Method: {{method}}",
16961696
"expireDate": "Expire date",
16971697
"dataLimit": "Data limit",
1698-
"groupsDesc": "Manage group assignments for multiple users and admins at once. Add or remove groups in bulk.",
1698+
"groupsDesc": "Select groups to apply",
16991699
"expireDateDesc": "Select the expiration date to apply",
17001700
"applyToExpireDesc": "Select the groups, users, or admins you want to apply expiration date to",
17011701
"noDateSelected": "No date selected",
@@ -1713,6 +1713,7 @@
17131713
"dataLimitLabel": "Data Limit (GB)",
17141714
"dataLimitPlaceholder": "Enter data limit in GB",
17151715
"dataLimitRequired": "Please enter a valid data limit.",
1716+
"expireAmountRequired": "Please enter a valid amount.",
17161717
"applyDataLimit": "Apply Data Limit",
17171718
"applyDataLimitDescription": "Apply the selected data limit to the selected groups, users, and admins.",
17181719
"confirmApplyDataLimitTitle": "Confirm Apply Data Limit",
@@ -1737,10 +1738,46 @@
17371738
"confirmApplyExpireDescriptionAll": "Are you sure you want to apply the expiration date {{expireDate}} to ALL users, admins, and groups? This will update the expiration date for everyone.",
17381739
"confirmApplyExpireDescription": "Are you sure you want to apply the expiration date {{expireDate}} to {{totalTargets}} target(s)? This will update the expiration date for all selected groups, users, and admins.",
17391740
"confirmApplyDataLimitDescriptionAll": "Are you sure you want to apply the data limit of {{dataLimit}} GB to ALL users, admins, and groups? This will update the data limit for everyone.",
1741+
"configureSettings": "Configure Settings",
1742+
"configureSettingsDesc": "Set up the parameters for your bulk operation",
1743+
"selectTargets": "Select Targets",
1744+
"selectTargetsDesc": "Choose who to apply the operation to",
1745+
"reviewAndApply": "Review & Apply",
1746+
"reviewAndApplyDesc": "Review your settings and apply the bulk operation",
1747+
"operationSummary": "Operation Summary",
1748+
"settings": "Settings",
1749+
"targets": "Targets",
1750+
"allTargets": "All users, admins, and groups",
1751+
"warning": "Warning",
1752+
"applyToAllWarning": "This operation will apply to ALL users, admins, and groups in the system.",
1753+
"noSelectionInfo": "No targets selected. This operation will apply to ALL users, admins, and groups in the system.",
1754+
"applyOperation": "Apply Operation",
1755+
"confirmOperation": "Confirm Operation",
1756+
"confirmApplyAll": "Are you sure you want to apply this operation to ALL users, admins, and groups?",
1757+
"confirmApplyTargets": "Are you sure you want to apply this operation to {{count}} target(s)?",
1758+
"selectHasGroups": "Select Has Groups",
1759+
"searchHasGroups": "Search has groups...",
1760+
"searchGroups": "Search groups...",
1761+
"searchUsers": "Search users...",
1762+
"searchAdmins": "Search admins...",
1763+
"selectGroups": "Select Groups",
1764+
"selectUsers": "Select Users",
1765+
"selectAdmins": "Select Admins",
1766+
"groupsToAdd": "Groups to Add",
1767+
"groupsToRemove": "Groups to Remove",
1768+
"addGroupsInfoStep2": "Groups selected in Step 1 will be added to the selected users",
1769+
"removeGroupsInfoStep2": "Groups selected in Step 1 will be removed from users. Select groups in \"Has Groups\" to filter which users are affected",
1770+
"removeGroupsHint": "Select at least one group in \"Has Groups\" to filter users",
1771+
"hasGroupsDescription": "Users must have these groups to be affected",
1772+
"hasGroupsDescriptionAdd": "Filter users who have these groups",
1773+
"hasGroups": "Has Groups",
1774+
"selected": "selected",
17401775
"confirmApplyProxyDescriptionAll": "Are you sure you want to apply the proxy settings to ALL users, admins, and groups? This will update the proxy settings for everyone.",
17411776
"confirmApplyGroupsDescriptionAll": "Are you sure you want to apply the group changes to ALL users, admins, and groups? This will update the groups for everyone.",
17421777
"confirmApplyGroupsDescription": "Are you sure you want to apply the group changes to {{totalTargets}} target(s)? This will update the groups for all selected users and admins.",
1743-
"expire.placeholder": "Enter expire date"
1778+
"expire": {
1779+
"placeholder": "Enter expire date"
1780+
}
17441781
},
17451782
"operationSuccess": "Operation successful!",
17461783
"operationFailed": "Operation failed!",

dashboard/public/statics/locales/fa.json

Lines changed: 58 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1635,7 +1635,7 @@
16351635
"flowMethod": "جریان: {{flow}} | روش: {{method}}",
16361636
"expireDate": "تاریخ انقضا",
16371637
"dataLimit": "محدودیت حجم",
1638-
"groupsDesc": "مدیریت تخصیص گروه‌ها برای چندین کاربر و مدیر به طور همزمان. افزودن یا حذف گروه‌ها به صورت گروهی.",
1638+
"groupsDesc": "انتخاب گروه‌ها برای اعمال",
16391639
"expireDateDesc": "تاریخ انقضا را برای اعمال انتخاب کنید",
16401640
"applyToExpireDesc": "گروه‌ها، کاربران یا مدیرانی که می‌خواهید تاریخ انقضا را اعمال کنید انتخاب کنید",
16411641
"noDateSelected": "تاریخی انتخاب نشده است",
@@ -1650,6 +1650,51 @@
16501650
"subtractDataLimit": "کاهش محدودیت حجم",
16511651
"applyToDataLimitDesc": "گروه‌ها، کاربران یا مدیرانی که می‌خواهید محدودیت حجم را اعمال کنید انتخاب کنید",
16521652
"noLimitSet": "محدودیتی تنظیم نشده است",
1653+
"dataLimitLabel": "محدودیت حجم (گیگابایت)",
1654+
"dataLimitPlaceholder": "محدودیت حجم را به گیگابایت وارد کنید",
1655+
"dataLimitRequired": "لطفاً محدودیت حجم معتبر وارد کنید.",
1656+
"expireAmountRequired": "لطفاً مقدار معتبر وارد کنید.",
1657+
"applyDataLimit": "اعمال محدودیت حجم",
1658+
"applyDataLimitDescription": "اعمال محدودیت حجم انتخاب شده به گروه‌ها، کاربران و مدیران انتخاب شده.",
1659+
"confirmApplyDataLimitTitle": "تایید اعمال محدودیت حجم",
1660+
"confirmApplyDataLimitDescription": "آیا مطمئن هستید که می‌خواهید محدودیت حجم {{dataLimit}} گیگابایت را به {{totalTargets}} هدف اعمال کنید؟ این عمل محدودیت حجم را برای همه گروه‌ها، کاربران و مدیران انتخاب شده به‌روزرسانی خواهد کرد.",
1661+
"insertDataLimitPlaceholder": "محدودیت حجم را وارد کنید",
1662+
"flowLabel": "جریان",
1663+
"methodLabel": "روش",
1664+
"selectFlowPlaceholder": "انتخاب جریان",
1665+
"selectMethodPlaceholder": "انتخاب روش",
1666+
"proxySettingsRequired": "لطفاً حداقل یکی از تنظیمات پروکسی را انتخاب کنید (جریان یا روش).",
1667+
"applyProxySettings": "اعمال تنظیمات پروکسی",
1668+
"applyProxyDescription": "اعمال تنظیمات پروکسی انتخاب شده به گروه‌ها، کاربران و مدیران انتخاب شده.",
1669+
"confirmApplyProxyTitle": "تایید اعمال تنظیمات پروکسی",
1670+
"confirmApplyProxyDescription": "آیا مطمئن هستید که می‌خواهید تنظیمات پروکسی را به {{totalTargets}} هدف اعمال کنید؟ این عمل تنظیمات پروکسی را برای همه گروه‌ها، کاربران و مدیران انتخاب شده به‌روزرسانی خواهد کرد.",
1671+
"noTargetsSelected": "لطفاً حداقل یک هدف انتخاب کنید.",
1672+
"selectedCount": "{{count}} انتخاب شده",
1673+
"groupsDescShort": "گروه‌هایی که می‌خواهید اعمال کنید را انتخاب کنید",
1674+
"groupsCount": "{{count}} گروه",
1675+
"targetsCount": "{{count}} هدف",
1676+
"applyTo": "اعمال به",
1677+
"applyToDesc": "کاربر یا مدیری که می‌خواهید تنظیمات را اعمال کنید انتخاب کنید",
1678+
"confirmApplyExpireDescriptionAll": "آیا مطمئن هستید که می‌خواهید تاریخ انقضا {{expireDate}} را به همه کاربران، مدیران و گروه‌ها اعمال کنید؟ این عمل تاریخ انقضا را برای همه به‌روزرسانی خواهد کرد.",
1679+
"confirmApplyExpireDescription": "آیا مطمئن هستید که می‌خواهید تاریخ انقضا {{expireDate}} را به {{totalTargets}} هدف اعمال کنید؟ این عمل تاریخ انقضا را برای همه گروه‌ها، کاربران و مدیران انتخاب شده به‌روزرسانی خواهد کرد.",
1680+
"confirmApplyDataLimitDescriptionAll": "آیا مطمئن هستید که می‌خواهید محدودیت حجم {{dataLimit}} گیگابایت را به همه کاربران، مدیران و گروه‌ها اعمال کنید؟ این عمل محدودیت حجم را برای همه به‌روزرسانی خواهد کرد.",
1681+
"configureSettings": "پیکربندی تنظیمات",
1682+
"configureSettingsDesc": "پارامترهای عملیات گروهی خود را تنظیم کنید",
1683+
"selectTargets": "انتخاب اهداف",
1684+
"selectTargetsDesc": "انتخاب کنید که عملیات را به چه کسانی اعمال کنید",
1685+
"reviewAndApply": "بررسی و اعمال",
1686+
"reviewAndApplyDesc": "تنظیمات خود را بررسی کنید و عملیات گروهی را اعمال کنید",
1687+
"operationSummary": "خلاصه عملیات",
1688+
"settings": "تنظیمات",
1689+
"targets": "اهداف",
1690+
"allTargets": "همه کاربران، مدیران و گروه‌ها",
1691+
"warning": "هشدار",
1692+
"applyToAllWarning": "این عملیات به همه کاربران، مدیران و گروه‌های سیستم اعمال خواهد شد.",
1693+
"noSelectionInfo": "هیچ هدفی انتخاب نشده است. این عملیات به همه کاربران، مدیران و گروه‌های سیستم اعمال خواهد شد.",
1694+
"applyOperation": "اعمال عملیات",
1695+
"confirmOperation": "تایید عملیات",
1696+
"confirmApplyAll": "آیا مطمئن هستید که می‌خواهید این عملیات را به همه کاربران، مدیران و گروه‌ها اعمال کنید؟",
1697+
"confirmApplyTargets": "آیا مطمئن هستید که می‌خواهید این عملیات را به {{count}} هدف اعمال کنید؟",
16531698
"selectFlow": "انتخاب جریان",
16541699
"selectMethod": "انتخاب روش",
16551700
"applyChanges": "اعمال تغییرات",
@@ -1671,43 +1716,28 @@
16711716
"selectHasGroups": "انتخاب گروه‌های موجود",
16721717
"selectUsers": "انتخاب کاربران",
16731718
"selectAdmins": "انتخاب مدیران",
1719+
"groupsToAdd": "گروه‌های افزودنی",
1720+
"groupsToRemove": "گروه‌های حذفی",
1721+
"addGroupsInfoStep2": "گروه‌های انتخاب شده در مرحله 1 به کاربران انتخاب شده اضافه خواهند شد",
1722+
"removeGroupsInfoStep2": "گروه‌های انتخاب شده در مرحله 1 از کاربران حذف خواهند شد. گروه‌ها را در \"گروه‌های موجود\" انتخاب کنید تا کاربران تحت تأثیر فیلتر شوند",
1723+
"removeGroupsHint": "حداقل یک گروه در \"گروه‌های موجود\" انتخاب کنید تا کاربران را فیلتر کنید",
1724+
"hasGroupsDescription": "کاربران باید این گروه‌ها را داشته باشند تا تحت تأثیر قرار گیرند",
1725+
"hasGroupsDescriptionAdd": "فیلتر کردن کاربرانی که این گروه‌ها را دارند",
1726+
"hasGroups": "گروه‌های موجود",
1727+
"selected": "انتخاب شده",
16741728
"expireDateLabel": "تاریخ انقضا",
16751729
"expireDateRequired": "لطفاً تاریخ انقضا را انتخاب کنید.",
16761730
"selectExpireDate": "انتخاب تاریخ انقضا",
16771731
"applyExpireDate": "اعمال تاریخ انقضا",
16781732
"applyExpireDescription": "اعمال تاریخ انقضای انتخاب شده به گروه‌ها، کاربران و مدیران انتخاب شده.",
16791733
"confirmApplyExpireTitle": "تایید اعمال تاریخ انقضا",
1680-
"confirmApplyExpireDescription": "آیا مطمئن هستید که می‌خواهید تاریخ انقضا {{expireDate}} را برای {{totalTargets}} مورد انتخابی اعمال کنید؟ این کار تاریخ انقضا را برای همه گروه‌ها، کاربران و مدیران انتخاب‌شده به‌روزرسانی می‌کند.",
1681-
"confirmApplyExpireDescriptionAll": "آیا مطمئن هستید که می‌خواهید تاریخ انقضا {{expireDate}} را برای همه کاربران، مدیران و گروه‌ها اعمال کنید؟ این کار تاریخ انقضا را برای همه به‌روزرسانی می‌کند.",
16821734
"insertExpireDatePlaceholder": "درج تاریخ انقضا",
1683-
"dataLimitLabel": "محدودیت حجم (گیگابایت)",
1684-
"dataLimitPlaceholder": "محدودیت حجم را به گیگابایت وارد کنید",
1685-
"dataLimitRequired": "لطفاً محدودیت حجم معتبر وارد کنید.",
1686-
"applyDataLimit": "اعمال محدودیت حجم",
1687-
"applyDataLimitDescription": "اعمال محدودیت حجم انتخاب شده به گروه‌ها، کاربران و مدیران انتخاب شده.",
1688-
"confirmApplyDataLimitTitle": "تایید اعمال محدودیت حجم",
1689-
"confirmApplyDataLimitDescription": "آیا مطمئن هستید که می‌خواهید محدودیت حجم {{dataLimit}} گیگابایت را برای {{totalTargets}} مورد انتخابی اعمال کنید؟ این کار محدودیت حجم را برای همه گروه‌ها، کاربران و مدیران انتخاب‌شده به‌روزرسانی می‌کند.",
1690-
"confirmApplyDataLimitDescriptionAll": "آیا مطمئن هستید که می‌خواهید محدودیت حجم {{dataLimit}} گیگابایت را برای همه کاربران، مدیران و گروه‌ها اعمال کنید؟ این کار محدودیت حجم را برای همه به‌روزرسانی می‌کند.",
1691-
"insertDataLimitPlaceholder": "درج محدودیت حجم",
1692-
"flowLabel": "جریان",
1693-
"methodLabel": "روش",
1694-
"selectFlowPlaceholder": "انتخاب جریان",
1695-
"selectMethodPlaceholder": "انتخاب روش",
1696-
"proxySettingsRequired": "لطفاً حداقل یک تنظیم پروکسی (جریان یا روش) را انتخاب کنید.",
1697-
"applyProxySettings": "اعمال تنظیمات پروکسی",
1698-
"applyProxyDescription": "اعمال تنظیمات پروکسی انتخاب شده به گروه‌ها، کاربران و مدیران انتخاب شده.",
1699-
"confirmApplyProxyTitle": "تایید اعمال تنظیمات پروکسی",
1700-
"confirmApplyProxyDescription": "آیا مطمئن هستید که می‌خواهید تنظیمات پروکسی را برای {{totalTargets}} مورد انتخابی اعمال کنید؟ این کار تنظیمات پروکسی را برای همه گروه‌ها، کاربران و مدیران انتخاب‌شده به‌روزرسانی می‌کند.",
17011735
"confirmApplyProxyDescriptionAll": "آیا مطمئن هستید که می‌خواهید تنظیمات پروکسی را برای همه کاربران، مدیران و گروه‌ها اعمال کنید؟ این کار تنظیمات پروکسی را برای همه به‌روزرسانی می‌کند.",
1702-
"noTargetsSelected": "لطفاً حداقل یک هدف را انتخاب کنید.",
1703-
"groupsDescShort": "گروه‌هایی که می‌خواهید اعمال کنید را انتخاب کنید",
1704-
"groupsCount": "{{count}} گروه",
1705-
"targetsCount": "{{count}} هدف",
1706-
"applyTo": "اعمال به",
1707-
"applyToDesc": "کاربر یا مدیری که می‌خواهید تنظیمات را اعمال کنید انتخاب کنید",
17081736
"confirmApplyGroupsDescriptionAll": "آیا مطمئن هستید که می‌خواهید تغییرات گروه را برای همه کاربران، مدیران و گروه‌ها اعمال کنید؟ این کار گروه‌ها را برای همه به‌روزرسانی می‌کند.",
17091737
"confirmApplyGroupsDescription": "آیا مطمئن هستید که می‌خواهید تغییرات گروه را برای {{totalTargets}} مورد انتخابی اعمال کنید؟ این کار گروه‌ها را برای همه کاربران و مدیران انتخاب‌شده به‌روزرسانی می‌کند.",
1710-
"expire.placeholder": "تاریخ انقضا را وارد کنید"
1738+
"expire": {
1739+
"placeholder": "تاریخ انقضا را وارد کنید"
1740+
}
17111741
},
17121742
"operationSuccess": "عملیات موفق بود!",
17131743
"operationFailed": "عملیات ناموفق بود!",

0 commit comments

Comments
 (0)