| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF | 22 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF |
| 23 * THE POSSIBILITY OF SUCH DAMAGE. | 23 * THE POSSIBILITY OF SUCH DAMAGE. |
| 24 */ | 24 */ |
| 25 | 25 |
| 26 var ui = ui || {}; | 26 var ui = ui || {}; |
| 27 | 27 |
| 28 (function () { | 28 (function () { |
| 29 | 29 |
| 30 ui.displayURLForBuilder = function(builderName) | 30 ui.displayURLForBuilder = function(builderName) |
| 31 { | 31 { |
| 32 return config.waterfallURL + '?' + $.param({ | 32 return config.waterfallURL + '?' + base.queryParam({ |
| 33 'builder': builderName | 33 'builder': builderName |
| 34 }); | 34 }); |
| 35 } | 35 } |
| 36 | 36 |
| 37 ui.kUseNewWindowForLinksSetting = 'gardenomatic.use-new-window-for-links'; | 37 ui.kUseNewWindowForLinksSetting = 'gardenomatic.use-new-window-for-links'; |
| 38 | 38 |
| 39 ui.displayNameForBuilder = function(builderName) | 39 ui.displayNameForBuilder = function(builderName) |
| 40 { | 40 { |
| 41 return builderName.replace(/Webkit /, ''); | 41 return builderName.replace(/Webkit /, ''); |
| 42 } | 42 } |
| (...skipping 25 matching lines...) Expand all Loading... |
| 68 } | 68 } |
| 69 | 69 |
| 70 ui.setUseNewWindowForLinks = function(enabled) | 70 ui.setUseNewWindowForLinks = function(enabled) |
| 71 { | 71 { |
| 72 ui.useNewWindowForLinks = enabled; | 72 ui.useNewWindowForLinks = enabled; |
| 73 if (enabled) | 73 if (enabled) |
| 74 localStorage[ui.kUseNewWindowForLinksSetting] = 'true'; | 74 localStorage[ui.kUseNewWindowForLinksSetting] = 'true'; |
| 75 else | 75 else |
| 76 delete localStorage[ui.kUseNewWindowForLinksSetting]; | 76 delete localStorage[ui.kUseNewWindowForLinksSetting]; |
| 77 | 77 |
| 78 $('a').each(function() { | 78 [].forEach.call(document.querySelectorAll('a'), function(link) { |
| 79 ui.setTargetForLink(this); | 79 ui.setTargetForLink(link); |
| 80 }); | 80 }); |
| 81 } | 81 } |
| 82 ui.setUseNewWindowForLinks(!!localStorage[ui.kUseNewWindowForLinksSetting]); | 82 ui.setUseNewWindowForLinks(!!localStorage[ui.kUseNewWindowForLinksSetting]); |
| 83 | 83 |
| 84 ui.createLinkNode = function(url, textContent) | 84 ui.createLinkNode = function(url, textContent) |
| 85 { | 85 { |
| 86 var link = document.createElement('a'); | 86 var link = document.createElement('a'); |
| 87 link.href = url; | 87 link.href = url; |
| 88 ui.setTargetForLink(link); | 88 ui.setTargetForLink(link); |
| 89 link.appendChild(document.createTextNode(textContent)); | 89 link.appendChild(document.createTextNode(textContent)); |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 140 | 140 |
| 141 // When navigating from the browser chrome, we'll | 141 // When navigating from the browser chrome, we'll |
| 142 // scroll to the #tabname contents. popstate fires before | 142 // scroll to the #tabname contents. popstate fires before |
| 143 // we scroll, so we can save the scroll offset first. | 143 // we scroll, so we can save the scroll offset first. |
| 144 window.onpopstate = function() { | 144 window.onpopstate = function() { |
| 145 self._saveScrollOffset(); | 145 self._saveScrollOffset(); |
| 146 }; | 146 }; |
| 147 }, | 147 }, |
| 148 _setupLinkSettingHandler: function() | 148 _setupLinkSettingHandler: function() |
| 149 { | 149 { |
| 150 $('#new-window-for-links').attr('checked', ui.useNewWindowForLinks); | 150 if (ui.useNewWindowForLinks) |
| 151 $('#new-window-for-links').change(function(event) { | 151 document.getElementById('new-window-for-links').setAttribute('checke
d', true); |
| 152 document.getElementById('new-window-for-links').addEventListener('change
', function(event) { |
| 152 ui.setUseNewWindowForLinks(this.checked); | 153 ui.setUseNewWindowForLinks(this.checked); |
| 153 }); | 154 }); |
| 154 }, | 155 }, |
| 155 attach: function() | 156 attach: function() |
| 156 { | 157 { |
| 157 document.body.insertBefore(this, document.body.firstChild); | 158 document.body.insertBefore(this, document.body.firstChild); |
| 158 this._setupLinkSettingHandler(); | 159 this._setupLinkSettingHandler(); |
| 159 this._setupHistoryHandlers(); | 160 this._setupHistoryHandlers(); |
| 160 }, | 161 }, |
| 161 tabNamed: function(tabName) | 162 tabNamed: function(tabName) |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 271 | 272 |
| 272 revisionsTableNode.appendChild(trNode); | 273 revisionsTableNode.appendChild(trNode); |
| 273 }); | 274 }); |
| 274 | 275 |
| 275 var revisionsNode = document.createElement('details'); | 276 var revisionsNode = document.createElement('details'); |
| 276 revisionsNode.appendChild(summaryNode); | 277 revisionsNode.appendChild(summaryNode); |
| 277 revisionsNode.appendChild(revisionsTableNode); | 278 revisionsNode.appendChild(revisionsTableNode); |
| 278 theSpan.appendChild(revisionsNode); | 279 theSpan.appendChild(revisionsNode); |
| 279 | 280 |
| 280 // This adds a pop-up when we hover over the summary if the details aren
't being shown. | 281 // This adds a pop-up when we hover over the summary if the details aren
't being shown. |
| 281 var revisionsPopUp = $('<span id="revisionPopUp">').appendTo(summaryLink
Node); | 282 var revisionsPopUp = document.createElement('span') |
| 282 revisionsPopUp.append($(revisionsTableNode).clone()); | 283 revisionsPopUp.id = 'revisionPopUp'; |
| 283 $(summaryLinkNode).mouseover(function(ev) { | 284 summaryLinkNode.appendChild(revisionsPopUp); |
| 285 revisionsPopUp.appendChild(revisionsTableNode.cloneNode(true)); |
| 286 |
| 287 summaryLinkNode.addEventListener('mouseover', function(event) { |
| 284 if (!revisionsNode.open) { | 288 if (!revisionsNode.open) { |
| 285 var tPosX = $(summaryNode).position().left; | 289 revisionsPopUp.style.position = 'absolute'; |
| 286 var tPosY = $(summaryNode).position().top + 16; | 290 revisionsPopUp.style.left = summaryNode.offsetLeft + 'px'; |
| 287 $(revisionsPopUp).css({'position': 'absolute', 'top': tPosY, 'le
ft': tPosX}); | 291 revisionsPopUp.style.top = (summaryNode.offsetTop + summaryNode.
offsetHeight) + 'px'; |
| 288 $(revisionsPopUp).addClass('active'); | 292 revisionsPopUp.classList.add('active'); |
| 289 } | 293 } |
| 290 }); | 294 }); |
| 291 $(summaryLinkNode).mouseout(function(ev) { | 295 |
| 296 summaryLinkNode.addEventListener('mouseout', function(event) { |
| 292 if (!revisionsNode.open) { | 297 if (!revisionsNode.open) { |
| 293 $(revisionsPopUp).removeClass("active"); | 298 revisionsPopUp.classList.remove("active"); |
| 294 } | 299 } |
| 295 }); | 300 }); |
| 296 | 301 |
| 297 var totRevision = model.latestRevision(); | 302 var totRevision = model.latestRevision(); |
| 298 theSpan.appendChild(document.createTextNode(', trunk is at ')); | 303 theSpan.appendChild(document.createTextNode(', trunk is at ')); |
| 299 theSpan.appendChild(ui.createLinkNode(trac.changesetURL(totRevision), to
tRevision)); | 304 theSpan.appendChild(ui.createLinkNode(trac.changesetURL(totRevision), to
tRevision)); |
| 300 | |
| 301 // We want this feature, but need to fetch the lastBlinkRollRevision via
the interwebs. | |
| 302 // Promise.all([checkout.lastBlinkRollRevision(), rollbot.fetchCurrentRo
ll()]).then(function(results) { | |
| 303 // theSpan.lastRolledRevision = results[0]; | |
| 304 // theSpan.roll = results[1]; | |
| 305 // theSpan.updateUI(totRevision); | |
| 306 // }); | |
| 307 } | 305 } |
| 308 }); | 306 }); |
| 309 | 307 |
| 310 })(); | 308 })(); |
| OLD | NEW |