| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- /*
- Copyright (c) 2014 Uttesh Kumar
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
- 'use strict';
- var catalyst = angular.module('ngtimeago', []);
- catalyst.filter('timeago', function() {
- return function(input, p_allowFuture) {
- if (input === undefined) {
- return "-";
- }
-
- var substitute = function (stringOrFunction, number, strings) {
- var string = angular.isFunction(stringOrFunction) ? stringOrFunction(number, dateDifference) : stringOrFunction;
- var value = (strings.numbers && strings.numbers[number]) || number;
- return string.replace(/%d/i, value);
- },
- nowTime = (new Date()).getTime(),
- date = (new Date(input)).getTime(),
- //refreshMillis= 6e4, //A minute
- allowFuture = p_allowFuture || false,
- strings= {
- prefixAgo: '',
- prefixFromNow: '',
- suffixAgo: "ago",
- suffixFromNow: "from now",
- seconds: "less than a minute",
- minute: "about a minute",
- minutes: "%d minutes",
- hour: "about an hour",
- hours: "about %d hours",
- day: "a day",
- days: "%d days",
- month: "about a month",
- months: "%d months",
- year: "about a year",
- years: "%d years"
- },
- dateDifference = nowTime - date,
- words,
- seconds = Math.abs(dateDifference) / 1000,
- minutes = seconds / 60,
- hours = minutes / 60,
- days = hours / 24,
- years = days / 365,
- separator = strings.wordSeparator === undefined ? " " : strings.wordSeparator,
-
-
- prefix = strings.prefixAgo,
- suffix = strings.suffixAgo;
-
- if (allowFuture) {
- if (dateDifference < 0) {
- prefix = strings.prefixFromNow;
- suffix = strings.suffixFromNow;
- }
- }
- words = seconds < 45 && substitute(strings.seconds, Math.round(seconds), strings) ||
- seconds < 90 && substitute(strings.minute, 1, strings) ||
- minutes < 45 && substitute(strings.minutes, Math.round(minutes), strings) ||
- minutes < 90 && substitute(strings.hour, 1, strings) ||
- hours < 24 && substitute(strings.hours, Math.round(hours), strings) ||
- hours < 42 && substitute(strings.day, 1, strings) ||
- days < 30 && substitute(strings.days, Math.round(days), strings) ||
- days < 45 && substitute(strings.month, 1, strings) ||
- days < 365 && substitute(strings.months, Math.round(days / 30), strings) ||
- years < 1.5 && substitute(strings.year, 1, strings) ||
- substitute(strings.years, Math.round(years), strings);
- console.log(prefix+words+suffix+separator);
- prefix.replace(/ /g, '')
- words.replace(/ /g, '')
- suffix.replace(/ /g, '')
- return (prefix+' '+words+' '+suffix+' '+separator);
-
- };
- });
-
|