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
+
+});