This is an automated email from the ASF dual-hosted git repository.

ocket8888 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficcontrol.git


The following commit(s) were added to refs/heads/master by this push:
     new 4e352e82d4 Fixed server table's quick search and filter for multiple 
profiles (#7074)
4e352e82d4 is described below

commit 4e352e82d4ba69f9683cd16ad473f1bfbdc50d6d
Author: Rima Shah <[email protected]>
AuthorDate: Thu Sep 29 21:35:13 2022 -0600

    Fixed server table's quick search and filter for multiple profiles (#7074)
    
    * Fixed server quick search and filter for multiple profiles
    
    * Removed profileNames length check.
    
    * Updated based on review comments.
    
    * Added Equal and Non-Equal filter for an array object.
    
    * Changed variable to a constant.
---
 CHANGELOG.md                                       |  1 +
 .../modules/table/agGrid/CommonGridController.js   | 28 ++++++++++++++++++++++
 .../TableAssignDSServersController.js              | 10 ++++++--
 .../table/servers/TableServersController.js        | 10 ++++----
 4 files changed, 41 insertions(+), 8 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index ddea74a352..ba2506ebe1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -19,6 +19,7 @@ The format is based on [Keep a 
Changelog](http://keepachangelog.com/en/1.0.0/).
 - [#7037](https://github.com/apache/trafficcontrol/pull/7037) *Traffic Router* 
Uses Traffic Ops API 4.0 by default
 
 ### Fixed
+- [#7049](https://github.com/apache/trafficcontrol/issues/7049), 
[#7052](https://github.com/apache/trafficcontrol/issues/7052) *Traffic Portal* 
Fixed server table's quick search and filter option for multiple profiles.
 - [#7080](https://github.com/apache/trafficcontrol/issues/7080), 
[#6335](https://github.com/apache/trafficcontrol/issues/6335) *Traffic Portal* 
Fixed redirect links for server capability.
 - [#7022](https://github.com/apache/trafficcontrol/pull/7022) *Traffic Stats* 
Reuse InfluxDB client handle to prevent potential connection leaks.
 - [#7021](https://github.com/apache/trafficcontrol/issues/7021) *Cache Config* 
Fixed cache config for Delivery Services with IP Origins.
diff --git 
a/traffic_portal/app/src/common/modules/table/agGrid/CommonGridController.js 
b/traffic_portal/app/src/common/modules/table/agGrid/CommonGridController.js
index 4bedb383de..6503804661 100644
--- a/traffic_portal/app/src/common/modules/table/agGrid/CommonGridController.js
+++ b/traffic_portal/app/src/common/modules/table/agGrid/CommonGridController.js
@@ -301,6 +301,34 @@ let CommonGridController = function ($scope, $document, 
$state, userModel, dateU
                                        this.columns[i].tooltipValueGetter = 
dateCellFormatterUTC;
                                        this.columns[i].valueFormatter = 
dateCellFormatterUTC;
                                }
+                       } else if (this.columns[i].filter === 
'arrayTextColumnFilter') {
+                               this.columns[i].filter = 'agTextColumnFilter'
+                               this.columns[i].filterParams = {
+                                       textCustomComparator: (filter, value, 
filterText) => {
+                                               const filterTextLowerCase = 
filterText.toLowerCase();
+                                               const valueLowerCase = 
value.toString().toLowerCase();
+                                               const profileNameValue = 
valueLowerCase.split(",");
+                                               switch (filter) {
+                                                       case 'contains':
+                                                               return 
valueLowerCase.indexOf(filterTextLowerCase) >= 0;
+                                                       case 'notContains':
+                                                               return 
valueLowerCase.indexOf(filterTextLowerCase) === -1;
+                                                       case 'equals':
+                                                               return 
profileNameValue.includes(filterTextLowerCase);
+                                                       case 'notEqual':
+                                                               return 
!profileNameValue.includes(filterTextLowerCase);
+                                                       case 'startsWith':
+                                                               return 
valueLowerCase.indexOf(filterTextLowerCase) === 0;
+                                                       case 'endsWith':
+                                                               let index = 
valueLowerCase.lastIndexOf(filterTextLowerCase);
+                                                               return index >= 
0 && index === (valueLowerCase.length - filterTextLowerCase.length);
+                                                       default:
+                                                               // should never 
happen
+                                                               
console.warn('invalid filter type ' + filter);
+                                                               return false;
+                                               }
+                                       }
+                               }
                        }
                }
 
diff --git 
a/traffic_portal/app/src/common/modules/table/deliveryServiceServers/TableAssignDSServersController.js
 
b/traffic_portal/app/src/common/modules/table/deliveryServiceServers/TableAssignDSServersController.js
index 17097dec47..289bc89613 100644
--- 
a/traffic_portal/app/src/common/modules/table/deliveryServiceServers/TableAssignDSServersController.js
+++ 
b/traffic_portal/app/src/common/modules/table/deliveryServiceServers/TableAssignDSServersController.js
@@ -36,8 +36,14 @@ var TableAssignDSServersController = 
function(deliveryService, servers, assigned
                        field: "cachegroup",
                },
                {
-                       headerName: "Profile",
-                       field: "profile"
+                       headerName: "Profile(s)",
+                       field: "profile",
+                       valueGetter:  function(params) {
+                               return params.data.profileNames;
+                       },
+                       tooltipValueGetter: function(params) {
+                               return params.data.profileNames.join(", ");
+                       }
                }
        ];
 
diff --git 
a/traffic_portal/app/src/common/modules/table/servers/TableServersController.js 
b/traffic_portal/app/src/common/modules/table/servers/TableServersController.js
index 7c8e994195..e4c22580d3 100644
--- 
a/traffic_portal/app/src/common/modules/table/servers/TableServersController.js
+++ 
b/traffic_portal/app/src/common/modules/table/servers/TableServersController.js
@@ -166,18 +166,16 @@ var TableServersController = function(tableName, servers, 
filter, $scope, $state
                        hide: true
                },
                {
-                       headerName: "Profile",
+                       headerName: "Profile(s)",
                        field: "profileName",
                        hide: false,
                        valueGetter:  function(params) {
-                               if (params.data.profileNames.length > 1) {
-                                       return params.data.profileName + ' *';
-                               }
-                               return params.data.profileName;
+                               return params.data.profileNames;
                        },
                        tooltipValueGetter: function(params) {
                                return params.data.profileNames.join(", ");
-                       }
+                       },
+                       filter: 'arrayTextColumnFilter'
                },
                {
                        headerName: "Rack",

Reply via email to