You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					130 lines
				
				2.6 KiB
			
		
		
			
		
	
	
					130 lines
				
				2.6 KiB
			| 
											2 years ago
										 | import * as C from '../../constant'; | ||
|  | export default (function (o, c, d) { | ||
|  |   o = o || {}; | ||
|  |   var proto = c.prototype; | ||
|  |   var relObj = { | ||
|  |     future: 'in %s', | ||
|  |     past: '%s ago', | ||
|  |     s: 'a few seconds', | ||
|  |     m: 'a minute', | ||
|  |     mm: '%d minutes', | ||
|  |     h: 'an hour', | ||
|  |     hh: '%d hours', | ||
|  |     d: 'a day', | ||
|  |     dd: '%d days', | ||
|  |     M: 'a month', | ||
|  |     MM: '%d months', | ||
|  |     y: 'a year', | ||
|  |     yy: '%d years' | ||
|  |   }; | ||
|  |   d.en.relativeTime = relObj; | ||
|  | 
 | ||
|  |   proto.fromToBase = function (input, withoutSuffix, instance, isFrom, postFormat) { | ||
|  |     var loc = instance.$locale().relativeTime || relObj; | ||
|  |     var T = o.thresholds || [{ | ||
|  |       l: 's', | ||
|  |       r: 44, | ||
|  |       d: C.S | ||
|  |     }, { | ||
|  |       l: 'm', | ||
|  |       r: 89 | ||
|  |     }, { | ||
|  |       l: 'mm', | ||
|  |       r: 44, | ||
|  |       d: C.MIN | ||
|  |     }, { | ||
|  |       l: 'h', | ||
|  |       r: 89 | ||
|  |     }, { | ||
|  |       l: 'hh', | ||
|  |       r: 21, | ||
|  |       d: C.H | ||
|  |     }, { | ||
|  |       l: 'd', | ||
|  |       r: 35 | ||
|  |     }, { | ||
|  |       l: 'dd', | ||
|  |       r: 25, | ||
|  |       d: C.D | ||
|  |     }, { | ||
|  |       l: 'M', | ||
|  |       r: 45 | ||
|  |     }, { | ||
|  |       l: 'MM', | ||
|  |       r: 10, | ||
|  |       d: C.M | ||
|  |     }, { | ||
|  |       l: 'y', | ||
|  |       r: 17 | ||
|  |     }, { | ||
|  |       l: 'yy', | ||
|  |       d: C.Y | ||
|  |     }]; | ||
|  |     var Tl = T.length; | ||
|  |     var result; | ||
|  |     var out; | ||
|  |     var isFuture; | ||
|  | 
 | ||
|  |     for (var i = 0; i < Tl; i += 1) { | ||
|  |       var t = T[i]; | ||
|  | 
 | ||
|  |       if (t.d) { | ||
|  |         result = isFrom ? d(input).diff(instance, t.d, true) : instance.diff(input, t.d, true); | ||
|  |       } | ||
|  | 
 | ||
|  |       var abs = (o.rounding || Math.round)(Math.abs(result)); | ||
|  |       isFuture = result > 0; | ||
|  | 
 | ||
|  |       if (abs <= t.r || !t.r) { | ||
|  |         if (abs <= 1 && i > 0) t = T[i - 1]; // 1 minutes -> a minute, 0 seconds -> 0 second
 | ||
|  | 
 | ||
|  |         var format = loc[t.l]; | ||
|  | 
 | ||
|  |         if (postFormat) { | ||
|  |           abs = postFormat("" + abs); | ||
|  |         } | ||
|  | 
 | ||
|  |         if (typeof format === 'string') { | ||
|  |           out = format.replace('%d', abs); | ||
|  |         } else { | ||
|  |           out = format(abs, withoutSuffix, t.l, isFuture); | ||
|  |         } | ||
|  | 
 | ||
|  |         break; | ||
|  |       } | ||
|  |     } | ||
|  | 
 | ||
|  |     if (withoutSuffix) return out; | ||
|  |     var pastOrFuture = isFuture ? loc.future : loc.past; | ||
|  | 
 | ||
|  |     if (typeof pastOrFuture === 'function') { | ||
|  |       return pastOrFuture(out); | ||
|  |     } | ||
|  | 
 | ||
|  |     return pastOrFuture.replace('%s', out); | ||
|  |   }; | ||
|  | 
 | ||
|  |   function fromTo(input, withoutSuffix, instance, isFrom) { | ||
|  |     return proto.fromToBase(input, withoutSuffix, instance, isFrom); | ||
|  |   } | ||
|  | 
 | ||
|  |   proto.to = function (input, withoutSuffix) { | ||
|  |     return fromTo(input, withoutSuffix, this, true); | ||
|  |   }; | ||
|  | 
 | ||
|  |   proto.from = function (input, withoutSuffix) { | ||
|  |     return fromTo(input, withoutSuffix, this); | ||
|  |   }; | ||
|  | 
 | ||
|  |   var makeNow = function makeNow(thisDay) { | ||
|  |     return thisDay.$u ? d.utc() : d(); | ||
|  |   }; | ||
|  | 
 | ||
|  |   proto.toNow = function (withoutSuffix) { | ||
|  |     return this.to(makeNow(this), withoutSuffix); | ||
|  |   }; | ||
|  | 
 | ||
|  |   proto.fromNow = function (withoutSuffix) { | ||
|  |     return this.from(makeNow(this), withoutSuffix); | ||
|  |   }; | ||
|  | }); |