| OLD | NEW | 
|---|
| 1 <!-- | 1 <!-- | 
| 2   Copyright 2016 The LUCI Authors. All rights reserved. | 2   Copyright 2016 The LUCI Authors. All rights reserved. | 
| 3   Use of this source code is governed under the Apache License, Version 2.0 | 3   Use of this source code is governed under the Apache License, Version 2.0 | 
| 4   that can be found in the LICENSE file. | 4   that can be found in the LICENSE file. | 
| 5 | 5 | 
| 6   It contains the definition of the following Behaviors: | 6   It contains the definition of the following Behaviors: | 
| 7 | 7 | 
| 8     SwarmingBehaviors.CommonBehavior | 8     SwarmingBehaviors.CommonBehavior | 
| 9 | 9 | 
| 10   To use it, include | 10   To use it, include | 
| 11       behaviors: [SwarmingBehaviors.CommonBehavior] | 11       behaviors: [SwarmingBehaviors.CommonBehavior] | 
| 12   in the creation of any Polymer element. | 12   in the creation of any Polymer element. | 
| 13 | 13 | 
| 14   SwarmingBehaviors.CommonBehavior contains shared methods to ease | 14   SwarmingBehaviors.CommonBehavior contains shared methods to ease | 
| 15   templating, such as _or() and _not() as well as general utility methods | 15   templating, such as _or() and _not() as well as general utility methods | 
| 16   such as _getJsonAsync. | 16   such as _getJsonAsync. | 
| 17  --> | 17  --> | 
| 18 | 18 | 
| 19 <script> | 19 <script> | 
| 20   window.SwarmingBehaviors = window.SwarmingBehaviors || {}; | 20   window.SwarmingBehaviors = window.SwarmingBehaviors || {}; | 
| 21   (function(){ | 21   (function(){ | 
| 22     // This behavior wraps up all the shared swarming functionality. | 22     // This behavior wraps up all the shared swarming functionality. | 
| 23     SwarmingBehaviors.CommonBehavior = { | 23     SwarmingBehaviors.CommonBehavior = { | 
| 24 | 24 | 
|  | 25       _botLink: function(bot_id) { | 
|  | 26         if (!bot_id) { | 
|  | 27           return undefined; | 
|  | 28         } | 
|  | 29         return "/newui/bot?id=" + bot_id; | 
|  | 30       }, | 
|  | 31 | 
| 25       // _getJsonAsync makes an XHR to a url, parses the response as JSON | 32       // _getJsonAsync makes an XHR to a url, parses the response as JSON | 
| 26       // and sticks the resulting object into the property with the name given | 33       // and sticks the resulting object into the property with the name given | 
| 27       // by "bindTo". If busy is defined, the property with that name will be | 34       // by "bindTo". If busy is defined, the property with that name will be | 
| 28       // set to true while the request is in flight and false afterwards. | 35       // set to true while the request is in flight and false afterwards. | 
| 29       // request headers (e.g. authentication) and query params will be used if | 36       // request headers (e.g. authentication) and query params will be used if | 
| 30       // provided. Query params is an object like {String:Array<String>}. On | 37       // provided. Query params is an object like {String:Array<String>}. On | 
| 31       // error, bindTo will be set to false.  It is not set to undefined | 38       // error, bindTo will be set to false.  It is not set to undefined | 
| 32       // because computed values in Polymer don't fire if a property is | 39       // because computed values in Polymer don't fire if a property is | 
| 33       // undefined. Clients should check that bindTo is not falsey. | 40       // undefined. Clients should check that bindTo is not falsey. | 
| 34        _getJsonAsync: function(bindTo, url, busy, headers, params) { | 41        _getJsonAsync: function(bindTo, url, busy, headers, params) { | 
| (...skipping 14 matching lines...) Expand all  Loading... | 
| 49           } | 56           } | 
| 50         }.bind(this)).catch(function(reason){ | 57         }.bind(this)).catch(function(reason){ | 
| 51           console.log("Reason for failure of request to " + url, reason); | 58           console.log("Reason for failure of request to " + url, reason); | 
| 52           this.set(bindTo, false); | 59           this.set(bindTo, false); | 
| 53           if (busy) { | 60           if (busy) { | 
| 54             this.set(busy, false); | 61             this.set(busy, false); | 
| 55           } | 62           } | 
| 56         }.bind(this)); | 63         }.bind(this)); | 
| 57       }, | 64       }, | 
| 58 | 65 | 
|  | 66       _humanDuration: function(timeInSecs) { | 
|  | 67         return sk.human.strDuration(timeInSecs) || "0s"; | 
|  | 68       }, | 
|  | 69 | 
| 59       _not: function(a) { | 70       _not: function(a) { | 
| 60         return !a; | 71         return !a; | 
| 61       }, | 72       }, | 
| 62 | 73 | 
| 63       _or: function() { | 74       _or: function() { | 
| 64         var result = false; | 75         var result = false; | 
| 65         // can't use .foreach, as arguments isn't really an Array. | 76         // can't use .foreach, as arguments isn't really an Array. | 
| 66         for (var i = 0; i < arguments.length; i++) { | 77         for (var i = 0; i < arguments.length; i++) { | 
| 67           result = result || arguments[i]; | 78           result = result || arguments[i]; | 
| 68         } | 79         } | 
| 69         return result; | 80         return result; | 
| 70       }, | 81       }, | 
|  | 82 | 
|  | 83       _taskLink: function(task_id) { | 
|  | 84         if (!task_id) { | 
|  | 85           return undefined; | 
|  | 86         } | 
|  | 87         return "/newui/task?id=" + task_id; | 
|  | 88       }, | 
|  | 89 | 
|  | 90       // )timeDiffApprox returns the approximate difference between now and | 
|  | 91       // the specified date. | 
|  | 92       _timeDiffApprox: function(date){ | 
|  | 93         if (!date) { | 
|  | 94           return "eons"; | 
|  | 95         } | 
|  | 96         return sk.human.diffDate(date.getTime()); | 
|  | 97       }, | 
|  | 98 | 
|  | 99       // timeDiffExact returns the exact difference between the two specified | 
|  | 100       // dates.  E.g. 2d 22h 22m 28s ago If a second date is not provided, | 
|  | 101       // now is used. | 
|  | 102       _timeDiffExact: function(first, second){ | 
|  | 103         if (!first) { | 
|  | 104           return "eons"; | 
|  | 105         } | 
|  | 106         if (!second) { | 
|  | 107           second = new Date(); | 
|  | 108         } | 
|  | 109         return this._humanDuration((second.getTime() - first.getTime())/1000); | 
|  | 110       }, | 
| 71     }; | 111     }; | 
| 72   })(); | 112   })(); | 
| 73 </script> | 113 </script> | 
| OLD | NEW | 
|---|