Нет описания

angular-relative-date.js 5.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.relativeDate = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
  2. 'use strict';
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = relativeDateFilter;
  7. var getTranslate = function getTranslate(injector, translations) {
  8. if (injector.has('$translate')) {
  9. return injector.get('$translate');
  10. } else {
  11. return {
  12. instant: function instant(id, params) {
  13. return translations[id].replace('{{time}}', params.time);
  14. }
  15. };
  16. }
  17. };
  18. var calculateDelta = function calculateDelta(now, date) {
  19. return Math.round(Math.abs(now - date) / 1000);
  20. };
  21. function relativeDateFilter($injector, _now, relativeDateTranslations) {
  22. var $translate = getTranslate($injector, relativeDateTranslations);
  23. return function (date) {
  24. var now = _now || new Date();
  25. if (!(date instanceof Date)) {
  26. date = new Date(date);
  27. }
  28. var delta = null;
  29. var minute = 60;
  30. var hour = minute * 60;
  31. var day = hour * 24;
  32. var week = day * 7;
  33. var month = day * 30;
  34. var year = day * 365;
  35. delta = calculateDelta(now, date);
  36. if (delta > day && delta < week) {
  37. date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);
  38. delta = calculateDelta(now, date);
  39. }
  40. var translate = function translate(translatePhrase, timeValue) {
  41. var translateKey;
  42. if (translatePhrase === 'just_now') {
  43. translateKey = translatePhrase;
  44. } else if (now >= date) {
  45. translateKey = translatePhrase + '_ago';
  46. } else {
  47. translateKey = translatePhrase + '_from_now';
  48. }
  49. return $translate.instant(translateKey, {
  50. time: timeValue
  51. });
  52. };
  53. switch (false) {
  54. case !(delta < 30):
  55. return translate('just_now');
  56. case !(delta < minute):
  57. return translate('seconds', delta);
  58. case !(delta < 2 * minute):
  59. return translate('a_minute');
  60. case !(delta < hour):
  61. return translate('minutes', Math.floor(delta / minute));
  62. case Math.floor(delta / hour) !== 1:
  63. return translate('an_hour');
  64. case !(delta < day):
  65. return translate('hours', Math.floor(delta / hour));
  66. case !(delta < day * 2):
  67. return translate('a_day');
  68. case !(delta < week):
  69. return translate('days', Math.floor(delta / day));
  70. case Math.floor(delta / week) !== 1:
  71. return translate('a_week');
  72. case !(delta < month):
  73. return translate('weeks', Math.floor(delta / week));
  74. case Math.floor(delta / month) !== 1:
  75. return translate('a_month');
  76. case !(delta < year):
  77. return translate('months', Math.floor(delta / month));
  78. case Math.floor(delta / year) !== 1:
  79. return translate('a_year');
  80. default:
  81. return translate('over_a_year');
  82. }
  83. };
  84. }
  85. },{}],2:[function(_dereq_,module,exports){
  86. 'use strict';
  87. Object.defineProperty(exports, "__esModule", {
  88. value: true
  89. });
  90. var _translations = _dereq_('./translations');
  91. var _translations2 = _interopRequireDefault(_translations);
  92. var _filter = _dereq_('./filter');
  93. var _filter2 = _interopRequireDefault(_filter);
  94. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  95. /* global angular */
  96. var relativeDate = angular.module('relativeDate', []);
  97. relativeDate.value('now', null);
  98. relativeDate.value('relativeDateTranslations', _translations2.default);
  99. relativeDate.filter('relativeDate', ['$injector', 'now', 'relativeDateTranslations', _filter2.default]);
  100. exports.default = relativeDate;
  101. },{"./filter":1,"./translations":3}],3:[function(_dereq_,module,exports){
  102. 'use strict';
  103. Object.defineProperty(exports, "__esModule", {
  104. value: true
  105. });
  106. exports.default = {
  107. just_now: 'just now',
  108. seconds_ago: '{{time}} seconds ago',
  109. a_minute_ago: 'a minute ago',
  110. minutes_ago: '{{time}} minutes ago',
  111. an_hour_ago: 'an hour ago',
  112. hours_ago: '{{time}} hours ago',
  113. a_day_ago: 'yesterday',
  114. days_ago: '{{time}} days ago',
  115. a_week_ago: 'a week ago',
  116. weeks_ago: '{{time}} weeks ago',
  117. a_month_ago: 'a month ago',
  118. months_ago: '{{time}} months ago',
  119. a_year_ago: 'a year ago',
  120. years_ago: '{{time}} years ago',
  121. over_a_year_ago: 'over a year ago',
  122. seconds_from_now: '{{time}} seconds from now',
  123. a_minute_from_now: 'a minute from now',
  124. minutes_from_now: '{{time}} minutes from now',
  125. an_hour_from_now: 'an hour from now',
  126. hours_from_now: '{{time}} hours from now',
  127. a_day_from_now: 'tomorrow',
  128. days_from_now: '{{time}} days from now',
  129. a_week_from_now: 'a week from now',
  130. weeks_from_now: '{{time}} weeks from now',
  131. a_month_from_now: 'a month from now',
  132. months_from_now: '{{time}} months from now',
  133. a_year_from_now: 'a year from now',
  134. years_from_now: '{{time}} years from now',
  135. over_a_year_from_now: 'over a year from now'
  136. };
  137. },{}]},{},[2])(2)
  138. });
  139. //# sourceMappingURL=angular-relative-date.js.map