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

mitchell852 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 132b56f  Clear column filters when hiding columns on jobs and servers 
tables (#5109)
132b56f is described below

commit 132b56f5c7bfafa63394b07fc85e97b6cae7f315
Author: Steve Hamrick <[email protected]>
AuthorDate: Thu Oct 22 16:23:04 2020 -0600

    Clear column filters when hiding columns on jobs and servers tables (#5109)
    
    * Clear filters of column when column is hidden.
    
    Co-authored-by: Jeremy Mitchell <[email protected]>
---
 CHANGELOG.md                                       |  4 +++
 .../table.cacheGroupServers.tpl.html               |  2 +-
 .../table/cdnServers/table.cdnServers.tpl.html     |  2 +-
 .../table.deliveryServiceJobs.tpl.html             |  2 +-
 .../table.deliveryServiceServers.tpl.html          |  2 +-
 .../modules/table/jobs/TableJobsController.js      | 20 ++++++++++-
 .../common/modules/table/jobs/table.jobs.tpl.html  |  2 +-
 .../table.physLocationServers.tpl.html             |  2 +-
 .../profileServers/table.profileServers.tpl.html   |  2 +-
 .../table/servers/TableServersController.js        | 41 ++++++++++++++++------
 .../modules/table/servers/table.servers.tpl.html   |  2 +-
 .../statusServers/table.statusServers.tpl.html     |  2 +-
 .../topologyServers/table.topologyServers.tpl.html |  2 +-
 .../test/end_to_end/servers/servers-spec.js        | 26 ++++++++++++++
 14 files changed, 89 insertions(+), 22 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2818460..8d61122 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,10 @@ All notable changes to this project will be documented in this 
file.
 
 The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
 
+## [unreleased]
+### Fixed
+- Fixed an issue where the jobs and servers table in Traffic Portal would not 
clear a column's filter when it's hidden
+
 ## [5.0.0] - 2020-10-20
 ### Added
 - Traffic Ops Ort: Disabled ntpd verification (ntpd is deprecated in CentOS)
diff --git 
a/traffic_portal/app/src/common/modules/table/cacheGroupServers/table.cacheGroupServers.tpl.html
 
b/traffic_portal/app/src/common/modules/table/cacheGroupServers/table.cacheGroupServers.tpl.html
index d69dc73..d835370 100644
--- 
a/traffic_portal/app/src/common/modules/table/cacheGroupServers/table.cacheGroupServers.tpl.html
+++ 
b/traffic_portal/app/src/common/modules/table/cacheGroupServers/table.cacheGroupServers.tpl.html
@@ -57,7 +57,7 @@ under the License.
                         <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="confirmCacheGroupQueueServerUpdates(cacheGroup)">Queue 
Server Updates</button></li>
                         <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="confirmCacheGroupClearServerUpdates(cacheGroup)">Clear 
Server Updates</button></li>
                         <li class="divider"></li>
-                        <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="clearColFilters()">Clear Column Filters</button></li>
+                        <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="clearTableFilters()">Clear Table Filters</button></li>
                         <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="exportCSV()">Export CSV</button></li>
                     </ul>
                 </div>
diff --git 
a/traffic_portal/app/src/common/modules/table/cdnServers/table.cdnServers.tpl.html
 
b/traffic_portal/app/src/common/modules/table/cdnServers/table.cdnServers.tpl.html
index ca2cd47..439791f 100644
--- 
a/traffic_portal/app/src/common/modules/table/cdnServers/table.cdnServers.tpl.html
+++ 
b/traffic_portal/app/src/common/modules/table/cdnServers/table.cdnServers.tpl.html
@@ -57,7 +57,7 @@ under the License.
                         <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="confirmCDNQueueServerUpdates(null)">Queue Server 
Updates</button></li>
                         <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="confirmCDNClearServerUpdates(null)">Clear Server 
Updates</button></li>
                         <li class="divider"></li>
-                        <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="clearColFilters()">Clear Column Filters</button></li>
+                        <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="clearTableFilters()">Clear Table Filters</button></li>
                         <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="exportCSV()">Export CSV</button></li>
                     </ul>
                 </div>
diff --git 
a/traffic_portal/app/src/common/modules/table/deliveryServiceJobs/table.deliveryServiceJobs.tpl.html
 
b/traffic_portal/app/src/common/modules/table/deliveryServiceJobs/table.deliveryServiceJobs.tpl.html
index 39e6afd..64d3330 100644
--- 
a/traffic_portal/app/src/common/modules/table/deliveryServiceJobs/table.deliveryServiceJobs.tpl.html
+++ 
b/traffic_portal/app/src/common/modules/table/deliveryServiceJobs/table.deliveryServiceJobs.tpl.html
@@ -54,7 +54,7 @@ under the License.
                     <ul class="dropdown-menu-right dropdown-menu" 
uib-dropdown-menu>
                         <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="createJob()">Create Invalidation Request</button></li>
                         <li class="divider"></li>
-                        <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="clearColFilters()">Clear Column Filters</button></li>
+                        <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="clearTableFilters()">Clear Table Filters</button></li>
                         <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="exportCSV()">Export CSV</button></li>
                     </ul>
                 </div>
diff --git 
a/traffic_portal/app/src/common/modules/table/deliveryServiceServers/table.deliveryServiceServers.tpl.html
 
b/traffic_portal/app/src/common/modules/table/deliveryServiceServers/table.deliveryServiceServers.tpl.html
index 7a1f6f6..c93a04b 100644
--- 
a/traffic_portal/app/src/common/modules/table/deliveryServiceServers/table.deliveryServiceServers.tpl.html
+++ 
b/traffic_portal/app/src/common/modules/table/deliveryServiceServers/table.deliveryServiceServers.tpl.html
@@ -56,7 +56,7 @@ under the License.
                             <button type="button" name="selectServersMenuItem" 
title="Assign {{(deliveryService.topology) ? 'ORG ' : ''}}servers to delivery 
service" ng-click="selectServers()">Assign {{(deliveryService.topology) ? 'ORG 
' : ''}}Servers</button>
                         </li>
                         <li class="divider"></li>
-                        <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="clearColFilters()">Clear Column Filters</button></li>
+                        <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="clearTableFilters()">Clear Table Filters</button></li>
                         <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="exportCSV()">Export CSV</button></li>
                     </ul>
                 </div>
diff --git 
a/traffic_portal/app/src/common/modules/table/jobs/TableJobsController.js 
b/traffic_portal/app/src/common/modules/table/jobs/TableJobsController.js
index ae6c7cd..133905b 100644
--- a/traffic_portal/app/src/common/modules/table/jobs/TableJobsController.js
+++ b/traffic_portal/app/src/common/modules/table/jobs/TableJobsController.js
@@ -137,6 +137,20 @@ var TableJobsController = function(tableName, jobs, 
$document, $scope, $state, $
                        $scope.job = params.data;
                        $scope.$apply();
                },
+               onColumnVisible: function(params) {
+                       if (params.visible){
+                               return;
+                       }
+                       for (let column of params.columns) {
+                               if (column.filterActive) {
+                                       const filterModel = 
$scope.gridOptions.api.getFilterModel();
+                                       if (column.colId in filterModel) {
+                                               delete 
filterModel[column.colId];
+                                               
$scope.gridOptions.api.setFilterModel(filterModel);
+                                       }
+                               }
+                       }
+               },
                colResizeDefault: "shift"
        };
 
@@ -208,7 +222,11 @@ var TableJobsController = function(tableName, jobs, 
$document, $scope, $state, $
                localStorage.setItem(tableName + "_page_size", value);
        };
 
-       $scope.clearColFilters = function() {
+       $scope.clearTableFilters = function() {
+               // clear the quick search
+               $scope.quickSearch = '';
+               $scope.onQuickSearchChanged();
+               // clear any column filters
                $scope.gridOptions.api.setFilterModel(null);
        };
 
diff --git 
a/traffic_portal/app/src/common/modules/table/jobs/table.jobs.tpl.html 
b/traffic_portal/app/src/common/modules/table/jobs/table.jobs.tpl.html
index f7e4e7b..891a401 100644
--- a/traffic_portal/app/src/common/modules/table/jobs/table.jobs.tpl.html
+++ b/traffic_portal/app/src/common/modules/table/jobs/table.jobs.tpl.html
@@ -52,7 +52,7 @@ under the License.
                     <ul class="dropdown-menu-right dropdown-menu" 
uib-dropdown-menu>
                         <li role="menuitem"><button name="createJobMenuItem" 
class="menu-item-button" type="button" ng-click="createJob()">Create 
Invalidation Request</button></li>
                         <li class="divider"></li>
-                        <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="clearColFilters()">Clear Column Filters</button></li>
+                        <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="clearTableFilters()">Clear Table Filters</button></li>
                         <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="exportCSV()">Export CSV</button></li>
                     </ul>
                 </div>
diff --git 
a/traffic_portal/app/src/common/modules/table/physLocationServers/table.physLocationServers.tpl.html
 
b/traffic_portal/app/src/common/modules/table/physLocationServers/table.physLocationServers.tpl.html
index 2ac6ef1..47cdb41 100644
--- 
a/traffic_portal/app/src/common/modules/table/physLocationServers/table.physLocationServers.tpl.html
+++ 
b/traffic_portal/app/src/common/modules/table/physLocationServers/table.physLocationServers.tpl.html
@@ -54,7 +54,7 @@ under the License.
                     <ul class="dropdown-menu-right dropdown-menu" 
uib-dropdown-menu>
                         <li role="menuitem"><a name="createServerMenuItem" 
href="#!/servers/new">Create New Server</a></li>
                         <li class="divider"></li>
-                        <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="clearColFilters()">Clear Column Filters</button></li>
+                        <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="clearTableFilters()">Clear Table Filters</button></li>
                         <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="exportCSV()">Export CSV</button></li>
                     </ul>
                 </div>
diff --git 
a/traffic_portal/app/src/common/modules/table/profileServers/table.profileServers.tpl.html
 
b/traffic_portal/app/src/common/modules/table/profileServers/table.profileServers.tpl.html
index 1a7a63b..d4496da 100644
--- 
a/traffic_portal/app/src/common/modules/table/profileServers/table.profileServers.tpl.html
+++ 
b/traffic_portal/app/src/common/modules/table/profileServers/table.profileServers.tpl.html
@@ -54,7 +54,7 @@ under the License.
                     <ul class="dropdown-menu-right dropdown-menu" 
uib-dropdown-menu>
                         <li role="menuitem"><a name="createServerMenuItem" 
href="#!/servers/new">Create New Server</a></li>
                         <li class="divider"></li>
-                        <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="clearColFilters()">Clear Column Filters</button></li>
+                        <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="clearTableFilters()">Clear Table Filters</button></li>
                         <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="exportCSV()">Export CSV</button></li>
                     </ul>
                 </div>
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 8bb1763..9432bbf 100644
--- 
a/traffic_portal/app/src/common/modules/table/servers/TableServersController.js
+++ 
b/traffic_portal/app/src/common/modules/table/servers/TableServersController.js
@@ -305,11 +305,6 @@ var TableServersController = function(tableName, servers, 
filter, $scope, $state
                        sshCellRenderer: SSHCellRenderer,
                        updateCellRenderer: UpdateCellRenderer
                },
-               onRowDoubleClicked: function(params) {
-                       locationUtils.navigateToPath('/servers/' + 
params.data.id);
-                       // Event is outside the digest cycle, so we need to 
trigger one.
-                       $scope.$apply();
-               },
                columnDefs: columns,
                enableCellTextSelection:true,
                suppressMenuHide: true,
@@ -325,12 +320,24 @@ var TableServersController = function(tableName, servers, 
filter, $scope, $state
                pagination: true,
                paginationPageSize: $scope.pageSize,
                rowBuffer: 0,
-               onColumnResized: function(params) {
-                       localStorage.setItem(tableName + "_table_columns", 
JSON.stringify($scope.gridOptions.columnApi.getColumnState()));
-               },
                tooltipShowDelay: 500,
                allowContextMenuWithControlKey: true,
                preventDefaultOnContextMenu: true,
+               colResizeDefault: "shift",
+               onColumnVisible: function(params) {
+                       if (params.visible){
+                               return;
+                       }
+                   for (let column of params.columns) {
+                               if (column.filterActive) {
+                                       const filterModel = 
$scope.gridOptions.api.getFilterModel();
+                                       if (column.colId in filterModel) {
+                                               delete 
filterModel[column.colId];
+                                               
$scope.gridOptions.api.setFilterModel(filterModel);
+                                       }
+                               }
+                       }
+               },
                onCellContextMenu: function(params) {
                        $scope.showMenu = true;
                        $scope.menuStyle.left = String(params.event.clientX) + 
"px";
@@ -351,7 +358,15 @@ var TableServersController = function(tableName, servers, 
filter, $scope, $state
                        $scope.server = params.data;
                        $scope.$apply();
                },
-               colResizeDefault: "shift"
+               onRowDoubleClicked: function(params) {
+                       locationUtils.navigateToPath('/servers/' + 
params.data.id);
+                       // Event is outside the digest cycle, so we need to 
trigger one.
+                       $scope.$apply();
+               },
+               onColumnResized: function(params) {
+                       localStorage.setItem(tableName + "_table_columns", 
JSON.stringify($scope.gridOptions.columnApi.getColumnState()));
+               },
+
        };
 
        /** These three functions are used by the context menu to determine 
what functionality to provide for a server. */
@@ -394,7 +409,7 @@ var TableServersController = function(tableName, servers, 
filter, $scope, $state
                        fileName: "servers.csv",
                };
                $scope.gridOptions.api.exportDataAsCsv(params);
-       }
+       };
 
        /**** Context menu functions ****/
 
@@ -554,7 +569,11 @@ var TableServersController = function(tableName, servers, 
filter, $scope, $state
                localStorage.setItem(tableName + "_page_size", value);
        };
 
-       $scope.clearColFilters = function() {
+       $scope.clearTableFilters = function() {
+               // clear the quick search
+               $scope.quickSearch = '';
+               $scope.onQuickSearchChanged();
+               // clear any column filters
                $scope.gridOptions.api.setFilterModel(null);
        };
 
diff --git 
a/traffic_portal/app/src/common/modules/table/servers/table.servers.tpl.html 
b/traffic_portal/app/src/common/modules/table/servers/table.servers.tpl.html
index 648c257..f642167 100644
--- a/traffic_portal/app/src/common/modules/table/servers/table.servers.tpl.html
+++ b/traffic_portal/app/src/common/modules/table/servers/table.servers.tpl.html
@@ -55,7 +55,7 @@ under the License.
                         <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="confirmCDNQueueServerUpdates(null)">Queue Server 
Updates</button></li>
                         <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="confirmCDNClearServerUpdates(null)">Clear Server 
Updates</button></li>
                         <li class="divider"></li>
-                        <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="clearColFilters()">Clear Column Filters</button></li>
+                        <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="clearTableFilters()">Clear Table Filters</button></li>
                         <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="exportCSV()">Export CSV</button></li>
                     </ul>
                 </div>
diff --git 
a/traffic_portal/app/src/common/modules/table/statusServers/table.statusServers.tpl.html
 
b/traffic_portal/app/src/common/modules/table/statusServers/table.statusServers.tpl.html
index a4505a3..ccb72c3 100644
--- 
a/traffic_portal/app/src/common/modules/table/statusServers/table.statusServers.tpl.html
+++ 
b/traffic_portal/app/src/common/modules/table/statusServers/table.statusServers.tpl.html
@@ -55,7 +55,7 @@ under the License.
                     <ul class="dropdown-menu-right dropdown-menu" 
uib-dropdown-menu>
                         <li role="menuitem"><a name="createServerMenuItem" 
href="#!/servers/new">Create New Server</a></li>
                         <li class="divider"></li>
-                        <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="clearColFilters()">Clear Column Filters</button></li>
+                        <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="clearTableFilters()">Clear Table Filters</button></li>
                         <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="exportCSV()">Export CSV</button></li>
                     </ul>
                 </div>
diff --git 
a/traffic_portal/app/src/common/modules/table/topologyServers/table.topologyServers.tpl.html
 
b/traffic_portal/app/src/common/modules/table/topologyServers/table.topologyServers.tpl.html
index 95830fa..1946a07 100644
--- 
a/traffic_portal/app/src/common/modules/table/topologyServers/table.topologyServers.tpl.html
+++ 
b/traffic_portal/app/src/common/modules/table/topologyServers/table.topologyServers.tpl.html
@@ -55,7 +55,7 @@ under the License.
                         <li role="menuitem"><button type="button" title="Queue 
Server Updates for {{::topology.name}} Topology" 
ng-click="confirmTopologyQueueServerUpdates(topology)">Queue Server 
Updates</button></li>
                         <li role="menuitem"><button type="button" title="Clear 
Server Updates for {{::topology.name}} Topology" 
ng-click="confirmTopologyClearServerUpdates(topology)">Clear Server 
Updates</button></li>
                         <li class="divider"></li>
-                        <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="clearColFilters()">Clear Column Filters</button></li>
+                        <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="clearTableFilters()">Clear Table Filters</button></li>
                         <li role="menuitem"><button class="menu-item-button" 
type="button" ng-click="exportCSV()">Export CSV</button></li>
                     </ul>
                 </div>
diff --git a/traffic_portal/test/end_to_end/servers/servers-spec.js 
b/traffic_portal/test/end_to_end/servers/servers-spec.js
index 50692f7..9953a3b 100644
--- a/traffic_portal/test/end_to_end/servers/servers-spec.js
+++ b/traffic_portal/test/end_to_end/servers/servers-spec.js
@@ -75,6 +75,32 @@ describe('Traffic Portal Servers Test Suite', function() {
                expect(tableColumns.count()).toBe(9);
        });
 
+       it('should clear column filter when column is hidden', function() {
+               // Confirm we have rows
+               let rows = element.all(by.css("div.ag-row"));
+               expect(rows.count()).not.toBe(0);
+
+               // Filter one of our columns
+               let firstHeaderCell = 
element.all(by.css('.ag-header-cell')).first();
+               
firstHeaderCell.all(by.css('span.ag-header-cell-menu-button')).first().click();
+               let filterContainer = element(by.css("div.ag-filter"));
+               let filterCell = 
filterContainer.all(by.css('.ag-input-field-input')).first();
+               filterCell.sendKeys("nothingshouldmatchthis", 
protractor.Key.ENTER);
+
+               // Wait for ag-grid to process changes
+               browser.sleep(1000);
+               rows = element.all(by.css("div.ag-row"));
+               expect(rows.count()).toBe(0);
+
+               // Hide filtered column
+               let columnToggle = element(by.id('toggleColumns')).click();
+               
columnToggle.all(by.css('input[type=checkbox]:checked')).first().click();
+
+               // Wait for ag-grid again
+               rows = element.all(by.css("div.ag-row"));
+               expect(rows.count()).not.toBe(0);
+       });
+
        it('should verify the new Server and then update Server', function() {
                console.log('Verifying new server added and updating ' + 
mockVals.hostName);
                browser.sleep(1000);

Reply via email to