| OLD | NEW | 
|---|
| 1 // Copyright 2016 The LUCI Authors. All rights reserved. | 1 // Copyright 2016 The LUCI Authors. All rights reserved. | 
| 2 // Use of this source code is governed under the Apache License, Version 2.0 | 2 // Use of this source code is governed under the Apache License, Version 2.0 | 
| 3 // that can be found in the LICENSE file. | 3 // that can be found in the LICENSE file. | 
| 4 | 4 | 
| 5 this.swarming = this.swarming || function() { | 5 this.swarming = this.swarming || function() { | 
| 6 | 6 | 
| 7   var swarming = {}; | 7   var swarming = {}; | 
| 8 | 8 | 
|  | 9   // naturalCompare tries to use natural sorting (e.g. sort ints by value). | 
|  | 10   swarming.naturalCompare = function(a, b) { | 
|  | 11     // Try numeric, aka "natural" sort and use it if ns is not NaN. | 
|  | 12     // Javascript will try to corece these to numbers or return NaN. | 
|  | 13     var ns = a - b; | 
|  | 14     if (!isNaN(ns)) { | 
|  | 15       return ns; | 
|  | 16     } | 
|  | 17     return String(a).localeCompare(b); | 
|  | 18   }; | 
|  | 19 | 
|  | 20 | 
| 9   swarming.stableSort = function(arr, comp) { | 21   swarming.stableSort = function(arr, comp) { | 
| 10     if (!arr || !comp) { | 22     if (!arr || !comp) { | 
| 11       console.log("missing arguments to stableSort", arr, comp); | 23       console.log("missing arguments to stableSort", arr, comp); | 
| 12       return; | 24       return; | 
| 13     } | 25     } | 
| 14     // We can guarantee a potential non-stable sort (like V8's | 26     // We can guarantee a potential non-stable sort (like V8's | 
| 15     // Array.prototype.sort()) to be stable by first storing the index in the | 27     // Array.prototype.sort()) to be stable by first storing the index in the | 
| 16     // original sorting and using that if the original compare was 0. | 28     // original sorting and using that if the original compare was 0. | 
| 17     arr.forEach(function(e, i){ | 29     arr.forEach(function(e, i){ | 
| 18       if (e !== undefined && e !== null) { | 30       if (e !== undefined && e !== null) { | 
| (...skipping 13 matching lines...) Expand all  Loading... | 
| 32         return -1; | 44         return -1; | 
| 33       } | 45       } | 
| 34       var c = comp(a, b); | 46       var c = comp(a, b); | 
| 35       if (c === 0) { | 47       if (c === 0) { | 
| 36         return a.__sortIdx - b.__sortIdx; | 48         return a.__sortIdx - b.__sortIdx; | 
| 37       } | 49       } | 
| 38       return c; | 50       return c; | 
| 39     }); | 51     }); | 
| 40   } | 52   } | 
| 41 | 53 | 
| 42   // naturalCompare tries to use natural sorting (e.g. sort ints by value). |  | 
| 43   swarming.naturalCompare = function(a, b) { |  | 
| 44     // Try numeric, aka "natural" sort and use it if ns is not NaN. |  | 
| 45     // Javascript will try to corece these to numbers or return NaN. |  | 
| 46     var ns = a - b; |  | 
| 47     if (!isNaN(ns)) { |  | 
| 48       return ns; |  | 
| 49     } |  | 
| 50     return String(a).localeCompare(b); |  | 
| 51   }; |  | 
| 52 |  | 
| 53   // postWithToast makes a post request and updates the error-toast | 54   // postWithToast makes a post request and updates the error-toast | 
| 54   // element with the response, regardless of failure.  See error-toast.html | 55   // element with the response, regardless of failure.  See error-toast.html | 
| 55   // for more information. | 56   // for more information. | 
| 56   swarming.postWithToast = function(url, msg, auth_headers) { | 57   swarming.postWithToast = function(url, msg, auth_headers) { | 
| 57     // Keep toast displayed until we hear back from the request. | 58     // Keep toast displayed until we hear back from the request. | 
| 58     sk.errorMessage(msg, 0); | 59     sk.errorMessage(msg, 0); | 
| 59 | 60 | 
| 60     sk.request("POST", url, undefined, auth_headers).then(function(response) { | 61     sk.request("POST", url, undefined, auth_headers).then(function(response) { | 
| 61       sk.errorMessage("Request sent.  Response: "+response, 3000); | 62       sk.errorMessage("Request sent.  Response: "+response, 3000); | 
| 62     }).catch(function(reason) { | 63     }).catch(function(reason) { | 
| 63       console.log("Request failed", reason); | 64       console.log("Request failed", reason); | 
| 64       sk.errorMessage("Request failed.  Reason: "+reason, 5000); | 65       sk.errorMessage("Request failed.  Reason: "+reason, 5000); | 
| 65     }); | 66     }); | 
| 66   } | 67   } | 
| 67 | 68 | 
| 68   return swarming; | 69   return swarming; | 
| 69 }(); | 70 }(); | 
| OLD | NEW | 
|---|