| Index: Tools/GardeningServer/scripts/ui.js
|
| diff --git a/Tools/GardeningServer/scripts/ui.js b/Tools/GardeningServer/scripts/ui.js
|
| index 600e09ddbf9350967ec76ec3300d9f78f6c04a8e..3c94d7e6534bb54a70105f4e02efbb6a757c8da9 100644
|
| --- a/Tools/GardeningServer/scripts/ui.js
|
| +++ b/Tools/GardeningServer/scripts/ui.js
|
| @@ -34,6 +34,8 @@ ui.displayURLForBuilder = function(builderName)
|
| });
|
| }
|
|
|
| +ui.kUseNewWindowForLinksSetting = 'gardenomatic.use-new-window-for-links';
|
| +
|
| ui.displayNameForBuilder = function(builderName)
|
| {
|
| return builderName.replace(/Webkit /, '');
|
| @@ -67,6 +69,39 @@ ui.rolloutReasonForTestNameList = function(testNameList)
|
| }).join('\n');
|
| }
|
|
|
| +ui.setTargetForLink = function(anchor)
|
| +{
|
| + if (anchor.href.indexOf('#') === 0)
|
| + return;
|
| + if (ui.useNewWindowForLinks)
|
| + anchor.target = '_blank';
|
| + else
|
| + anchor.removeAttribute('target');
|
| +}
|
| +
|
| +ui.setUseNewWindowForLinks = function(enabled)
|
| +{
|
| + ui.useNewWindowForLinks = enabled;
|
| + if (enabled)
|
| + localStorage[ui.kUseNewWindowForLinksSetting] = 'true';
|
| + else
|
| + delete localStorage[ui.kUseNewWindowForLinksSetting];
|
| +
|
| + $('a').each(function() {
|
| + ui.setTargetForLink(this);
|
| + });
|
| +}
|
| +ui.setUseNewWindowForLinks(!!localStorage[ui.kUseNewWindowForLinksSetting]);
|
| +
|
| +ui.createLinkNode = function(url, textContent)
|
| +{
|
| + var link = document.createElement('a');
|
| + link.href = url;
|
| + ui.setTargetForLink(link);
|
| + link.appendChild(document.createTextNode(textContent));
|
| + return link;
|
| +}
|
| +
|
| ui.onebar = base.extends('div', {
|
| init: function()
|
| {
|
| @@ -77,6 +112,7 @@ ui.onebar = base.extends('div', {
|
| '<li><a href="#expected">Expected Failures</a></li>' +
|
| '<li><a href="#results">Results</a></li>' +
|
| '</ul>' +
|
| + '<div id="link-handling"><input type="checkbox" id="new-window-for-links"><label for="new-window-for-links">Open links in new window</label></div>' +
|
| '<div id="unexpected"></div>' +
|
| '<div id="expected"></div>' +
|
| '<div id="results"></div>';
|
| @@ -90,6 +126,10 @@ ui.onebar = base.extends('div', {
|
| this._tabs = $(this).tabs({
|
| disabled: [2],
|
| show: function(event, ui) { this._restoreScrollOffset(ui.index); },
|
| + select: function(event, ui) {
|
| + this._saveScrollOffset();
|
| + window.location.hash = ui.tab.hash;
|
| + }.bind(this)
|
| });
|
| },
|
| _saveScrollOffset: function() {
|
| @@ -108,15 +148,6 @@ ui.onebar = base.extends('div', {
|
| }
|
|
|
| var self = this;
|
| - $('.ui-tabs-nav a').bind('mouseup', function(event) {
|
| - var href = event.target.getAttribute('href');
|
| - var hash = currentHash();
|
| - if (href != hash) {
|
| - self._saveScrollOffset();
|
| - window.location = href
|
| - }
|
| - });
|
| -
|
| window.onhashchange = function(event) {
|
| var tabName = currentHash().substring(1);
|
| self._selectInternal(tabName);
|
| @@ -129,9 +160,17 @@ ui.onebar = base.extends('div', {
|
| self._saveScrollOffset();
|
| };
|
| },
|
| + _setupLinkSettingHandler: function()
|
| + {
|
| + $('#new-window-for-links').attr('checked', ui.useNewWindowForLinks);
|
| + $('#new-window-for-links').change(function(event) {
|
| + ui.setUseNewWindowForLinks(this.checked);
|
| + });
|
| + },
|
| attach: function()
|
| {
|
| document.body.insertBefore(this, document.body.firstChild);
|
| + this._setupLinkSettingHandler();
|
| this._setupHistoryHandlers();
|
| },
|
| tabNamed: function(tabName)
|
| @@ -295,7 +334,7 @@ ui.revisionDetails = base.extends('span', {
|
| builders.sort(function (a, b) { return parseInt(latestRevisions[b]) - parseInt(latestRevisions[a]);});
|
|
|
| var summaryNode = document.createElement('summary');
|
| - var summaryLinkNode = base.createLinkNode(trac.changesetURL(latestRevision), latestRevision);
|
| + var summaryLinkNode = ui.createLinkNode(trac.changesetURL(latestRevision), latestRevision);
|
| summaryNode.appendChild(summaryLinkNode);
|
|
|
| var revisionsTableNode = document.createElement('table');
|
| @@ -303,7 +342,7 @@ ui.revisionDetails = base.extends('span', {
|
| var trNode = document.createElement('tr');
|
|
|
| var tdNode = document.createElement('td');
|
| - tdNode.appendChild(base.createLinkNode(ui.displayURLForBuilder(builderName), builderName.replace('WebKit ', '')));
|
| + tdNode.appendChild(ui.createLinkNode(ui.displayURLForBuilder(builderName), builderName.replace('WebKit ', '')));
|
| trNode.appendChild(tdNode);
|
|
|
| var tdNode = document.createElement('td');
|
| @@ -337,18 +376,18 @@ ui.revisionDetails = base.extends('span', {
|
|
|
| var totRevision = model.latestRevision();
|
| theSpan.appendChild(document.createTextNode(', trunk is at '));
|
| - theSpan.appendChild(base.createLinkNode(trac.changesetURL(totRevision), totRevision));
|
| + theSpan.appendChild(ui.createLinkNode(trac.changesetURL(totRevision), totRevision));
|
|
|
| checkout.lastBlinkRollRevision().then(function(revision) {
|
| theSpan.appendChild(document.createTextNode(', last roll is to '));
|
| - theSpan.appendChild(base.createLinkNode(trac.changesetURL(revision), revision));
|
| + theSpan.appendChild(ui.createLinkNode(trac.changesetURL(revision), revision));
|
| }, function() {});
|
|
|
| rollbot.fetchCurrentRoll().then(function(roll) {
|
| theSpan.appendChild(document.createTextNode(', current autoroll '));
|
| if (roll) {
|
| var linkText = "" + roll.fromRevision + ":" + roll.toRevision;
|
| - theSpan.appendChild(base.createLinkNode(roll.url, linkText));
|
| + theSpan.appendChild(ui.createLinkNode(roll.url, linkText));
|
| if (roll.isStopped)
|
| theSpan.appendChild(document.createTextNode(' (STOPPED) '));
|
| } else {
|
|
|