dewrich closed pull request #2060: [Issue 2057] - adds the ability to compare 2 
delivery service requests
URL: https://github.com/apache/incubator-trafficcontrol/pull/2060
 
 
   

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

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

diff --git a/traffic_portal/app/src/app.js b/traffic_portal/app/src/app.js
index 4169d07c3..990e8f62c 100644
--- a/traffic_portal/app/src/app.js
+++ b/traffic_portal/app/src/app.js
@@ -81,6 +81,7 @@ var trafficPortal = angular.module('trafficPortal', [
         require('./modules/private/dashboard').name,
         require('./modules/private/dashboard/view').name,
         require('./modules/private/deliveryServiceRequests').name,
+        require('./modules/private/deliveryServiceRequests/compare').name,
         require('./modules/private/deliveryServiceRequests/comments').name,
         require('./modules/private/deliveryServiceRequests/edit').name,
         require('./modules/private/deliveryServiceRequests/list').name,
diff --git 
a/traffic_portal/app/src/common/modules/dialog/compare/DialogCompareController.js
 
b/traffic_portal/app/src/common/modules/dialog/compare/DialogCompareController.js
index 0cdaab33a..369718e1d 100644
--- 
a/traffic_portal/app/src/common/modules/dialog/compare/DialogCompareController.js
+++ 
b/traffic_portal/app/src/common/modules/dialog/compare/DialogCompareController.js
@@ -33,13 +33,16 @@ var DialogCompareController = function(params, collection, 
$scope, $uibModalInst
                $uibModalInstance.dismiss('cancel');
        };
 
-       $scope.label = function (item) {
-               if ($scope.params.label !== undefined) {
-                       return $scope.params.label
+       var init = function() {
+               if ($scope.params.label) {
+                       $scope.label = function(item) { return 
item[$scope.params.label]; }
+               } else if ($scope.params.labelFunction) {
+                       $scope.label = $scope.params.labelFunction;
                } else {
-                       return 'name';
+                       $scope.label = function(item) { return item['name']; }
                }
        };
+       init();
 
 };
 
diff --git 
a/traffic_portal/app/src/common/modules/dialog/compare/dialog.compare.tpl.html 
b/traffic_portal/app/src/common/modules/dialog/compare/dialog.compare.tpl.html
index 402153e14..22b4d0ae0 100644
--- 
a/traffic_portal/app/src/common/modules/dialog/compare/dialog.compare.tpl.html
+++ 
b/traffic_portal/app/src/common/modules/dialog/compare/dialog.compare.tpl.html
@@ -26,7 +26,7 @@ <h4 class="modal-title">{{::params.title}}</h4>
     <form name="compareForm" novalidate>
         <div class="row">
             <div class="col-sm-12 col-md-12">
-                <select class="form-control" ng-model="selectedItems[0]" 
ng-options="item as item[label()] for item in collection" required>
+                <select class="form-control" ng-model="selectedItems[0]" 
ng-options="item as label(item) for item in collection" required>
                     <option value="">Select...</option>
                 </select>
             </div>
@@ -34,7 +34,7 @@ <h4 class="modal-title">{{::params.title}}</h4>
         <br>
         <div class="row">
             <div class="col-sm-12 col-md-12">
-                <select class="form-control" ng-model="selectedItems[1]" 
ng-options="item as item[label()] for item in collection" required>
+                <select class="form-control" ng-model="selectedItems[1]" 
ng-options="item as label(item) for item in collection" required>
                     <option value="">Select...</option>
                 </select>
             </div>
diff --git 
a/traffic_portal/app/src/common/modules/dialog/select/DialogSelectController.js 
b/traffic_portal/app/src/common/modules/dialog/select/DialogSelectController.js
index 74fe505e9..5fe85cff6 100644
--- 
a/traffic_portal/app/src/common/modules/dialog/select/DialogSelectController.js
+++ 
b/traffic_portal/app/src/common/modules/dialog/select/DialogSelectController.js
@@ -34,22 +34,17 @@ var DialogSelectController = function(params, collection, 
$scope, $uibModalInsta
                $uibModalInstance.dismiss('cancel');
        };
 
-       $scope.label = function (item) {
-               if ($scope.params.label) {
-                       return item[$scope.params.label];
-               } else {
-                       return item['name'];
-               }
-       };
-
        var init = function() {
-               if ($scope.params.labelFunction) {
+               if ($scope.params.label) {
+                       $scope.label = function(item) { return 
item[$scope.params.label]; }
+               } else if ($scope.params.labelFunction) {
                        $scope.label = $scope.params.labelFunction;
+               } else {
+                       $scope.label = function(item) { return item['name']; }
                }
        };
        init();
 
-
 };
 
 DialogSelectController.$inject = ['params', 'collection', '$scope', 
'$uibModalInstance'];
diff --git 
a/traffic_portal/app/src/common/modules/table/deliveryServiceRequests/TableDeliveryServiceRequestsController.js
 
b/traffic_portal/app/src/common/modules/table/deliveryServiceRequests/TableDeliveryServiceRequestsController.js
index 1cf88635c..3692f5947 100644
--- 
a/traffic_portal/app/src/common/modules/table/deliveryServiceRequests/TableDeliveryServiceRequestsController.js
+++ 
b/traffic_portal/app/src/common/modules/table/deliveryServiceRequests/TableDeliveryServiceRequestsController.js
@@ -128,6 +128,34 @@ var TableDeliveryServicesRequestsController = 
function(dsRequests, $scope, $stat
                return (request.status == 'rejected' || request.status == 
'complete');
        };
 
+       $scope.compareRequests = function() {
+               var params = {
+                       title: 'Compare Delivery Service Requests',
+                       message: "Please select 2 delivery service requests to 
compare",
+                       labelFunction: function (item) {
+                               return item['deliveryService']['xmlId'] + ' ' + 
item['changeType'] + ' (' + item['author'] + ' created on ' + item['createdAt'] 
+ ')'
+                       }
+               };
+               var modalInstance = $uibModal.open({
+                       templateUrl: 
'common/modules/dialog/compare/dialog.compare.tpl.html',
+                       controller: 'DialogCompareController',
+                       size: 'lg',
+                       resolve: {
+                               params: function () {
+                                       return params;
+                               },
+                               collection: 
function(deliveryServiceRequestService) {
+                                       return 
deliveryServiceRequestService.getDeliveryServiceRequests();
+                               }
+                       }
+               });
+               modalInstance.result.then(function(requests) {
+                       $location.path($location.path() + '/compare/' + 
requests[0].id + '/' + requests[1].id);
+               }, function () {
+                       // do nothing
+               });
+       };
+
        $scope.assignRequest = function(request, assign, $event) {
                $event.stopPropagation(); // this kills the click event so it 
doesn't trigger anything else
                var params = {
diff --git 
a/traffic_portal/app/src/common/modules/table/deliveryServiceRequests/table.deliveryServiceRequests.tpl.html
 
b/traffic_portal/app/src/common/modules/table/deliveryServiceRequests/table.deliveryServiceRequests.tpl.html
index 0d5c9c5ad..2ce315bc1 100644
--- 
a/traffic_portal/app/src/common/modules/table/deliveryServiceRequests/table.deliveryServiceRequests.tpl.html
+++ 
b/traffic_portal/app/src/common/modules/table/deliveryServiceRequests/table.deliveryServiceRequests.tpl.html
@@ -25,6 +25,15 @@
         <div class="pull-right" role="group">
             <button class="btn btn-primary" title="Create Delivery Service 
Request" ng-click="createRequest()"><i class="fa fa-plus"></i></button>
             <button class="btn btn-default" title="Refresh" 
ng-click="refresh()"><i class="fa fa-refresh"></i></button>
+            <div class="btn-group" role="group" uib-dropdown 
is-open="more.isopen">
+                <button type="button" class="btn btn-default dropdown-toggle" 
uib-dropdown-toggle aria-haspopup="true" aria-expanded="false">
+                    More
+                    <span class="caret"></span>
+                </button>
+                <ul class="dropdown-menu-right dropdown-menu" 
uib-dropdown-menu>
+                    <li role="menuitem"><a 
ng-click="compareRequests()">Compare Delivery Service Requests</a></li>
+                </ul>
+            </div>
         </div>
         <div class="clearfix"></div>
     </div>
diff --git 
a/traffic_portal/app/src/modules/private/deliveryServiceRequests/compare/index.js
 
b/traffic_portal/app/src/modules/private/deliveryServiceRequests/compare/index.js
new file mode 100644
index 000000000..00bddc116
--- /dev/null
+++ 
b/traffic_portal/app/src/modules/private/deliveryServiceRequests/compare/index.js
@@ -0,0 +1,54 @@
+/*
+ * 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('trafficPortal.private.deliveryServiceRequests.compare', [])
+       .config(function($stateProvider, $urlRouterProvider) {
+               $stateProvider
+                       
.state('trafficPortal.private.deliveryServiceRequests.compare', {
+                               url: '/compare/{dsr1Id}/{dsr2Id}',
+                               views: {
+                                       deliveryServiceRequestsContent: {
+                                               templateUrl: 
'common/modules/compare/compare.tpl.html',
+                                               controller: 'CompareController',
+                                               resolve: {
+                                                       dsr1: 
function($stateParams, deliveryServiceRequestService) {
+                                                               return 
deliveryServiceRequestService.getDeliveryServiceRequests({ id: 
$stateParams.dsr1Id });
+                                                       },
+                                                       dsr2: 
function($stateParams, deliveryServiceRequestService) {
+                                                               return 
deliveryServiceRequestService.getDeliveryServiceRequests({ id: 
$stateParams.dsr2Id });
+                                                       },
+                                                       item1Name: 
function(dsr1) {
+                                                               return 
dsr1[0].deliveryService.xmlId + ' ' + dsr1[0].changeType + ' (' + 
dsr1[0].author + ' created on ' + dsr1[0].createdAt + ')';
+                                                       },
+                                                       item2Name: 
function(dsr2) {
+                                                               return 
dsr2[0].deliveryService.xmlId + ' ' + dsr2[0].changeType + ' (' + 
dsr2[0].author + ' created on ' + dsr2[0].createdAt + ')';
+                                                       },
+                                                       item1: function(dsr1) {
+                                                               return 
dsr1[0].deliveryService;
+                                                       },
+                                                       item2: function(dsr2) {
+                                                               return 
dsr2[0].deliveryService;
+                                                       }
+                                               }
+                                       }
+                               }
+                       })
+               ;
+               $urlRouterProvider.otherwise('/');
+       });


 

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


With regards,
Apache Git Services

Reply via email to