mirror of
https://github.com/discourse/discourse.git
synced 2025-09-06 10:50:21 +08:00
Change tiny date formatting for dates in past years. Example: 10 Dec '12
This commit is contained in:
parent
890ded7b1b
commit
879aa06601
2 changed files with 52 additions and 12 deletions
|
@ -4,7 +4,7 @@ Discourse.Formatter = (function(){
|
||||||
|
|
||||||
var updateRelativeAge, autoUpdatingRelativeAge, relativeAge, relativeAgeTiny,
|
var updateRelativeAge, autoUpdatingRelativeAge, relativeAge, relativeAgeTiny,
|
||||||
relativeAgeMedium, relativeAgeMediumSpan, longDate, toTitleCase,
|
relativeAgeMedium, relativeAgeMediumSpan, longDate, toTitleCase,
|
||||||
shortDate, shortDateNoYear, breakUp;
|
shortDate, shortDateNoYear, tinyDateYear, breakUp;
|
||||||
|
|
||||||
breakUp = function(string, maxLength){
|
breakUp = function(string, maxLength){
|
||||||
if(string.length <= maxLength) {
|
if(string.length <= maxLength) {
|
||||||
|
@ -33,6 +33,10 @@ Discourse.Formatter = (function(){
|
||||||
return moment(date).shortDateNoYear();
|
return moment(date).shortDateNoYear();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
tinyDateYear = function(date) {
|
||||||
|
return moment(date).format("D MMM 'YY");
|
||||||
|
};
|
||||||
|
|
||||||
// http://stackoverflow.com/questions/196972/convert-string-to-title-case-with-javascript
|
// http://stackoverflow.com/questions/196972/convert-string-to-title-case-with-javascript
|
||||||
// TODO: locale support ?
|
// TODO: locale support ?
|
||||||
toTitleCase = function toTitleCase(str)
|
toTitleCase = function toTitleCase(str)
|
||||||
|
@ -114,15 +118,11 @@ Discourse.Formatter = (function(){
|
||||||
case(distanceInMinutes >= 2520 && distanceInMinutes <= ((Discourse.SiteSettings.relative_date_duration||14) * 1440)):
|
case(distanceInMinutes >= 2520 && distanceInMinutes <= ((Discourse.SiteSettings.relative_date_duration||14) * 1440)):
|
||||||
formatted = t("x_days", {count: Math.round(distanceInMinutes / 1440.0)});
|
formatted = t("x_days", {count: Math.round(distanceInMinutes / 1440.0)});
|
||||||
break;
|
break;
|
||||||
case(distanceInMinutes >= ((Discourse.SiteSettings.relative_date_duration||14) * 1440) && distanceInMinutes <= 525599):
|
|
||||||
formatted = shortDateNoYear(date);
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
var months = Math.round(distanceInMinutes / 43200.0);
|
if(date.getFullYear() === new Date().getFullYear()) {
|
||||||
if (months < 12) {
|
|
||||||
formatted = shortDateNoYear(date);
|
formatted = shortDateNoYear(date);
|
||||||
} else {
|
} else {
|
||||||
formatted = t("over_x_years", {count: Math.round(months / 12.0)});
|
formatted = tinyDateYear(date);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,14 @@
|
||||||
module("Discourse.Formatter");
|
var clock;
|
||||||
|
|
||||||
|
module("Discourse.Formatter", {
|
||||||
|
setup: function() {
|
||||||
|
clock = sinon.useFakeTimers(new Date(2012,11,31,12,0).getTime());
|
||||||
|
},
|
||||||
|
|
||||||
|
teardown: function() {
|
||||||
|
clock.restore();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
var format = "tiny";
|
var format = "tiny";
|
||||||
var leaveAgo = false;
|
var leaveAgo = false;
|
||||||
|
@ -65,9 +75,19 @@ test("formating medium length dates", function() {
|
||||||
equal($(formatDays(0)).attr("title"), moment().format('MMMM D, YYYY h:mma'));
|
equal($(formatDays(0)).attr("title"), moment().format('MMMM D, YYYY h:mma'));
|
||||||
equal($(formatDays(0)).attr("class"), "date");
|
equal($(formatDays(0)).attr("class"), "date");
|
||||||
|
|
||||||
|
clock.restore();
|
||||||
|
clock = sinon.useFakeTimers(new Date(2012,0,9,12,0).getTime()); // Jan 9, 2012
|
||||||
|
|
||||||
|
equal(strip(formatDays(8)), shortDate(8));
|
||||||
|
equal(strip(formatDays(10)), shortDateYear(10));
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test("formating tiny dates", function() {
|
test("formating tiny dates", function() {
|
||||||
|
var shortDateYear = function(days){
|
||||||
|
return moment().subtract('days', days).format("D MMM 'YY");
|
||||||
|
};
|
||||||
|
|
||||||
format = "tiny";
|
format = "tiny";
|
||||||
equal(formatMins(0), "< 1m");
|
equal(formatMins(0), "< 1m");
|
||||||
equal(formatMins(2), "2m");
|
equal(formatMins(2), "2m");
|
||||||
|
@ -78,9 +98,10 @@ test("formating tiny dates", function() {
|
||||||
equal(formatDays(15), shortDate(15));
|
equal(formatDays(15), shortDate(15));
|
||||||
equal(formatDays(92), shortDate(92));
|
equal(formatDays(92), shortDate(92));
|
||||||
equal(formatDays(364), shortDate(364));
|
equal(formatDays(364), shortDate(364));
|
||||||
equal(formatDays(365), "> 1y");
|
equal(formatDays(365), shortDate(365));
|
||||||
equal(formatDays(500), "> 1y");
|
equal(formatDays(366), shortDateYear(366)); // leap year
|
||||||
equal(formatDays(365*2), "> 2y");
|
equal(formatDays(500), shortDateYear(500));
|
||||||
|
equal(formatDays(365*2 + 1), shortDateYear(365*2 + 1)); // one leap year
|
||||||
|
|
||||||
var originalValue = Discourse.SiteSettings.relative_date_duration;
|
var originalValue = Discourse.SiteSettings.relative_date_duration;
|
||||||
Discourse.SiteSettings.relative_date_duration = 7;
|
Discourse.SiteSettings.relative_date_duration = 7;
|
||||||
|
@ -97,16 +118,35 @@ test("formating tiny dates", function() {
|
||||||
equal(formatMins(60), "1h");
|
equal(formatMins(60), "1h");
|
||||||
equal(formatDays(1), shortDate(1));
|
equal(formatDays(1), shortDate(1));
|
||||||
equal(formatDays(2), shortDate(2));
|
equal(formatDays(2), shortDate(2));
|
||||||
equal(formatDays(365), "> 1y");
|
equal(formatDays(366), shortDateYear(366));
|
||||||
|
|
||||||
Discourse.SiteSettings.relative_date_duration = null;
|
Discourse.SiteSettings.relative_date_duration = null;
|
||||||
equal(formatDays(1), '1d');
|
equal(formatDays(1), '1d');
|
||||||
equal(formatDays(14), '14d');
|
equal(formatDays(14), '14d');
|
||||||
equal(formatDays(15), shortDate(15));
|
equal(formatDays(15), shortDate(15));
|
||||||
|
|
||||||
|
Discourse.SiteSettings.relative_date_duration = 14;
|
||||||
|
|
||||||
|
clock.restore();
|
||||||
|
clock = sinon.useFakeTimers(new Date(2012,0,12,12,0).getTime()); // Jan 12, 2012
|
||||||
|
|
||||||
|
equal(formatDays(11), "11d");
|
||||||
|
equal(formatDays(14), "14d");
|
||||||
|
equal(formatDays(15), shortDateYear(15));
|
||||||
|
equal(formatDays(366), shortDateYear(366));
|
||||||
|
|
||||||
|
clock.restore();
|
||||||
|
clock = sinon.useFakeTimers(new Date(2012,0,20,12,0).getTime()); // Jan 20, 2012
|
||||||
|
|
||||||
|
equal(formatDays(14), "14d");
|
||||||
|
equal(formatDays(15), shortDate(15));
|
||||||
|
equal(formatDays(20), shortDateYear(20));
|
||||||
|
|
||||||
Discourse.SiteSettings.relative_date_duration = originalValue;
|
Discourse.SiteSettings.relative_date_duration = originalValue;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
module("Discourse.Formatter");
|
||||||
|
|
||||||
test("autoUpdatingRelativeAge", function() {
|
test("autoUpdatingRelativeAge", function() {
|
||||||
var d = moment().subtract('days',1).toDate();
|
var d = moment().subtract('days',1).toDate();
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue