From 80d77d5da29c7cabc4c7df1fb75b7a911b1b74a3 Mon Sep 17 00:00:00 2001 From: Rima Shah Date: Mon, 19 Sep 2022 14:02:14 -0600 Subject: [PATCH 1/5] Fixed server quick search and filter for multiple profiles --- CHANGELOG.md | 1 + .../src/common/modules/table/servers/TableServersController.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) 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/servers/TableServersController.js b/traffic_portal/app/src/common/modules/table/servers/TableServersController.js index 7c8e994195..a4d420b305 100644 --- a/traffic_portal/app/src/common/modules/table/servers/TableServersController.js +++ b/traffic_portal/app/src/common/modules/table/servers/TableServersController.js @@ -171,7 +171,7 @@ var TableServersController = function(tableName, servers, filter, $scope, $state hide: false, valueGetter: function(params) { if (params.data.profileNames.length > 1) { - return params.data.profileName + ' *'; + return params.data.profileNames; } return params.data.profileName; }, From cbca86e25070632d68466c803d533634ec180a72 Mon Sep 17 00:00:00 2001 From: Rima Shah Date: Mon, 19 Sep 2022 14:12:29 -0600 Subject: [PATCH 2/5] Removed profileNames length check. --- .../common/modules/table/servers/TableServersController.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) 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 a4d420b305..1993b35602 100644 --- a/traffic_portal/app/src/common/modules/table/servers/TableServersController.js +++ b/traffic_portal/app/src/common/modules/table/servers/TableServersController.js @@ -170,10 +170,7 @@ var TableServersController = function(tableName, servers, filter, $scope, $state field: "profileName", hide: false, valueGetter: function(params) { - if (params.data.profileNames.length > 1) { - return params.data.profileNames; - } - return params.data.profileName; + return params.data.profileNames; }, tooltipValueGetter: function(params) { return params.data.profileNames.join(", "); From 6aa3c4676a9e58b96aad5782e9c47f8069486b26 Mon Sep 17 00:00:00 2001 From: Rima Shah Date: Wed, 21 Sep 2022 16:49:59 -0600 Subject: [PATCH 3/5] Updated based on review comments. --- .../TableAssignDSServersController.js | 10 ++++++++-- .../modules/table/servers/TableServersController.js | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) 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 1993b35602..49a3ce32b8 100644 --- a/traffic_portal/app/src/common/modules/table/servers/TableServersController.js +++ b/traffic_portal/app/src/common/modules/table/servers/TableServersController.js @@ -166,7 +166,7 @@ var TableServersController = function(tableName, servers, filter, $scope, $state hide: true }, { - headerName: "Profile", + headerName: "Profile(s)", field: "profileName", hide: false, valueGetter: function(params) { From d9180bb4faf2143a0f235715071c94ba83c70f8c Mon Sep 17 00:00:00 2001 From: Rima Shah Date: Mon, 26 Sep 2022 12:27:57 -0600 Subject: [PATCH 4/5] Added Equal and Non-Equal filter for an array object. --- .../table/agGrid/CommonGridController.js | 28 +++++++++++++++++++ .../table/servers/TableServersController.js | 3 +- 2 files changed, 30 insertions(+), 1 deletion(-) 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..10be7aeaf1 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': + var 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/servers/TableServersController.js b/traffic_portal/app/src/common/modules/table/servers/TableServersController.js index 49a3ce32b8..e4c22580d3 100644 --- a/traffic_portal/app/src/common/modules/table/servers/TableServersController.js +++ b/traffic_portal/app/src/common/modules/table/servers/TableServersController.js @@ -174,7 +174,8 @@ var TableServersController = function(tableName, servers, filter, $scope, $state }, tooltipValueGetter: function(params) { return params.data.profileNames.join(", "); - } + }, + filter: 'arrayTextColumnFilter' }, { headerName: "Rack", From df9bf723b3390df85364ef3a8678a43da3491b58 Mon Sep 17 00:00:00 2001 From: Rima Shah Date: Thu, 29 Sep 2022 13:51:33 -0600 Subject: [PATCH 5/5] Changed variable to a constant. --- .../app/src/common/modules/table/agGrid/CommonGridController.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 10be7aeaf1..6503804661 100644 --- a/traffic_portal/app/src/common/modules/table/agGrid/CommonGridController.js +++ b/traffic_portal/app/src/common/modules/table/agGrid/CommonGridController.js @@ -320,7 +320,7 @@ let CommonGridController = function ($scope, $document, $state, userModel, dateU case 'startsWith': return valueLowerCase.indexOf(filterTextLowerCase) === 0; case 'endsWith': - var index = valueLowerCase.lastIndexOf(filterTextLowerCase); + let index = valueLowerCase.lastIndexOf(filterTextLowerCase); return index >= 0 && index === (valueLowerCase.length - filterTextLowerCase.length); default: // should never happen