mirror of
https://github.com/codeninjasllc/discourse.git
synced 2025-03-14 00:50:14 -04: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,
|
||||
relativeAgeMedium, relativeAgeMediumSpan, longDate, toTitleCase,
|
||||
shortDate, shortDateNoYear, breakUp;
|
||||
shortDate, shortDateNoYear, tinyDateYear, breakUp;
|
||||
|
||||
breakUp = function(string, maxLength){
|
||||
if(string.length <= maxLength) {
|
||||
|
@ -33,6 +33,10 @@ Discourse.Formatter = (function(){
|
|||
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
|
||||
// TODO: locale support ?
|
||||
toTitleCase = function toTitleCase(str)
|
||||
|
@ -114,15 +118,11 @@ Discourse.Formatter = (function(){
|
|||
case(distanceInMinutes >= 2520 && distanceInMinutes <= ((Discourse.SiteSettings.relative_date_duration||14) * 1440)):
|
||||
formatted = t("x_days", {count: Math.round(distanceInMinutes / 1440.0)});
|
||||
break;
|
||||
case(distanceInMinutes >= ((Discourse.SiteSettings.relative_date_duration||14) * 1440) && distanceInMinutes <= 525599):
|
||||
formatted = shortDateNoYear(date);
|
||||
break;
|
||||
default:
|
||||
var months = Math.round(distanceInMinutes / 43200.0);
|
||||
if (months < 12) {
|
||||
if(date.getFullYear() === new Date().getFullYear()) {
|
||||
formatted = shortDateNoYear(date);
|
||||
} else {
|
||||
formatted = t("over_x_years", {count: Math.round(months / 12.0)});
|
||||
formatted = tinyDateYear(date);
|
||||
}
|
||||
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 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("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() {
|
||||
var shortDateYear = function(days){
|
||||
return moment().subtract('days', days).format("D MMM 'YY");
|
||||
};
|
||||
|
||||
format = "tiny";
|
||||
equal(formatMins(0), "< 1m");
|
||||
equal(formatMins(2), "2m");
|
||||
|
@ -78,9 +98,10 @@ test("formating tiny dates", function() {
|
|||
equal(formatDays(15), shortDate(15));
|
||||
equal(formatDays(92), shortDate(92));
|
||||
equal(formatDays(364), shortDate(364));
|
||||
equal(formatDays(365), "> 1y");
|
||||
equal(formatDays(500), "> 1y");
|
||||
equal(formatDays(365*2), "> 2y");
|
||||
equal(formatDays(365), shortDate(365));
|
||||
equal(formatDays(366), shortDateYear(366)); // leap year
|
||||
equal(formatDays(500), shortDateYear(500));
|
||||
equal(formatDays(365*2 + 1), shortDateYear(365*2 + 1)); // one leap year
|
||||
|
||||
var originalValue = Discourse.SiteSettings.relative_date_duration;
|
||||
Discourse.SiteSettings.relative_date_duration = 7;
|
||||
|
@ -97,16 +118,35 @@ test("formating tiny dates", function() {
|
|||
equal(formatMins(60), "1h");
|
||||
equal(formatDays(1), shortDate(1));
|
||||
equal(formatDays(2), shortDate(2));
|
||||
equal(formatDays(365), "> 1y");
|
||||
equal(formatDays(366), shortDateYear(366));
|
||||
|
||||
Discourse.SiteSettings.relative_date_duration = null;
|
||||
equal(formatDays(1), '1d');
|
||||
equal(formatDays(14), '14d');
|
||||
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;
|
||||
});
|
||||
|
||||
module("Discourse.Formatter");
|
||||
|
||||
test("autoUpdatingRelativeAge", function() {
|
||||
var d = moment().subtract('days',1).toDate();
|
||||
|
||||
|
|
Loading…
Reference in a new issue