From d4c3ab5ddff9be472fddc999052759b1893ddaba Mon Sep 17 00:00:00 2001 From: enisn Date: Thu, 26 Sep 2024 11:38:57 +0300 Subject: [PATCH] Add filtering logic to permissions --- .../PermissionManagementModal.cshtml | 5 +- .../permission-management-modal.js | 52 +++++++++++++++++++ 2 files changed, 55 insertions(+), 2 deletions(-) diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/PermissionManagementModal.cshtml b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/PermissionManagementModal.cshtml index b840ab595e..387f4ff647 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/PermissionManagementModal.cshtml +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/PermissionManagementModal.cshtml @@ -23,7 +23,7 @@
-
@@ -42,7 +42,7 @@ @for (var i = 0; i < Model.Groups.Count; i++) { var group = Model.Groups[i]; - +
diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/permission-management-modal.js b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/permission-management-modal.js index 298ad3791f..759ee82922 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/permission-management-modal.js +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/permission-management-modal.js @@ -286,6 +286,58 @@ var abp = abp || {}; }); } + $permissionSearchInput = $('#permission-search'); + + $permissionSearchInput.keyup(throttle(function() { + var value = $permissionSearchInput.val().toLowerCase(); + filterTabs(value); + }, 300)); + + function filterTabs(value) { + var $tabs = $('#PermissionsTabs .nav-link'); + $tabs.each(function(i) { + var $tabItem = $(this); + var $tab = $tabItem.parent(); + + if (!value) { + $tab.show(); + return; + } + + var tabName = $tabItem.find('small').text().toLowerCase(); + + var tabContentFilters = $($tabItem.attr('href')).find('[data-filter-text]'); + let includedInTabContent = false; + tabContentFilters.each(function(i) { + var permissionName = $(this).attr('data-filter-text').toLowerCase(); + includedInTabContent = permissionName.includes(value); + if (includedInTabContent === true) { + return false; + } + }); + + if(includedInTabContent || tabName.includes(value)) { + $tab.show(); + } else { + $tab.hide(); + } + }); + } + + function throttle(mainFunction, delay) { + let timerFlag = null; // Variable to keep track of the timer + + // Returning a throttled version + return (...args) => { + if (timerFlag === null) { // If there is no timer currently running + mainFunction(...args); // Execute the main function + timerFlag = setTimeout(() => { // Set a timer to clear the timerFlag after the specified delay + timerFlag = null; // Clear the timerFlag to allow the main function to be executed again + }, delay); + } + }; + } + }; }; })(jQuery);