diff --git a/scm-webapp/src/main/webapp/resources/js/sonia.repository.js b/scm-webapp/src/main/webapp/resources/js/sonia.repository.js index e38e78120c..c5949314fa 100644 --- a/scm-webapp/src/main/webapp/resources/js/sonia.repository.js +++ b/scm-webapp/src/main/webapp/resources/js/sonia.repository.js @@ -683,7 +683,7 @@ Ext.reg('repositoryPanel', Sonia.repository.Panel); Sonia.repository.ChangesetViewerGrid = Ext.extend(Ext.grid.GridPanel, { repository: null, - changesetTemplate: '
{id}: {description:htmlEncode}
{author:htmlEncode}
{date}
', + changesetTemplate: '
{id}: {description:htmlEncode}
{author:htmlEncode}
{date:timeAgo}
', initComponent: function(){ diff --git a/scm-webapp/src/main/webapp/resources/js/sonia.util.js b/scm-webapp/src/main/webapp/resources/js/sonia.util.js index 171ef17065..a4d30224a8 100644 --- a/scm-webapp/src/main/webapp/resources/js/sonia.util.js +++ b/scm-webapp/src/main/webapp/resources/js/sonia.util.js @@ -29,45 +29,60 @@ * */ + Ext.apply(Ext.util.Format, { -Ext.ns('Sonia.util.'); + timeAgo : function(value){ -Sonia.util.formatTimeAgo = function(date){ - var time_formats = [ - [60, 'just now', 1], // 60 - [120, '1 minute ago', '1 minute from now'], // 60*2 - [3600, 'minutes', 60], // 60*60, 60 - [7200, '1 hour ago', '1 hour from now'], // 60*60*2 - [86400, 'hours', 3600], // 60*60*24, 60*60 - [172800, 'yesterday', 'tomorrow'], // 60*60*24*2 - [604800, 'days', 86400], // 60*60*24*7, 60*60*24 - [1209600, 'last week', 'next week'], // 60*60*24*7*4*2 - [2419200, 'weeks', 604800], // 60*60*24*7*4, 60*60*24*7 - [4838400, 'last month', 'next month'], // 60*60*24*7*4*2 - [29030400, 'months', 2419200], // 60*60*24*7*4*12, 60*60*24*7*4 - [58060800, 'last year', 'next year'], // 60*60*24*7*4*12*2 - [2903040000, 'years', 29030400], // 60*60*24*7*4*12*100, 60*60*24*7*4*12 - [5806080000, 'last century', 'next century'], // 60*60*24*7*4*12*100*2 - [58060800000, 'centuries', 2903040000] // 60*60*24*7*4*12*100*20, 60*60*24*7*4*12*100 - ]; - var seconds = (new Date - date) / 1000; - var token = 'ago'; - var list_choice = 1; - if (seconds < 0){ - seconds = Math.abs(seconds); - token = 'from now'; - list_choice = 2; - } - var i = 0 - var format = null; - while (format = time_formats[i++]){ - if (seconds < format[0]) { - if (typeof format[2] == 'string'){ - return format[list_choice]; - } else { - return Math.floor(seconds / format[2]) + ' ' + format[1] + ' ' + token; + var time_formats = [ + [60, 'just now', 1], // 60 + [120, '1 minute ago', '1 minute from now'], // 60*2 + [3600, 'minutes', 60], // 60*60, 60 + [7200, '1 hour ago', '1 hour from now'], // 60*60*2 + [86400, 'hours', 3600], // 60*60*24, 60*60 + [172800, 'yesterday', 'tomorrow'], // 60*60*24*2 + [604800, 'days', 86400], // 60*60*24*7, 60*60*24 + [1209600, 'last week', 'next week'], // 60*60*24*7*4*2 + [2419200, 'weeks', 604800], // 60*60*24*7*4, 60*60*24*7 + [4838400, 'last month', 'next month'], // 60*60*24*7*4*2 + [29030400, 'months', 2419200], // 60*60*24*7*4*12, 60*60*24*7*4 + [58060800, 'last year', 'next year'], // 60*60*24*7*4*12*2 + [2903040000, 'years', 29030400], // 60*60*24*7*4*12*100, 60*60*24*7*4*12 + [5806080000, 'last century', 'next century'], // 60*60*24*7*4*12*100*2 + [58060800000, 'centuries', 2903040000] // 60*60*24*7*4*12*100*20, 60*60*24*7*4*12*100 + ]; + + var date = value; + + if (!Ext.isDate(date)){ + date = new Date(Date.parse(date)); + } + + var seconds = (new Date - date) / 1000; + var token = 'ago'; + var list_choice = 1; + if (seconds < 0){ + seconds = Math.abs(seconds); + token = 'from now'; + list_choice = 2; + } + + var i = 0; + var format = null; + while (format = time_formats[i++]){ + if (seconds < format[0]) { + if (typeof format[2] == 'string'){ + return format[list_choice]; + } else { + return Math.floor(seconds / format[2]) + ' ' + format[1] + ' ' + token; + } } } + + if ( date == "Invalid Date" ){ + date = value; + } + + return date; } - return time; -} \ No newline at end of file + +});