You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@trafficcontrol.apache.org by GitBox <gi...@apache.org> on 2018/04/18 15:42:20 UTC

[GitHub] dewrich closed pull request #2141: TP - adds chart link (if enabled) to each ds table

dewrich closed pull request #2141: TP - adds chart link (if enabled) to each ds table
URL: https://github.com/apache/incubator-trafficcontrol/pull/2141
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/traffic_portal/app/src/common/modules/form/deliveryService/FormDeliveryServiceController.js b/traffic_portal/app/src/common/modules/form/deliveryService/FormDeliveryServiceController.js
index 834949b1b..377c93477 100644
--- a/traffic_portal/app/src/common/modules/form/deliveryService/FormDeliveryServiceController.js
+++ b/traffic_portal/app/src/common/modules/form/deliveryService/FormDeliveryServiceController.js
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-var FormDeliveryServiceController = function(deliveryService, dsCurrent, type, types, $scope, $location, $uibModal, $window, formUtils, locationUtils, tenantUtils, cdnService, profileService, tenantService, propertiesModel) {
+var FormDeliveryServiceController = function(deliveryService, dsCurrent, type, types, $scope, $location, $uibModal, $window, formUtils, locationUtils, tenantUtils, deliveryServiceUtils, cdnService, profileService, tenantService, propertiesModel) {
 
     var getCDNs = function() {
         cdnService.getCDNs()
@@ -49,6 +49,8 @@ var FormDeliveryServiceController = function(deliveryService, dsCurrent, type, t
 
     $scope.showChartsButton = propertiesModel.properties.deliveryServices.charts.show;
 
+    $scope.openCharts = deliveryServiceUtils.openCharts;
+
     $scope.dsRequestsEnabled = propertiesModel.properties.dsRequests.enabled;
 
 	$scope.edgeFQDNs = function(ds) {
@@ -200,13 +202,6 @@ var FormDeliveryServiceController = function(deliveryService, dsCurrent, type, t
         return '-'.repeat(tenant.level) + ' ' + tenant.name;
     };
 
-    $scope.openCharts = function(ds) {
-        $window.open(
-            propertiesModel.properties.deliveryServices.charts.baseUrl + ds.xmlId,
-            '_blank'
-        );
-    };
-
     $scope.clone = function(ds) {
         var params = {
             title: 'Clone Delivery Service: ' + ds.xmlId,
@@ -286,5 +281,5 @@ var FormDeliveryServiceController = function(deliveryService, dsCurrent, type, t
 
 };
 
-FormDeliveryServiceController.$inject = ['deliveryService', 'dsCurrent', 'type', 'types', '$scope', '$location', '$uibModal', '$window', 'formUtils', 'locationUtils', 'tenantUtils', 'cdnService', 'profileService', 'tenantService', 'propertiesModel'];
+FormDeliveryServiceController.$inject = ['deliveryService', 'dsCurrent', 'type', 'types', '$scope', '$location', '$uibModal', '$window', 'formUtils', 'locationUtils', 'tenantUtils', 'deliveryServiceUtils', 'cdnService', 'profileService', 'tenantService', 'propertiesModel'];
 module.exports = FormDeliveryServiceController;
diff --git a/traffic_portal/app/src/common/modules/table/cdnDeliveryServices/TableCDNDeliveryServicesController.js b/traffic_portal/app/src/common/modules/table/cdnDeliveryServices/TableCDNDeliveryServicesController.js
index 74d477bb1..1e29df442 100644
--- a/traffic_portal/app/src/common/modules/table/cdnDeliveryServices/TableCDNDeliveryServicesController.js
+++ b/traffic_portal/app/src/common/modules/table/cdnDeliveryServices/TableCDNDeliveryServicesController.js
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-var TableCDNDeliveryServicesController = function(cdn, deliveryServices, $scope, $state, dateUtils, deliveryServiceUtils,  locationUtils) {
+var TableCDNDeliveryServicesController = function(cdn, deliveryServices, $scope, $state, dateUtils, deliveryServiceUtils, locationUtils, propertiesModel) {
 
 	var protocols = deliveryServiceUtils.protocols;
 
@@ -27,6 +27,10 @@ var TableCDNDeliveryServicesController = function(cdn, deliveryServices, $scope,
 
 	$scope.deliveryServices = deliveryServices;
 
+	$scope.showChartsButton = propertiesModel.properties.deliveryServices.charts.show;
+
+	$scope.openCharts = deliveryServiceUtils.openCharts;
+
 	$scope.protocol = function(ds) {
 		return protocols[ds.protocol];
 	};
@@ -51,11 +55,14 @@ var TableCDNDeliveryServicesController = function(cdn, deliveryServices, $scope,
 		$('#deliveryServicesTable').dataTable({
 			"aLengthMenu": [[25, 50, 100, -1], [25, 50, 100, "All"]],
 			"iDisplayLength": 25,
+			"columnDefs": [
+				{ 'orderable': false, 'targets': 12 }
+			],
 			"aaSorting": []
 		});
 	});
 
 };
 
-TableCDNDeliveryServicesController.$inject = ['cdn', 'deliveryServices', '$scope', '$state', 'dateUtils', 'deliveryServiceUtils', 'locationUtils'];
+TableCDNDeliveryServicesController.$inject = ['cdn', 'deliveryServices', '$scope', '$state', 'dateUtils', 'deliveryServiceUtils', 'locationUtils', 'propertiesModel'];
 module.exports = TableCDNDeliveryServicesController;
diff --git a/traffic_portal/app/src/common/modules/table/cdnDeliveryServices/table.cdnDeliveryServices.tpl.html b/traffic_portal/app/src/common/modules/table/cdnDeliveryServices/table.cdnDeliveryServices.tpl.html
index 8bde96683..1ef942e0c 100644
--- a/traffic_portal/app/src/common/modules/table/cdnDeliveryServices/table.cdnDeliveryServices.tpl.html
+++ b/traffic_portal/app/src/common/modules/table/cdnDeliveryServices/table.cdnDeliveryServices.tpl.html
@@ -46,6 +46,7 @@
                 <th>Signing Algorithm</th>
                 <th>Qstring Handling</th>
                 <th>Last Updated</th>
+                <th style="text-align: right;">Actions</th>
             </tr>
             </thead>
             <tbody>
@@ -62,6 +63,9 @@
                 <td data-search="^{{::ds.signingAlgorithm}}$">{{::ds.signingAlgorithm}}</td>
                 <td data-search="^{{::qstring(ds)}}$">{{::qstring(ds)}}</td>
                 <td data-search="^{{::getRelativeTime(ds.lastUpdated)}}$" data-order="{{::ds.lastUpdated}}">{{::getRelativeTime(ds.lastUpdated)}}</td>
+                <td style="text-align: right;">
+                    <span ng-if="showChartsButton"><a class="link action-link" title="View Charts" ng-click="openCharts(ds, $event)"><i class="fa fa-sm fa-bar-chart"></i></a></span>
+                </td>
             </tr>
             </tbody>
         </table>
diff --git a/traffic_portal/app/src/common/modules/table/deliveryServices/TableDeliveryServicesController.js b/traffic_portal/app/src/common/modules/table/deliveryServices/TableDeliveryServicesController.js
index ada2c39a5..558d28fe9 100644
--- a/traffic_portal/app/src/common/modules/table/deliveryServices/TableDeliveryServicesController.js
+++ b/traffic_portal/app/src/common/modules/table/deliveryServices/TableDeliveryServicesController.js
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-var TableDeliveryServicesController = function(deliveryServices, $scope, $state, $location, $uibModal, dateUtils, deliveryServiceUtils, locationUtils) {
+var TableDeliveryServicesController = function(deliveryServices, $scope, $state, $location, $uibModal, dateUtils, deliveryServiceUtils, locationUtils, propertiesModel) {
 
     var protocols = deliveryServiceUtils.protocols;
 
@@ -30,6 +30,10 @@ var TableDeliveryServicesController = function(deliveryServices, $scope, $state,
 
     $scope.deliveryServices = deliveryServices;
 
+    $scope.showChartsButton = propertiesModel.properties.deliveryServices.charts.show;
+
+    $scope.openCharts = deliveryServiceUtils.openCharts;
+
     $scope.getRelativeTime = dateUtils.getRelativeTime;
 
     $scope.editDeliveryService = function(ds) {
@@ -111,11 +115,14 @@ var TableDeliveryServicesController = function(deliveryServices, $scope, $state,
         $('#deliveryServicesTable').dataTable({
             "aLengthMenu": [[25, 50, 100, -1], [25, 50, 100, "All"]],
             "iDisplayLength": 25,
+            "columnDefs": [
+                { 'orderable': false, 'targets': 12 }
+            ],
             "aaSorting": []
         });
     });
 
 };
 
-TableDeliveryServicesController.$inject = ['deliveryServices', '$scope', '$state', '$location', '$uibModal', 'dateUtils', 'deliveryServiceUtils', 'locationUtils'];
+TableDeliveryServicesController.$inject = ['deliveryServices', '$scope', '$state', '$location', '$uibModal', 'dateUtils', 'deliveryServiceUtils', 'locationUtils', 'propertiesModel'];
 module.exports = TableDeliveryServicesController;
diff --git a/traffic_portal/app/src/common/modules/table/deliveryServices/table.deliveryServices.tpl.html b/traffic_portal/app/src/common/modules/table/deliveryServices/table.deliveryServices.tpl.html
index 91ba83e7a..af43709f4 100644
--- a/traffic_portal/app/src/common/modules/table/deliveryServices/table.deliveryServices.tpl.html
+++ b/traffic_portal/app/src/common/modules/table/deliveryServices/table.deliveryServices.tpl.html
@@ -54,6 +54,7 @@
                     <th>Signing Algorithm</th>
                     <th>Qstring Handling</th>
                     <th>Last Updated</th>
+                    <th style="text-align: right;">Actions</th>
                 </tr>
             </thead>
             <tbody>
@@ -70,6 +71,9 @@
                     <td data-search="^{{::ds.signingAlgorithm}}$">{{::ds.signingAlgorithm}}</td>
                     <td data-search="^{{::qstring(ds)}}$">{{::qstring(ds)}}</td>
                     <td data-search="^{{::getRelativeTime(ds.lastUpdated)}}$" data-order="{{::ds.lastUpdated}}">{{::getRelativeTime(ds.lastUpdated)}}</td>
+                    <td style="text-align: right;">
+                        <span ng-if="showChartsButton"><a class="link action-link" title="View Charts" ng-click="openCharts(ds, $event)"><i class="fa fa-sm fa-bar-chart"></i></a></span>
+                    </td>
                 </tr>
             </tbody>
         </table>
diff --git a/traffic_portal/app/src/common/modules/table/profileDeliveryServices/TableProfileDeliveryServicesController.js b/traffic_portal/app/src/common/modules/table/profileDeliveryServices/TableProfileDeliveryServicesController.js
index c0760aa57..96f581b80 100644
--- a/traffic_portal/app/src/common/modules/table/profileDeliveryServices/TableProfileDeliveryServicesController.js
+++ b/traffic_portal/app/src/common/modules/table/profileDeliveryServices/TableProfileDeliveryServicesController.js
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-var TableProfileDeliveryServicesController = function(profile, deliveryServices, $scope, $state, dateUtils, deliveryServiceUtils, locationUtils) {
+var TableProfileDeliveryServicesController = function(profile, deliveryServices, $scope, $state, dateUtils, deliveryServiceUtils, locationUtils, propertiesModel) {
 
 	var protocols = deliveryServiceUtils.protocols;
 
@@ -27,6 +27,10 @@ var TableProfileDeliveryServicesController = function(profile, deliveryServices,
 
 	$scope.deliveryServices = deliveryServices;
 
+	$scope.showChartsButton = propertiesModel.properties.deliveryServices.charts.show;
+
+	$scope.openCharts = deliveryServiceUtils.openCharts;
+
 	$scope.protocol = function(ds) {
 		return protocols[ds.protocol];
 	};
@@ -51,11 +55,14 @@ var TableProfileDeliveryServicesController = function(profile, deliveryServices,
 		$('#deliveryServicesTable').dataTable({
 			"aLengthMenu": [[25, 50, 100, -1], [25, 50, 100, "All"]],
 			"iDisplayLength": 25,
+			"columnDefs": [
+				{ 'orderable': false, 'targets': 12 }
+			],
 			"aaSorting": []
 		});
 	});
 
 };
 
-TableProfileDeliveryServicesController.$inject = ['profile', 'deliveryServices', '$scope', '$state', 'dateUtils', 'deliveryServiceUtils', 'locationUtils'];
+TableProfileDeliveryServicesController.$inject = ['profile', 'deliveryServices', '$scope', '$state', 'dateUtils', 'deliveryServiceUtils', 'locationUtils', 'propertiesModel'];
 module.exports = TableProfileDeliveryServicesController;
diff --git a/traffic_portal/app/src/common/modules/table/profileDeliveryServices/table.profileDeliveryServices.tpl.html b/traffic_portal/app/src/common/modules/table/profileDeliveryServices/table.profileDeliveryServices.tpl.html
index d8b49b020..61cf502e9 100644
--- a/traffic_portal/app/src/common/modules/table/profileDeliveryServices/table.profileDeliveryServices.tpl.html
+++ b/traffic_portal/app/src/common/modules/table/profileDeliveryServices/table.profileDeliveryServices.tpl.html
@@ -40,13 +40,13 @@
                 <th>Active</th>
                 <th>Type</th>
                 <th>Protocol</th>
-                <th>Profile</th>
                 <th>CDN</th>
                 <th>IPv6 Enabled</th>
                 <th>DSCP</th>
                 <th>Signing Algorithm</th>
                 <th>Qstring Handling</th>
                 <th>Last Updated</th>
+                <th style="text-align: right;">Actions</th>
             </tr>
             </thead>
             <tbody>
@@ -63,6 +63,9 @@
                 <td data-search="^{{::ds.signingAlgorithm}}$">{{::ds.signingAlgorithm}}</td>
                 <td data-search="^{{::qstring(ds)}}$">{{::qstring(ds)}}</td>
                 <td data-search="^{{::getRelativeTime(ds.lastUpdated)}}$" data-order="{{::ds.lastUpdated}}">{{::getRelativeTime(ds.lastUpdated)}}</td>
+                <td style="text-align: right;">
+                    <span ng-if="showChartsButton"><a class="link action-link" title="View Charts" ng-click="openCharts(ds, $event)"><i class="fa fa-sm fa-bar-chart"></i></a></span>
+                </td>
             </tr>
             </tbody>
         </table>
diff --git a/traffic_portal/app/src/common/modules/table/serverDeliveryServices/TableServerDeliveryServicesController.js b/traffic_portal/app/src/common/modules/table/serverDeliveryServices/TableServerDeliveryServicesController.js
index 31187f040..f33da87a7 100644
--- a/traffic_portal/app/src/common/modules/table/serverDeliveryServices/TableServerDeliveryServicesController.js
+++ b/traffic_portal/app/src/common/modules/table/serverDeliveryServices/TableServerDeliveryServicesController.js
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-var TableServerDeliveryServicesController = function(server, serverDeliveryServices, $scope, $state, $uibModal, dateUtils, deliveryServiceUtils, locationUtils, serverUtils, deliveryServiceService, serverService) {
+var TableServerDeliveryServicesController = function(server, serverDeliveryServices, $scope, $state, $uibModal, dateUtils, deliveryServiceUtils, locationUtils, serverUtils, deliveryServiceService, serverService, propertiesModel) {
 
 	var protocols = deliveryServiceUtils.protocols;
 
@@ -36,6 +36,10 @@ var TableServerDeliveryServicesController = function(server, serverDeliveryServi
 
 	$scope.serverDeliveryServices = serverDeliveryServices;
 
+	$scope.showChartsButton = propertiesModel.properties.deliveryServices.charts.show;
+
+	$scope.openCharts = deliveryServiceUtils.openCharts;
+
 	$scope.isEdge = serverUtils.isEdge;
 
 	$scope.protocol = function(ds) {
@@ -110,7 +114,9 @@ var TableServerDeliveryServicesController = function(server, serverDeliveryServi
 		});
 	};
 
-	$scope.confirmRemoveDS = function(ds) {
+	$scope.confirmRemoveDS = function(ds, $event) {
+		$event.stopPropagation(); // this kills the click event so it doesn't trigger anything else
+
 		var params = {
 			title: 'Remove Delivery Service from Server?',
 			message: 'Are you sure you want to remove ' + ds.xmlId + ' from this server?'
@@ -152,5 +158,5 @@ var TableServerDeliveryServicesController = function(server, serverDeliveryServi
 
 };
 
-TableServerDeliveryServicesController.$inject = ['server', 'serverDeliveryServices', '$scope', '$state', '$uibModal', 'dateUtils', 'deliveryServiceUtils', 'locationUtils', 'serverUtils', 'deliveryServiceService', 'serverService'];
+TableServerDeliveryServicesController.$inject = ['server', 'serverDeliveryServices', '$scope', '$state', '$uibModal', 'dateUtils', 'deliveryServiceUtils', 'locationUtils', 'serverUtils', 'deliveryServiceService', 'serverService', 'propertiesModel'];
 module.exports = TableServerDeliveryServicesController;
diff --git a/traffic_portal/app/src/common/modules/table/serverDeliveryServices/table.serverDeliveryServices.tpl.html b/traffic_portal/app/src/common/modules/table/serverDeliveryServices/table.serverDeliveryServices.tpl.html
index 2d45912d8..3b86fa88a 100644
--- a/traffic_portal/app/src/common/modules/table/serverDeliveryServices/table.serverDeliveryServices.tpl.html
+++ b/traffic_portal/app/src/common/modules/table/serverDeliveryServices/table.serverDeliveryServices.tpl.html
@@ -56,7 +56,7 @@
                 <th>Signing Algorithm</th>
                 <th>Qstring Handling</th>
                 <th>Last Updated</th>
-                <th></th>
+                <th style="text-align: right;">Actions</th>
             </tr>
             </thead>
             <tbody>
@@ -73,7 +73,10 @@
                 <td data-search="^{{::ds.signingAlgorithm}}$">{{::ds.signingAlgorithm}}</td>
                 <td data-search="^{{::qstring(ds)}}$">{{::qstring(ds)}}</td>
                 <td data-search="^{{::getRelativeTime(ds.lastUpdated)}}$" data-order="{{::ds.lastUpdated}}">{{::getRelativeTime(ds.lastUpdated)}}</td>
-                <td><button type="button" class="btn btn-link" title="Unlink Delivery Service from Server" ng-click="confirmRemoveDS(ds)"><i class="fa fa-chain-broken"></i></button></td>
+                <td style="text-align: right;">
+                    <a class="link action-link" title="Unlink Delivery Service from Server" ng-click="confirmRemoveDS(ds, $event)"><i class="fa fa-sm fa-chain-broken"></i></a>
+                    <span ng-if="showChartsButton"><a class="link action-link" title="View Charts" ng-click="openCharts(ds, $event)"><i class="fa fa-sm fa-bar-chart"></i></a></span>
+                </td>
             </tr>
             </tbody>
         </table>
diff --git a/traffic_portal/app/src/common/modules/table/tenantDeliveryServices/TableTenantDeliveryServicesController.js b/traffic_portal/app/src/common/modules/table/tenantDeliveryServices/TableTenantDeliveryServicesController.js
index de6690c1c..d6a0ce1ee 100644
--- a/traffic_portal/app/src/common/modules/table/tenantDeliveryServices/TableTenantDeliveryServicesController.js
+++ b/traffic_portal/app/src/common/modules/table/tenantDeliveryServices/TableTenantDeliveryServicesController.js
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-var TableTenantDeliveryServicesController = function(tenant, tenantDeliveryServices, $scope, $state, dateUtils, deliveryServiceUtils, locationUtils) {
+var TableTenantDeliveryServicesController = function(tenant, tenantDeliveryServices, $scope, $state, dateUtils, deliveryServiceUtils, locationUtils, propertiesModel) {
 
 	var protocols = deliveryServiceUtils.protocols;
 
@@ -27,6 +27,10 @@ var TableTenantDeliveryServicesController = function(tenant, tenantDeliveryServi
 
 	$scope.tenantDeliveryServices = tenantDeliveryServices;
 
+	$scope.showChartsButton = propertiesModel.properties.deliveryServices.charts.show;
+
+	$scope.openCharts = deliveryServiceUtils.openCharts;
+
 	$scope.protocol = function(ds) {
 		return protocols[ds.protocol];
 	};
@@ -51,11 +55,14 @@ var TableTenantDeliveryServicesController = function(tenant, tenantDeliveryServi
 		$('#tenantDSsTable').dataTable({
 			"aLengthMenu": [[25, 50, 100, -1], [25, 50, 100, "All"]],
 			"iDisplayLength": 25,
+			"columnDefs": [
+				{ 'orderable': false, 'targets': 12 }
+			],
 			"aaSorting": []
 		});
 	});
 
 };
 
-TableTenantDeliveryServicesController.$inject = ['tenant', 'tenantDeliveryServices', '$scope', '$state', 'dateUtils', 'deliveryServiceUtils', 'locationUtils'];
+TableTenantDeliveryServicesController.$inject = ['tenant', 'tenantDeliveryServices', '$scope', '$state', 'dateUtils', 'deliveryServiceUtils', 'locationUtils', 'propertiesModel'];
 module.exports = TableTenantDeliveryServicesController;
diff --git a/traffic_portal/app/src/common/modules/table/tenantDeliveryServices/table.tenantDeliveryServices.tpl.html b/traffic_portal/app/src/common/modules/table/tenantDeliveryServices/table.tenantDeliveryServices.tpl.html
index b01633a99..4b84c184f 100644
--- a/traffic_portal/app/src/common/modules/table/tenantDeliveryServices/table.tenantDeliveryServices.tpl.html
+++ b/traffic_portal/app/src/common/modules/table/tenantDeliveryServices/table.tenantDeliveryServices.tpl.html
@@ -46,6 +46,7 @@
                 <th>Signing Algorithm</th>
                 <th>Qstring Handling</th>
                 <th>Last Updated</th>
+                <th style="text-align: right;">Actions</th>
             </tr>
             </thead>
             <tbody>
@@ -62,6 +63,9 @@
                 <td data-search="^{{::ds.signingAlgorithm}}$">{{::ds.signingAlgorithm}}</td>
                 <td data-search="^{{::qstring(ds)}}$">{{::qstring(ds)}}</td>
                 <td data-search="^{{::getRelativeTime(ds.lastUpdated)}}$" data-order="{{::ds.lastUpdated}}">{{::getRelativeTime(ds.lastUpdated)}}</td>
+                <td style="text-align: right;">
+                    <span ng-if="showChartsButton"><a class="link action-link" title="View Charts" ng-click="openCharts(ds, $event)"><i class="fa fa-sm fa-bar-chart"></i></a></span>
+                </td>
             </tr>
             </tbody>
         </table>
diff --git a/traffic_portal/app/src/common/modules/table/typeDeliveryServices/TableTypeDeliveryServicesController.js b/traffic_portal/app/src/common/modules/table/typeDeliveryServices/TableTypeDeliveryServicesController.js
index 2cf03f95d..26bd0881e 100644
--- a/traffic_portal/app/src/common/modules/table/typeDeliveryServices/TableTypeDeliveryServicesController.js
+++ b/traffic_portal/app/src/common/modules/table/typeDeliveryServices/TableTypeDeliveryServicesController.js
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-var TableTypeDeliveryServicesController = function(type, deliveryServices, $scope, $state, dateUtils, deliveryServiceUtils, locationUtils) {
+var TableTypeDeliveryServicesController = function(type, deliveryServices, $scope, $state, dateUtils, deliveryServiceUtils, locationUtils, propertiesModel) {
 
 	var protocols = deliveryServiceUtils.protocols;
 
@@ -27,6 +27,10 @@ var TableTypeDeliveryServicesController = function(type, deliveryServices, $scop
 
 	$scope.deliveryServices = deliveryServices;
 
+	$scope.showChartsButton = propertiesModel.properties.deliveryServices.charts.show;
+
+	$scope.openCharts = deliveryServiceUtils.openCharts;
+
 	$scope.protocol = function(ds) {
 		return protocols[ds.protocol];
 	};
@@ -51,11 +55,14 @@ var TableTypeDeliveryServicesController = function(type, deliveryServices, $scop
 		$('#deliveryServicesTable').dataTable({
 			"aLengthMenu": [[25, 50, 100, -1], [25, 50, 100, "All"]],
 			"iDisplayLength": 25,
+			"columnDefs": [
+				{ 'orderable': false, 'targets': 12 }
+			],
 			"aaSorting": []
 		});
 	});
 
 };
 
-TableTypeDeliveryServicesController.$inject = ['type', 'deliveryServices', '$scope', '$state', 'dateUtils', 'deliveryServiceUtils', 'locationUtils'];
+TableTypeDeliveryServicesController.$inject = ['type', 'deliveryServices', '$scope', '$state', 'dateUtils', 'deliveryServiceUtils', 'locationUtils', 'propertiesModel'];
 module.exports = TableTypeDeliveryServicesController;
diff --git a/traffic_portal/app/src/common/modules/table/typeDeliveryServices/table.typeDeliveryServices.tpl.html b/traffic_portal/app/src/common/modules/table/typeDeliveryServices/table.typeDeliveryServices.tpl.html
index e127ab792..8507f7b96 100644
--- a/traffic_portal/app/src/common/modules/table/typeDeliveryServices/table.typeDeliveryServices.tpl.html
+++ b/traffic_portal/app/src/common/modules/table/typeDeliveryServices/table.typeDeliveryServices.tpl.html
@@ -46,6 +46,7 @@
                 <th>Signing Algorithm</th>
                 <th>Qstring Handling</th>
                 <th>Last Updated</th>
+                <th style="text-align: right;">Actions</th>
             </tr>
             </thead>
             <tbody>
@@ -62,6 +63,9 @@
                 <td data-search="^{{::ds.signingAlgorithm}}$">{{::ds.signingAlgorithm}}</td>
                 <td data-search="^{{::qstring(ds)}}$">{{::qstring(ds)}}</td>
                 <td data-search="^{{::getRelativeTime(ds.lastUpdated)}}$" data-order="{{::ds.lastUpdated}}">{{::getRelativeTime(ds.lastUpdated)}}</td>
+                <td style="text-align: right;">
+                    <span ng-if="showChartsButton"><a class="link action-link" title="View Charts" ng-click="openCharts(ds, $event)"><i class="fa fa-sm fa-bar-chart"></i></a></span>
+                </td>
             </tr>
             </tbody>
         </table>
diff --git a/traffic_portal/app/src/common/modules/table/userDeliveryServices/TableUserDeliveryServicesController.js b/traffic_portal/app/src/common/modules/table/userDeliveryServices/TableUserDeliveryServicesController.js
index 067e05534..5171a8573 100644
--- a/traffic_portal/app/src/common/modules/table/userDeliveryServices/TableUserDeliveryServicesController.js
+++ b/traffic_portal/app/src/common/modules/table/userDeliveryServices/TableUserDeliveryServicesController.js
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-var TableUserDeliveryServicesController = function(user, userDeliveryServices, useTenancy, $scope, $state, $uibModal, dateUtils, deliveryServiceUtils, locationUtils, userService) {
+var TableUserDeliveryServicesController = function(user, userDeliveryServices, useTenancy, $scope, $state, $uibModal, dateUtils, deliveryServiceUtils, locationUtils, userService, propertiesModel) {
 
 	var protocols = deliveryServiceUtils.protocols;
 
@@ -29,6 +29,10 @@ var TableUserDeliveryServicesController = function(user, userDeliveryServices, u
 
 	$scope.useTenancy = useTenancy[0].value;
 
+	$scope.showChartsButton = propertiesModel.properties.deliveryServices.charts.show;
+
+	$scope.openCharts = deliveryServiceUtils.openCharts;
+
 	$scope.protocol = function(ds) {
 		return protocols[ds.protocol];
 	};
@@ -39,7 +43,9 @@ var TableUserDeliveryServicesController = function(user, userDeliveryServices, u
 
 	$scope.getRelativeTime = dateUtils.getRelativeTime;
 
-	$scope.removeDS = function(dsId) {
+	$scope.removeDS = function(dsId, $event) {
+		$event.stopPropagation(); // this kills the click event so it doesn't trigger anything else
+
 		userService.deleteUserDeliveryService(user.id, dsId)
 			.then(
 				function() {
@@ -94,5 +100,5 @@ var TableUserDeliveryServicesController = function(user, userDeliveryServices, u
 
 };
 
-TableUserDeliveryServicesController.$inject = ['user', 'userDeliveryServices', 'useTenancy', '$scope', '$state', '$uibModal', 'dateUtils', 'deliveryServiceUtils','locationUtils', 'userService'];
+TableUserDeliveryServicesController.$inject = ['user', 'userDeliveryServices', 'useTenancy', '$scope', '$state', '$uibModal', 'dateUtils', 'deliveryServiceUtils','locationUtils', 'userService', 'propertiesModel'];
 module.exports = TableUserDeliveryServicesController;
diff --git a/traffic_portal/app/src/common/modules/table/userDeliveryServices/table.userDeliveryServices.tpl.html b/traffic_portal/app/src/common/modules/table/userDeliveryServices/table.userDeliveryServices.tpl.html
index b16e11ac8..bf2b2f562 100644
--- a/traffic_portal/app/src/common/modules/table/userDeliveryServices/table.userDeliveryServices.tpl.html
+++ b/traffic_portal/app/src/common/modules/table/userDeliveryServices/table.userDeliveryServices.tpl.html
@@ -47,7 +47,7 @@
                 <th>Signing Algorithm</th>
                 <th>Qstring Handling</th>
                 <th>Last Updated</th>
-                <th ng-if="useTenancy == '0'"></th>
+                <th style="text-align: right;">Actions</th>
             </tr>
             </thead>
             <tbody>
@@ -64,7 +64,10 @@
                 <td data-search="^{{::ds.signingAlgorithm}}$">{{::ds.signingAlgorithm}}</td>
                 <td data-search="^{{::qstring(ds)}}$">{{::qstring(ds)}}</td>
                 <td data-search="^{{::getRelativeTime(ds.lastUpdated)}}$" data-order="{{::ds.lastUpdated}}">{{::getRelativeTime(ds.lastUpdated)}}</td>
-                <td ng-if="useTenancy == '0'"><button type="button" class="btn btn-link" title="Unlink Delivery Service from User" ng-click="removeDS(ds.id)"><i class="fa fa-chain-broken"></i></button></td>
+                <td style="text-align: right;">
+                    <a ng-if="useTenancy == '0'" class="link action-link" title="Unlink Delivery Service from User" ng-click="removeDS(ds.id, $event)"><i class="fa fa-sm fa-chain-broken"></i></a>
+                    <span ng-if="showChartsButton"><a class="link action-link" title="View Charts" ng-click="openCharts(ds, $event)"><i class="fa fa-sm fa-bar-chart"></i></a></span>
+                </td>
             </tr>
             </tbody>
         </table>
diff --git a/traffic_portal/app/src/common/service/utils/DeliveryServiceUtils.js b/traffic_portal/app/src/common/service/utils/DeliveryServiceUtils.js
index f4e5e346c..25816b939 100644
--- a/traffic_portal/app/src/common/service/utils/DeliveryServiceUtils.js
+++ b/traffic_portal/app/src/common/service/utils/DeliveryServiceUtils.js
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-var DeliveryServiceUtils = function() {
+var DeliveryServiceUtils = function($window, propertiesModel) {
 
 	this.protocols = {
 		0: "HTTP",
@@ -32,7 +32,17 @@ var DeliveryServiceUtils = function() {
 		2: "DROP"
 	};
 
+	this.openCharts = function(ds, $event) {
+		if ($event) {
+			$event.stopPropagation(); // this kills the click event so it doesn't trigger anything else
+		}
+		$window.open(
+			propertiesModel.properties.deliveryServices.charts.baseUrl + ds.xmlId,
+			'_blank'
+		);
+	};
+
 };
 
-DeliveryServiceUtils.$inject = [];
+DeliveryServiceUtils.$inject = ['$window', 'propertiesModel'];
 module.exports = DeliveryServiceUtils;
diff --git a/traffic_portal/app/src/common/service/utils/ServerUtils.js b/traffic_portal/app/src/common/service/utils/ServerUtils.js
index 74d0f4c29..87a7dcd77 100644
--- a/traffic_portal/app/src/common/service/utils/ServerUtils.js
+++ b/traffic_portal/app/src/common/service/utils/ServerUtils.js
@@ -43,7 +43,9 @@ var ServerUtils = function($window, propertiesModel, userModel) {
 	};
 
 	this.openCharts = function(server, $event) {
-		$event.stopPropagation(); // this kills the click event so it doesn't trigger anything else
+		if ($event) {
+			$event.stopPropagation(); // this kills the click event so it doesn't trigger anything else
+		}
 		$window.open(
 			propertiesModel.properties.servers.charts.baseUrl + server.hostName,
 			'_blank'


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services