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);