tp v2 ui tweaks ranging from rearranging form items to stronger ui validation to better confirmation messages
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/commit/9b26ecee Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/tree/9b26ecee Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/diff/9b26ecee Branch: refs/heads/master Commit: 9b26ecee6f8c9fc2402a22352456a15ad571a219 Parents: c7fe073 Author: Jeremy Mitchell <[email protected]> Authored: Fri Jul 14 15:33:27 2017 -0600 Committer: Dewayne Richardson <[email protected]> Committed: Tue Jul 18 08:53:06 2017 -0600 ---------------------------------------------------------------------- .../dialog/confirm/DialogConfirmController.js | 6 +- .../dialog/confirm/dialog.confirm.tpl.html | 6 +- .../form/cacheGroup/form.cacheGroup.tpl.html | 22 +-- .../FormDeliveryServiceController.js | 26 +++- .../edit/FormEditDeliveryServiceController.js | 6 +- .../form.deliveryService.DNS.tpl.html | 53 ++++---- .../form.deliveryService.HTTP.tpl.html | 52 ++++--- .../form.deliveryService.Steering.tpl.html | 22 +-- .../form.deliveryService.anyMap.tpl.html | 67 ++++++--- .../new/FormNewDeliveryServiceController.js | 6 +- .../form/parameter/FormParameterController.js | 5 + .../edit/FormEditParameterController.js | 45 +++++- .../form/parameter/form.parameter.tpl.html | 9 +- .../parameter/new/FormNewParameterController.js | 2 +- .../modules/form/server/form.server.tpl.html | 136 ++++++++----------- .../src/common/modules/header/header.tpl.html | 2 +- .../modules/navigation/NavigationController.js | 2 +- .../modules/navigation/navigation.tpl.html | 4 +- .../table.cacheGroupParameters.tpl.html | 2 + .../table.cdnDeliveryServices.tpl.html | 2 + .../table.deliveryServices.tpl.html | 2 + .../TableParameterProfilesController.js | 57 +++++++- .../table.parameterProfiles.tpl.html | 2 +- .../table/parameters/table.parameters.tpl.html | 2 + .../table.profileDeliveryServices.tpl.html | 2 + .../TableProfileParametersController.js | 58 +++++++- .../table.profileParameters.tpl.html | 6 +- .../table.serverDeliveryServices.tpl.html | 2 + .../table.typeDeliveryServices.tpl.html | 2 + .../table.userDeliveryServices.tpl.html | 2 + .../modules/table/users/table.users.tpl.html | 2 + .../cacheGroups/widget.cacheGroups.tpl.html | 5 - .../widget/capacity/widget.capacity.tpl.html | 4 - .../widget/cdnChart/widget.cdnChart.tpl.html | 4 - .../changeLogs/widget.changeLogs.tpl.html | 6 +- .../widget/routing/widget.routing.tpl.html | 4 - .../app/src/traffic_portal_properties.json | 9 +- 37 files changed, 410 insertions(+), 234 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/9b26ecee/traffic_portal/app/src/common/modules/dialog/confirm/DialogConfirmController.js ---------------------------------------------------------------------- diff --git a/traffic_portal/app/src/common/modules/dialog/confirm/DialogConfirmController.js b/traffic_portal/app/src/common/modules/dialog/confirm/DialogConfirmController.js index c936647..3c7cb37 100644 --- a/traffic_portal/app/src/common/modules/dialog/confirm/DialogConfirmController.js +++ b/traffic_portal/app/src/common/modules/dialog/confirm/DialogConfirmController.js @@ -17,10 +17,12 @@ * under the License. */ -var DialogConfirmController = function(params, $scope, $uibModalInstance) { +var DialogConfirmController = function(params, $scope, $sce, $uibModalInstance) { $scope.params = params; + $scope.message = $sce.trustAsHtml(params.message); + $scope.yes = function() { $uibModalInstance.close(); }; @@ -31,5 +33,5 @@ var DialogConfirmController = function(params, $scope, $uibModalInstance) { }; -DialogConfirmController.$inject = ['params', '$scope', '$uibModalInstance']; +DialogConfirmController.$inject = ['params', '$scope', '$sce', '$uibModalInstance']; module.exports = DialogConfirmController; http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/9b26ecee/traffic_portal/app/src/common/modules/dialog/confirm/dialog.confirm.tpl.html ---------------------------------------------------------------------- diff --git a/traffic_portal/app/src/common/modules/dialog/confirm/dialog.confirm.tpl.html b/traffic_portal/app/src/common/modules/dialog/confirm/dialog.confirm.tpl.html index 235cbb3..f9a4a9f 100644 --- a/traffic_portal/app/src/common/modules/dialog/confirm/dialog.confirm.tpl.html +++ b/traffic_portal/app/src/common/modules/dialog/confirm/dialog.confirm.tpl.html @@ -22,9 +22,9 @@ under the License. <h4 class="modal-title">{{::params.title}}</h4> </div> <div class="modal-body"> - <p>{{::params.message}}</p> + <p ng-bind-html="message"></p> </div> <div class="modal-footer"> - <button class="btn action-btn" ng-click="no()">No</button> - <button class="btn btn-link" ng-click="yes()">Yes</button> + <button class="btn btn-primary" ng-click="no()">No</button> + <button class="btn btn-default" ng-click="yes()">Yes</button> </div> http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/9b26ecee/traffic_portal/app/src/common/modules/form/cacheGroup/form.cacheGroup.tpl.html ---------------------------------------------------------------------- diff --git a/traffic_portal/app/src/common/modules/form/cacheGroup/form.cacheGroup.tpl.html b/traffic_portal/app/src/common/modules/form/cacheGroup/form.cacheGroup.tpl.html index 2965029..c68be1d 100644 --- a/traffic_portal/app/src/common/modules/form/cacheGroup/form.cacheGroup.tpl.html +++ b/traffic_portal/app/src/common/modules/form/cacheGroup/form.cacheGroup.tpl.html @@ -72,8 +72,17 @@ under the License. <span ng-show="hasError(cacheGroupForm.shortName)" class="form-control-feedback"><i class="fa fa-times"></i></span> </div> </div> + <div class="form-group" ng-class="{'has-error': hasError(cacheGroupForm.type), 'has-feedback': hasError(cacheGroupForm.type)}"> + <label class="control-label col-md-2 col-sm-2 col-xs-12">Type *</label> + <div class="col-md-10 col-sm-10 col-xs-12"> + <select id="type" name="type" class="form-control" ng-model="cacheGroup.typeId" ng-options="type.id as type.name for type in types" required> + <option value="">Select...</option> + </select> + <small class="input-error" ng-show="hasPropertyError(cacheGroupForm.type, 'required')">Required</small> + </div> + </div> <div class="form-group" ng-class="{'has-error': hasError(cacheGroupForm.latitude), 'has-feedback': hasError(cacheGroupForm.latitude)}"> - <label class="control-label col-md-2 col-sm-2 col-xs-12">Latitude *</label> + <label class="control-label col-md-2 col-sm-2 col-xs-12">Geo Magnetic Latitude *</label> <div class="col-md-10 col-sm-10 col-xs-12"> <input id="latitude" name="latitude" type="text" class="form-control" ng-model="cacheGroup.latitude" ng-pattern="/^[-+]?[0-9]*\.?[0-9]+$/" autofocus> <small class="input-error" ng-show="hasPropertyError(cacheGroupForm.latitude, 'pattern')">Invalid coordinate</small> @@ -81,22 +90,13 @@ under the License. </div> </div> <div class="form-group" ng-class="{'has-error': hasError(cacheGroupForm.longitude), 'has-feedback': hasError(cacheGroupForm.longitude)}"> - <label class="control-label col-md-2 col-sm-2 col-xs-12">Longitude *</label> + <label class="control-label col-md-2 col-sm-2 col-xs-12">Geo Magnetic Longitude *</label> <div class="col-md-10 col-sm-10 col-xs-12"> <input id="longitude" name="longitude" type="text" class="form-control" ng-model="cacheGroup.longitude" ng-pattern="/^[-+]?[0-9]*\.?[0-9]+$/" autofocus> <small class="input-error" ng-show="hasPropertyError(cacheGroupForm.longitude, 'pattern')">Invalid coordinate</small> <span ng-show="hasError(cacheGroupForm.longitude)" class="form-control-feedback"><i class="fa fa-times"></i></span> </div> </div> - <div class="form-group" ng-class="{'has-error': hasError(cacheGroupForm.type), 'has-feedback': hasError(cacheGroupForm.type)}"> - <label class="control-label col-md-2 col-sm-2 col-xs-12">Type *</label> - <div class="col-md-10 col-sm-10 col-xs-12"> - <select id="type" name="type" class="form-control" ng-model="cacheGroup.typeId" ng-options="type.id as type.name for type in types" required> - <option value="">Select...</option> - </select> - <small class="input-error" ng-show="hasPropertyError(cacheGroupForm.type, 'required')">Required</small> - </div> - </div> <div class="form-group" ng-class="{'has-error': hasError(cacheGroupForm.parentCacheGroup), 'has-feedback': hasError(cacheGroupForm.parentCacheGroup)}"> <label class="control-label col-md-2 col-sm-2 col-xs-12">Parent Cache Group *</label> <div class="col-md-10 col-sm-10 col-xs-12"> http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/9b26ecee/traffic_portal/app/src/common/modules/form/deliveryService/FormDeliveryServiceController.js ---------------------------------------------------------------------- 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 08a94ed..b822ce0 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, types, $scope, $location, formUtils, locationUtils, cdnService, profileService, typeService) { +var FormDeliveryServiceController = function(deliveryService, type, types, $scope, $location, formUtils, locationUtils, cdnService, profileService, tenantService) { var getCDNs = function() { cdnService.getCDNs() @@ -35,9 +35,28 @@ var FormDeliveryServiceController = function(deliveryService, types, $scope, $lo }); }; + var getTenants = function() { + tenantService.getTenants() + .then(function(result) { + $scope.tenants = result; + }); + }; + $scope.deliveryService = deliveryService; - $scope.types = types; + $scope.types = _.filter(types, function(currentType) { + var category; + if (type.indexOf('ANY_MAP') != -1) { + category = 'ANY_MAP'; + } else if (type.indexOf('DNS') != -1) { + category = 'DNS'; + } else if (type.indexOf('HTTP') != -1) { + category = 'HTTP'; + } else if (type.indexOf('STEERING') != -1) { + category = 'STEERING'; + } + return currentType.name.indexOf(category) != -1; + }); $scope.falseTrue = [ { value: false, label: 'false' }, @@ -156,10 +175,11 @@ var FormDeliveryServiceController = function(deliveryService, types, $scope, $lo var init = function () { getCDNs(); getProfiles(); + getTenants(); }; init(); }; -FormDeliveryServiceController.$inject = ['deliveryService', 'types', '$scope', '$location', 'formUtils', 'locationUtils', 'cdnService', 'profileService', 'typeService']; +FormDeliveryServiceController.$inject = ['deliveryService', 'type', 'types', '$scope', '$location', 'formUtils', 'locationUtils', 'cdnService', 'profileService', 'tenantService']; module.exports = FormDeliveryServiceController; http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/9b26ecee/traffic_portal/app/src/common/modules/form/deliveryService/edit/FormEditDeliveryServiceController.js ---------------------------------------------------------------------- diff --git a/traffic_portal/app/src/common/modules/form/deliveryService/edit/FormEditDeliveryServiceController.js b/traffic_portal/app/src/common/modules/form/deliveryService/edit/FormEditDeliveryServiceController.js index ba5b257..2473cb1 100644 --- a/traffic_portal/app/src/common/modules/form/deliveryService/edit/FormEditDeliveryServiceController.js +++ b/traffic_portal/app/src/common/modules/form/deliveryService/edit/FormEditDeliveryServiceController.js @@ -19,12 +19,8 @@ var FormEditDeliveryServiceController = function(deliveryService, type, types, $scope, $controller, $uibModal, $anchorScroll, locationUtils, deliveryServiceService) { - var filteredTypes = _.filter(types, function(currentType) { - return currentType.name.indexOf(type) != -1; - }); - // extends the FormDeliveryServiceController to inherit common methods - angular.extend(this, $controller('FormDeliveryServiceController', { deliveryService: deliveryService, types: filteredTypes, $scope: $scope })); + angular.extend(this, $controller('FormDeliveryServiceController', { deliveryService: deliveryService, type: type, types: types, $scope: $scope })); var deleteDeliveryService = function(deliveryService) { deliveryServiceService.deleteDeliveryService(deliveryService.id) http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/9b26ecee/traffic_portal/app/src/common/modules/form/deliveryService/form.deliveryService.DNS.tpl.html ---------------------------------------------------------------------- diff --git a/traffic_portal/app/src/common/modules/form/deliveryService/form.deliveryService.DNS.tpl.html b/traffic_portal/app/src/common/modules/form/deliveryService/form.deliveryService.DNS.tpl.html index dddef6f..347a320 100644 --- a/traffic_portal/app/src/common/modules/form/deliveryService/form.deliveryService.DNS.tpl.html +++ b/traffic_portal/app/src/common/modules/form/deliveryService/form.deliveryService.DNS.tpl.html @@ -63,10 +63,19 @@ under the License. </div> </div> + <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.tenantId), 'has-feedback': hasError(deliveryServiceForm.tenantId)}"> + <label class="control-label col-md-2 col-sm-2 col-xs-12">Tenant</label> + <div class="col-md-10 col-sm-10 col-xs-12"> + <select id="tenantId" name="tenantId" class="form-control" ng-model="deliveryService.tenantId" ng-options="tenant.id as tenant.name for tenant in tenants"> + <option value="">Select...</option> + </select> + </div> + </div> + <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.xmlId), 'has-feedback': hasError(deliveryServiceForm.xmlId)}"> <label class="control-label col-md-2 col-sm-2 col-xs-12">XML ID *</label> <div class="col-md-10 col-sm-10 col-xs-12"> - <input id="xmlId" name="xmlId" type="text" class="form-control" ng-model="deliveryService.xmlId" ng-required="true" ng-maxlength="48" ng-pattern="/^\S*$/" autofocus> + <input id="xmlId" name="xmlId" type="text" class="form-control" placeholder="eg. xyz-video" ng-model="deliveryService.xmlId" ng-required="true" ng-maxlength="48" ng-pattern="/^\S*$/" autofocus> <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.xmlId, 'required')">Required</small> <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.xmlId, 'maxlength')">Too Long</small> <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.xmlId, 'pattern')">No spaces</small> @@ -136,6 +145,14 @@ under the License. </div> </div> + <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.geoProvider), 'has-feedback': hasError(deliveryServiceForm.geoProvider)}"> + <label class="control-label col-md-2 col-sm-2 col-xs-12">Geo Provider *</label> + <div class="col-md-10 col-sm-10 col-xs-12"> + <select id="geoProvider" name="geoProvider" class="form-control" ng-model="deliveryService.geoProvider" ng-options="gp.value as gp.label for gp in geoProviders" required></select> + <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.geoProvider, 'required')">Required</small> + </div> + </div> + <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.geoLimit), 'has-feedback': hasError(deliveryServiceForm.geoLimit)}"> <label class="control-label col-md-2 col-sm-2 col-xs-12">Geo Limit *</label> <div class="col-md-10 col-sm-10 col-xs-12"> @@ -153,14 +170,6 @@ under the License. </div> </div> - <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.geoProvider), 'has-feedback': hasError(deliveryServiceForm.geoProvider)}"> - <label class="control-label col-md-2 col-sm-2 col-xs-12">Geo Provider *</label> - <div class="col-md-10 col-sm-10 col-xs-12"> - <select id="geoProvider" name="geoProvider" class="form-control" ng-model="deliveryService.geoProvider" ng-options="gp.value as gp.label for gp in geoProviders" required></select> - <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.geoProvider, 'required')">Required</small> - </div> - </div> - <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.geolimitRedirectUrl), 'has-feedback': hasError(deliveryServiceForm.geolimitRedirectUrl)}"> <label class="control-label col-md-2 col-sm-2 col-xs-12">Geo Limit Redirect URL</label> <div class="col-md-10 col-sm-10 col-xs-12"> @@ -226,7 +235,7 @@ under the License. <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.maxDNSAnswers), 'has-feedback': hasError(deliveryServiceForm.maxDNSAnswers)}"> <label class="control-label col-md-2 col-sm-2 col-xs-12">Max DNS Answers</label> <div class="col-md-10 col-sm-10 col-xs-12"> - <input id="maxDNSAnswers" name="maxDNSAnswers" type="text" class="form-control" ng-model="deliveryService.maxDNSAnswers" ng-maxlength="11" autofocus> + <input id="maxDNSAnswers" name="maxDNSAnswers" type="text" class="form-control" placeholder="Max number of IP addresses in DNS answer (0 means all)" ng-model="deliveryService.maxDNSAnswers" ng-maxlength="11" autofocus> <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.maxDNSAnswers, 'maxlength')">Too Long</small> <span ng-show="hasError(deliveryServiceForm.maxDNSAnswers)" class="form-control-feedback"><i class="fa fa-times"></i></span> </div> @@ -261,7 +270,7 @@ under the License. </div> <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.profile), 'has-feedback': hasError(deliveryServiceForm.profile)}"> - <label class="control-label col-md-2 col-sm-2 col-xs-12">Profile</label> + <label class="control-label col-md-2 col-sm-2 col-xs-12">Delivery Service Profile</label> <div class="col-md-10 col-sm-10 col-xs-12"> <select id="profile" name="profile" class="form-control" ng-model="deliveryService.profileId" ng-options="profile.id as profile.name for profile in profiles"> <option value="">Select...</option> @@ -272,8 +281,9 @@ under the License. <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.globalMaxMbps), 'has-feedback': hasError(deliveryServiceForm.globalMaxMbps)}"> <label class="control-label col-md-2 col-sm-2 col-xs-12">Global Max Mbps</label> <div class="col-md-10 col-sm-10 col-xs-12"> - <input id="globalMaxMbps" name="globalMaxMbps" type="text" class="form-control" ng-model="deliveryService.globalMaxMbps" ng-maxlength="11" autofocus> + <input id="globalMaxMbps" name="globalMaxMbps" type="text" class="form-control" placeholder="Max bits per second allowed globally (4T or 500M)" ng-model="deliveryService.globalMaxMbps" ng-maxlength="11" ng-pattern="/(^4T$|^500M$)/" autofocus> <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.globalMaxMbps, 'maxlength')">Too Long</small> + <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.globalMaxMbps, 'pattern')">4T or 500M</small> <span ng-show="hasError(deliveryServiceForm.globalMaxMbps)" class="form-control-feedback"><i class="fa fa-times"></i></span> </div> </div> @@ -281,7 +291,7 @@ under the License. <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.globalMaxTps), 'has-feedback': hasError(deliveryServiceForm.globalMaxTps)}"> <label class="control-label col-md-2 col-sm-2 col-xs-12">Global Max TPS</label> <div class="col-md-10 col-sm-10 col-xs-12"> - <input id="globalMaxTps" name="globalMaxTps" type="text" class="form-control" ng-model="deliveryService.globalMaxTps" ng-maxlength="11" autofocus> + <input id="globalMaxTps" name="globalMaxTps" type="text" class="form-control" placeholder="Max transactions per second allowed globally" ng-model="deliveryService.globalMaxTps" ng-maxlength="11" autofocus> <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.globalMaxTps, 'maxlength')">Too Long</small> <span ng-show="hasError(deliveryServiceForm.globalMaxTps)" class="form-control-feedback"><i class="fa fa-times"></i></span> </div> @@ -424,23 +434,6 @@ under the License. </div> </div> - <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.sslKeyVersion), 'has-feedback': hasError(deliveryServiceForm.sslKeyVersion)}"> - <label class="control-label col-md-2 col-sm-2 col-xs-12">SSL Key Version</label> - <div class="col-md-10 col-sm-10 col-xs-12"> - <input id="sslKeyVersion" name="sslKeyVersion" type="text" class="form-control" ng-model="deliveryService.sslKeyVersion" ng-maxlength="11" autofocus> - <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.sslKeyVersion, 'maxlength')">Too Long</small> - <span ng-show="hasError(deliveryServiceForm.sslKeyVersion)" class="form-control-feedback"><i class="fa fa-times"></i></span> - </div> - </div> - - <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.regionalGeoBlocking), 'has-feedback': hasError(deliveryServiceForm.regionalGeoBlocking)}"> - <label class="control-label col-md-2 col-sm-2 col-xs-12">Regional Geoblocking *</label> - <div class="col-md-10 col-sm-10 col-xs-12"> - <select id="regionalGeoBlocking" name="regionalGeoBlocking" class="form-control" ng-model="deliveryService.regionalGeoBlocking" ng-options="x.value as x.label for x in falseTrue" required></select> - <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.regionalGeoBlocking, 'required')">Required</small> - </div> - </div> - <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.logsEnabled), 'has-feedback': hasError(deliveryServiceForm.logsEnabled)}"> <label class="control-label col-md-2 col-sm-2 col-xs-12">Logs Enabled *</label> <div class="col-md-10 col-sm-10 col-xs-12"> http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/9b26ecee/traffic_portal/app/src/common/modules/form/deliveryService/form.deliveryService.HTTP.tpl.html ---------------------------------------------------------------------- diff --git a/traffic_portal/app/src/common/modules/form/deliveryService/form.deliveryService.HTTP.tpl.html b/traffic_portal/app/src/common/modules/form/deliveryService/form.deliveryService.HTTP.tpl.html index f11079a..5255cbd 100644 --- a/traffic_portal/app/src/common/modules/form/deliveryService/form.deliveryService.HTTP.tpl.html +++ b/traffic_portal/app/src/common/modules/form/deliveryService/form.deliveryService.HTTP.tpl.html @@ -63,10 +63,19 @@ under the License. </div> </div> + <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.tenantId), 'has-feedback': hasError(deliveryServiceForm.tenantId)}"> + <label class="control-label col-md-2 col-sm-2 col-xs-12">Tenant</label> + <div class="col-md-10 col-sm-10 col-xs-12"> + <select id="tenantId" name="tenantId" class="form-control" ng-model="deliveryService.tenantId" ng-options="tenant.id as tenant.name for tenant in tenants"> + <option value="">Select...</option> + </select> + </div> + </div> + <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.xmlId), 'has-feedback': hasError(deliveryServiceForm.xmlId)}"> <label class="control-label col-md-2 col-sm-2 col-xs-12">XML ID *</label> <div class="col-md-10 col-sm-10 col-xs-12"> - <input id="xmlId" name="xmlId" type="text" class="form-control" ng-model="deliveryService.xmlId" ng-required="true" ng-maxlength="48" ng-pattern="/^\S*$/" autofocus> + <input id="xmlId" name="xmlId" type="text" class="form-control" placeholder="eg. xyz-video" ng-model="deliveryService.xmlId" ng-required="true" ng-maxlength="48" ng-pattern="/^\S*$/" autofocus> <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.xmlId, 'required')">Required</small> <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.xmlId, 'maxlength')">Too Long</small> <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.xmlId, 'pattern')">No spaces</small> @@ -136,6 +145,14 @@ under the License. </div> </div> + <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.geoProvider), 'has-feedback': hasError(deliveryServiceForm.geoProvider)}"> + <label class="control-label col-md-2 col-sm-2 col-xs-12">Geo Provider *</label> + <div class="col-md-10 col-sm-10 col-xs-12"> + <select id="geoProvider" name="geoProvider" class="form-control" ng-model="deliveryService.geoProvider" ng-options="gp.value as gp.label for gp in geoProviders" required></select> + <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.geoProvider, 'required')">Required</small> + </div> + </div> + <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.geoLimit), 'has-feedback': hasError(deliveryServiceForm.geoLimit)}"> <label class="control-label col-md-2 col-sm-2 col-xs-12">Geo Limit *</label> <div class="col-md-10 col-sm-10 col-xs-12"> @@ -153,14 +170,6 @@ under the License. </div> </div> - <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.geoProvider), 'has-feedback': hasError(deliveryServiceForm.geoProvider)}"> - <label class="control-label col-md-2 col-sm-2 col-xs-12">Geo Provider *</label> - <div class="col-md-10 col-sm-10 col-xs-12"> - <select id="geoProvider" name="geoProvider" class="form-control" ng-model="deliveryService.geoProvider" ng-options="gp.value as gp.label for gp in geoProviders" required></select> - <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.geoProvider, 'required')">Required</small> - </div> - </div> - <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.geolimitRedirectUrl), 'has-feedback': hasError(deliveryServiceForm.geolimitRedirectUrl)}"> <label class="control-label col-md-2 col-sm-2 col-xs-12">Geo Limit Redirect URL</label> <div class="col-md-10 col-sm-10 col-xs-12"> @@ -180,6 +189,15 @@ under the License. </div> </div> + <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.dnsBypassTtl), 'has-feedback': hasError(deliveryServiceForm.dnsBypassTtl)}"> + <label class="control-label col-md-2 col-sm-2 col-xs-12">DNS Bypass TTL</label> + <div class="col-md-10 col-sm-10 col-xs-12"> + <input id="dnsBypassTtl" name="dnsBypassTtl" type="text" class="form-control" ng-model="deliveryService.dnsBypassTtl" ng-maxlength="11" autofocus> + <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.dnsBypassTtl, 'maxlength')">Too Long</small> + <span ng-show="hasError(deliveryServiceForm.dnsBypassTtl)" class="form-control-feedback"><i class="fa fa-times"></i></span> + </div> + </div> + <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.ccrDnsTtl), 'has-feedback': hasError(deliveryServiceForm.ccrDnsTtl)}"> <label class="control-label col-md-2 col-sm-2 col-xs-12">Delivery Service DNS TTL</label> <div class="col-md-10 col-sm-10 col-xs-12"> @@ -233,7 +251,7 @@ under the License. </div> <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.profile), 'has-feedback': hasError(deliveryServiceForm.profile)}"> - <label class="control-label col-md-2 col-sm-2 col-xs-12">Profile</label> + <label class="control-label col-md-2 col-sm-2 col-xs-12">Delivery Service Profile</label> <div class="col-md-10 col-sm-10 col-xs-12"> <select id="profile" name="profile" class="form-control" ng-model="deliveryService.profileId" ng-options="profile.id as profile.name for profile in profiles"> <option value="">Select...</option> @@ -244,8 +262,9 @@ under the License. <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.globalMaxMbps), 'has-feedback': hasError(deliveryServiceForm.globalMaxMbps)}"> <label class="control-label col-md-2 col-sm-2 col-xs-12">Global Max Mbps</label> <div class="col-md-10 col-sm-10 col-xs-12"> - <input id="globalMaxMbps" name="globalMaxMbps" type="text" class="form-control" ng-model="deliveryService.globalMaxMbps" ng-maxlength="11" autofocus> + <input id="globalMaxMbps" name="globalMaxMbps" type="text" class="form-control" placeholder="Max bits per second allowed globally (4T or 500M)" ng-model="deliveryService.globalMaxMbps" ng-maxlength="11" ng-pattern="/(^4T$|^500M$)/" autofocus> <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.globalMaxMbps, 'maxlength')">Too Long</small> + <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.globalMaxMbps, 'pattern')">4T or 500M</small> <span ng-show="hasError(deliveryServiceForm.globalMaxMbps)" class="form-control-feedback"><i class="fa fa-times"></i></span> </div> </div> @@ -253,7 +272,7 @@ under the License. <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.globalMaxTps), 'has-feedback': hasError(deliveryServiceForm.globalMaxTps)}"> <label class="control-label col-md-2 col-sm-2 col-xs-12">Global Max TPS</label> <div class="col-md-10 col-sm-10 col-xs-12"> - <input id="globalMaxTps" name="globalMaxTps" type="text" class="form-control" ng-model="deliveryService.globalMaxTps" ng-maxlength="11" autofocus> + <input id="globalMaxTps" name="globalMaxTps" type="text" class="form-control" placeholder="Max transactions per second allowed globally" ng-model="deliveryService.globalMaxTps" ng-maxlength="11" autofocus> <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.globalMaxTps, 'maxlength')">Too Long</small> <span ng-show="hasError(deliveryServiceForm.globalMaxTps)" class="form-control-feedback"><i class="fa fa-times"></i></span> </div> @@ -396,15 +415,6 @@ under the License. </div> </div> - <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.sslKeyVersion), 'has-feedback': hasError(deliveryServiceForm.sslKeyVersion)}"> - <label class="control-label col-md-2 col-sm-2 col-xs-12">SSL Key Version</label> - <div class="col-md-10 col-sm-10 col-xs-12"> - <input id="sslKeyVersion" name="sslKeyVersion" type="text" class="form-control" ng-model="deliveryService.sslKeyVersion" ng-maxlength="11" autofocus> - <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.sslKeyVersion, 'maxlength')">Too Long</small> - <span ng-show="hasError(deliveryServiceForm.sslKeyVersion)" class="form-control-feedback"><i class="fa fa-times"></i></span> - </div> - </div> - <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.regionalGeoBlocking), 'has-feedback': hasError(deliveryServiceForm.regionalGeoBlocking)}"> <label class="control-label col-md-2 col-sm-2 col-xs-12">Regional Geoblocking *</label> <div class="col-md-10 col-sm-10 col-xs-12"> http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/9b26ecee/traffic_portal/app/src/common/modules/form/deliveryService/form.deliveryService.Steering.tpl.html ---------------------------------------------------------------------- diff --git a/traffic_portal/app/src/common/modules/form/deliveryService/form.deliveryService.Steering.tpl.html b/traffic_portal/app/src/common/modules/form/deliveryService/form.deliveryService.Steering.tpl.html index 7c1acc2..228a490 100644 --- a/traffic_portal/app/src/common/modules/form/deliveryService/form.deliveryService.Steering.tpl.html +++ b/traffic_portal/app/src/common/modules/form/deliveryService/form.deliveryService.Steering.tpl.html @@ -66,7 +66,7 @@ under the License. <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.xmlId), 'has-feedback': hasError(deliveryServiceForm.xmlId)}"> <label class="control-label col-md-2 col-sm-2 col-xs-12">XML ID *</label> <div class="col-md-10 col-sm-10 col-xs-12"> - <input id="xmlId" name="xmlId" type="text" class="form-control" ng-model="deliveryService.xmlId" ng-required="true" ng-maxlength="48" ng-pattern="/^\S*$/" autofocus> + <input id="xmlId" name="xmlId" type="text" class="form-control" placeholder="eg. xyz-video" ng-model="deliveryService.xmlId" ng-required="true" ng-maxlength="48" ng-pattern="/^\S*$/" autofocus> <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.xmlId, 'required')">Required</small> <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.xmlId, 'maxlength')">Too Long</small> <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.xmlId, 'pattern')">No spaces</small> @@ -74,6 +74,15 @@ under the License. </div> </div> + <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.tenantId), 'has-feedback': hasError(deliveryServiceForm.tenantId)}"> + <label class="control-label col-md-2 col-sm-2 col-xs-12">Tenant</label> + <div class="col-md-10 col-sm-10 col-xs-12"> + <select id="tenantId" name="tenantId" class="form-control" ng-model="deliveryService.tenantId" ng-options="tenant.id as tenant.name for tenant in tenants"> + <option value="">Select...</option> + </select> + </div> + </div> + <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.displayName), 'has-feedback': hasError(deliveryServiceForm.displayName)}"> <label class="control-label col-md-2 col-sm-2 col-xs-12">Display Name *</label> <div class="col-md-10 col-sm-10 col-xs-12"> @@ -121,7 +130,7 @@ under the License. </div> <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.profile), 'has-feedback': hasError(deliveryServiceForm.profile)}"> - <label class="control-label col-md-2 col-sm-2 col-xs-12">Profile</label> + <label class="control-label col-md-2 col-sm-2 col-xs-12">Delivery Service Profile</label> <div class="col-md-10 col-sm-10 col-xs-12"> <select id="profile" name="profile" class="form-control" ng-model="deliveryService.profileId" ng-options="profile.id as profile.name for profile in profiles"> <option value="">Select...</option> @@ -184,15 +193,6 @@ under the License. </div> </div> - <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.sslKeyVersion), 'has-feedback': hasError(deliveryServiceForm.sslKeyVersion)}"> - <label class="control-label col-md-2 col-sm-2 col-xs-12">SSL Key Version</label> - <div class="col-md-10 col-sm-10 col-xs-12"> - <input id="sslKeyVersion" name="sslKeyVersion" type="text" class="form-control" ng-model="deliveryService.sslKeyVersion" ng-maxlength="11" autofocus> - <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.sslKeyVersion, 'maxlength')">Too Long</small> - <span ng-show="hasError(deliveryServiceForm.sslKeyVersion)" class="form-control-feedback"><i class="fa fa-times"></i></span> - </div> - </div> - <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.logsEnabled), 'has-feedback': hasError(deliveryServiceForm.logsEnabled)}"> <label class="control-label col-md-2 col-sm-2 col-xs-12">Logs Enabled *</label> <div class="col-md-10 col-sm-10 col-xs-12"> http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/9b26ecee/traffic_portal/app/src/common/modules/form/deliveryService/form.deliveryService.anyMap.tpl.html ---------------------------------------------------------------------- diff --git a/traffic_portal/app/src/common/modules/form/deliveryService/form.deliveryService.anyMap.tpl.html b/traffic_portal/app/src/common/modules/form/deliveryService/form.deliveryService.anyMap.tpl.html index e4aa27e..b48aaab 100644 --- a/traffic_portal/app/src/common/modules/form/deliveryService/form.deliveryService.anyMap.tpl.html +++ b/traffic_portal/app/src/common/modules/form/deliveryService/form.deliveryService.anyMap.tpl.html @@ -63,10 +63,19 @@ under the License. </div> </div> + <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.tenantId), 'has-feedback': hasError(deliveryServiceForm.tenantId)}"> + <label class="control-label col-md-2 col-sm-2 col-xs-12">Tenant</label> + <div class="col-md-10 col-sm-10 col-xs-12"> + <select id="tenantId" name="tenantId" class="form-control" ng-model="deliveryService.tenantId" ng-options="tenant.id as tenant.name for tenant in tenants"> + <option value="">Select...</option> + </select> + </div> + </div> + <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.xmlId), 'has-feedback': hasError(deliveryServiceForm.xmlId)}"> <label class="control-label col-md-2 col-sm-2 col-xs-12">XML ID *</label> <div class="col-md-10 col-sm-10 col-xs-12"> - <input id="xmlId" name="xmlId" type="text" class="form-control" ng-model="deliveryService.xmlId" ng-required="true" ng-maxlength="48" ng-pattern="/^\S*$/" autofocus> + <input id="xmlId" name="xmlId" type="text" class="form-control" placeholder="eg. xyz-video" ng-model="deliveryService.xmlId" ng-required="true" ng-maxlength="48" ng-pattern="/^\S*$/" autofocus> <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.xmlId, 'required')">Required</small> <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.xmlId, 'maxlength')">Too Long</small> <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.xmlId, 'pattern')">No spaces</small> @@ -103,15 +112,50 @@ under the License. </div> <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.geoProvider), 'has-feedback': hasError(deliveryServiceForm.geoProvider)}"> - <label class="control-label col-md-2 col-sm-2 col-xs-12">Geo Provider *</label> + <label class="control-label col-md-2 col-sm-2 col-xs-12">Geolocation Provider *</label> <div class="col-md-10 col-sm-10 col-xs-12"> <select id="geoProvider" name="geoProvider" class="form-control" ng-model="deliveryService.geoProvider" ng-options="gp.value as gp.label for gp in geoProviders" required></select> <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.geoProvider, 'required')">Required</small> </div> </div> + <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.geoLimit), 'has-feedback': hasError(deliveryServiceForm.geoLimit)}"> + <label class="control-label col-md-2 col-sm-2 col-xs-12">Geo Limit *</label> + <div class="col-md-10 col-sm-10 col-xs-12"> + <select id="geoLimit" name="geoLimit" class="form-control" ng-model="deliveryService.geoLimit" ng-options="gl.value as gl.label for gl in geoLimits" required></select> + <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.geoLimit, 'required')">Required</small> + </div> + </div> + + <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.geoLimitCountries), 'has-feedback': hasError(deliveryServiceForm.geoLimitCountries)}"> + <label class="control-label col-md-2 col-sm-2 col-xs-12">Geo Limit Countries</label> + <div class="col-md-10 col-sm-10 col-xs-12"> + <input id="geoLimitCountries" name="geoLimitCountries" type="text" class="form-control" ng-model="deliveryService.geoLimitCountries" ng-maxlength="255" autofocus> + <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.geoLimitCountries, 'maxlength')">Too Long</small> + <span ng-show="hasError(deliveryServiceForm.geoLimitCountries)" class="form-control-feedback"><i class="fa fa-times"></i></span> + </div> + </div> + + <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.geolimitRedirectUrl), 'has-feedback': hasError(deliveryServiceForm.geolimitRedirectUrl)}"> + <label class="control-label col-md-2 col-sm-2 col-xs-12">Geo Limit Redirect URL</label> + <div class="col-md-10 col-sm-10 col-xs-12"> + <input id="geolimitRedirectUrl" name="geolimitRedirectUrl" type="text" class="form-control" ng-model="deliveryService.geolimitRedirectUrl" ng-maxlength="255" ng-pattern="/^(https?:\/\/)/" autofocus> + <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.geolimitRedirectUrl, 'maxlength')">Too Long</small> + <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.geolimitRedirectUrl, 'pattern')">Must start with http:// or https://</small> + <span ng-show="hasError(deliveryServiceForm.geolimitRedirectUrl)" class="form-control-feedback"><i class="fa fa-times"></i></span> + </div> + </div> + + <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.regionalGeoBlocking), 'has-feedback': hasError(deliveryServiceForm.regionalGeoBlocking)}"> + <label class="control-label col-md-2 col-sm-2 col-xs-12">Regional Geoblocking *</label> + <div class="col-md-10 col-sm-10 col-xs-12"> + <select id="regionalGeoBlocking" name="regionalGeoBlocking" class="form-control" ng-model="deliveryService.regionalGeoBlocking" ng-options="x.value as x.label for x in falseTrue" required></select> + <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.regionalGeoBlocking, 'required')">Required</small> + </div> + </div> + <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.profile), 'has-feedback': hasError(deliveryServiceForm.profile)}"> - <label class="control-label col-md-2 col-sm-2 col-xs-12">Profile</label> + <label class="control-label col-md-2 col-sm-2 col-xs-12">Delivery Service Profile</label> <div class="col-md-10 col-sm-10 col-xs-12"> <select id="profile" name="profile" class="form-control" ng-model="deliveryService.profileId" ng-options="profile.id as profile.name for profile in profiles"> <option value="">Select...</option> @@ -201,23 +245,6 @@ under the License. </div> </div> - <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.sslKeyVersion), 'has-feedback': hasError(deliveryServiceForm.sslKeyVersion)}"> - <label class="control-label col-md-2 col-sm-2 col-xs-12">SSL Key Version</label> - <div class="col-md-10 col-sm-10 col-xs-12"> - <input id="sslKeyVersion" name="sslKeyVersion" type="text" class="form-control" ng-model="deliveryService.sslKeyVersion" ng-maxlength="11" autofocus> - <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.sslKeyVersion, 'maxlength')">Too Long</small> - <span ng-show="hasError(deliveryServiceForm.sslKeyVersion)" class="form-control-feedback"><i class="fa fa-times"></i></span> - </div> - </div> - - <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.regionalGeoBlocking), 'has-feedback': hasError(deliveryServiceForm.regionalGeoBlocking)}"> - <label class="control-label col-md-2 col-sm-2 col-xs-12">Regional Geoblocking *</label> - <div class="col-md-10 col-sm-10 col-xs-12"> - <select id="regionalGeoBlocking" name="regionalGeoBlocking" class="form-control" ng-model="deliveryService.regionalGeoBlocking" ng-options="x.value as x.label for x in falseTrue" required></select> - <small class="input-error" ng-show="hasPropertyError(deliveryServiceForm.regionalGeoBlocking, 'required')">Required</small> - </div> - </div> - <div class="form-group" ng-class="{'has-error': hasError(deliveryServiceForm.logsEnabled), 'has-feedback': hasError(deliveryServiceForm.logsEnabled)}"> <label class="control-label col-md-2 col-sm-2 col-xs-12">Logs Enabled *</label> <div class="col-md-10 col-sm-10 col-xs-12"> http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/9b26ecee/traffic_portal/app/src/common/modules/form/deliveryService/new/FormNewDeliveryServiceController.js ---------------------------------------------------------------------- diff --git a/traffic_portal/app/src/common/modules/form/deliveryService/new/FormNewDeliveryServiceController.js b/traffic_portal/app/src/common/modules/form/deliveryService/new/FormNewDeliveryServiceController.js index d8f8e8d..6e088d7 100644 --- a/traffic_portal/app/src/common/modules/form/deliveryService/new/FormNewDeliveryServiceController.js +++ b/traffic_portal/app/src/common/modules/form/deliveryService/new/FormNewDeliveryServiceController.js @@ -19,10 +19,6 @@ var FormNewDeliveryServiceController = function(deliveryService, type, types, $scope, $controller, deliveryServiceService) { - var filteredTypes = _.filter(types, function(currentType) { - return currentType.name.indexOf(type) != -1; - }); - var setDNSTtl = function() { if (type.indexOf('HTTP') != -1) { deliveryService.ccrDnsTtl = 3600; @@ -33,7 +29,7 @@ var FormNewDeliveryServiceController = function(deliveryService, type, types, $s setDNSTtl(); // extends the FormDeliveryServiceController to inherit common methods - angular.extend(this, $controller('FormDeliveryServiceController', { deliveryService: deliveryService, types: filteredTypes, $scope: $scope })); + angular.extend(this, $controller('FormDeliveryServiceController', { deliveryService: deliveryService, type: type, types: types, $scope: $scope })); $scope.deliveryServiceName = 'New'; http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/9b26ecee/traffic_portal/app/src/common/modules/form/parameter/FormParameterController.js ---------------------------------------------------------------------- diff --git a/traffic_portal/app/src/common/modules/form/parameter/FormParameterController.js b/traffic_portal/app/src/common/modules/form/parameter/FormParameterController.js index 4de9b5a..17cb9b5 100644 --- a/traffic_portal/app/src/common/modules/form/parameter/FormParameterController.js +++ b/traffic_portal/app/src/common/modules/form/parameter/FormParameterController.js @@ -29,6 +29,11 @@ var FormParameterController = function(parameter, $scope, $location, formUtils, $scope.labelize = stringUtils.labelize; + $scope.falseTrue = [ + { value: false, label: 'false' }, + { value: true, label: 'true' } + ]; + $scope.viewProfiles = function() { $location.path($location.path() + '/profiles'); }; http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/9b26ecee/traffic_portal/app/src/common/modules/form/parameter/edit/FormEditParameterController.js ---------------------------------------------------------------------- diff --git a/traffic_portal/app/src/common/modules/form/parameter/edit/FormEditParameterController.js b/traffic_portal/app/src/common/modules/form/parameter/edit/FormEditParameterController.js index 4074104..996821c 100644 --- a/traffic_portal/app/src/common/modules/form/parameter/edit/FormEditParameterController.js +++ b/traffic_portal/app/src/common/modules/form/parameter/edit/FormEditParameterController.js @@ -17,7 +17,7 @@ * under the License. */ -var FormEditParameterController = function(parameter, $scope, $controller, $uibModal, $anchorScroll, locationUtils, parameterService) { +var FormEditParameterController = function(parameter, $scope, $controller, $uibModal, $anchorScroll, locationUtils, parameterService, profileService) { // extends the FormParameterController to inherit common methods angular.extend(this, $controller('FormParameterController', { parameter: parameter, $scope: $scope })); @@ -29,6 +29,14 @@ var FormEditParameterController = function(parameter, $scope, $controller, $uibM }); }; + var save = function(parameter) { + parameterService.updateParameter(parameter). + then(function() { + $scope.parameterName = angular.copy(parameter.name); + $anchorScroll(); // scrolls window to top + }); + }; + $scope.parameterName = angular.copy(parameter.name); $scope.settings = { @@ -36,12 +44,35 @@ var FormEditParameterController = function(parameter, $scope, $controller, $uibM saveLabel: 'Update' }; - $scope.save = function(parameter) { - parameterService.updateParameter(parameter). - then(function() { - $scope.parameterName = angular.copy(parameter.name); - $anchorScroll(); // scrolls window to top + $scope.confirmSave = function(parameter) { + profileService.getParameterProfiles(parameter.id). + then(function(result) { + var params = { + title: 'Update Parameter?', + message: result.length + ' profiles use this parameter.<br><br>' + }; + if (result.length > 0) { + params.message += _.pluck(result, 'name').join('<br>') + '<br><br>'; + } + params.message += 'Are you sure you want to update the parameter?'; + + var modalInstance = $uibModal.open({ + templateUrl: 'common/modules/dialog/confirm/dialog.confirm.tpl.html', + controller: 'DialogConfirmController', + size: 'md', + resolve: { + params: function () { + return params; + } + } + }); + modalInstance.result.then(function() { + save(parameter); + }, function () { + // do nothing }); + }); + }; $scope.confirmDelete = function(parameter) { @@ -68,5 +99,5 @@ var FormEditParameterController = function(parameter, $scope, $controller, $uibM }; -FormEditParameterController.$inject = ['parameter', '$scope', '$controller', '$uibModal', '$anchorScroll', 'locationUtils', 'parameterService']; +FormEditParameterController.$inject = ['parameter', '$scope', '$controller', '$uibModal', '$anchorScroll', 'locationUtils', 'parameterService', 'profileService']; module.exports = FormEditParameterController; http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/9b26ecee/traffic_portal/app/src/common/modules/form/parameter/form.parameter.tpl.html ---------------------------------------------------------------------- diff --git a/traffic_portal/app/src/common/modules/form/parameter/form.parameter.tpl.html b/traffic_portal/app/src/common/modules/form/parameter/form.parameter.tpl.html index 6f31745..2d7b2b4 100644 --- a/traffic_portal/app/src/common/modules/form/parameter/form.parameter.tpl.html +++ b/traffic_portal/app/src/common/modules/form/parameter/form.parameter.tpl.html @@ -42,9 +42,16 @@ under the License. <span ng-show="hasError(parameterForm[prop.name])" class="form-control-feedback"><i class="fa fa-times"></i></span> </div> </div> + <div class="form-group" ng-class="{'has-error': hasError(parameterForm.secure), 'has-feedback': hasError(parameterForm.secure)}"> + <label class="control-label col-md-2 col-sm-2 col-xs-12">Secure *</label> + <div class="col-md-10 col-sm-10 col-xs-12"> + <select id="secure" name="secure" class="form-control" ng-model="parameter.secure" ng-options="x.value as x.label for x in falseTrue" required></select> + <small class="input-error" ng-show="hasPropertyError(parameterForm.secure, 'required')">Required</small> + </div> + </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-success" 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="confirmSave(parameter)">{{settings.saveLabel}}</button> </div> </form> </div> http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/9b26ecee/traffic_portal/app/src/common/modules/form/parameter/new/FormNewParameterController.js ---------------------------------------------------------------------- diff --git a/traffic_portal/app/src/common/modules/form/parameter/new/FormNewParameterController.js b/traffic_portal/app/src/common/modules/form/parameter/new/FormNewParameterController.js index 56b9202..5e2bfec 100644 --- a/traffic_portal/app/src/common/modules/form/parameter/new/FormNewParameterController.js +++ b/traffic_portal/app/src/common/modules/form/parameter/new/FormNewParameterController.js @@ -29,7 +29,7 @@ var FormNewParameterController = function(parameter, $scope, $controller, parame saveLabel: 'Create' }; - $scope.save = function(parameter) { + $scope.confirmSave = function(parameter) { parameterService.createParameter(parameter); }; http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/9b26ecee/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html ---------------------------------------------------------------------- diff --git a/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html b/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html index 2bc9dd2..30f3970 100644 --- a/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html +++ b/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html @@ -67,13 +67,49 @@ under the License. <input id="updPending" name="updPending" type="text" class="form-control" ng-model="server.updPending" ng-disabled="true"> </div> </div> + <div class="form-group" ng-class="{'has-error': hasError(serverForm.cdn), 'has-feedback': hasError(serverForm.cdn)}"> + <label class="control-label col-md-2 col-sm-2 col-xs-12">CDN *</label> + <div class="col-md-10 col-sm-10 col-xs-12"> + <select id="cdn" name="cdn" class="form-control" ng-model="server.cdnId" ng-options="cdn.id as cdn.name for cdn in cdns" required> + <option value="">Select...</option> + </select> + <small class="input-error" ng-show="hasPropertyError(serverForm.cdn, 'required')">Required</small> + </div> + </div> + <div class="form-group" ng-class="{'has-error': hasError(serverForm.cachegroup), 'has-feedback': hasError(serverForm.cachegroup)}"> + <label class="control-label col-md-2 col-sm-2 col-xs-12">Cache Group *</label> + <div class="col-md-10 col-sm-10 col-xs-12"> + <select id="cachegroup" name="cachegroup" class="form-control" ng-model="server.cachegroupId" ng-options="cachegroup.id as cachegroup.name for cachegroup in cacheGroups" required> + <option value="">Select...</option> + </select> + <small class="input-error" ng-show="hasPropertyError(serverForm.cachegroup, 'required')">Required</small> + </div> + </div> + <div class="form-group" ng-class="{'has-error': hasError(serverForm.type), 'has-feedback': hasError(serverForm.type)}"> + <label class="control-label col-md-2 col-sm-2 col-xs-12">Type *</label> + <div class="col-md-10 col-sm-10 col-xs-12"> + <select id="type" name="type" class="form-control" ng-model="server.typeId" ng-options="type.id as type.name for type in types" required> + <option value="">Select...</option> + </select> + <small class="input-error" ng-show="hasPropertyError(serverForm.type, 'required')">Required</small> + </div> + </div> + <div class="form-group" ng-class="{'has-error': hasError(serverForm.profile), 'has-feedback': hasError(serverForm.profile)}"> + <label class="control-label col-md-2 col-sm-2 col-xs-12">Profile *</label> + <div class="col-md-10 col-sm-10 col-xs-12"> + <select id="profile" name="profile" class="form-control" ng-model="server.profileId" ng-options="profile.id as profile.name for profile in profiles" required> + <option value="">Select...</option> + </select> + <small class="input-error" ng-show="hasPropertyError(serverForm.profile, 'required')">Required</small> + </div> + </div> <div class="form-group" ng-class="{'has-error': hasError(serverForm.hostName), 'has-feedback': hasError(serverForm.hostName)}"> <label class="control-label col-md-2 col-sm-2 col-xs-12">Hostname *</label> <div class="col-md-10 col-sm-10 col-xs-12"> - <input id="hostName" name="hostName" type="text" class="form-control" ng-model="server.hostName" ng-required="true" ng-maxlength="45" ng-pattern="/^\S*$/" autofocus> + <input id="hostName" name="hostName" type="text" class="form-control" ng-model="server.hostName" ng-required="true" ng-maxlength="45" ng-pattern="/^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$/" autofocus> <small class="input-error" ng-show="hasPropertyError(serverForm.hostName, 'required')">Required</small> <small class="input-error" ng-show="hasPropertyError(serverForm.hostName, 'maxlength')">Too Long</small> - <small class="input-error" ng-show="hasPropertyError(serverForm.hostName, 'pattern')">No Spaces</small> + <small class="input-error" ng-show="hasPropertyError(serverForm.hostName, 'pattern')">Invalid</small> <span ng-show="hasError(serverForm.hostName)" class="form-control-feedback"><i class="fa fa-times"></i></span> </div> </div> @@ -83,7 +119,7 @@ under the License. <input id="domainName" name="domainName" type="text" class="form-control" ng-model="server.domainName" ng-required="true" ng-maxlength="45" ng-pattern="/^\S*$/" autofocus> <small class="input-error" ng-show="hasPropertyError(serverForm.domainName, 'required')">Required</small> <small class="input-error" ng-show="hasPropertyError(serverForm.domainName, 'maxlength')">Too Long</small> - <small class="input-error" ng-show="hasPropertyError(serverForm.domainName, 'pattern')">No Spaces</small> + <small class="input-error" ng-show="hasPropertyError(serverForm.domainName, 'pattern')">Invalid</small> <span ng-show="hasError(serverForm.domainName)" class="form-control-feedback"><i class="fa fa-times"></i></span> </div> </div> @@ -96,20 +132,13 @@ under the License. <span ng-show="hasError(serverForm.tcpPort)" class="form-control-feedback"><i class="fa fa-times"></i></span> </div> </div> - <div class="form-group" ng-class="{'has-error': hasError(serverForm.xmppId), 'has-feedback': hasError(serverForm.xmppId)}"> - <label class="control-label col-md-2 col-sm-2 col-xs-12">XMPP ID</label> - <div class="col-md-10 col-sm-10 col-xs-12"> - <input id="xmppId" name="xmppId" type="text" class="form-control" ng-model="server.xmppId" ng-maxlength="256" autofocus> - <small class="input-error" ng-show="hasPropertyError(serverForm.xmppId, 'maxlength')">Too Long</small> - <span ng-show="hasError(serverForm.xmppId)" class="form-control-feedback"><i class="fa fa-times"></i></span> - </div> - </div> - <div class="form-group" ng-class="{'has-error': hasError(serverForm.xmppPasswd), 'has-feedback': hasError(serverForm.xmppPasswd)}"> - <label class="control-label col-md-2 col-sm-2 col-xs-12">XMPP Password</label> + <div class="form-group" ng-class="{'has-error': hasError(serverForm.httpsPort), 'has-feedback': hasError(serverForm.httpsPort)}"> + <label class="control-label col-md-2 col-sm-2 col-xs-12">HTTPS Port</label> <div class="col-md-10 col-sm-10 col-xs-12"> - <input id="xmppPasswd" name="xmppPasswd" type="text" class="form-control" ng-model="server.xmppPasswd" ng-maxlength="45" autofocus> - <small class="input-error" ng-show="hasPropertyError(serverForm.xmppPasswd, 'maxlength')">Too Long</small> - <span ng-show="hasError(serverForm.xmppPasswd)" class="form-control-feedback"><i class="fa fa-times"></i></span> + <input id="httpsPort" name="httpsPort" type="text" class="form-control" ng-model="server.httpsPort" ng-maxlength="10" ng-pattern="/^\d+$/" autofocus> + <small class="input-error" ng-show="hasPropertyError(serverForm.httpsPort, 'maxlength')">Too Long</small> + <small class="input-error" ng-show="hasPropertyError(serverForm.httpsPort, 'pattern')">Number</small> + <span ng-show="hasError(serverForm.httpsPort)" class="form-control-feedback"><i class="fa fa-times"></i></span> </div> </div> <div class="form-group" ng-class="{'has-error': hasError(serverForm.interfaceName), 'has-feedback': hasError(serverForm.interfaceName)}"> @@ -122,7 +151,7 @@ under the License. </div> </div> <div class="form-group" ng-class="{'has-error': hasError(serverForm.ipAddress), 'has-feedback': hasError(serverForm.ipAddress)}"> - <label class="control-label col-md-2 col-sm-2 col-xs-12">IP Address *</label> + <label class="control-label col-md-2 col-sm-2 col-xs-12">Network IP *</label> <div class="col-md-10 col-sm-10 col-xs-12"> <input id="ipAddress" name="ipAddress" type="text" class="form-control" ng-model="server.ipAddress" ng-required="true" ng-maxlength="45" ng-pattern="ipRegex()" autofocus> <small class="input-error" ng-show="hasPropertyError(serverForm.ipAddress, 'required')">Required</small> @@ -132,7 +161,7 @@ under the License. </div> </div> <div class="form-group" ng-class="{'has-error': hasError(serverForm.ipNetmask), 'has-feedback': hasError(serverForm.ipNetmask)}"> - <label class="control-label col-md-2 col-sm-2 col-xs-12">IP Netmask *</label> + <label class="control-label col-md-2 col-sm-2 col-xs-12">Network Subnet *</label> <div class="col-md-10 col-sm-10 col-xs-12"> <input id="ipNetmask" name="ipNetmask" type="text" class="form-control" ng-model="server.ipNetmask" ng-required="true" ng-maxlength="45" ng-pattern="validations.ipRegex" autofocus> <small class="input-error" ng-show="hasPropertyError(serverForm.ipNetmask, 'required')">Required</small> @@ -142,7 +171,7 @@ under the License. </div> </div> <div class="form-group" ng-class="{'has-error': hasError(serverForm.ipGateway), 'has-feedback': hasError(serverForm.ipGateway)}"> - <label class="control-label col-md-2 col-sm-2 col-xs-12">IP Gateway *</label> + <label class="control-label col-md-2 col-sm-2 col-xs-12">Network Gateway *</label> <div class="col-md-10 col-sm-10 col-xs-12"> <input id="ipGateway" name="ipGateway" type="text" class="form-control" ng-model="server.ipGateway" ng-required="true" ng-maxlength="45" ng-pattern="ipRegex()" autofocus> <small class="input-error" ng-show="hasPropertyError(serverForm.ipGateway, 'required')">Required</small> @@ -168,17 +197,26 @@ under the License. </div> </div> <div class="form-group" ng-class="{'has-error': hasError(serverForm.interfaceMtu), 'has-feedback': hasError(serverForm.interfaceMtu)}"> - <label class="control-label col-md-2 col-sm-2 col-xs-12">Interface MTU *</label> + <label class="control-label col-md-2 col-sm-2 col-xs-12">Network MTU *</label> <div class="col-md-10 col-sm-10 col-xs-12"> - <input id="interfaceMtu" name="interfaceMtu" type="text" class="form-control" ng-model="server.interfaceMtu" ng-required="true" ng-maxlength="11" ng-pattern="/(^1500$|^9000$)/" autofocus> + <input id="interfaceMtu" name="interfaceMtu" type="text" class="form-control" placeholder="1500 or 9000" ng-model="server.interfaceMtu" ng-required="true" ng-maxlength="11" ng-pattern="/(^1500$|^9000$)/" autofocus> <small class="input-error" ng-show="hasPropertyError(serverForm.interfaceMtu, 'required')">Required</small> <small class="input-error" ng-show="hasPropertyError(serverForm.interfaceMtu, 'maxlength')">Too Long</small> <small class="input-error" ng-show="hasPropertyError(serverForm.interfaceMtu, 'pattern')">1500 or 9000</small> <span ng-show="hasError(serverForm.interfaceMtu)" class="form-control-feedback"><i class="fa fa-times"></i></span> </div> </div> + <div class="form-group" ng-class="{'has-error': hasError(serverForm.physLocation), 'has-feedback': hasError(serverForm.physLocation)}"> + <label class="control-label col-md-2 col-sm-2 col-xs-12">Phys Location *</label> + <div class="col-md-10 col-sm-10 col-xs-12"> + <select id="physLocation" name="physLocation" class="form-control" ng-model="server.physLocationId" ng-options="physLocation.id as physLocation.name for physLocation in physLocations" required> + <option value="">Select...</option> + </select> + <small class="input-error" ng-show="hasPropertyError(serverForm.physLocation, 'required')">Required</small> + </div> + </div> <div class="form-group" ng-class="{'has-error': hasError(serverForm.rack), 'has-feedback': hasError(serverForm.rack)}"> - <label class="control-label col-md-2 col-sm-2 col-xs-12">Rack</label> + <label class="control-label col-md-2 col-sm-2 col-xs-12">Rack / Elevation</label> <div class="col-md-10 col-sm-10 col-xs-12"> <input id="rack" name="rack" type="text" class="form-control" ng-model="server.rack" ng-maxlength="64" autofocus> <small class="input-error" ng-show="hasPropertyError(serverForm.rack, 'maxlength')">Too Long</small> @@ -273,60 +311,6 @@ under the License. <span ng-show="hasError(serverForm.routerPortName)" class="form-control-feedback"><i class="fa fa-times"></i></span> </div> </div> - <div class="form-group" ng-class="{'has-error': hasError(serverForm.httpsPort), 'has-feedback': hasError(serverForm.httpsPort)}"> - <label class="control-label col-md-2 col-sm-2 col-xs-12">HTTPS Port</label> - <div class="col-md-10 col-sm-10 col-xs-12"> - <input id="httpsPort" name="httpsPort" type="text" class="form-control" ng-model="server.httpsPort" ng-maxlength="10" ng-pattern="/^\d+$/" autofocus> - <small class="input-error" ng-show="hasPropertyError(serverForm.httpsPort, 'maxlength')">Too Long</small> - <small class="input-error" ng-show="hasPropertyError(serverForm.httpsPort, 'pattern')">Number</small> - <span ng-show="hasError(serverForm.httpsPort)" class="form-control-feedback"><i class="fa fa-times"></i></span> - </div> - </div> - <div class="form-group" ng-class="{'has-error': hasError(serverForm.cdn), 'has-feedback': hasError(serverForm.cdn)}"> - <label class="control-label col-md-2 col-sm-2 col-xs-12">CDN *</label> - <div class="col-md-10 col-sm-10 col-xs-12"> - <select id="cdn" name="cdn" class="form-control" ng-model="server.cdnId" ng-options="cdn.id as cdn.name for cdn in cdns" required> - <option value="">Select...</option> - </select> - <small class="input-error" ng-show="hasPropertyError(serverForm.cdn, 'required')">Required</small> - </div> - </div> - <div class="form-group" ng-class="{'has-error': hasError(serverForm.physLocation), 'has-feedback': hasError(serverForm.physLocation)}"> - <label class="control-label col-md-2 col-sm-2 col-xs-12">Phys Location *</label> - <div class="col-md-10 col-sm-10 col-xs-12"> - <select id="physLocation" name="physLocation" class="form-control" ng-model="server.physLocationId" ng-options="physLocation.id as physLocation.name for physLocation in physLocations" required> - <option value="">Select...</option> - </select> - <small class="input-error" ng-show="hasPropertyError(serverForm.physLocation, 'required')">Required</small> - </div> - </div> - <div class="form-group" ng-class="{'has-error': hasError(serverForm.cachegroup), 'has-feedback': hasError(serverForm.cachegroup)}"> - <label class="control-label col-md-2 col-sm-2 col-xs-12">Cache Group *</label> - <div class="col-md-10 col-sm-10 col-xs-12"> - <select id="cachegroup" name="cachegroup" class="form-control" ng-model="server.cachegroupId" ng-options="cachegroup.id as cachegroup.name for cachegroup in cacheGroups" required> - <option value="">Select...</option> - </select> - <small class="input-error" ng-show="hasPropertyError(serverForm.cachegroup, 'required')">Required</small> - </div> - </div> - <div class="form-group" ng-class="{'has-error': hasError(serverForm.type), 'has-feedback': hasError(serverForm.type)}"> - <label class="control-label col-md-2 col-sm-2 col-xs-12">Type *</label> - <div class="col-md-10 col-sm-10 col-xs-12"> - <select id="type" name="type" class="form-control" ng-model="server.typeId" ng-options="type.id as type.name for type in types" required> - <option value="">Select...</option> - </select> - <small class="input-error" ng-show="hasPropertyError(serverForm.type, 'required')">Required</small> - </div> - </div> - <div class="form-group" ng-class="{'has-error': hasError(serverForm.profile), 'has-feedback': hasError(serverForm.profile)}"> - <label class="control-label col-md-2 col-sm-2 col-xs-12">Profile *</label> - <div class="col-md-10 col-sm-10 col-xs-12"> - <select id="profile" name="profile" class="form-control" ng-model="server.profileId" ng-options="profile.id as profile.name for profile in profiles" required> - <option value="">Select...</option> - </select> - <small class="input-error" ng-show="hasPropertyError(serverForm.profile, 'required')">Required</small> - </div> - </div> <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-success" ng-disabled="serverForm.$pristine || serverForm.$invalid" ng-click="save(server)">{{settings.saveLabel}}</button> http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/9b26ecee/traffic_portal/app/src/common/modules/header/header.tpl.html ---------------------------------------------------------------------- diff --git a/traffic_portal/app/src/common/modules/header/header.tpl.html b/traffic_portal/app/src/common/modules/header/header.tpl.html index 99a4ee5..5788cc6 100644 --- a/traffic_portal/app/src/common/modules/header/header.tpl.html +++ b/traffic_portal/app/src/common/modules/header/header.tpl.html @@ -35,7 +35,7 @@ under the License. </div> </li> <li role="presentation" class="dropdown"> - <div class="btn-group" uib-dropdown is-open="alerts.isopen"> + <div class="btn-group" title="Change Logs" uib-dropdown is-open="alerts.isopen"> <button id="alertsButton" type="button" class="btn btn-link" ng-click="getChangeLogs()" uib-dropdown-toggle> <i class="fa fa-comment-o"></i> <span class="badge bg-green">{{newLogCount()}}</span> http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/9b26ecee/traffic_portal/app/src/common/modules/navigation/NavigationController.js ---------------------------------------------------------------------- diff --git a/traffic_portal/app/src/common/modules/navigation/NavigationController.js b/traffic_portal/app/src/common/modules/navigation/NavigationController.js index 5b7cefb..6413506 100644 --- a/traffic_portal/app/src/common/modules/navigation/NavigationController.js +++ b/traffic_portal/app/src/common/modules/navigation/NavigationController.js @@ -21,7 +21,7 @@ var NavigationController = function($scope, $log, $state, $location, $window, $t $scope.appName = propertiesModel.properties.name; - $scope.customMenuItems = propertiesModel.properties.customMenu.items; + $scope.customMenu = propertiesModel.properties.customMenu; $scope.userLoaded = userModel.loaded; http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/9b26ecee/traffic_portal/app/src/common/modules/navigation/navigation.tpl.html ---------------------------------------------------------------------- diff --git a/traffic_portal/app/src/common/modules/navigation/navigation.tpl.html b/traffic_portal/app/src/common/modules/navigation/navigation.tpl.html index e4c261e..2444a12 100644 --- a/traffic_portal/app/src/common/modules/navigation/navigation.tpl.html +++ b/traffic_portal/app/src/common/modules/navigation/navigation.tpl.html @@ -54,9 +54,9 @@ under the License. <li class="side-menu-category-item" ng-class="{'current-page': isState('trafficPortal.private.admin.users')}"><a ng-click="navigateToPath('/admin/users')">Users</a></li> </ul> </li> - <li class="side-menu-category" ng-if="customMenuItems.length > 0"><a href="javascript:void(0);"><i class="fa fa-cog"></i> Custom <span class="fa fa-chevron-down"></span></a> + <li class="side-menu-category" ng-if="customMenu.items.length > 0"><a href="javascript:void(0);"><i class="fa fa-ellipsis-h"></i>{{::customMenu.name}} <span class="fa fa-chevron-down"></span></a> <ul class="nav child_menu" style="display: none"> - <li class="side-menu-category-item" ng-repeat="item in ::customMenuItems"><a ng-click="openCustomItem(item.url, item.embed)">{{item.name}}</a></li> + <li class="side-menu-category-item" ng-repeat="item in ::customMenu.items"><a ng-click="openCustomItem(item.url, item.embed)">{{item.name}}</a></li> </ul> </li> http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/9b26ecee/traffic_portal/app/src/common/modules/table/cacheGroupParameters/table.cacheGroupParameters.tpl.html ---------------------------------------------------------------------- diff --git a/traffic_portal/app/src/common/modules/table/cacheGroupParameters/table.cacheGroupParameters.tpl.html b/traffic_portal/app/src/common/modules/table/cacheGroupParameters/table.cacheGroupParameters.tpl.html index 04feb92..e401859 100644 --- a/traffic_portal/app/src/common/modules/table/cacheGroupParameters/table.cacheGroupParameters.tpl.html +++ b/traffic_portal/app/src/common/modules/table/cacheGroupParameters/table.cacheGroupParameters.tpl.html @@ -38,6 +38,7 @@ under the License. <th>name</th> <th>configFile</th> <th>value</th> + <th>secure</th> <th></th> </tr> </thead> @@ -46,6 +47,7 @@ under the License. <td>{{::parameter.name}}</td> <td>{{::parameter.configFile}}</td> <td>{{::parameter.value}}</td> + <td>{{::parameter.secure}}</td> <td><button type="button" class="btn btn-link" title="Unlink Parameter from Cache Group" ng-click="removeParameter(parameter.id)"><i class="fa fa-chain-broken"></i></button></td> </tr> </tbody> http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/9b26ecee/traffic_portal/app/src/common/modules/table/cdnDeliveryServices/table.cdnDeliveryServices.tpl.html ---------------------------------------------------------------------- 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 ac8dffd..53d7aae 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 @@ -34,6 +34,7 @@ under the License. <table id="deliveryServicesTable" class="table responsive-utilities jambo_table"> <thead> <tr class="headings"> + <th>tenant</th> <th>xmlId</th> <th>orgServerFqdn</th> <th>active</th> @@ -48,6 +49,7 @@ under the License. </thead> <tbody> <tr ng-click="editDeliveryService(deliveryService)" ng-repeat="deliveryService in ::deliveryServices"> + <td>{{::deliveryService.tenant}}</td> <td>{{::deliveryService.xmlId}}</td> <td>{{::deliveryService.orgServerFqdn}}</td> <td>{{::deliveryService.active}}</td> http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/9b26ecee/traffic_portal/app/src/common/modules/table/deliveryServices/table.deliveryServices.tpl.html ---------------------------------------------------------------------- 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 3b97e89..1e7e896 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 @@ -33,6 +33,7 @@ under the License. <table id="deliveryServicesTable" class="table responsive-utilities jambo_table"> <thead> <tr class="headings"> + <th>tenant</th> <th>xmlId</th> <th>orgServerFqdn</th> <th>active</th> @@ -47,6 +48,7 @@ under the License. </thead> <tbody> <tr ng-click="editDeliveryService(deliveryService)" ng-repeat="deliveryService in ::deliveryServices"> + <td>{{::deliveryService.tenant}}</td> <td>{{::deliveryService.xmlId}}</td> <td>{{::deliveryService.orgServerFqdn}}</td> <td>{{::deliveryService.active}}</td> http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/9b26ecee/traffic_portal/app/src/common/modules/table/parameterProfiles/TableParameterProfilesController.js ---------------------------------------------------------------------- diff --git a/traffic_portal/app/src/common/modules/table/parameterProfiles/TableParameterProfilesController.js b/traffic_portal/app/src/common/modules/table/parameterProfiles/TableParameterProfilesController.js index 3fb44f6..6a4ce71 100644 --- a/traffic_portal/app/src/common/modules/table/parameterProfiles/TableParameterProfilesController.js +++ b/traffic_portal/app/src/common/modules/table/parameterProfiles/TableParameterProfilesController.js @@ -17,7 +17,7 @@ * under the License. */ -var TableParameterProfilesController = function(parameter, parameterProfiles, $scope, $state, $uibModal, locationUtils, profileParameterService) { +var TableParameterProfilesController = function(parameter, parameterProfiles, $scope, $state, $uibModal, locationUtils, deliveryServiceService, profileParameterService, serverService) { $scope.parameter = parameter; @@ -27,7 +27,7 @@ var TableParameterProfilesController = function(parameter, parameterProfiles, $s alert('not hooked up yet: add profile to parameter'); }; - $scope.removeProfile = function(profileId) { + var removeProfile = function(profileId) { profileParameterService.unlinkProfileParameter(profileId, parameter.id) .then( function() { @@ -36,6 +36,57 @@ var TableParameterProfilesController = function(parameter, parameterProfiles, $s ); }; + $scope.confirmRemoveProfile = function(profile) { + if (profile.type == 'DS_PROFILE') { // if this is a ds profile, then it is used by delivery service(s) so we'll fetch the ds count... + deliveryServiceService.getDeliveryServices({ profile: profile.id }). + then(function(result) { + var params = { + title: 'Remove Parameter from Profile?', + message: 'The ' + profile.name + ' profile is used by ' + result.length + ' delivery service(s). Are you sure you want to remove the ' + parameter.name + ' parameter from this profile?' + }; + var modalInstance = $uibModal.open({ + templateUrl: 'common/modules/dialog/confirm/dialog.confirm.tpl.html', + controller: 'DialogConfirmController', + size: 'md', + resolve: { + params: function () { + return params; + } + } + }); + modalInstance.result.then(function() { + removeProfile(profile.id); + }, function () { + // do nothing + }); + }); + } else { // otherwise the profile is used by servers so we'll fetch the server count... + serverService.getServers({ profileId: profile.id }). + then(function(result) { + var params = { + title: 'Remove Parameter from Profile?', + message: 'The ' + profile.name + ' profile is used by ' + result.length + ' server(s). Are you sure you want to remove the ' + parameter.name + ' parameter from this profile?' + }; + var modalInstance = $uibModal.open({ + templateUrl: 'common/modules/dialog/confirm/dialog.confirm.tpl.html', + controller: 'DialogConfirmController', + size: 'md', + resolve: { + params: function () { + return params; + } + } + }); + modalInstance.result.then(function() { + removeProfile(profile.id); + }, function () { + // do nothing + }); + }); + } + }; + + $scope.refresh = function() { $state.reload(); // reloads all the resolves for the view }; @@ -83,5 +134,5 @@ var TableParameterProfilesController = function(parameter, parameterProfiles, $s }; -TableParameterProfilesController.$inject = ['parameter', 'parameterProfiles', '$scope', '$state', '$uibModal', 'locationUtils', 'profileParameterService']; +TableParameterProfilesController.$inject = ['parameter', 'parameterProfiles', '$scope', '$state', '$uibModal', 'locationUtils', 'deliveryServiceService', 'profileParameterService', 'serverService']; module.exports = TableParameterProfilesController;
