// generates a renderer function to be used for textual date groups Ext.util.Format.createTextDateRenderer = function(){ // create the cache of ranges to be reused var today = new Date().clearTime(true); var year = today.getFullYear(); var todayTime = today.getTime(); var yesterday = today.add('d', -1).getTime(); var tomorrow = today.add('d', 1).getTime(); var weekDays = today.add('d', 6).getTime(); var lastWeekDays = today.add('d', -6).getTime(); var weekAgo1 = today.add('d', -13).getTime(); var weekAgo2 = today.add('d', -20).getTime(); var weekAgo3 = today.add('d', -27).getTime(); var f = function(date){ if(!date) { return '(No Date)'; } var notime = date.clearTime(true).getTime(); if (notime == todayTime) { return 'Today'; } if(notime > todayTime){ if (notime == tomorrow) { return 'Tomorrow'; } if (notime <= weekDays) { return date.format('l'); } }else { if(notime == yesterday) { return 'Yesterday'; } if(notime >= lastWeekDays) { return 'Last ' + date.format('l'); } } return date.getFullYear() == year ? date.format('D m/d') : date.format('D m/d/Y'); }; f.date = today; return f; };