Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 angular.module('diff_viewer', []). | 1 angular.module('diff_viewer', []). |
| 2 config(['$routeProvider', function($routeProvider) { | 2 config(['$routeProvider', function($routeProvider) { |
| 3 // Show the list of differences by default | 3 // Show the list of differences by default |
| 4 $routeProvider. | 4 $routeProvider. |
| 5 otherwise({ templateUrl: '/diff_list.html', controller: DiffListController}) ; | 5 otherwise({ templateUrl: '/diff_list.html', controller: DiffListController}) ; |
| 6 }]). | 6 }]). |
| 7 directive('swapImg', function() { | 7 directive('swapImg', function() { |
| 8 // Custom directive for showing an image that gets swapped my mouseover. | 8 // Custom directive for showing an image that gets swapped my mouseover. |
| 9 return { | 9 return { |
| 10 restrict: 'E', // The directive can be used as an element name | 10 restrict: 'E', // The directive can be used as an element name |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 21 var ctx = elm[0].getContext('2d'); | 21 var ctx = elm[0].getContext('2d'); |
| 22 | 22 |
| 23 scope.render = function() { | 23 scope.render = function() { |
| 24 var image; | 24 var image; |
| 25 if (scope.side == "left") { | 25 if (scope.side == "left") { |
| 26 image = leftImage; | 26 image = leftImage; |
| 27 } else { | 27 } else { |
| 28 image = rightImage; | 28 image = rightImage; |
| 29 } | 29 } |
| 30 | 30 |
| 31 // Make it so the maximum size of an image is 500, and the image s are scaled | 31 // Make it so the maximum size of an image is 400, and the image s are scaled |
|
epoger
2013/08/02 14:33:06
Please create a constant, near the top of the file
Zach Reizner
2013/08/02 21:30:58
Done.
| |
| 32 // down in halves. | 32 // down in halves. |
| 33 var divisor = 1; | 33 var divisor = 1; |
| 34 while ((image.width / divisor) > 500) { | 34 while ((image.width / divisor) > 400) { |
| 35 divisor *= 2; | 35 divisor *= 2; |
| 36 } | 36 } |
| 37 | 37 |
| 38 // Set canvas to correct size and draw the image into it | 38 // Set canvas to correct size and draw the image into it |
| 39 elm[0].width = image.width / divisor; | 39 elm[0].width = image.width / divisor; |
| 40 elm[0].height = image.height / divisor; | 40 elm[0].height = image.height / divisor; |
| 41 ctx.drawImage(image, 0, 0, elm[0].width, elm[0].height); | 41 ctx.drawImage(image, 0, 0, elm[0].width, elm[0].height); |
| 42 }; | 42 }; |
| 43 | 43 |
| 44 // When the leftSrc attribute changes, load the image and then reren der | 44 // When the leftSrc attribute changes, load the image and then reren der |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 67 scope.side = "right"; | 67 scope.side = "right"; |
| 68 } else { | 68 } else { |
| 69 scope.side = "left"; | 69 scope.side = "left"; |
| 70 } | 70 } |
| 71 scope.render(); | 71 scope.render(); |
| 72 }; | 72 }; |
| 73 } | 73 } |
| 74 }; | 74 }; |
| 75 }); | 75 }); |
| 76 | 76 |
| 77 function DiffListController($scope) { | 77 function DiffListController($scope, $http, $timeout) { |
| 78 // Label each kind of differ for the sort buttons. | 78 // Label each kind of differ for the sort buttons. |
| 79 $scope.differs = [ | 79 $scope.differs = [ |
| 80 { | 80 { |
| 81 "title": "Different Pixels" | 81 "title": "Different Pixels" |
| 82 }, | 82 }, |
| 83 { | 83 { |
| 84 "title": "Perceptual Difference" | 84 "title": "Perceptual Difference" |
| 85 } | 85 } |
| 86 ]; | 86 ]; |
| 87 | 87 |
| 88 // Puts the records within AngularJS scope | 88 // Puts the records within AngularJS scope |
| 89 $scope.records = SkPDiffRecords.records; | 89 $scope.records = SkPDiffRecords.records; |
| 90 | 90 |
| 91 // Indicates which diff metric is used for sorting | 91 // Indicates which diff metric is used for sorting |
| 92 $scope.sortIndex = 1; | 92 $scope.sortIndex = 1; |
| 93 | 93 |
| 94 // Called by the sort buttons to adjust the metric used for sorting | 94 // Called by the sort buttons to adjust the metric used for sorting |
| 95 $scope.setSortIndex = function(idx) { | 95 $scope.setSortIndex = function(idx) { |
| 96 $scope.sortIndex = idx; | 96 $scope.sortIndex = idx; |
| 97 }; | 97 }; |
| 98 | 98 |
| 99 // A predicate for pulling out the number used for sorting | 99 // A predicate for pulling out the number used for sorting |
| 100 $scope.sortingDiffer = function(record) { | 100 $scope.sortingDiffer = function(record) { |
| 101 return record.diffs[$scope.sortIndex].result; | 101 return record.diffs[$scope.sortIndex].result; |
| 102 }; | 102 }; |
| 103 | |
| 104 // Flash status indicators on the rows, and then remove them so the style ca n potentially be | |
| 105 // reapplied later. | |
|
epoger
2013/08/02 14:33:06
Is this hosted somewhere that I can look at it, an
Zach Reizner
2013/08/02 21:30:58
Nope. Never done that before on the corp network.
epoger
2013/08/06 15:26:43
It's easy to do. See the "User directories" secti
| |
| 106 $scope.flashRowStatus = function(success, record) { | |
| 107 var flashStyle = success ? "success-flash" : "failure-flash"; | |
| 108 var flashDuration = success ? 500 : 800; | |
|
epoger
2013/08/02 14:33:06
I take it this is in milliseconds? If so, please
Zach Reizner
2013/08/02 21:30:58
Done.
| |
| 109 | |
| 110 // Store the style in the record. The row will pick up the style this wa y instead of through | |
| 111 // index because index can change with sort order. | |
| 112 record.cssClasses = flashStyle; | |
| 113 | |
| 114 // The animation cannot be repeated unless the class is removed the elem ent. | |
| 115 $timeout(function() { | |
| 116 record.cssClasses = ""; | |
| 117 }, flashDuration); | |
| 118 } | |
| 119 | |
| 120 $scope.setHashOf = function(imagePath, record) { | |
| 121 $http.post("/set_hash", { | |
| 122 "path": imagePath | |
| 123 }).success(function(data) { | |
| 124 $scope.flashRowStatus(data.success, record); | |
| 125 }).error(function() { | |
| 126 $scope.flashRowStatus(false, record); | |
| 127 }); | |
| 128 | |
| 129 }; | |
| 103 } | 130 } |
| OLD | NEW |