You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by da...@apache.org on 2017/01/05 21:59:44 UTC

[03/11] incubator-trafficcontrol git commit: adds more views to TO experimental UI

adds more views to TO experimental UI


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/commit/d69e9415
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/tree/d69e9415
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/diff/d69e9415

Branch: refs/heads/master
Commit: d69e94152d8f7ede8b91908fa36216c1d649e174
Parents: bdd8e13
Author: Jeremy Mitchell <mi...@gmail.com>
Authored: Thu Jan 5 11:04:01 2017 -0700
Committer: Dan Kirkwood <da...@gmail.com>
Committed: Thu Jan 5 14:57:46 2017 -0700

----------------------------------------------------------------------
 traffic_ops/experimental/ui/app/src/app.js      | 12 ++++
 .../ui/app/src/common/api/ASNService.js         |  4 +-
 .../ui/app/src/common/api/CDNService.js         |  4 +-
 .../common/api/CacheGroupParameterService.js    | 29 ++++++++
 .../ui/app/src/common/api/CacheGroupService.js  |  4 +-
 .../src/common/api/DeliveryServiceService.js    | 12 +++-
 .../ui/app/src/common/api/DivisionService.js    |  4 +-
 .../ui/app/src/common/api/ParameterService.js   |  8 ++-
 .../app/src/common/api/PhysLocationService.js   |  4 +-
 .../ui/app/src/common/api/ProfileService.js     |  8 ++-
 .../ui/app/src/common/api/RegionService.js      |  4 +-
 .../ui/app/src/common/api/RoleService.js        |  4 +-
 .../ui/app/src/common/api/ServerService.js      |  9 ++-
 .../ui/app/src/common/api/StatusService.js      |  4 +-
 .../ui/app/src/common/api/TenantService.js      |  4 +-
 .../ui/app/src/common/api/TypeService.js        | 16 ++---
 .../ui/app/src/common/api/UserService.js        |  4 +-
 .../experimental/ui/app/src/common/api/index.js |  2 +-
 .../common/modules/form/asn/form.asn.tpl.html   |  2 +-
 .../form/cacheGroup/FormCacheGroupController.js |  6 +-
 .../form/cacheGroup/form.cacheGroup.tpl.html    | 11 +--
 .../common/modules/form/cdn/form.cdn.tpl.html   |  7 +-
 .../FormDeliveryServiceController.js            |  2 +-
 .../form.deliveryService.tpl.html               |  9 ++-
 .../form/division/form.division.tpl.html        | 14 +++-
 .../form/parameter/FormParameterController.js   |  8 ++-
 .../form/parameter/form.parameter.tpl.html      |  7 +-
 .../physLocation/form.physLocation.tpl.html     | 16 +++--
 .../modules/form/profile/form.profile.tpl.html  | 12 ++--
 .../modules/form/region/form.region.tpl.html    | 16 +++--
 .../modules/form/server/FormServerController.js |  2 +-
 .../modules/form/server/form.server.tpl.html    | 12 ++--
 .../modules/form/status/FormStatusController.js |  8 ++-
 .../modules/form/status/form.status.tpl.html    |  7 +-
 .../modules/form/tenant/form.tenant.tpl.html    |  2 +-
 .../modules/form/type/FormTypeController.js     | 16 ++++-
 .../common/modules/form/type/form.type.tpl.html |  9 ++-
 .../common/modules/form/user/form.user.tpl.html | 16 +++--
 .../modules/table/asns/table.asns.tpl.html      |  2 +-
 .../TableCacheGroupAsnsController.js            | 42 ++++++++++++
 .../modules/table/cacheGroupAsns/index.js       | 21 ++++++
 .../table.cacheGroupAsns.tpl.html               | 47 +++++++++++++
 .../TableCacheGroupParametersController.js      |  6 +-
 .../table.cacheGroupParameters.tpl.html         |  2 +-
 .../TableCacheGroupServersController.js         |  8 +--
 .../table.cacheGroupServers.tpl.html            |  6 +-
 .../cacheGroups/table.cacheGroups.tpl.html      |  2 +-
 .../cdnServers/TableCDNServersController.js     |  4 ++
 .../table/cdnServers/table.cdnServers.tpl.html  |  1 +
 .../modules/table/cdns/table.cdns.tpl.html      |  2 +-
 .../TableDeliveryServiceRegexesController.js    |  2 +-
 .../table.deliveryServiceRegexes.tpl.html       |  4 +-
 .../table.deliveryServiceServers.tpl.html       |  2 +-
 .../table.deliveryServices.tpl.html             |  2 +-
 .../table/divisions/table.divisions.tpl.html    |  2 +-
 .../TableParameterProfilesController.js         | 46 +++++++++++++
 .../modules/table/parameterProfiles/index.js    | 21 ++++++
 .../table.parameterProfiles.tpl.html            | 50 ++++++++++++++
 .../table/parameters/table.parameters.tpl.html  |  2 +-
 .../physLocations/table.physLocations.tpl.html  |  2 +-
 .../table.profileParameters.tpl.html            |  2 +-
 .../table/profiles/table.profiles.tpl.html      | 17 +++--
 .../table/regions/table.regions.tpl.html        |  2 +-
 .../table.serverDeliveryServices.tpl.html       | 15 ++++-
 .../table/servers/table.servers.tpl.html        | 14 +++-
 .../TableStatusServersController.js             | 42 ++++++++++++
 .../common/modules/table/statusServers/index.js | 22 ++++++
 .../statusServers/table.statusServers.tpl.html  | 69 +++++++++++++++++++
 .../table/statuses/table.statuses.tpl.html      |  2 +-
 .../table/tenants/table.tenants.tpl.html        |  2 +-
 .../TableTypeCacheGroupsController.js           | 42 ++++++++++++
 .../modules/table/typeCacheGroups/index.js      | 22 ++++++
 .../table.typeCacheGroups.tpl.html              | 53 +++++++++++++++
 .../TableTypeDeliveryServicesController.js      | 42 ++++++++++++
 .../modules/table/typeDeliveryServices/index.js | 22 ++++++
 .../table.typeDeliveryServices.tpl.html         | 71 ++++++++++++++++++++
 .../typeServers/TableTypeServersController.js   | 42 ++++++++++++
 .../common/modules/table/typeServers/index.js   | 22 ++++++
 .../typeServers/table.typeServers.tpl.html      | 69 +++++++++++++++++++
 .../modules/table/types/table.types.tpl.html    |  2 +-
 .../table.userDeliveryServices.tpl.html         |  3 +-
 .../modules/table/users/table.users.tpl.html    |  2 +-
 .../app/src/common/service/utils/FormUtils.js   |  4 +-
 .../admin/cdns/deliveryServices/index.js        |  4 +-
 .../modules/private/admin/cdns/servers/index.js |  4 +-
 .../private/admin/divisions/regions/index.js    |  2 +-
 .../private/admin/parameters/profiles/index.js  | 42 ++++++++++++
 .../admin/physLocations/servers/index.js        |  4 +-
 .../private/admin/profiles/parameters/index.js  |  4 +-
 .../private/admin/profiles/servers/index.js     |  2 +-
 .../admin/regions/physLocations/index.js        |  4 +-
 .../private/admin/statuses/servers/index.js     | 42 ++++++++++++
 .../private/admin/types/cacheGroups/index.js    | 42 ++++++++++++
 .../admin/types/deliveryServices/index.js       | 42 ++++++++++++
 .../private/admin/types/servers/index.js        | 42 ++++++++++++
 .../admin/users/deliveryServices/index.js       |  4 +-
 .../private/configure/cacheGroups/asns/index.js | 42 ++++++++++++
 .../configure/cacheGroups/parameters/index.js   |  4 +-
 .../configure/cacheGroups/servers/index.js      |  4 +-
 .../configure/deliveryServices/servers/index.js |  2 +-
 .../configure/servers/deliveryServices/index.js |  2 +-
 .../app/src/modules/public/login/login.tpl.html |  2 +-
 .../experimental/ui/app/src/styles/main.scss    |  5 ++
 103 files changed, 1318 insertions(+), 158 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/app.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/app.js b/traffic_ops/experimental/ui/app/src/app.js
index 18261f3..b54d85a 100644
--- a/traffic_ops/experimental/ui/app/src/app.js
+++ b/traffic_ops/experimental/ui/app/src/app.js
@@ -77,6 +77,7 @@ var trafficOps = angular.module('trafficOps', [
         require('./modules/private/admin/parameters/edit').name,
         require('./modules/private/admin/parameters/list').name,
         require('./modules/private/admin/parameters/new').name,
+        require('./modules/private/admin/parameters/profiles').name,
         require('./modules/private/admin/profiles').name,
         require('./modules/private/admin/profiles/edit').name,
         require('./modules/private/admin/profiles/list').name,
@@ -92,6 +93,7 @@ var trafficOps = angular.module('trafficOps', [
         require('./modules/private/admin/statuses/edit').name,
         require('./modules/private/admin/statuses/list').name,
         require('./modules/private/admin/statuses/new').name,
+        require('./modules/private/admin/statuses/servers').name,
         require('./modules/private/admin/tenants').name,
         require('./modules/private/admin/tenants/edit').name,
         require('./modules/private/admin/tenants/list').name,
@@ -100,6 +102,9 @@ var trafficOps = angular.module('trafficOps', [
         require('./modules/private/admin/types/edit').name,
         require('./modules/private/admin/types/list').name,
         require('./modules/private/admin/types/new').name,
+        require('./modules/private/admin/types/servers').name,
+        require('./modules/private/admin/types/cacheGroups').name,
+        require('./modules/private/admin/types/deliveryServices').name,
         require('./modules/private/admin/users').name,
         require('./modules/private/admin/users/deliveryServices').name,
         require('./modules/private/admin/users/edit').name,
@@ -112,6 +117,7 @@ var trafficOps = angular.module('trafficOps', [
         require('./modules/private/configure/cacheGroups/edit').name,
         require('./modules/private/configure/cacheGroups/list').name,
         require('./modules/private/configure/cacheGroups/new').name,
+        require('./modules/private/configure/cacheGroups/asns').name,
         require('./modules/private/configure/cacheGroups/parameters').name,
         require('./modules/private/configure/cacheGroups/servers').name,
         require('./modules/private/configure/deliveryServices').name,
@@ -191,6 +197,7 @@ var trafficOps = angular.module('trafficOps', [
 
         // tables
         require('./common/modules/table/cacheGroups').name,
+        require('./common/modules/table/cacheGroupAsns').name,
         require('./common/modules/table/cacheGroupParameters').name,
         require('./common/modules/table/cacheGroupServers').name,
         require('./common/modules/table/asns').name,
@@ -206,6 +213,7 @@ var trafficOps = angular.module('trafficOps', [
         require('./common/modules/table/physLocations').name,
         require('./common/modules/table/physLocationServers').name,
         require('./common/modules/table/parameters').name,
+        require('./common/modules/table/parameterProfiles').name,
         require('./common/modules/table/profileParameters').name,
         require('./common/modules/table/profileServers').name,
         require('./common/modules/table/profiles').name,
@@ -214,7 +222,11 @@ var trafficOps = angular.module('trafficOps', [
         require('./common/modules/table/servers').name,
         require('./common/modules/table/serverDeliveryServices').name,
         require('./common/modules/table/statuses').name,
+        require('./common/modules/table/statusServers').name,
         require('./common/modules/table/types').name,
+        require('./common/modules/table/typeCacheGroups').name,
+        require('./common/modules/table/typeDeliveryServices').name,
+        require('./common/modules/table/typeServers').name,
         require('./common/modules/table/users').name,
         require('./common/modules/table/userDeliveryServices').name,
 

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/api/ASNService.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/api/ASNService.js b/traffic_ops/experimental/ui/app/src/common/api/ASNService.js
index 51706cf..9cc604a 100644
--- a/traffic_ops/experimental/ui/app/src/common/api/ASNService.js
+++ b/traffic_ops/experimental/ui/app/src/common/api/ASNService.js
@@ -19,8 +19,8 @@
 
 var ASNService = function(Restangular, locationUtils, messageModel) {
 
-    this.getASNs = function() {
-        return Restangular.all('asns').getList();
+    this.getASNs = function(queryParams) {
+        return Restangular.all('asns').getList(queryParams);
     };
 
     this.getASN = function(id) {

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/api/CDNService.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/api/CDNService.js b/traffic_ops/experimental/ui/app/src/common/api/CDNService.js
index e446eb6..dd5f7dc 100644
--- a/traffic_ops/experimental/ui/app/src/common/api/CDNService.js
+++ b/traffic_ops/experimental/ui/app/src/common/api/CDNService.js
@@ -19,8 +19,8 @@
 
 var CDNService = function(Restangular, locationUtils, messageModel) {
 
-    this.getCDNs = function() {
-        return Restangular.all('cdns').getList();
+    this.getCDNs = function(queryParams) {
+        return Restangular.all('cdns').getList(queryParams);
     };
 
     this.getCDN = function(id) {

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/api/CacheGroupParameterService.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/api/CacheGroupParameterService.js b/traffic_ops/experimental/ui/app/src/common/api/CacheGroupParameterService.js
new file mode 100644
index 0000000..651385c
--- /dev/null
+++ b/traffic_ops/experimental/ui/app/src/common/api/CacheGroupParameterService.js
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+var CacheGroupParameterService = function(Restangular) {
+
+	this.getCacheGroupParameters = function(cachegroupId) {
+		return Restangular.one('cachegroups', cachegroupId).getList('parameters')
+	};
+
+};
+
+CacheGroupParameterService.$inject = ['Restangular'];
+module.exports = CacheGroupParameterService;

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/api/CacheGroupService.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/api/CacheGroupService.js b/traffic_ops/experimental/ui/app/src/common/api/CacheGroupService.js
index cff779b..5f5f725 100644
--- a/traffic_ops/experimental/ui/app/src/common/api/CacheGroupService.js
+++ b/traffic_ops/experimental/ui/app/src/common/api/CacheGroupService.js
@@ -19,8 +19,8 @@
 
 var CacheGroupService = function(Restangular, locationUtils, messageModel) {
 
-    this.getCacheGroups = function() {
-        return Restangular.all('cachegroups').getList();
+    this.getCacheGroups = function(queryParams) {
+        return Restangular.all('cachegroups').getList(queryParams);
     };
 
     this.getCacheGroup = function(id) {

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/api/DeliveryServiceService.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/api/DeliveryServiceService.js b/traffic_ops/experimental/ui/app/src/common/api/DeliveryServiceService.js
index 4f9cd72..62b2e0d 100644
--- a/traffic_ops/experimental/ui/app/src/common/api/DeliveryServiceService.js
+++ b/traffic_ops/experimental/ui/app/src/common/api/DeliveryServiceService.js
@@ -19,8 +19,8 @@
 
 var DeliveryServiceService = function(Restangular, locationUtils, messageModel) {
 
-    this.getDeliveryServices = function() {
-        return Restangular.all('deliveryservices').getList();
+    this.getDeliveryServices = function(queryParams) {
+        return Restangular.all('deliveryservices').getList(queryParams);
     };
 
     this.getDeliveryService = function(id) {
@@ -64,6 +64,14 @@ var DeliveryServiceService = function(Restangular, locationUtils, messageModel)
             );
     };
 
+    this.getServerDeliveryServices = function(serverId) {
+        return Restangular.one('servers', serverId).getList('deliveryservices');
+    };
+
+    this.getUserDeliveryServices = function(userId) {
+        return Restangular.one('users', userId).getList('deliveryservices');
+    };
+
 };
 
 DeliveryServiceService.$inject = ['Restangular', 'locationUtils', 'messageModel'];

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/api/DivisionService.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/api/DivisionService.js b/traffic_ops/experimental/ui/app/src/common/api/DivisionService.js
index d10312e..6ffc6ee 100644
--- a/traffic_ops/experimental/ui/app/src/common/api/DivisionService.js
+++ b/traffic_ops/experimental/ui/app/src/common/api/DivisionService.js
@@ -19,8 +19,8 @@
 
 var DivisionService = function(Restangular, locationUtils, messageModel) {
 
-    this.getDivisions = function() {
-        return Restangular.all('divisions').getList();
+    this.getDivisions = function(queryParams) {
+        return Restangular.all('divisions').getList(queryParams);
     };
 
     this.getDivision = function(id) {

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/api/ParameterService.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/api/ParameterService.js b/traffic_ops/experimental/ui/app/src/common/api/ParameterService.js
index 8fccc22..46a9b43 100644
--- a/traffic_ops/experimental/ui/app/src/common/api/ParameterService.js
+++ b/traffic_ops/experimental/ui/app/src/common/api/ParameterService.js
@@ -19,8 +19,8 @@
 
 var ParameterService = function(Restangular, locationUtils, messageModel) {
 
-    this.getParameters = function() {
-        return Restangular.all('parameters').getList();
+    this.getParameters = function(queryParams) {
+        return Restangular.all('parameters').getList(queryParams);
     };
 
     this.getParameter = function(id) {
@@ -64,6 +64,10 @@ var ParameterService = function(Restangular, locationUtils, messageModel) {
         );
     };
 
+    this.getProfileParameters = function(profileId) {
+        return Restangular.one('profiles', profileId).getList('parameters');
+    };
+
 };
 
 ParameterService.$inject = ['Restangular', 'locationUtils', 'messageModel'];

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/api/PhysLocationService.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/api/PhysLocationService.js b/traffic_ops/experimental/ui/app/src/common/api/PhysLocationService.js
index 4d94592..9ddf07a 100644
--- a/traffic_ops/experimental/ui/app/src/common/api/PhysLocationService.js
+++ b/traffic_ops/experimental/ui/app/src/common/api/PhysLocationService.js
@@ -19,8 +19,8 @@
 
 var PhysLocationService = function(Restangular, locationUtils, messageModel) {
 
-    this.getPhysLocations = function() {
-        return Restangular.all('phys_locations').getList();
+    this.getPhysLocations = function(queryParams) {
+        return Restangular.all('phys_locations').getList(queryParams);
     };
 
     this.getPhysLocation = function(id) {

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/api/ProfileService.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/api/ProfileService.js b/traffic_ops/experimental/ui/app/src/common/api/ProfileService.js
index 67b322d..bbd3eb4 100644
--- a/traffic_ops/experimental/ui/app/src/common/api/ProfileService.js
+++ b/traffic_ops/experimental/ui/app/src/common/api/ProfileService.js
@@ -19,8 +19,8 @@
 
 var ProfileService = function(Restangular, locationUtils, messageModel) {
 
-    this.getProfiles = function() {
-        return Restangular.all('profiles').getList();
+    this.getProfiles = function(queryParams) {
+        return Restangular.all('profiles').getList(queryParams);
     };
 
     this.getProfile = function(id) {
@@ -64,6 +64,10 @@ var ProfileService = function(Restangular, locationUtils, messageModel) {
         );
     };
 
+    this.getParameterProfiles = function(paramId) {
+        return Restangular.one('parameters', paramId).getList('profiles');
+    };
+
 };
 
 ProfileService.$inject = ['Restangular', 'locationUtils', 'messageModel'];

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/api/RegionService.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/api/RegionService.js b/traffic_ops/experimental/ui/app/src/common/api/RegionService.js
index 1fbe78a..d8d87e9 100644
--- a/traffic_ops/experimental/ui/app/src/common/api/RegionService.js
+++ b/traffic_ops/experimental/ui/app/src/common/api/RegionService.js
@@ -19,8 +19,8 @@
 
 var RegionService = function(Restangular, messageModel) {
 
-    this.getRegions = function() {
-        return Restangular.all('regions').getList();
+    this.getRegions = function(queryParams) {
+        return Restangular.all('regions').getList(queryParams);
     };
 
     this.getRegion = function(id) {

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/api/RoleService.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/api/RoleService.js b/traffic_ops/experimental/ui/app/src/common/api/RoleService.js
index 26f283e..bcd9b3b 100644
--- a/traffic_ops/experimental/ui/app/src/common/api/RoleService.js
+++ b/traffic_ops/experimental/ui/app/src/common/api/RoleService.js
@@ -19,8 +19,8 @@
 
 var RoleService = function(Restangular, messageModel) {
 
-    this.getRoles = function() {
-        return Restangular.all('roles').getList();
+    this.getRoles = function(queryParams) {
+        return Restangular.all('roles').getList(queryParams);
     };
 
     this.getRole = function(id) {

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/api/ServerService.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/api/ServerService.js b/traffic_ops/experimental/ui/app/src/common/api/ServerService.js
index b764a69..c661e80 100644
--- a/traffic_ops/experimental/ui/app/src/common/api/ServerService.js
+++ b/traffic_ops/experimental/ui/app/src/common/api/ServerService.js
@@ -19,8 +19,8 @@
 
 var ServerService = function(Restangular, locationUtils, messageModel) {
 
-    this.getServers = function(dsId, profileId) {
-        return Restangular.all('servers').getList({ dsId: dsId, profileId: profileId });
+    this.getServers = function(queryParams) {
+        return Restangular.all('servers').getList(queryParams);
     };
 
     this.getServer = function(id) {
@@ -64,6 +64,11 @@ var ServerService = function(Restangular, locationUtils, messageModel) {
             );
     };
 
+    this.getDeliveryServiceServers = function(dsId) {
+        return Restangular.one('deliveryservices', dsId).getList('servers');
+    };
+
+
 };
 
 ServerService.$inject = ['Restangular', 'locationUtils', 'messageModel'];

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/api/StatusService.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/api/StatusService.js b/traffic_ops/experimental/ui/app/src/common/api/StatusService.js
index d648620..dd656d8 100644
--- a/traffic_ops/experimental/ui/app/src/common/api/StatusService.js
+++ b/traffic_ops/experimental/ui/app/src/common/api/StatusService.js
@@ -19,8 +19,8 @@
 
 var StatusService = function(Restangular, locationUtils, messageModel) {
 
-    this.getStatuses = function() {
-        return Restangular.all('statuses').getList();
+    this.getStatuses = function(queryParams) {
+        return Restangular.all('statuses').getList(queryParams);
     };
 
     this.getStatus = function(id) {

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/api/TenantService.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/api/TenantService.js b/traffic_ops/experimental/ui/app/src/common/api/TenantService.js
index 1541e9a..edec73e 100644
--- a/traffic_ops/experimental/ui/app/src/common/api/TenantService.js
+++ b/traffic_ops/experimental/ui/app/src/common/api/TenantService.js
@@ -19,8 +19,8 @@
 
 var TenantService = function(Restangular, messageModel) {
 
-    this.getTenants = function() {
-        return Restangular.all('tenant').getList();
+    this.getTenants = function(queryParams) {
+        return Restangular.all('tenant').getList(queryParams);
     };
 
     this.getTenant = function(id) {

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/api/TypeService.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/api/TypeService.js b/traffic_ops/experimental/ui/app/src/common/api/TypeService.js
index dd55d59..2ec57fd 100644
--- a/traffic_ops/experimental/ui/app/src/common/api/TypeService.js
+++ b/traffic_ops/experimental/ui/app/src/common/api/TypeService.js
@@ -19,8 +19,8 @@
 
 var TypeService = function(Restangular, locationUtils, messageModel) {
 
-    this.getTypes = function(useInTable) {
-        return Restangular.all('types').getList({ useInTable: useInTable });
+    this.getTypes = function(queryParams) {
+        return Restangular.all('types').getList(queryParams);
     };
 
     this.getType = function(id) {
@@ -43,12 +43,12 @@ var TypeService = function(Restangular, locationUtils, messageModel) {
     this.updateType = function(type) {
         return type.put()
             .then(
-            function() {
-                messageModel.setMessages([ { level: 'success', text: 'Type updated' } ], false);
-            },
-            function(fault) {
-                messageModel.setMessages(fault.data.alerts, false);
-            }
+                function() {
+                    messageModel.setMessages([ { level: 'success', text: 'Type updated' } ], false);
+                },
+                function(fault) {
+                    messageModel.setMessages(fault.data.alerts, false);
+                }
         );
     };
 

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/api/UserService.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/api/UserService.js b/traffic_ops/experimental/ui/app/src/common/api/UserService.js
index 8fc8fb7..37c1e78 100644
--- a/traffic_ops/experimental/ui/app/src/common/api/UserService.js
+++ b/traffic_ops/experimental/ui/app/src/common/api/UserService.js
@@ -61,8 +61,8 @@ var UserService = function(Restangular, $http, $location, $q, authService, locat
             );
     };
 
-    this.getUsers = function() {
-        return Restangular.all('users').getList();
+    this.getUsers = function(queryParams) {
+        return Restangular.all('users').getList(queryParams);
     };
 
     this.getUser = function(id) {

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/api/index.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/api/index.js b/traffic_ops/experimental/ui/app/src/common/api/index.js
index bd579f7..455e4dd 100644
--- a/traffic_ops/experimental/ui/app/src/common/api/index.js
+++ b/traffic_ops/experimental/ui/app/src/common/api/index.js
@@ -21,6 +21,7 @@ module.exports = angular.module('trafficOps.api', [])
     .service('authService', require('./AuthService'))
     .service('asnService', require('./ASNService'))
     .service('cacheGroupService', require('./CacheGroupService'))
+    .service('cacheGroupParameterService', require('./CacheGroupParameterService'))
     .service('cdnService', require('./CDNService'))
     .service('deliveryServiceService', require('./DeliveryServiceService'))
     .service('divisionService', require('./DivisionService'))
@@ -28,7 +29,6 @@ module.exports = angular.module('trafficOps.api', [])
     .service('physLocationService', require('./PhysLocationService'))
     .service('parameterService', require('./ParameterService'))
     .service('profileService', require('./ProfileService'))
-    .service('profileParameterService', require('./ProfileParameterService'))
     .service('roleService', require('./RoleService'))
     .service('regionService', require('./RegionService'))
     .service('regexService', require('./RegexService'))

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/form/asn/form.asn.tpl.html
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/asn/form.asn.tpl.html b/traffic_ops/experimental/ui/app/src/common/modules/form/asn/form.asn.tpl.html
index aa4fa66..6ba8a69 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/form/asn/form.asn.tpl.html
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/asn/form.asn.tpl.html
@@ -49,7 +49,7 @@ under the License.
             </div>
             <div class="modal-footer">
                 <button type="button" class="btn btn-danger" ng-show="!settings.isNew" ng-click="confirmDelete(asn)">Delete</button>
-                <button type="button" class="btn btn-primary" ng-disabled="asnForm.$pristine || asnForm.$invalid" ng-click="save(asn)">{{settings.saveLabel}}</button>
+                <button type="button" class="btn btn-success" ng-disabled="asnForm.$pristine || asnForm.$invalid" ng-click="save(asn)">{{settings.saveLabel}}</button>
             </div>
         </form>
     </div>

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/form/cacheGroup/FormCacheGroupController.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/cacheGroup/FormCacheGroupController.js b/traffic_ops/experimental/ui/app/src/common/modules/form/cacheGroup/FormCacheGroupController.js
index 0ab458d..da8c881 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/form/cacheGroup/FormCacheGroupController.js
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/cacheGroup/FormCacheGroupController.js
@@ -27,7 +27,7 @@ var FormCacheGroupController = function(cacheGroup, $scope, $location, formUtils
     };
 
     var getTypes = function() {
-        typeService.getTypes('cachegroup')
+        typeService.getTypes({ useInTable: 'cachegroup' })
             .then(function(result) {
                 $scope.types = result;
             });
@@ -43,6 +43,10 @@ var FormCacheGroupController = function(cacheGroup, $scope, $location, formUtils
         alert('not hooked up yet: dequeuing updates for all cachegroup servers');
     };
 
+    $scope.viewAsns = function() {
+        $location.path($location.path() + '/asns');
+    };
+
     $scope.viewParams = function() {
         $location.path($location.path() + '/parameters');
     };

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/form/cacheGroup/form.cacheGroup.tpl.html
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/cacheGroup/form.cacheGroup.tpl.html b/traffic_ops/experimental/ui/app/src/common/modules/form/cacheGroup/form.cacheGroup.tpl.html
index 689287e..7a720c2 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/form/cacheGroup/form.cacheGroup.tpl.html
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/cacheGroup/form.cacheGroup.tpl.html
@@ -23,10 +23,7 @@ under the License.
             <li><a ng-click="navigateToPath('/configure/cache-groups')">Cache Groups</a></li>
             <li class="active">{{cacheGroupName}}</li>
         </ol>
-        <div class="btn-group pull-right" role="group" ng-show="!settings.isNew">
-            <button class="btn btn-default" ng-click="viewServers()">Servers</button>
-            <button class="btn btn-default" ng-click="viewParams()">Parameters</button>
-
+        <div class="pull-right" ng-show="!settings.isNew">
             <div class="btn-group" role="group" uib-dropdown is-open="more.isopen">
                 <button type="button" class="btn btn-default dropdown-toggle" uib-dropdown-toggle aria-haspopup="true" aria-expanded="false">
                     More
@@ -35,6 +32,10 @@ under the License.
                 <ul class="dropdown-menu-right dropdown-menu" uib-dropdown-menu>
                     <li role="menuitem"><a ng-click="queueUpdates()">Queue Server Updates</a></li>
                     <li role="menuitem"><a ng-click="dequeueUpdates()">Dequeue Server Updates</a></li>
+                    <li class="divider"></li>
+                    <li role="menuitem"><a ng-click="viewAsns()">View ASNs</a></li>
+                    <li role="menuitem"><a ng-click="viewParams()">View Parameters</a></li>
+                    <li role="menuitem"><a ng-click="viewServers()">View Servers</a></li>
                 </ul>
             </div>
         </div>
@@ -107,7 +108,7 @@ under the License.
             </div>
             <div class="modal-footer">
                 <button type="button" class="btn btn-danger" ng-show="!settings.isNew" ng-click="confirmDelete(cacheGroup)">Delete</button>
-                <button type="button" class="btn btn-primary" ng-disabled="cacheGroupForm.$pristine || cacheGroupForm.$invalid" ng-click="save(cacheGroup)">{{settings.saveLabel}}</button>
+                <button type="button" class="btn btn-success" ng-disabled="cacheGroupForm.$pristine || cacheGroupForm.$invalid" ng-click="save(cacheGroup)">{{settings.saveLabel}}</button>
             </div>
         </form>
     </div>

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/form/cdn/form.cdn.tpl.html
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/cdn/form.cdn.tpl.html b/traffic_ops/experimental/ui/app/src/common/modules/form/cdn/form.cdn.tpl.html
index 39b6fed..3dbda0f 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/form/cdn/form.cdn.tpl.html
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/cdn/form.cdn.tpl.html
@@ -23,9 +23,8 @@ under the License.
             <li><a ng-click="navigateToPath('/admin/cdns')">CDNs</a></li>
             <li class="active">{{cdnName}}</li>
         </ol>
-        <div class="btn-group pull-right" role="group" ng-show="!settings.isNew">
-            <button class="btn btn-default" ng-click="manageSnapshots()">Snapshot</button>
-
+        <div class="pull-right" ng-show="!settings.isNew">
+            <button class="btn btn-primary" ng-click="manageSnapshots()">Snapshot CDN Config &nbsp;&nbsp;<i class="fa fa-camera"></i></button>
             <div class="btn-group" role="group" uib-dropdown is-open="more.isopen">
                 <button type="button" class="btn btn-default dropdown-toggle" uib-dropdown-toggle aria-haspopup="true" aria-expanded="false">
                     More
@@ -67,7 +66,7 @@ under the License.
             </div>
             <div class="modal-footer">
                 <button type="button" class="btn btn-danger" ng-show="!settings.isNew" ng-click="confirmDelete(cdn)">Delete</button>
-                <button type="button" class="btn btn-primary" ng-disabled="cdnForm.$pristine || cdnForm.$invalid" ng-click="save(cdn)">{{settings.saveLabel}}</button>
+                <button type="button" class="btn btn-success" ng-disabled="cdnForm.$pristine || cdnForm.$invalid" ng-click="save(cdn)">{{settings.saveLabel}}</button>
             </div>
         </form>
     </div>

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryService/FormDeliveryServiceController.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryService/FormDeliveryServiceController.js b/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryService/FormDeliveryServiceController.js
index 74ef020..507d51a 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryService/FormDeliveryServiceController.js
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryService/FormDeliveryServiceController.js
@@ -20,7 +20,7 @@
 var FormDeliveryServiceController = function(deliveryService, $scope, $location, formUtils, locationUtils, cdnService, profileService, typeService) {
 
     var getTypes = function() {
-        typeService.getTypes('deliveryservice')
+        typeService.getTypes({ useInTable: 'deliveryservice' })
             .then(function(result) {
                 $scope.types = result;
             });

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryService/form.deliveryService.tpl.html
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryService/form.deliveryService.tpl.html b/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryService/form.deliveryService.tpl.html
index e3e70f3..bbaf158 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryService/form.deliveryService.tpl.html
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryService/form.deliveryService.tpl.html
@@ -23,10 +23,9 @@ under the License.
             <li><a ng-click="navigateToPath('/configure/delivery-services')">Delivery Services</a></li>
             <li class="active">{{deliveryServiceName}}</li>
         </ol>
-        <div class="btn-group pull-right" role="group" ng-show="!settings.isNew">
-            <button class="btn btn-default" ng-click="assignServers()">Servers</button>
-            <button class="btn btn-default" ng-click="viewRegexes()">Regexes</button>
-
+        <div class="pull-right" role="group" ng-show="!settings.isNew">
+            <button class="btn btn-primary" ng-click="assignServers()">Assign Servers &nbsp;&nbsp;<i class="fa fa-server"></i></button>
+            <button class="btn btn-primary" ng-click="viewRegexes()">Edit Regexes &nbsp;&nbsp;<i class="fa fa-edit"></i></button>
             <div class="btn-group" role="group" uib-dropdown is-open="more.isopen">
                 <button type="button" class="btn btn-default dropdown-toggle" uib-dropdown-toggle aria-haspopup="true" aria-expanded="false">
                     More
@@ -473,7 +472,7 @@ under the License.
             
             <div class="modal-footer">
                 <button type="button" class="btn btn-danger" ng-show="!settings.isNew" ng-click="confirmDelete(deliveryService)">Delete</button>
-                <button type="button" class="btn btn-primary" ng-disabled="deliveryServiceForm.$pristine || deliveryServiceForm.$invalid" ng-click="save(deliveryService)">{{settings.saveLabel}}</button>
+                <button type="button" class="btn btn-success" ng-disabled="deliveryServiceForm.$pristine || deliveryServiceForm.$invalid" ng-click="save(deliveryService)">{{settings.saveLabel}}</button>
             </div>
         </form>
     </div>

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/form/division/form.division.tpl.html
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/division/form.division.tpl.html b/traffic_ops/experimental/ui/app/src/common/modules/form/division/form.division.tpl.html
index 839deb9..33f61fb 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/form/division/form.division.tpl.html
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/division/form.division.tpl.html
@@ -23,8 +23,16 @@ under the License.
             <li><a ng-click="navigateToPath('/admin/divisions')">Divisions</a></li>
             <li class="active">{{divisionName}}</li>
         </ol>
-        <div class="btn-group pull-right" role="group" ng-show="!settings.isNew">
-            <button class="btn btn-default" ng-click="viewRegions()">Regions</button>
+        <div class="pull-right" ng-show="!settings.isNew">
+            <div class="btn-group" role="group" uib-dropdown is-open="more.isopen">
+                <button type="button" class="btn btn-default dropdown-toggle" uib-dropdown-toggle aria-haspopup="true" aria-expanded="false">
+                    More
+                    <span class="caret"></span>
+                </button>
+                <ul class="dropdown-menu-right dropdown-menu" uib-dropdown-menu>
+                    <li role="menuitem"><a ng-click="viewRegions()">View Regions</a></li>
+                </ul>
+            </div>
         </div>
         <div class="clearfix"></div>
     </div>
@@ -42,7 +50,7 @@ under the License.
             </div>
             <div class="modal-footer">
                 <button type="button" class="btn btn-danger" ng-show="!settings.isNew" ng-click="confirmDelete(division)">Delete</button>
-                <button type="button" class="btn btn-primary" ng-disabled="divisionForm.$pristine || divisionForm.$invalid" ng-click="save(division)">{{settings.saveLabel}}</button>
+                <button type="button" class="btn btn-success" ng-disabled="divisionForm.$pristine || divisionForm.$invalid" ng-click="save(division)">{{settings.saveLabel}}</button>
             </div>
         </form>
     </div>

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/form/parameter/FormParameterController.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/parameter/FormParameterController.js b/traffic_ops/experimental/ui/app/src/common/modules/form/parameter/FormParameterController.js
index aa877ea..d398735 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/form/parameter/FormParameterController.js
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/parameter/FormParameterController.js
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-var FormParameterController = function(parameter, $scope, formUtils, stringUtils, locationUtils) {
+var FormParameterController = function(parameter, $scope, $location, formUtils, stringUtils, locationUtils) {
 
     $scope.parameter = parameter;
 
@@ -29,6 +29,10 @@ var FormParameterController = function(parameter, $scope, formUtils, stringUtils
 
     $scope.labelize = stringUtils.labelize;
 
+    $scope.viewProfiles = function() {
+        $location.path($location.path() + '/profiles');
+    };
+
     $scope.navigateToPath = locationUtils.navigateToPath;
 
     $scope.hasError = formUtils.hasError;
@@ -37,5 +41,5 @@ var FormParameterController = function(parameter, $scope, formUtils, stringUtils
 
 };
 
-FormParameterController.$inject = ['parameter', '$scope', 'formUtils', 'stringUtils', 'locationUtils'];
+FormParameterController.$inject = ['parameter', '$scope', '$location', 'formUtils', 'stringUtils', 'locationUtils'];
 module.exports = FormParameterController;

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/form/parameter/form.parameter.tpl.html
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/parameter/form.parameter.tpl.html b/traffic_ops/experimental/ui/app/src/common/modules/form/parameter/form.parameter.tpl.html
index 0bd86e5..e38a3f1 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/form/parameter/form.parameter.tpl.html
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/parameter/form.parameter.tpl.html
@@ -19,10 +19,13 @@ under the License.
 
 <div class="x_panel">
     <div class="x_title">
-        <ol class="breadcrumb">
+        <ol class="breadcrumb pull-left">
             <li><a ng-click="navigateToPath('/admin/parameters')">Parameters</a></li>
             <li class="active">{{parameterName}}</li>
         </ol>
+        <div class="pull-right" role="group" ng-show="!settings.isNew">
+            <button class="btn btn-primary" ng-click="viewProfiles()">View Profiles &nbsp;&nbsp;<i class="fa fa-sticky-note"></i></button>
+        </div>
         <div class="clearfix"></div>
     </div>
     <div class="x_content">
@@ -39,7 +42,7 @@ under the License.
             </div>
             <div class="modal-footer">
                 <button type="button" class="btn btn-danger" ng-show="!settings.isNew" ng-click="confirmDelete(parameter)">Delete</button>
-                <button type="button" class="btn btn-primary" ng-disabled="parameterForm.$pristine || parameterForm.$invalid" ng-click="save(parameter)">{{settings.saveLabel}}</button>
+                <button type="button" class="btn btn-success" ng-disabled="parameterForm.$pristine || parameterForm.$invalid" ng-click="save(parameter)">{{settings.saveLabel}}</button>
             </div>
         </form>
     </div>

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/form/physLocation/form.physLocation.tpl.html
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/physLocation/form.physLocation.tpl.html b/traffic_ops/experimental/ui/app/src/common/modules/form/physLocation/form.physLocation.tpl.html
index 5e1b695..fc7757e 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/form/physLocation/form.physLocation.tpl.html
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/physLocation/form.physLocation.tpl.html
@@ -19,12 +19,20 @@ under the License.
 
 <div class="x_panel">
     <div class="x_title">
-        <ol class="breadcrumb">
+        <ol class="breadcrumb pull-left">
             <li><a ng-click="navigateToPath('/admin/phys-locations')">Physical Locations</a></li>
             <li class="active">{{physLocationName}}</li>
         </ol>
-        <div class="btn-group pull-right" role="group" ng-show="!settings.isNew">
-            <button class="btn btn-default" ng-click="viewServers()">Servers</button>
+        <div class="pull-right" ng-show="!settings.isNew">
+            <div class="btn-group" role="group" uib-dropdown is-open="more.isopen">
+                <button type="button" class="btn btn-default dropdown-toggle" uib-dropdown-toggle aria-haspopup="true" aria-expanded="false">
+                    More
+                    <span class="caret"></span>
+                </button>
+                <ul class="dropdown-menu-right dropdown-menu" uib-dropdown-menu>
+                    <li role="menuitem"><a ng-click="viewServers()">View Servers</a></li>
+                </ul>
+            </div>
         </div>
         <div class="clearfix"></div>
     </div>
@@ -57,7 +65,7 @@ under the License.
             </div>
             <div class="modal-footer">
                 <button type="button" class="btn btn-danger" ng-show="!settings.isNew" ng-click="confirmDelete(physLocation)">Delete</button>
-                <button type="button" class="btn btn-primary" ng-disabled="physLocationForm.$pristine || physLocationForm.$invalid" ng-click="save(physLocation)">{{settings.saveLabel}}</button>
+                <button type="button" class="btn btn-success" ng-disabled="physLocationForm.$pristine || physLocationForm.$invalid" ng-click="save(physLocation)">{{settings.saveLabel}}</button>
             </div>
         </form>
     </div>

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/form/profile/form.profile.tpl.html
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/profile/form.profile.tpl.html b/traffic_ops/experimental/ui/app/src/common/modules/form/profile/form.profile.tpl.html
index 94a1fbe..3e314d2 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/form/profile/form.profile.tpl.html
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/profile/form.profile.tpl.html
@@ -23,9 +23,9 @@ under the License.
             <li><a ng-click="navigateToPath('/admin/profiles')">Profiles</a></li>
             <li class="active">{{profileName}}</li>
         </ol>
-        <div class="btn-group pull-right" role="group" ng-show="!settings.isNew">
-            <button class="btn btn-default" ng-click="viewServers()">Servers</button>
-            <button class="btn btn-default" ng-click="viewParams()">Parameters</button>
+        <div class="pull-right" role="group" ng-show="!settings.isNew">
+            <button class="btn btn-primary" ng-click="viewParams()">View Parameters &nbsp;&nbsp;<i class="fa fa-sticky-note"></i></button>
+            <button class="btn btn-primary" ng-click="viewServers()">View Servers &nbsp;&nbsp;<i class="fa fa-server"></i></button>
 
             <div class="btn-group" role="group" uib-dropdown is-open="more.isopen">
                 <button type="button" class="btn btn-default dropdown-toggle" uib-dropdown-toggle aria-haspopup="true" aria-expanded="false">
@@ -33,8 +33,8 @@ under the License.
                     <span class="caret"></span>
                 </button>
                 <ul class="dropdown-menu-right dropdown-menu" uib-dropdown-menu>
-                    <li role="menuitem"><a ng-click="clone()">Clone Profile</a></li>
-                    <li role="menuitem"><a ng-click="export()">Export Profile</a></li>
+                    <li role="menuitem"><a ng-click="cloneProfile()">Clone Profile</a></li>
+                    <li role="menuitem"><a ng-click="exportProfile()">Export Profile</a></li>
                 </ul>
             </div>
         </div>
@@ -60,7 +60,7 @@ under the License.
             </div>
             <div class="modal-footer">
                 <button type="button" class="btn btn-danger" ng-show="!settings.isNew" ng-click="confirmDelete(profile)">Delete</button>
-                <button type="button" class="btn btn-primary" ng-disabled="profileForm.$pristine || profileForm.$invalid" ng-click="save(profile)">{{settings.saveLabel}}</button>
+                <button type="button" class="btn btn-success" ng-disabled="profileForm.$pristine || profileForm.$invalid" ng-click="save(profile)">{{settings.saveLabel}}</button>
             </div>
         </form>
     </div>

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/form/region/form.region.tpl.html
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/region/form.region.tpl.html b/traffic_ops/experimental/ui/app/src/common/modules/form/region/form.region.tpl.html
index c3c7be5..7e43281 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/form/region/form.region.tpl.html
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/region/form.region.tpl.html
@@ -19,12 +19,20 @@ under the License.
 
 <div class="x_panel">
     <div class="x_title">
-        <ol class="breadcrumb">
+        <ol class="breadcrumb pull-left">
             <li><a ng-click="navigateToPath('/admin/regions')">Regions</a></li>
             <li class="active">{{regionName}}</li>
         </ol>
-        <div class="btn-group pull-right" role="group" ng-show="!settings.isNew">
-            <button class="btn btn-default" ng-click="viewPhysLocations()">Phys Locations</button>
+        <div class="pull-right" ng-show="!settings.isNew">
+            <div class="btn-group" role="group" uib-dropdown is-open="more.isopen">
+                <button type="button" class="btn btn-default dropdown-toggle" uib-dropdown-toggle aria-haspopup="true" aria-expanded="false">
+                    More
+                    <span class="caret"></span>
+                </button>
+                <ul class="dropdown-menu-right dropdown-menu" uib-dropdown-menu>
+                    <li role="menuitem"><a ng-click="viewPhysLocations()">View Physical Locations</a></li>
+                </ul>
+            </div>
         </div>
         <div class="clearfix"></div>
     </div>
@@ -51,7 +59,7 @@ under the License.
             </div>
             <div class="modal-footer">
                 <button type="button" class="btn btn-danger" ng-show="!settings.isNew" ng-click="confirmDelete(region)">Delete</button>
-                <button type="button" class="btn btn-primary" ng-disabled="regionForm.$pristine || regionForm.$invalid" ng-click="save(region)">{{settings.saveLabel}}</button>
+                <button type="button" class="btn btn-success" ng-disabled="regionForm.$pristine || regionForm.$invalid" ng-click="save(region)">{{settings.saveLabel}}</button>
             </div>
         </form>
     </div>

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/form/server/FormServerController.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/server/FormServerController.js b/traffic_ops/experimental/ui/app/src/common/modules/form/server/FormServerController.js
index a84000a..f35759e 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/form/server/FormServerController.js
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/server/FormServerController.js
@@ -34,7 +34,7 @@ var FormServerController = function(server, $scope, $location, formUtils, string
     };
 
     var getTypes = function() {
-        typeService.getTypes('server')
+        typeService.getTypes({ useInTable: 'server' })
             .then(function(result) {
                 $scope.types = result;
             });

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/form/server/form.server.tpl.html
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/server/form.server.tpl.html b/traffic_ops/experimental/ui/app/src/common/modules/form/server/form.server.tpl.html
index 4eb5938..cadd289 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/form/server/form.server.tpl.html
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/server/form.server.tpl.html
@@ -23,11 +23,11 @@ under the License.
             <li><a ng-click="navigateToPath('/configure/servers')">Servers</a></li>
             <li class="active">{{serverName}}</li>
         </ol>
-        <div class="btn-group pull-right" role="group" ng-show="!settings.isNew">
-            <button class="btn btn-default" ng-show="server.status == 'REPORTED'" ng-click="offlineServer()">Offline Server</button>
-            <button class="btn btn-default" ng-show="server.status != 'REPORTED'" ng-click="onlineServer()">Online Server</button>
-            <button class="btn btn-default" ng-show="!server.updPending" ng-click="queueUpdates()">Queue Updates</button>
-            <button class="btn btn-default" ng-show="server.updPending" ng-click="dequeueUpdates()">Dequeue Updates</button>
+        <div class="pull-right" role="group" ng-show="!settings.isNew">
+            <button class="btn btn-danger" ng-click="offlineServer()">Offline Server</button>
+            <button class="btn btn-success" ng-click="onlineServer()">Online Server</button>
+            <button class="btn btn-primary" ng-show="!server.updPending" ng-click="queueUpdates()">Queue Update &nbsp;&nbsp;<i class="fa fa-flag"></i></button>
+            <button class="btn btn-primary" ng-show="server.updPending" ng-click="dequeueUpdates()">Dequeue Update &nbsp;&nbsp;<i class="fa fa-flag"></i></button>
 
             <div class="btn-group" role="group" uib-dropdown is-open="more.isopen">
                 <button type="button" class="btn btn-default dropdown-toggle" uib-dropdown-toggle aria-haspopup="true" aria-expanded="false">
@@ -119,7 +119,7 @@ under the License.
 
             <div class="modal-footer">
                 <button type="button" class="btn btn-danger" ng-show="!settings.isNew" ng-click="confirmDelete(server)">Delete</button>
-                <button type="button" class="btn btn-primary" ng-disabled="serverForm.$pristine || serverForm.$invalid" ng-click="save(server)">{{settings.saveLabel}}</button>
+                <button type="button" class="btn btn-success" ng-disabled="serverForm.$pristine || serverForm.$invalid" ng-click="save(server)">{{settings.saveLabel}}</button>
             </div>
         </form>
     </div>

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/form/status/FormStatusController.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/status/FormStatusController.js b/traffic_ops/experimental/ui/app/src/common/modules/form/status/FormStatusController.js
index 88697d9..fd015db 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/form/status/FormStatusController.js
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/status/FormStatusController.js
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-var FormStatusController = function(status, $scope, formUtils, stringUtils, locationUtils) {
+var FormStatusController = function(status, $scope, $location, formUtils, stringUtils, locationUtils) {
 
     $scope.status = status;
 
@@ -25,6 +25,10 @@ var FormStatusController = function(status, $scope, formUtils, stringUtils, loca
         { name: 'name', type: 'text', required: true, maxLength: 45 }
     ];
 
+    $scope.viewServers = function() {
+        $location.path($location.path() + '/servers');
+    };
+
     $scope.labelize = stringUtils.labelize;
 
     $scope.navigateToPath = locationUtils.navigateToPath;
@@ -35,5 +39,5 @@ var FormStatusController = function(status, $scope, formUtils, stringUtils, loca
 
 };
 
-FormStatusController.$inject = ['status', '$scope', 'formUtils', 'stringUtils', 'locationUtils'];
+FormStatusController.$inject = ['status', '$scope', '$location', 'formUtils', 'stringUtils', 'locationUtils'];
 module.exports = FormStatusController;

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/form/status/form.status.tpl.html
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/status/form.status.tpl.html b/traffic_ops/experimental/ui/app/src/common/modules/form/status/form.status.tpl.html
index 629558f..d1ac71c 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/form/status/form.status.tpl.html
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/status/form.status.tpl.html
@@ -19,10 +19,13 @@ under the License.
 
 <div class="x_panel">
     <div class="x_title">
-        <ol class="breadcrumb">
+        <ol class="breadcrumb pull-left">
             <li><a ng-click="navigateToPath('/admin/statuses')">Statuses</a></li>
             <li class="active">{{statusName}}</li>
         </ol>
+        <div class="pull-right" role="group" ng-show="!settings.isNew">
+            <button class="btn btn-primary" ng-click="viewServers()">View Servers &nbsp;&nbsp;<i class="fa fa-server"></i></button>
+        </div>
         <div class="clearfix"></div>
     </div>
     <div class="x_content">
@@ -45,7 +48,7 @@ under the License.
             </div>
             <div class="modal-footer">
                 <button type="button" class="btn btn-danger" ng-show="!settings.isNew" ng-click="confirmDelete(status)">Delete</button>
-                <button type="button" class="btn btn-primary" ng-disabled="statusForm.$pristine || statusForm.$invalid" ng-click="save(status)">{{settings.saveLabel}}</button>
+                <button type="button" class="btn btn-success" ng-disabled="statusForm.$pristine || statusForm.$invalid" ng-click="save(status)">{{settings.saveLabel}}</button>
             </div>
         </form>
     </div>

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/form/tenant/form.tenant.tpl.html
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/tenant/form.tenant.tpl.html b/traffic_ops/experimental/ui/app/src/common/modules/form/tenant/form.tenant.tpl.html
index c28c7d6..d80aea0 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/form/tenant/form.tenant.tpl.html
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/tenant/form.tenant.tpl.html
@@ -39,7 +39,7 @@ under the License.
             </div>
             <div class="modal-footer">
                 <button type="button" class="btn btn-danger" ng-show="!settings.isNew" ng-click="confirmDelete(tenant)">Delete</button>
-                <button type="button" class="btn btn-primary" ng-disabled="tenantForm.$pristine || tenantForm.$invalid" ng-click="save(tenant)">{{settings.saveLabel}}</button>
+                <button type="button" class="btn btn-success" ng-disabled="tenantForm.$pristine || tenantForm.$invalid" ng-click="save(tenant)">{{settings.saveLabel}}</button>
             </div>
         </form>
     </div>

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/form/type/FormTypeController.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/type/FormTypeController.js b/traffic_ops/experimental/ui/app/src/common/modules/form/type/FormTypeController.js
index 0bf7aeb..9fb493a 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/form/type/FormTypeController.js
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/type/FormTypeController.js
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-var FormTypeController = function(type, $scope, formUtils, stringUtils, locationUtils) {
+var FormTypeController = function(type, $scope, $location, formUtils, stringUtils, locationUtils) {
 
     $scope.type = type;
 
@@ -28,6 +28,18 @@ var FormTypeController = function(type, $scope, formUtils, stringUtils, location
 
     $scope.labelize = stringUtils.labelize;
 
+    $scope.viewServers = function() {
+        $location.path($location.path() + '/servers');
+    };
+
+    $scope.viewDeliveryServices = function() {
+        $location.path($location.path() + '/delivery-services');
+    };
+
+    $scope.viewCacheGroups = function() {
+        $location.path($location.path() + '/cache-groups');
+    };
+
     $scope.navigateToPath = locationUtils.navigateToPath;
 
     $scope.hasError = formUtils.hasError;
@@ -36,5 +48,5 @@ var FormTypeController = function(type, $scope, formUtils, stringUtils, location
 
 };
 
-FormTypeController.$inject = ['type', '$scope', 'formUtils', 'stringUtils', 'locationUtils'];
+FormTypeController.$inject = ['type', '$scope', '$location', 'formUtils', 'stringUtils', 'locationUtils'];
 module.exports = FormTypeController;

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/form/type/form.type.tpl.html
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/type/form.type.tpl.html b/traffic_ops/experimental/ui/app/src/common/modules/form/type/form.type.tpl.html
index eefd66f..27454ae 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/form/type/form.type.tpl.html
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/type/form.type.tpl.html
@@ -19,10 +19,15 @@ under the License.
 
 <div class="x_panel">
     <div class="x_title">
-        <ol class="breadcrumb">
+        <ol class="breadcrumb pull-left">
             <li><a ng-click="navigateToPath('/admin/types')">Types</a></li>
             <li class="active">{{typeName}}</li>
         </ol>
+        <div class="pull-right" role="group" ng-show="!settings.isNew">
+            <button class="btn btn-primary" ng-show="type.useInTable == 'server'" ng-click="viewServers()">View Servers &nbsp;&nbsp;<i class="fa fa-server"></i></button>
+            <button class="btn btn-primary" ng-show="type.useInTable == 'deliveryservice'" ng-click="viewDeliveryServices()">View Delivery Services &nbsp;&nbsp;<i class="fa fa-server"></i></button>
+            <button class="btn btn-primary" ng-show="type.useInTable == 'cachegroup'" ng-click="viewCacheGroups()">View Cache Groups &nbsp;&nbsp;<i class="fa fa-server"></i></button>
+        </div>
         <div class="clearfix"></div>
     </div>
     <div class="x_content">
@@ -45,7 +50,7 @@ under the License.
             </div>
             <div class="modal-footer">
                 <button type="button" class="btn btn-danger" ng-show="!settings.isNew" ng-click="confirmDelete(type)">Delete</button>
-                <button type="button" class="btn btn-primary" ng-disabled="typeForm.$pristine || typeForm.$invalid" ng-click="save(type)">{{settings.saveLabel}}</button>
+                <button type="button" class="btn btn-success" ng-disabled="typeForm.$pristine || typeForm.$invalid" ng-click="save(type)">{{settings.saveLabel}}</button>
             </div>
         </form>
     </div>

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/form/user/form.user.tpl.html
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/user/form.user.tpl.html b/traffic_ops/experimental/ui/app/src/common/modules/form/user/form.user.tpl.html
index d9391b1..0f4cffd 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/form/user/form.user.tpl.html
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/user/form.user.tpl.html
@@ -20,12 +20,20 @@ under the License.
 
 <div class="x_panel">
     <div class="x_title">
-        <ol class="breadcrumb">
+        <ol class="breadcrumb pull-left">
             <li><a ng-click="navigateToPath('/admin/users')">Users</a></li>
             <li class="active">{{userName}}</li>
         </ol>
-        <div class="btn-group pull-right" role="group" ng-show="!settings.isNew">
-            <button class="btn btn-default" ng-click="viewDeliveryServices()">Assigned Delivery Services</button>
+        <div class="pull-right" ng-show="!settings.isNew">
+            <div class="btn-group" role="group" uib-dropdown is-open="more.isopen">
+                <button type="button" class="btn btn-default dropdown-toggle" uib-dropdown-toggle aria-haspopup="true" aria-expanded="false">
+                    More
+                    <span class="caret"></span>
+                </button>
+                <ul class="dropdown-menu-right dropdown-menu" uib-dropdown-menu>
+                    <li role="menuitem"><a ng-click="viewDeliveryServices()">View Assigned Delivery Services</a></li>
+                </ul>
+            </div>
         </div>
         <div class="clearfix"></div>
     </div>
@@ -89,7 +97,7 @@ under the License.
             </div>
             <div class="modal-footer">
                 <button type="button" class="btn btn-danger" ng-show="!settings.isNew" ng-click="confirmDelete(user)">Delete</button>
-                <button type="button" class="btn btn-primary" ng-disabled="userForm.$pristine || userForm.$invalid" ng-click="confirmSave(user, userForm.username)">{{settings.saveLabel}}</button>
+                <button type="button" class="btn btn-success" ng-disabled="userForm.$pristine || userForm.$invalid" ng-click="confirmSave(user, userForm.username)">{{settings.saveLabel}}</button>
             </div>
         </form>
     </div>

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/table/asns/table.asns.tpl.html
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/table/asns/table.asns.tpl.html b/traffic_ops/experimental/ui/app/src/common/modules/table/asns/table.asns.tpl.html
index 78cbb07..70ccb22 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/table/asns/table.asns.tpl.html
+++ b/traffic_ops/experimental/ui/app/src/common/modules/table/asns/table.asns.tpl.html
@@ -22,7 +22,7 @@ under the License.
         <ol class="breadcrumb pull-left">
             <li class="active">ASNs</li>
         </ol>
-        <button class="btn btn-primary pull-right" ng-click="createASN()">New</button>
+        <button class="btn btn-primary pull-right" ng-click="createASN()"><i class="fa fa-plus"></i>&nbsp;&nbsp; Create ASN</button>
         <div class="clearfix"></div>
     </div>
     <div class="x_content">

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupAsns/TableCacheGroupAsnsController.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupAsns/TableCacheGroupAsnsController.js b/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupAsns/TableCacheGroupAsnsController.js
new file mode 100644
index 0000000..72264b7
--- /dev/null
+++ b/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupAsns/TableCacheGroupAsnsController.js
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+var TableCacheGroupAsnsController = function(cacheGroup, asns, $scope, locationUtils) {
+
+	$scope.cacheGroup = cacheGroup;
+
+	$scope.asns = asns;
+
+	$scope.editASN = function(id) {
+		locationUtils.navigateToPath('/admin/asns/' + id);
+	};
+
+	$scope.navigateToPath = locationUtils.navigateToPath;
+
+	angular.element(document).ready(function () {
+		$('#parametersTable').dataTable({
+			"aLengthMenu": [[25, 50, 100, -1], [25, 50, 100, "All"]],
+			"iDisplayLength": 100
+		});
+	});
+
+};
+
+TableCacheGroupAsnsController.$inject = ['cacheGroup', 'asns', '$scope', 'locationUtils'];
+module.exports = TableCacheGroupAsnsController;

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupAsns/index.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupAsns/index.js b/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupAsns/index.js
new file mode 100644
index 0000000..48050e0
--- /dev/null
+++ b/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupAsns/index.js
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+module.exports = angular.module('trafficOps.table.cacheGroupAsns', [])
+	.controller('TableCacheGroupAsnsController', require('./TableCacheGroupAsnsController'));

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupAsns/table.cacheGroupAsns.tpl.html
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupAsns/table.cacheGroupAsns.tpl.html b/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupAsns/table.cacheGroupAsns.tpl.html
new file mode 100644
index 0000000..165c212
--- /dev/null
+++ b/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupAsns/table.cacheGroupAsns.tpl.html
@@ -0,0 +1,47 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<div class="x_panel">
+    <div class="x_title">
+        <ol class="breadcrumb pull-left">
+            <li><a ng-click="navigateToPath('/configure/cache-groups')">Cache Groups</a></li>
+            <li><a ng-click="navigateToPath('/configure/cache-groups/' + cacheGroup.id)">{{cacheGroup.name}}</a></li>
+            <li class="active">ASNs</li>
+        </ol>
+        <div class="clearfix"></div>
+    </div>
+    <div class="x_content">
+        <br>
+        <table id="asnsTable" class="table responsive-utilities jambo_table">
+            <thead>
+                <tr class="headings">
+                    <th>asn</th>
+                    <th>cachegroup</th>
+                </tr>
+            </thead>
+            <tbody>
+                <tr ng-click="editASN(asn.id)" ng-repeat="asn in asns">
+                    <td>{{asn.asn}}</td>
+                    <td>{{asn.cachegroup}}</td>
+                </tr>
+            </tbody>
+        </table>
+    </div>
+</div>
+

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupParameters/TableCacheGroupParametersController.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupParameters/TableCacheGroupParametersController.js b/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupParameters/TableCacheGroupParametersController.js
index 401e5a7..d455e7b 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupParameters/TableCacheGroupParametersController.js
+++ b/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupParameters/TableCacheGroupParametersController.js
@@ -17,11 +17,11 @@
  * under the License.
  */
 
-var TableCacheGroupParametersController = function(cacheGroup, parameters, $scope, locationUtils) {
+var TableCacheGroupParametersController = function(cacheGroup, cacheGroupParameters, $scope, locationUtils) {
 
 	$scope.cacheGroup = cacheGroup;
 
-	$scope.parameters = parameters;
+	$scope.cacheGroupParameters = cacheGroupParameters;
 
 	$scope.addParameter = function() {
 		alert('not hooked up yet: add parameter to cache group');
@@ -42,5 +42,5 @@ var TableCacheGroupParametersController = function(cacheGroup, parameters, $scop
 
 };
 
-TableCacheGroupParametersController.$inject = ['cacheGroup', 'parameters', '$scope', 'locationUtils'];
+TableCacheGroupParametersController.$inject = ['cacheGroup', 'cacheGroupParameters', '$scope', 'locationUtils'];
 module.exports = TableCacheGroupParametersController;

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupParameters/table.cacheGroupParameters.tpl.html
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupParameters/table.cacheGroupParameters.tpl.html b/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupParameters/table.cacheGroupParameters.tpl.html
index 6cdf36f..4a6566d 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupParameters/table.cacheGroupParameters.tpl.html
+++ b/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupParameters/table.cacheGroupParameters.tpl.html
@@ -40,7 +40,7 @@ under the License.
             </tr>
             </thead>
             <tbody>
-            <tr ng-repeat="parameter in parameters">
+            <tr ng-repeat="parameter in cacheGroupParameters">
                 <td>{{parameter.id}}</td>
                 <td>{{parameter.name}}</td>
                 <td>{{parameter.configFile}}</td>

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupServers/TableCacheGroupServersController.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupServers/TableCacheGroupServersController.js b/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupServers/TableCacheGroupServersController.js
index d1a135c..89c44d4 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupServers/TableCacheGroupServersController.js
+++ b/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupServers/TableCacheGroupServersController.js
@@ -23,12 +23,12 @@ var TableCacheGroupsServersController = function(cacheGroup, servers, $scope, lo
 
 	$scope.servers = servers;
 
-	$scope.addServer = function() {
-		alert('not hooked up yet: addServer to cg');
+	$scope.editServer = function(id) {
+		locationUtils.navigateToPath('/configure/servers/' + id);
 	};
 
-	$scope.removeServer = function() {
-		alert('not hooked up yet: removeServer from cg');
+	$scope.queueUpdates = function() {
+		alert('not hooked up yet: queuing updates for all cdn servers');
 	};
 
 	$scope.navigateToPath = locationUtils.navigateToPath;

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupServers/table.cacheGroupServers.tpl.html
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupServers/table.cacheGroupServers.tpl.html b/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupServers/table.cacheGroupServers.tpl.html
index 43c1b1d..3b821b5 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupServers/table.cacheGroupServers.tpl.html
+++ b/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupServers/table.cacheGroupServers.tpl.html
@@ -24,7 +24,7 @@ under the License.
             <li><a ng-click="navigateToPath('/configure/cache-groups/' + cacheGroup.id)">{{cacheGroup.name}}</a></li>
             <li class="active">Servers</li>
         </ol>
-        <button class="btn btn-primary pull-right" ng-click="addServer()">Add</button>
+        <button class="btn btn-primary pull-right" ng-click="queueUpdates()">Queue Updates &nbsp;&nbsp;<i class="fa fa-flag"></i></button>
         <div class="clearfix"></div>
     </div>
     <div class="x_content">
@@ -45,11 +45,10 @@ under the License.
                 <th>profile</th>
                 <th>iloIpAddress</th>
                 <th>iloIpGateway</th>
-                <th></th>
             </tr>
             </thead>
             <tbody>
-            <tr ng-repeat="server in servers" ng-class="{'active': server.updPending}">
+            <tr ng-click="editServer(server.id)" ng-repeat="server in servers" ng-class="{'active': server.updPending}">
                 <td>{{server.updPending}}</td>
                 <td>{{server.hostName}}</td>
                 <td>{{server.domainName}}</td>
@@ -63,7 +62,6 @@ under the License.
                 <td>{{server.profile}}</td>
                 <td>{{server.iloIpAddress}}</td>
                 <td>{{server.iloIpGateway}}</td>
-                <td><button type="button" class="btn btn-link" title="Remove from Delivery Service" ng-click="removeServer()"><i class="fa fa-trash-o"></i></button></td>
             </tr>
             </tbody>
         </table>

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroups/table.cacheGroups.tpl.html
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroups/table.cacheGroups.tpl.html b/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroups/table.cacheGroups.tpl.html
index a473f0d..59d8604 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroups/table.cacheGroups.tpl.html
+++ b/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroups/table.cacheGroups.tpl.html
@@ -22,7 +22,7 @@ under the License.
         <ol class="breadcrumb pull-left">
             <li class="active">Cache Groups</li>
         </ol>
-        <button class="btn btn-primary pull-right" ng-click="createCacheGroup()">New</button>
+        <button class="btn btn-primary pull-right" ng-click="createCacheGroup()"><i class="fa fa-plus"></i>&nbsp;&nbsp; Create Cache Group</button>
         <div class="clearfix"></div>
     </div>
     <div class="x_content">

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/table/cdnServers/TableCDNServersController.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/table/cdnServers/TableCDNServersController.js b/traffic_ops/experimental/ui/app/src/common/modules/table/cdnServers/TableCDNServersController.js
index 006c61b..9401375 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/table/cdnServers/TableCDNServersController.js
+++ b/traffic_ops/experimental/ui/app/src/common/modules/table/cdnServers/TableCDNServersController.js
@@ -27,6 +27,10 @@ var TableCDNServersController = function(cdn, servers, $scope, locationUtils) {
 		locationUtils.navigateToPath('/configure/servers/' + id);
 	};
 
+	$scope.queueUpdates = function() {
+		alert('not hooked up yet: queuing updates for all cdn servers');
+	};
+
 	$scope.navigateToPath = locationUtils.navigateToPath;
 
 	angular.element(document).ready(function () {

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/table/cdnServers/table.cdnServers.tpl.html
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/table/cdnServers/table.cdnServers.tpl.html b/traffic_ops/experimental/ui/app/src/common/modules/table/cdnServers/table.cdnServers.tpl.html
index 707a750..0d3a365 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/table/cdnServers/table.cdnServers.tpl.html
+++ b/traffic_ops/experimental/ui/app/src/common/modules/table/cdnServers/table.cdnServers.tpl.html
@@ -24,6 +24,7 @@ under the License.
             <li><a ng-click="navigateToPath('/admin/cdns/' + cdn.id)">{{cdn.name}}</a></li>
             <li class="active">Servers</li>
         </ol>
+        <button class="btn btn-primary pull-right" ng-click="queueUpdates()">Queue Updates &nbsp;&nbsp;<i class="fa fa-flag"></i></button>
         <div class="clearfix"></div>
     </div>
     <div class="x_content">

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/table/cdns/table.cdns.tpl.html
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/table/cdns/table.cdns.tpl.html b/traffic_ops/experimental/ui/app/src/common/modules/table/cdns/table.cdns.tpl.html
index bc3aeee..17a8768 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/table/cdns/table.cdns.tpl.html
+++ b/traffic_ops/experimental/ui/app/src/common/modules/table/cdns/table.cdns.tpl.html
@@ -22,7 +22,7 @@ under the License.
         <ol class="breadcrumb pull-left">
             <li class="active">CDNs</li>
         </ol>
-        <button class="btn btn-primary pull-right" ng-click="createCDN()">New</button>
+        <button class="btn btn-primary pull-right" ng-click="createCDN()"><i class="fa fa-plus"></i>&nbsp;&nbsp; Create CDN</button>
         <div class="clearfix"></div>
     </div>
     <div class="x_content">

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d69e9415/traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceRegexes/TableDeliveryServiceRegexesController.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceRegexes/TableDeliveryServiceRegexesController.js b/traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceRegexes/TableDeliveryServiceRegexesController.js
index 93a2e28..cdc04e0 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceRegexes/TableDeliveryServiceRegexesController.js
+++ b/traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceRegexes/TableDeliveryServiceRegexesController.js
@@ -21,7 +21,7 @@ var TableDeliveryServiceRegexesController = function(deliveryService, regexes, $
 
 	$scope.deliveryService = deliveryService;
 
-	$scope.regexes = regexes[0].regexes;
+	$scope.regexes = _.find(regexes, function(dsRegexes) { return dsRegexes.dsName == deliveryService.xmlId; });
 
 	$scope.addRegex = function() {
 		alert('not hooked up yet: addRegex to ds');