You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by de...@apache.org on 2017/01/30 19:32:46 UTC
[1/3] incubator-trafficcontrol git commit: hooks up exp TO UI to ds
regex crud api
Repository: incubator-trafficcontrol
Updated Branches:
refs/heads/master 530aa4592 -> 639d0d5c0
hooks up exp TO UI to ds regex crud api
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/commit/5881037c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/tree/5881037c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/diff/5881037c
Branch: refs/heads/master
Commit: 5881037cf927276c42542eca8fec8fc0883bf707
Parents: fe1f251
Author: Jeremy Mitchell <mi...@gmail.com>
Authored: Wed Jan 25 08:30:33 2017 -0700
Committer: Jeremy Mitchell <mi...@gmail.com>
Committed: Wed Jan 25 08:30:33 2017 -0700
----------------------------------------------------------------------
traffic_ops/experimental/ui/app/src/app.js | 6 ++
.../common/api/DeliveryServiceRegexService.js | 70 +++++++++++++++++++
.../src/common/api/DeliveryServiceService.js | 4 +-
.../experimental/ui/app/src/common/api/index.js | 8 +--
.../FormDeliveryServiceRegexController.js | 47 +++++++++++++
.../FormEditDeliveryServiceRegexController.js | 72 ++++++++++++++++++++
.../form/deliveryServiceRegex/edit/index.js | 21 ++++++
.../form.deliveryServiceRegex.tpl.html | 68 ++++++++++++++++++
.../modules/form/deliveryServiceRegex/index.js | 21 ++++++
.../FormNewDeliveryServiceRegexController.js | 39 +++++++++++
.../form/deliveryServiceRegex/new/index.js | 21 ++++++
.../TableDeliveryServiceRegexesController.js | 14 ++--
.../table.deliveryServiceRegexes.tpl.html | 10 ++-
.../regexes/DeliveryServiceRegexesController.js | 24 +++++++
.../regexes/deliveryServiceRegexes.tpl.html | 22 ++++++
.../deliveryServices/regexes/edit/index.js | 42 ++++++++++++
.../configure/deliveryServices/regexes/index.js | 14 ++--
.../deliveryServices/regexes/list/index.js | 42 ++++++++++++
.../deliveryServices/regexes/new/index.js | 42 ++++++++++++
19 files changed, 558 insertions(+), 29 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/5881037c/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 b54d85a..fdc00b8 100644
--- a/traffic_ops/experimental/ui/app/src/app.js
+++ b/traffic_ops/experimental/ui/app/src/app.js
@@ -125,6 +125,9 @@ var trafficOps = angular.module('trafficOps', [
require('./modules/private/configure/deliveryServices/list').name,
require('./modules/private/configure/deliveryServices/new').name,
require('./modules/private/configure/deliveryServices/regexes').name,
+ require('./modules/private/configure/deliveryServices/regexes/edit').name,
+ require('./modules/private/configure/deliveryServices/regexes/list').name,
+ require('./modules/private/configure/deliveryServices/regexes/new').name,
require('./modules/private/configure/deliveryServices/servers').name,
require('./modules/private/configure/deliveryServices/users').name,
require('./modules/private/configure/servers').name,
@@ -164,6 +167,9 @@ var trafficOps = angular.module('trafficOps', [
require('./common/modules/form/deliveryService').name,
require('./common/modules/form/deliveryService/edit').name,
require('./common/modules/form/deliveryService/new').name,
+ require('./common/modules/form/deliveryServiceRegex').name,
+ require('./common/modules/form/deliveryServiceRegex/edit').name,
+ require('./common/modules/form/deliveryServiceRegex/new').name,
require('./common/modules/form/division').name,
require('./common/modules/form/division/edit').name,
require('./common/modules/form/division/new').name,
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/5881037c/traffic_ops/experimental/ui/app/src/common/api/DeliveryServiceRegexService.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/api/DeliveryServiceRegexService.js b/traffic_ops/experimental/ui/app/src/common/api/DeliveryServiceRegexService.js
new file mode 100644
index 0000000..8276a3c
--- /dev/null
+++ b/traffic_ops/experimental/ui/app/src/common/api/DeliveryServiceRegexService.js
@@ -0,0 +1,70 @@
+/*
+ * 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 DeliveryServiceRegexService = function(Restangular, locationUtils, messageModel) {
+
+ this.getDeliveryServiceRegexes = function(dsId) {
+ return Restangular.one('deliveryservices', dsId).getList('regexes');
+ };
+
+ this.getDeliveryServiceRegex = function(dsId, regexId) {
+ return Restangular.one('deliveryservices', dsId).one('regexes', regexId).get();
+ };
+
+ this.createDeliveryServiceRegex = function(dsId, regex) {
+ return Restangular.one('deliveryservices', dsId).all('regexes').post(regex)
+ .then(
+ function() {
+ messageModel.setMessages([ { level: 'success', text: 'Regex created' } ], true);
+ locationUtils.navigateToPath('/configure/delivery-services/' + dsId + '/regexes');
+ },
+ function(fault) {
+ messageModel.setMessages(fault.data.alerts, false);
+ }
+ );
+ };
+
+ this.updateDeliveryServiceRegex = function(regex) {
+ return regex.put()
+ .then(
+ function() {
+ messageModel.setMessages([ { level: 'success', text: 'Regex updated' } ], false);
+ },
+ function(fault) {
+ messageModel.setMessages(fault.data.alerts, false);
+ }
+ );
+ };
+
+ this.deleteDeliveryServiceRegex = function(dsId, regexId) {
+ return Restangular.one('deliveryservices', dsId).one('regexes', regexId).remove()
+ .then(
+ function() {
+ messageModel.setMessages([ { level: 'success', text: 'Regex deleted' } ], true);
+ },
+ function(fault) {
+ messageModel.setMessages(fault.data.alerts, true);
+ }
+ );
+ };
+
+};
+
+DeliveryServiceRegexService.$inject = ['Restangular', 'locationUtils', 'messageModel'];
+module.exports = DeliveryServiceRegexService;
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/5881037c/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 62b2e0d..2178fcf 100644
--- a/traffic_ops/experimental/ui/app/src/common/api/DeliveryServiceService.js
+++ b/traffic_ops/experimental/ui/app/src/common/api/DeliveryServiceService.js
@@ -30,9 +30,9 @@ var DeliveryServiceService = function(Restangular, locationUtils, messageModel)
this.createDeliveryService = function(deliveryService) {
return Restangular.service('deliveryservices').post(deliveryService)
.then(
- function() {
+ function(response) {
messageModel.setMessages([ { level: 'success', text: 'DeliveryService created' } ], true);
- locationUtils.navigateToPath('/configure/delivery-services');
+ locationUtils.navigateToPath('/configure/delivery-services/' + response.id);
},
function(fault) {
messageModel.setMessages(fault.data.alerts, false);
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/5881037c/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 455e4dd..445b566 100644
--- a/traffic_ops/experimental/ui/app/src/common/api/index.js
+++ b/traffic_ops/experimental/ui/app/src/common/api/index.js
@@ -6,9 +6,9 @@
* 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
@@ -24,14 +24,14 @@ module.exports = angular.module('trafficOps.api', [])
.service('cacheGroupParameterService', require('./CacheGroupParameterService'))
.service('cdnService', require('./CDNService'))
.service('deliveryServiceService', require('./DeliveryServiceService'))
- .service('divisionService', require('./DivisionService'))
+ .service('deliveryServiceRegexService', require('./DeliveryServiceRegexService'))
+ .service('divisionService', require('./DivisionService'))
.service('httpService', require('./HttpService'))
.service('physLocationService', require('./PhysLocationService'))
.service('parameterService', require('./ParameterService'))
.service('profileService', require('./ProfileService'))
.service('roleService', require('./RoleService'))
.service('regionService', require('./RegionService'))
- .service('regexService', require('./RegexService'))
.service('serverService', require('./ServerService'))
.service('statusService', require('./StatusService'))
.service('tenantService', require('./TenantService'))
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/5881037c/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryServiceRegex/FormDeliveryServiceRegexController.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryServiceRegex/FormDeliveryServiceRegexController.js b/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryServiceRegex/FormDeliveryServiceRegexController.js
new file mode 100644
index 0000000..8494256
--- /dev/null
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryServiceRegex/FormDeliveryServiceRegexController.js
@@ -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.
+ */
+
+var FormDeliveryServiceRegexController = function(deliveryService, regex, $scope, formUtils, locationUtils, typeService) {
+
+ var getTypes = function() {
+ typeService.getTypes({ useInTable: 'regex' })
+ .then(function(result) {
+ $scope.types = result;
+ });
+ };
+
+ $scope.deliveryService = deliveryService;
+
+ $scope.regex = regex;
+
+ $scope.navigateToPath = locationUtils.navigateToPath;
+
+ $scope.hasError = formUtils.hasError;
+
+ $scope.hasPropertyError = formUtils.hasPropertyError;
+
+ var init = function () {
+ getTypes();
+ };
+ init();
+
+};
+
+FormDeliveryServiceRegexController.$inject = ['deliveryService', 'regex', '$scope', 'formUtils', 'locationUtils', 'typeService'];
+module.exports = FormDeliveryServiceRegexController;
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/5881037c/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryServiceRegex/edit/FormEditDeliveryServiceRegexController.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryServiceRegex/edit/FormEditDeliveryServiceRegexController.js b/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryServiceRegex/edit/FormEditDeliveryServiceRegexController.js
new file mode 100644
index 0000000..bcfab5c
--- /dev/null
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryServiceRegex/edit/FormEditDeliveryServiceRegexController.js
@@ -0,0 +1,72 @@
+/*
+ * 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 FormEditDeliveryServiceRegexController = function(deliveryService, regex, $scope, $controller, $uibModal, $anchorScroll, locationUtils, deliveryServiceRegexService) {
+
+ // extends the FormDeliveryServiceController to inherit common methods
+ angular.extend(this, $controller('FormDeliveryServiceRegexController', { deliveryService: deliveryService, regex: regex, $scope: $scope }));
+
+ var deleteDeliveryServiceRegex = function(dsId, regexId) {
+ deliveryServiceRegexService.deleteDeliveryServiceRegex(dsId, regexId)
+ .then(function() {
+ locationUtils.navigateToPath('/configure/delivery-services/' + dsId + '/regexes');
+ });
+ };
+
+ $scope.regexPattern = angular.copy(regex.pattern);
+
+ $scope.settings = {
+ isNew: false,
+ saveLabel: 'Update'
+ };
+
+ $scope.save = function(dsId, regex) {
+ deliveryServiceRegexService.updateDeliveryServiceRegex(regex).
+ then(function() {
+ $scope.regexPattern = angular.copy(regex.pattern);
+ $anchorScroll(); // scrolls window to top
+ });
+ };
+
+ $scope.confirmDelete = function(regex) {
+ var params = {
+ title: 'Delete Delivery Service Regex: ' + regex.pattern,
+ key: regex.pattern
+ };
+ var modalInstance = $uibModal.open({
+ templateUrl: 'common/modules/dialog/delete/dialog.delete.tpl.html',
+ controller: 'DialogDeleteController',
+ size: 'md',
+ resolve: {
+ params: function () {
+ return params;
+ }
+ }
+ });
+ modalInstance.result.then(function() {
+ deleteDeliveryServiceRegex(deliveryService.id, regex.id);
+ }, function () {
+ // do nothing
+ });
+ };
+
+};
+
+FormEditDeliveryServiceRegexController.$inject = ['deliveryService', 'regex', '$scope', '$controller', '$uibModal', '$anchorScroll', 'locationUtils', 'deliveryServiceRegexService'];
+module.exports = FormEditDeliveryServiceRegexController;
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/5881037c/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryServiceRegex/edit/index.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryServiceRegex/edit/index.js b/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryServiceRegex/edit/index.js
new file mode 100644
index 0000000..ebef271
--- /dev/null
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryServiceRegex/edit/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.form.deliveryServiceRegex.edit', [])
+ .controller('FormEditDeliveryServiceRegexController', require('./FormEditDeliveryServiceRegexController'));
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/5881037c/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryServiceRegex/form.deliveryServiceRegex.tpl.html
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryServiceRegex/form.deliveryServiceRegex.tpl.html b/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryServiceRegex/form.deliveryServiceRegex.tpl.html
new file mode 100644
index 0000000..93c06ee
--- /dev/null
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryServiceRegex/form.deliveryServiceRegex.tpl.html
@@ -0,0 +1,68 @@
+<!--
+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/delivery-services')">Delivery Services</a></li>
+ <li><a ng-click="navigateToPath('/configure/delivery-services/' + deliveryService.id)">{{deliveryService.displayName}}</a></li>
+ <li><a ng-click="navigateToPath('/configure/delivery-services/' + deliveryService.id + '/regexes')">Regexes</a></li>
+ <li class="active">{{regexPattern}}</li>
+ </ol>
+ <div class="clearfix"></div>
+ </div>
+ <div class="x_content">
+ <br>
+ <form name="dsRegexForm" class="form-horizontal form-label-left" novalidate>
+ <div class="form-group" ng-class="{'has-error': hasError(dsRegexForm.pattern), 'has-feedback': hasError(dsRegexForm.pattern)}">
+ <label class="control-label col-md-2 col-sm-2 col-xs-12">Pattern *</label>
+ <div class="col-md-10 col-sm-10 col-xs-12">
+ <input id="pattern" name="pattern" type="text" class="form-control" ng-model="regex.pattern" ng-required="true" ng-maxlength="48" ng-pattern="/^\S*$/" autofocus>
+ <small class="input-error" ng-show="hasPropertyError(dsRegexForm.pattern, 'required')">Required</small>
+ <small class="input-error" ng-show="hasPropertyError(dsRegexForm.pattern, 'maxlength')">Too Long</small>
+ <small class="input-error" ng-show="hasPropertyError(dsRegexForm.pattern, 'pattern')">No spaces</small>
+ <span ng-show="hasError(dsRegexForm.pattern)" class="form-control-feedback"><i class="fa fa-times"></i></span>
+ </div>
+ </div>
+ <div class="form-group" ng-class="{'has-error': hasError(dsRegexForm.type), 'has-feedback': hasError(dsRegexForm.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="regex.type" ng-options="type.id as type.name for type in types" required>
+ <option value="">Select...</option>
+ </select>
+ <small class="input-error" ng-show="hasPropertyError(dsRegexForm.type, 'required')">Required</small>
+ </div>
+ </div>
+ <div class="form-group" ng-class="{'has-error': hasError(dsRegexForm.setNumber), 'has-feedback': hasError(dsRegexForm.setNumber)}">
+ <label class="control-label col-md-2 col-sm-2 col-xs-12">Order *</label>
+ <div class="col-md-10 col-sm-10 col-xs-12">
+ <input id="setNumber" name="setNumber" type="text" class="form-control" ng-model="regex.setNumber" ng-required="true" ng-maxlength="3" ng-pattern="/^\d+$/" autofocus>
+ <small class="input-error" ng-show="hasPropertyError(dsRegexForm.setNumber, 'required')">Required</small>
+ <small class="input-error" ng-show="hasPropertyError(dsRegexForm.setNumber, 'maxlength')">Too Long</small>
+ <small class="input-error" ng-show="hasPropertyError(dsRegexForm.setNumber, 'pattern')">Number</small>
+ <span ng-show="hasError(dsRegexForm.setNumber)" class="form-control-feedback"><i class="fa fa-times"></i></span>
+ </div>
+ </div>
+ <div class="modal-footer">
+ <button type="button" class="btn btn-danger" ng-show="!settings.isNew" ng-click="confirmDelete(regex)">Delete</button>
+ <button type="button" class="btn btn-success" ng-disabled="dsRegexForm.$pristine || dsRegexForm.$invalid" ng-click="save(deliveryService.id, regex)">{{settings.saveLabel}}</button>
+ </div>
+ </form>
+ </div>
+</div>
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/5881037c/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryServiceRegex/index.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryServiceRegex/index.js b/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryServiceRegex/index.js
new file mode 100644
index 0000000..abd990e
--- /dev/null
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryServiceRegex/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.form.deliveryServiceRegex', [])
+ .controller('FormDeliveryServiceRegexController', require('./FormDeliveryServiceRegexController'));
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/5881037c/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryServiceRegex/new/FormNewDeliveryServiceRegexController.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryServiceRegex/new/FormNewDeliveryServiceRegexController.js b/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryServiceRegex/new/FormNewDeliveryServiceRegexController.js
new file mode 100644
index 0000000..5b314b7
--- /dev/null
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryServiceRegex/new/FormNewDeliveryServiceRegexController.js
@@ -0,0 +1,39 @@
+/*
+ * 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 FormNewDeliveryServiceRegexController = function(deliveryService, regex, $scope, $controller, deliveryServiceRegexService) {
+
+ // extends the FormDeliveryServiceRegexController to inherit common methods
+ angular.extend(this, $controller('FormDeliveryServiceRegexController', { deliveryService: deliveryService, regex: regex, $scope: $scope }));
+
+ $scope.regexPattern = 'New';
+
+ $scope.settings = {
+ isNew: true,
+ saveLabel: 'Create'
+ };
+
+ $scope.save = function(dsId, regex) {
+ deliveryServiceRegexService.createDeliveryServiceRegex(dsId, regex);
+ };
+
+};
+
+FormNewDeliveryServiceRegexController.$inject = ['deliveryService', 'regex', '$scope', '$controller', 'deliveryServiceRegexService'];
+module.exports = FormNewDeliveryServiceRegexController;
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/5881037c/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryServiceRegex/new/index.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryServiceRegex/new/index.js b/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryServiceRegex/new/index.js
new file mode 100644
index 0000000..557e123
--- /dev/null
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/deliveryServiceRegex/new/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.form.deliveryServiceRegex.new', [])
+ .controller('FormNewDeliveryServiceRegexController', require('./FormNewDeliveryServiceRegexController'));
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/5881037c/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 cdc04e0..0f05998 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,14 +21,14 @@ var TableDeliveryServiceRegexesController = function(deliveryService, regexes, $
$scope.deliveryService = deliveryService;
- $scope.regexes = _.find(regexes, function(dsRegexes) { return dsRegexes.dsName == deliveryService.xmlId; });
+ $scope.regexes = regexes;
- $scope.addRegex = function() {
- alert('not hooked up yet: addRegex to ds');
+ $scope.editRegex = function(dsId, regexId) {
+ locationUtils.navigateToPath('/configure/delivery-services/' + dsId + '/regexes/' + regexId);
};
- $scope.removeRegex = function() {
- alert('not hooked up yet: removeRegex from ds');
+ $scope.createRegex = function(dsId) {
+ locationUtils.navigateToPath('/configure/delivery-services/' + dsId + '/regexes/new');
};
$scope.navigateToPath = locationUtils.navigateToPath;
@@ -36,11 +36,11 @@ var TableDeliveryServiceRegexesController = function(deliveryService, regexes, $
angular.element(document).ready(function () {
$('#regexesTable').dataTable({
"aLengthMenu": [[25, 50, 100, -1], [25, 50, 100, "All"]],
- "iDisplayLength": 100
+ "iDisplayLength": -1
});
});
};
-TableDeliveryServiceRegexesController.$inject = ['deliveryService', 'regexes', '$scope', 'locationUtils'];
+TableDeliveryServiceRegexesController.$inject = ['deliveryService', 'regexes', '$scope', 'locationUtils', 'deliveryServiceRegexService'];
module.exports = TableDeliveryServiceRegexesController;
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/5881037c/traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceRegexes/table.deliveryServiceRegexes.tpl.html
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceRegexes/table.deliveryServiceRegexes.tpl.html b/traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceRegexes/table.deliveryServiceRegexes.tpl.html
index 298319f..8d98e97 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceRegexes/table.deliveryServiceRegexes.tpl.html
+++ b/traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceRegexes/table.deliveryServiceRegexes.tpl.html
@@ -24,7 +24,7 @@ under the License.
<li><a ng-click="navigateToPath('/configure/delivery-services/' + deliveryService.id)">{{deliveryService.displayName}}</a></li>
<li class="active">Regexes</li>
</ol>
- <button class="btn btn-primary pull-right" ng-click="addRegex()"><i class="fa fa-plus"></i> Add Regex to DS</button>
+ <button class="btn btn-primary pull-right" ng-click="createRegex(deliveryService.id)"><i class="fa fa-plus"></i> Create Regex</button>
<div class="clearfix"></div>
</div>
<div class="x_content">
@@ -34,16 +34,14 @@ under the License.
<tr class="headings">
<th>type</th>
<th>pattern</th>
- <th>setNumber</th>
- <th></th>
+ <th>order</th>
</tr>
</thead>
<tbody>
- <tr ng-repeat="regex in regexes.regexes | orderBy:['setNumber']">
- <td>{{regex.type}}</td>
+ <tr ng-click="editRegex(deliveryService.id, regex.id)" ng-repeat="regex in regexes | orderBy:['setNumber']">
+ <td>{{regex.typeName}}</td>
<td>{{regex.pattern}}</td>
<td>{{regex.setNumber}}</td>
- <td><button type="button" class="btn btn-link" title="Remove from Delivery Service" ng-click="removeRegex()"><i class="fa fa-trash-o"></i></button></td>
</tr>
</tbody>
</table>
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/5881037c/traffic_ops/experimental/ui/app/src/modules/private/configure/deliveryServices/regexes/DeliveryServiceRegexesController.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/modules/private/configure/deliveryServices/regexes/DeliveryServiceRegexesController.js b/traffic_ops/experimental/ui/app/src/modules/private/configure/deliveryServices/regexes/DeliveryServiceRegexesController.js
new file mode 100644
index 0000000..ea723a1
--- /dev/null
+++ b/traffic_ops/experimental/ui/app/src/modules/private/configure/deliveryServices/regexes/DeliveryServiceRegexesController.js
@@ -0,0 +1,24 @@
+/*
+ * 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 DeliveryServiceRegexesController = function() {
+};
+
+DeliveryServiceRegexesController.$inject = [];
+module.exports = DeliveryServiceRegexesController;
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/5881037c/traffic_ops/experimental/ui/app/src/modules/private/configure/deliveryServices/regexes/deliveryServiceRegexes.tpl.html
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/modules/private/configure/deliveryServices/regexes/deliveryServiceRegexes.tpl.html b/traffic_ops/experimental/ui/app/src/modules/private/configure/deliveryServices/regexes/deliveryServiceRegexes.tpl.html
new file mode 100644
index 0000000..5b2af62
--- /dev/null
+++ b/traffic_ops/experimental/ui/app/src/modules/private/configure/deliveryServices/regexes/deliveryServiceRegexes.tpl.html
@@ -0,0 +1,22 @@
+<!--
+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 id="deliveryServiceRegexesContainer">
+ <div ui-view="deliveryServiceRegexesContent"></div>
+</div>
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/5881037c/traffic_ops/experimental/ui/app/src/modules/private/configure/deliveryServices/regexes/edit/index.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/modules/private/configure/deliveryServices/regexes/edit/index.js b/traffic_ops/experimental/ui/app/src/modules/private/configure/deliveryServices/regexes/edit/index.js
new file mode 100644
index 0000000..0548401
--- /dev/null
+++ b/traffic_ops/experimental/ui/app/src/modules/private/configure/deliveryServices/regexes/edit/index.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.
+ */
+
+module.exports = angular.module('trafficOps.private.configure.deliveryServices.regexes.edit', [])
+ .config(function($stateProvider, $urlRouterProvider) {
+ $stateProvider
+ .state('trafficOps.private.configure.deliveryServices.regexes.edit', {
+ url: '/{regexId:[0-9]{1,8}}',
+ views: {
+ deliveryServiceRegexesContent: {
+ templateUrl: 'common/modules/form/deliveryServiceRegex/form.deliveryServiceRegex.tpl.html',
+ controller: 'FormEditDeliveryServiceRegexController',
+ resolve: {
+ deliveryService: function($stateParams, deliveryServiceService) {
+ return deliveryServiceService.getDeliveryService($stateParams.deliveryServiceId);
+ },
+ regex: function($stateParams, deliveryServiceRegexService) {
+ return deliveryServiceRegexService.getDeliveryServiceRegex($stateParams.deliveryServiceId, $stateParams.regexId);
+ }
+ }
+ }
+ }
+ })
+ ;
+ $urlRouterProvider.otherwise('/');
+ });
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/5881037c/traffic_ops/experimental/ui/app/src/modules/private/configure/deliveryServices/regexes/index.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/modules/private/configure/deliveryServices/regexes/index.js b/traffic_ops/experimental/ui/app/src/modules/private/configure/deliveryServices/regexes/index.js
index 15384f5..1290154 100644
--- a/traffic_ops/experimental/ui/app/src/modules/private/configure/deliveryServices/regexes/index.js
+++ b/traffic_ops/experimental/ui/app/src/modules/private/configure/deliveryServices/regexes/index.js
@@ -18,22 +18,16 @@
*/
module.exports = angular.module('trafficOps.private.configure.deliveryServices.regexes', [])
+ .controller('DeliveryServiceRegexesController', require('./DeliveryServiceRegexesController'))
.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('trafficOps.private.configure.deliveryServices.regexes', {
url: '/{deliveryServiceId}/regexes',
+ abstract: true,
views: {
deliveryServicesContent: {
- templateUrl: 'common/modules/table/deliveryServiceRegexes/table.deliveryServiceRegexes.tpl.html',
- controller: 'TableDeliveryServiceRegexesController',
- resolve: {
- deliveryService: function($stateParams, deliveryServiceService) {
- return deliveryServiceService.getDeliveryService($stateParams.deliveryServiceId);
- },
- regexes: function($stateParams, regexService) {
- return regexService.getRegexes($stateParams.deliveryServiceId);
- }
- }
+ templateUrl: 'modules/private/configure/deliveryServices/regexes/deliveryServiceRegexes.tpl.html',
+ controller: 'DeliveryServiceRegexesController'
}
}
})
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/5881037c/traffic_ops/experimental/ui/app/src/modules/private/configure/deliveryServices/regexes/list/index.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/modules/private/configure/deliveryServices/regexes/list/index.js b/traffic_ops/experimental/ui/app/src/modules/private/configure/deliveryServices/regexes/list/index.js
new file mode 100644
index 0000000..3b27105
--- /dev/null
+++ b/traffic_ops/experimental/ui/app/src/modules/private/configure/deliveryServices/regexes/list/index.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.
+ */
+
+module.exports = angular.module('trafficOps.private.configure.deliveryServices.regexes.list', [])
+ .config(function($stateProvider, $urlRouterProvider) {
+ $stateProvider
+ .state('trafficOps.private.configure.deliveryServices.regexes.list', {
+ url: '',
+ views: {
+ deliveryServiceRegexesContent: {
+ templateUrl: 'common/modules/table/deliveryServiceRegexes/table.deliveryServiceRegexes.tpl.html',
+ controller: 'TableDeliveryServiceRegexesController',
+ resolve: {
+ deliveryService: function($stateParams, deliveryServiceService) {
+ return deliveryServiceService.getDeliveryService($stateParams.deliveryServiceId);
+ },
+ regexes: function($stateParams, deliveryServiceRegexService) {
+ return deliveryServiceRegexService.getDeliveryServiceRegexes($stateParams.deliveryServiceId);
+ }
+ }
+ }
+ }
+ })
+ ;
+ $urlRouterProvider.otherwise('/');
+ });
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/5881037c/traffic_ops/experimental/ui/app/src/modules/private/configure/deliveryServices/regexes/new/index.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/modules/private/configure/deliveryServices/regexes/new/index.js b/traffic_ops/experimental/ui/app/src/modules/private/configure/deliveryServices/regexes/new/index.js
new file mode 100644
index 0000000..5361bd7
--- /dev/null
+++ b/traffic_ops/experimental/ui/app/src/modules/private/configure/deliveryServices/regexes/new/index.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.
+ */
+
+module.exports = angular.module('trafficOps.private.configure.deliveryServices.regexes.new', [])
+ .config(function($stateProvider, $urlRouterProvider) {
+ $stateProvider
+ .state('trafficOps.private.configure.deliveryServices.regexes.new', {
+ url: '/new',
+ views: {
+ deliveryServiceRegexesContent: {
+ templateUrl: 'common/modules/form/deliveryServiceRegex/form.deliveryServiceRegex.tpl.html',
+ controller: 'FormNewDeliveryServiceRegexController',
+ resolve: {
+ deliveryService: function($stateParams, deliveryServiceService) {
+ return deliveryServiceService.getDeliveryService($stateParams.deliveryServiceId);
+ },
+ regex: function() {
+ return {};
+ }
+ }
+ }
+ }
+ })
+ ;
+ $urlRouterProvider.otherwise('/');
+ });
[3/3] incubator-trafficcontrol git commit: This closes #239
Posted by de...@apache.org.
This closes #239
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/commit/639d0d5c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/tree/639d0d5c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/diff/639d0d5c
Branch: refs/heads/master
Commit: 639d0d5c02064f67bf989f7f947d663f18f1a010
Parents: d20bae7
Author: Dewayne Richardson <de...@apache.org>
Authored: Mon Jan 30 12:32:36 2017 -0700
Committer: Dewayne Richardson <de...@apache.org>
Committed: Mon Jan 30 12:32:36 2017 -0700
----------------------------------------------------------------------
----------------------------------------------------------------------
[2/3] incubator-trafficcontrol git commit: Merge branch
'ui-exp-regex-crud' of
https://github.com/mitchell852/incubator-trafficcontrol
Posted by de...@apache.org.
Merge branch 'ui-exp-regex-crud' of https://github.com/mitchell852/incubator-trafficcontrol
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/commit/d20bae7f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/tree/d20bae7f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/diff/d20bae7f
Branch: refs/heads/master
Commit: d20bae7f2ff55287b74647613fdd24bba9e10964
Parents: 530aa45 5881037
Author: Dewayne Richardson <de...@apache.org>
Authored: Mon Jan 30 12:32:34 2017 -0700
Committer: Dewayne Richardson <de...@apache.org>
Committed: Mon Jan 30 12:32:34 2017 -0700
----------------------------------------------------------------------
traffic_ops/experimental/ui/app/src/app.js | 6 ++
.../common/api/DeliveryServiceRegexService.js | 70 +++++++++++++++++++
.../src/common/api/DeliveryServiceService.js | 4 +-
.../experimental/ui/app/src/common/api/index.js | 8 +--
.../FormDeliveryServiceRegexController.js | 47 +++++++++++++
.../FormEditDeliveryServiceRegexController.js | 72 ++++++++++++++++++++
.../form/deliveryServiceRegex/edit/index.js | 21 ++++++
.../form.deliveryServiceRegex.tpl.html | 68 ++++++++++++++++++
.../modules/form/deliveryServiceRegex/index.js | 21 ++++++
.../FormNewDeliveryServiceRegexController.js | 39 +++++++++++
.../form/deliveryServiceRegex/new/index.js | 21 ++++++
.../TableDeliveryServiceRegexesController.js | 14 ++--
.../table.deliveryServiceRegexes.tpl.html | 10 ++-
.../regexes/DeliveryServiceRegexesController.js | 24 +++++++
.../regexes/deliveryServiceRegexes.tpl.html | 22 ++++++
.../deliveryServices/regexes/edit/index.js | 42 ++++++++++++
.../configure/deliveryServices/regexes/index.js | 14 ++--
.../deliveryServices/regexes/list/index.js | 42 ++++++++++++
.../deliveryServices/regexes/new/index.js | 42 ++++++++++++
19 files changed, 558 insertions(+), 29 deletions(-)
----------------------------------------------------------------------