Chromium Code Reviews| 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 | |
|
stephana
2016/09/15 16:33:52
nit: should be _timeDiffApprox
kjlubick
2016/09/15 16:59:32
Done.
| |
| 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 |