diff --git a/index.html b/index.html index 3705c9e..2bd7460 100644 --- a/index.html +++ b/index.html @@ -1,6 +1,7 @@ + RelativeDate @@ -25,22 +26,48 @@

Relati
{{relDay}}
+
+
3 days before this page loaded was (portuguese)   +
{{relDays}}
+
+
diff --git a/relativeDate.js b/relativeDate.js index daf89e9..ae00003 100644 --- a/relativeDate.js +++ b/relativeDate.js @@ -1,58 +1,58 @@ -// Generated by CoffeeScript 1.6.3 -(function() { - angular.module('relativeDate', []).provider('relativeDate', function() { - var _cutoffDay_, _defaultFallbackFormat_; - _defaultFallbackFormat_ = "MMM d, yyyy"; - _cutoffDay_ = 22; - this.defaultFallbackFormat = function(format) { - return _defaultFallbackFormat_ = format; - }; - this.cutoffDayCount = function(numDays) { - return _cutoffDay_ = numDays; - }; - this.$get = [ - 'dateFilter', '$interval', function(dateFilter, $interval) { - var fallbackFormat, time_ago; - fallbackFormat = function(formatOverride) { - if (formatOverride !== null) { - return formatOverride; - } else { - return _defaultFallbackFormat_; - } - }; - time_ago = function(time, override) { - var date, day_diff, diff; - date = new Date((time || "").replace(/-/g, "/").replace(/[TZ]/g, " ")); - diff = ((new Date()).getTime() - date.getTime() + (date.getTimezoneOffset() * 60 * 1000)) / 1000; - day_diff = Math.floor(diff / 86400); - if (isNaN(day_diff) || day_diff < 0 || day_diff >= _cutoffDay_) { - return dateFilter(time, fallbackFormat(override)); - } - return day_diff === 0 && (diff < 60 && "just now" || diff < 120 && "about 1 minute ago" || diff < 3600 && Math.floor(diff / 60) + " minutes ago" || diff < 7200 && "about 1 hour ago" || diff < 86400 && Math.floor(diff / 3600) + " hours ago") || day_diff === 1 && "Yesterday" || day_diff < 7 && day_diff + " days ago" || day_diff === 7 && "a week ago" || day_diff < 22 && Math.ceil(day_diff / 7) + " weeks ago"; - }; - return { - set: function(date, callback, optionalFormat) { - var error, iterator, notice, relDate, success; +angular.module('relativeDate', []).provider('relativeDate', function() { + var _cutoffDay_, _defaultFallbackFormat_, _translations_; + _defaultFallbackFormat_ = "MMM d, yyyy"; + _cutoffDay_ = 22; + _translations_ = {}; + this.defaultFallbackFormat = function(format) { + return _defaultFallbackFormat_ = format; + }; + this.cutoffDayCount = function(numDays) { + return _cutoffDay_ = numDays; + }; + this.translations = function(translations) { + return _translations_ = translations; + }; + this.$get = [ + 'dateFilter', '$interval', function(dateFilter, $interval) { + var fallbackFormat, time_ago; + fallbackFormat = function(formatOverride) { + if (formatOverride !== null) { + return formatOverride; + } else { + return _defaultFallbackFormat_; + } + }; + time_ago = function(time, override) { + var date, day_diff, diff; + date = new Date((time || "").replace(/-/g, "/").replace(/[TZ]/g, " ")); + diff = ((new Date()).getTime() - date.getTime() + (date.getTimezoneOffset() * 60 * 1000)) / 1000; + day_diff = Math.floor(diff / 86400); + if (isNaN(day_diff) || day_diff < 0 || day_diff >= _cutoffDay_) { + return dateFilter(time, fallbackFormat(override)); + } + return day_diff === 0 && (diff < 60 && (_translations_.JUST_NOW || "just now") || diff < 120 && (_translations_.ABOUT_1_MINUTE_AGO || "about 1 minute ago") || diff < 3600 && Math.floor(diff / 60) + " " + (_translations_.MINUTES_AGO || "minutes ago") || diff < 7200 && (_translations_.ABOUT_1_HOUR_AGO || "about 1 hour ago") || diff < 86400 && Math.floor(diff / 3600) + " " + (_translations_.HOURS_AGO || "hours ago")) || day_diff === 1 && (_translations_.YESTERDAY || "Yesterday") || day_diff < 7 && day_diff + " " + (_translations_.DAYS_AGO || "days ago") || day_diff === 7 && (_translations_.A_WEEK_AGO || "a week ago") || day_diff < 22 && Math.ceil(day_diff / 7) + " " + (_translations_.WEEKS_AGO || "weeks ago"); + }; + return { + set: function(date, callback, optionalFormat) { + var error, iterator, notice, relDate, success; + relDate = time_ago(date, optionalFormat); + iterator = $interval(function() { relDate = time_ago(date, optionalFormat); - iterator = $interval(function() { - relDate = time_ago(date, optionalFormat); - return callback(relDate); - }, 60000); - success = function() {}; - error = function() {}; - notice = function() { - if (!(relDate.slice(-3) === "now" || relDate.slice(-3) === "ago" || relDate.slice(-3) === "day")) { - return $interval.cancel(iterator); - } - }; - iterator.then(success, error, notice); - callback(relDate); - return iterator; - } - }; - } - ]; - return this; - }); - -}).call(this); + return callback(relDate); + }, 60000); + success = function() {}; + error = function() {}; + notice = function() { + if (!(relDate.slice(-3) === "now" || relDate.slice(-3) === "ago" || relDate.slice(-3) === "day")) { + return $interval.cancel(iterator); + } + }; + iterator.then(success, error, notice); + callback(relDate); + return iterator; + } + }; + } + ]; + return this; +}); \ No newline at end of file diff --git a/src/relativeDate.coffee b/src/relativeDate.coffee index 804f5bf..5556d4e 100644 --- a/src/relativeDate.coffee +++ b/src/relativeDate.coffee @@ -2,12 +2,17 @@ angular.module('relativeDate',[]) .provider 'relativeDate', -> _defaultFallbackFormat_ = "MMM d, yyyy" # April 18, 2014 _cutoffDay_ = 22 # 3 weeks + _translations_ = {} + this.defaultFallbackFormat = (format) -> _defaultFallbackFormat_ = format this.cutoffDayCount = (numDays) -> _cutoffDay_ = numDays + this.translations = (translations) -> + _translations_ = translations + this.$get = [ 'dateFilter', '$interval', (dateFilter, $interval) -> fallbackFormat = (formatOverride) -> if formatOverride != null @@ -23,15 +28,15 @@ angular.module('relativeDate',[]) return dateFilter(time, fallbackFormat(override)) # instead, use angular's dateFilter to return an absolute timestamp formated using the string assigned to "_fallbackFormat_" return day_diff == 0 && ( - diff < 60 && "just now" || - diff < 120 && "about 1 minute ago" || - diff < 3600 && Math.floor( diff / 60 ) + " minutes ago" || - diff < 7200 && "about 1 hour ago" || - diff < 86400 && Math.floor( diff / 3600 ) + " hours ago") || - day_diff == 1 && "Yesterday" || - day_diff < 7 && day_diff + " days ago" || - day_diff == 7 && "a week ago" || - day_diff < 22 && Math.ceil( day_diff / 7 ) + " weeks ago" + diff < 60 && (_translations_.JUST_NOW || "just now") || + diff < 120 && (_translations_.ABOUT_1_MINUTE_AGO || "about 1 minute ago") || + diff < 3600 && Math.floor( diff / 60 ) + " " + (_translations_.MINUTES_AGO || "minutes ago") || + diff < 7200 && (_translations_.ABOUT_1_HOUR_AGO || "about 1 hour ago") || + diff < 86400 && Math.floor( diff / 3600 ) + " " + (_translations_.HOURS_AGO || "hours ago")) || + day_diff == 1 && (_translations_.YESTERDAY || "Yesterday") || + day_diff < 7 && day_diff + " " + (_translations_.DAYS_AGO || "days ago") || + day_diff == 7 && (_translations_.A_WEEK_AGO || "a week ago") || + day_diff < 22 && Math.ceil( day_diff / 7 ) + " " + (_translations_.WEEKS_AGO || "weeks ago") return { set: (date, callback, optionalFormat) ->