Diff
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js (93162 => 93163)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js 2011-08-16 22:01:52 UTC (rev 93162)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js 2011-08-16 22:07:41 UTC (rev 93163)
@@ -300,4 +300,53 @@
return extended;
}
+function createRelativeTimeDescriptor(divisorInMilliseconds, unit)
+{
+ return function(delta) {
+ var deltaInUnits = delta / divisorInMilliseconds;
+ return (deltaInUnits).toFixed(0) + ' ' + unit + (deltaInUnits >= 2 ? 's' : '') + ' ago';
+ }
+}
+
+var kMinuteInMilliseconds = 60 * 1000;
+var kRelativeTimeSlots = [
+ {
+ maxMilliseconds: kMinuteInMilliseconds,
+ describe: function(delta) { return 'Just now'; }
+ },
+ {
+ maxMilliseconds: 60 * kMinuteInMilliseconds,
+ describe: createRelativeTimeDescriptor(kMinuteInMilliseconds, 'minute')
+ },
+ {
+ maxMilliseconds: 24 * 60 * kMinuteInMilliseconds,
+ describe: createRelativeTimeDescriptor(60 * kMinuteInMilliseconds, 'hour')
+ },
+ {
+ maxMilliseconds: Number.MAX_VALUE,
+ describe: createRelativeTimeDescriptor(24 * 60 * kMinuteInMilliseconds, 'day')
+ }
+];
+
+/*
+ Represent time as descriptive text, relative to now and gradually decreasing in precision:
+ delta < 1 minutes => Just Now
+ delta < 60 minutes => X minute[s] ago
+ delta < 24 hours => X hour[s] ago
+ delta < inf => X day[s] ago
+*/
+base.relativizeTime = function(time)
+{
+ var result;
+ var delta = new Date().getTime() - time;
+ kRelativeTimeSlots.some(function(slot) {
+ if (delta >= slot.maxMilliseconds)
+ return false;
+
+ result = slot.describe(delta);
+ return true;
+ });
+ return result;
+}
+
})();
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base_unittests.js (93162 => 93163)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base_unittests.js 2011-08-16 22:01:52 UTC (rev 93162)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base_unittests.js 2011-08-16 22:07:41 UTC (rev 93163)
@@ -372,4 +372,29 @@
document.body.removeChild(document.body.lastChild);
});
+test("relativizeTime", 11, function() {
+ var time = new Date();
+ equals(base.relativizeTime(time), "Just now");
+ time.setMinutes(time.getMinutes() - 1);
+ equals(base.relativizeTime(time), "1 minute ago");
+ time.setMinutes(time.getMinutes() - 1);
+ equals(base.relativizeTime(time), "2 minutes ago");
+ time.setMinutes(time.getMinutes() - 1);
+ equals(base.relativizeTime(time), "3 minutes ago");
+ time.setMinutes(time.getMinutes() - 56);
+ equals(base.relativizeTime(time), "59 minutes ago");
+ time.setMinutes(time.getMinutes() - 1);
+ equals(base.relativizeTime(time), "1 hour ago");
+ time.setHours(time.getHours() - 1);
+ equals(base.relativizeTime(time), "2 hours ago");
+ time.setHours(time.getHours() - 21);
+ equals(base.relativizeTime(time), "23 hours ago");
+ time.setHours(time.getHours() - 1);
+ equals(base.relativizeTime(time), "1 day ago");
+ time.setDate(time.getDate() - 1);
+ equals(base.relativizeTime(time), "2 days ago");
+ time.setTime(0);
+ equals(base.relativizeTime(time), "15203 days ago");
+})
+
})();
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js (93162 => 93163)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js 2011-08-16 22:01:52 UTC (rev 93162)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js 2011-08-16 22:07:41 UTC (rev 93163)
@@ -67,13 +67,11 @@
var Time = base.extends('time', {
init: function()
{
- this.updateTime("Just Now");
+ this.updateTime(new Date());
},
updateTime: function(time)
{
- // FIXME: Implement displaying actual time.
- // FIXME: Implement relative time.
- this.textContent = time;
+ this.textContent = base.relativizeTime(time);
}
});
Modified: trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js (93162 => 93163)
--- trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js 2011-08-16 22:01:52 UTC (rev 93162)
+++ trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js 2011-08-16 22:07:41 UTC (rev 93163)
@@ -63,15 +63,15 @@
test('ui.notifications.TestFailures', 7, function() {
var testFailures = new ui.notifications.TestFailures();
equal(testFailures.tagName, 'LI');
- equal(testFailures.innerHTML, '<time>Just Now</time><div class="what"><div class="problem"><ul class="effects"></ul><ul class="causes"></ul></div></div>');
+ equal(testFailures.innerHTML, '<time>Just now</time><div class="what"><div class="problem"><ul class="effects"></ul><ul class="causes"></ul></div></div>');
testFailures.addFailureAnalysis({testName: 'test'});
- equal(testFailures.innerHTML, '<time>Just Now</time><div class="what"><div class="problem"><ul class="effects"><li>test</li></ul><ul class="causes"></ul></div></div>');
+ equal(testFailures.innerHTML, '<time>Just now</time><div class="what"><div class="problem"><ul class="effects"><li>test</li></ul><ul class="causes"></ul></div></div>');
ok(testFailures.containsFailureAnalysis({testName: 'test'}));
ok(!testFailures.containsFailureAnalysis({testName: 'foo'}));
testFailures.addFailureAnalysis({testName: 'test'});
- equal(testFailures.innerHTML, '<time>Just Now</time><div class="what"><div class="problem"><ul class="effects"><li>test</li></ul><ul class="causes"></ul></div></div>');
+ equal(testFailures.innerHTML, '<time>Just now</time><div class="what"><div class="problem"><ul class="effects"><li>test</li></ul><ul class="causes"></ul></div></div>');
testFailures.addCommitData({revision: 1, title: "title", author: "author", reviewer: "reviewer"});
- equal(testFailures.innerHTML, '<time>Just Now</time><div class="what"><div class="problem"><ul class="effects"><li>test</li></ul><ul class="causes"><li><div class="description"><a href="" author (reviewer)</div><ul class="actions"><li><button>Roll out</button></li></ul></li></ul></div></div>');
+ equal(testFailures.innerHTML, '<time>Just now</time><div class="what"><div class="problem"><ul class="effects"><li>test</li></ul><ul class="causes"><li><div class="description"><a href="" author (reviewer)</div><ul class="actions"><li><button>Roll out</button></li></ul></li></ul></div></div>');
});
}());
Modified: trunk/Tools/ChangeLog (93162 => 93163)
--- trunk/Tools/ChangeLog 2011-08-16 22:01:52 UTC (rev 93162)
+++ trunk/Tools/ChangeLog 2011-08-16 22:07:41 UTC (rev 93163)
@@ -1,5 +1,16 @@
2011-08-16 Dimitri Glazkov <[email protected]>
+ garden-o-matic frontend needs a friendly relative time description method.
+ https://bugs.webkit.org/show_bug.cgi?id=66324
+
+ Reviewed by Adam Barth.
+
+ * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js: Added base.relativizeTime method.
+ * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base_unittests.js: Added unit tests.
+ * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js: Wired up Time widget to use it.
+
+2011-08-16 Dimitri Glazkov <[email protected]>
+
Summary view should not add multiple entries for the same test failure.
https://bugs.webkit.org/show_bug.cgi?id=66318