angular-moment
Advanced tools
Comparing version 1.0.0-beta.1 to 1.0.0-beta.2
@@ -1,2 +0,2 @@ | ||
/* angular-moment.js / v1.0.0-beta.1 / (c) 2013, 2014, 2015 Uri Shaked / MIT Licence */ | ||
/* angular-moment.js / v1.0.0-beta.2 / (c) 2013, 2014, 2015 Uri Shaked / MIT Licence */ | ||
@@ -452,2 +452,13 @@ 'format amd'; | ||
* @ngdoc filter | ||
* @name angularMoment.filter:amLocal | ||
* @module angularMoment | ||
*/ | ||
.filter('amLocal', ['moment', function (moment) { | ||
return function (value) { | ||
return moment.isMoment(value) ? value.local() : null; | ||
}; | ||
}]) | ||
/** | ||
* @ngdoc filter | ||
* @name angularMoment.filter:amTimezone | ||
@@ -477,6 +488,2 @@ * @module angularMoment | ||
// Since AngularJS 1.3, filters have to explicitly define being stateful | ||
// (this is no longer the default). | ||
amTimezone.$stateful = angularMomentConfig.statefulFilters; | ||
return amTimezone; | ||
@@ -657,3 +664,3 @@ }]) | ||
} else if (typeof module !== 'undefined' && module && module.exports) { | ||
angularMoment(angular, require('moment')); | ||
angularMoment(require('angular'), require('moment')); | ||
module.exports = 'angularMoment'; | ||
@@ -660,0 +667,0 @@ } else { |
@@ -1,2 +0,2 @@ | ||
"format amd";!function(){"use strict";function a(a){return angular.isUndefined(a)||null===a}function b(b,c){return b.module("angularMoment",[]).constant("angularMomentConfig",{preprocess:null,timezone:null,format:null,statefulFilters:!0}).constant("moment",c).constant("amTimeAgoConfig",{withoutSuffix:!1,serverTime:null,titleFormat:null,fullDateThreshold:null,fullDateFormat:null}).directive("amTimeAgo",["$window","moment","amMoment","amTimeAgoConfig",function(c,d,e,f){return function(g,h,i){function j(){var a;if(p)a=p;else if(f.serverTime){var b=(new Date).getTime(),c=b-v+f.serverTime;a=d(c)}else a=d();return a}function k(){q&&(c.clearTimeout(q),q=null)}function l(a){var b=j().diff(a,"day"),d=t&&b>=t;if(h.text(d?a.format(u):a.from(j(),r)),s&&!h.attr("title")&&h.attr("title",a.local().format(s)),!d){var e=Math.abs(j().diff(a,"minute")),f=3600;1>e?f=1:60>e?f=30:180>e&&(f=300),q=c.setTimeout(function(){l(a)},1e3*f)}}function m(a){x&&h.attr("datetime",a)}function n(){if(k(),o){var a=e.preprocessDate(o);l(a),m(a.toISOString())}}var o,p,q=null,r=f.withoutSuffix,s=f.titleFormat,t=f.fullDateThreshold,u=f.fullDateFormat,v=(new Date).getTime(),w=i.amTimeAgo,x="TIME"===h[0].nodeName.toUpperCase();g.$watch(w,function(b){return a(b)||""===b?(k(),void(o&&(h.text(""),m(""),o=null))):(o=b,void n())}),b.isDefined(i.amFrom)&&g.$watch(i.amFrom,function(b){p=a(b)||""===b?null:d(b),n()}),b.isDefined(i.amWithoutSuffix)&&g.$watch(i.amWithoutSuffix,function(a){"boolean"==typeof a?(r=a,n()):r=f.withoutSuffix}),i.$observe("amFullDateThreshold",function(a){t=a,n()}),i.$observe("amFullDateFormat",function(a){u=a,n()}),g.$on("$destroy",function(){k()}),g.$on("amMoment:localeChanged",function(){n()})}}]).service("amMoment",["moment","$rootScope","$log","angularMomentConfig",function(a,c,d,e){var f=null;this.changeLocale=function(d,e){var f=a.locale(d,e);return b.isDefined(d)&&c.$broadcast("amMoment:localeChanged"),f},this.changeTimezone=function(b){a.tz&&a.tz.setDefault?(a.tz.setDefault(b),c.$broadcast("amMoment:timezoneChanged")):d.warn("angular-moment: changeTimezone() works only with moment-timezone.js v0.3.0 or greater."),e.timezone=b,f=b},this.preprocessDate=function(b){return f!==e.timezone&&this.changeTimezone(e.timezone),e.preprocess?e.preprocess(b):a(!isNaN(parseFloat(b))&&isFinite(b)?parseInt(b,10):b)}}]).filter("amParse",["moment",function(a){return function(b,c){return a(b,c)}}]).filter("amFromUnix",["moment",function(a){return function(b){return a.unix(b)}}]).filter("amUtc",["moment",function(a){return function(b){return a.utc(b)}}]).filter("amUtcOffset",["amMoment",function(a){function b(b,c){return a.preprocessDate(b).utcOffset(c)}return b}]).filter("amTimezone",["amMoment","angularMomentConfig","$log",function(a,b,c){function d(b,d){var e=a.preprocessDate(b);return d?e.tz?e.tz(d):(c.warn("angular-moment: named timezone specified but moment.tz() is undefined. Did you forget to include moment-timezone.js ?"),e):e}return d.$stateful=b.statefulFilters,d}]).filter("amCalendar",["moment","amMoment","angularMomentConfig",function(b,c,d){function e(b){if(a(b))return"";var d=c.preprocessDate(b);return d.isValid()?d.calendar():""}return e.$stateful=d.statefulFilters,e}]).filter("amDifference",["moment","amMoment","angularMomentConfig",function(b,c,d){function e(d,e,f,g){if(a(d))return"";var h=c.preprocessDate(d),i=a(e)?b():c.preprocessDate(e);return h.isValid()&&i.isValid()?h.diff(i,f,g):""}return e.$stateful=d.statefulFilters,e}]).filter("amDateFormat",["moment","amMoment","angularMomentConfig",function(b,c,d){function e(b,d){if(a(b))return"";var e=c.preprocessDate(b);return e.isValid()?e.format(d):""}return e.$stateful=d.statefulFilters,e}]).filter("amDurationFormat",["moment","angularMomentConfig",function(b,c){function d(c,d,e){return a(c)?"":b.duration(c,d).humanize(e)}return d.$stateful=c.statefulFilters,d}]).filter("amTimeAgo",["moment","amMoment","angularMomentConfig",function(b,c,d){function e(d,e,f){var g,h;return a(d)?"":(d=c.preprocessDate(d),g=b(d),g.isValid()?(h=b(f),!a(f)&&h.isValid()?g.from(h,e):g.fromNow(e)):"")}return e.$stateful=d.statefulFilters,e}]).filter("amSubtract",["moment","angularMomentConfig",function(b,c){function d(c,d,e){return a(c)?"":b(c).subtract(parseInt(d,10),e)}return d.$stateful=c.statefulFilters,d}]).filter("amAdd",["moment","angularMomentConfig",function(b,c){function d(c,d,e){return a(c)?"":b(c).add(parseInt(d,10),e)}return d.$stateful=c.statefulFilters,d}])}"function"==typeof define&&define.amd?define(["angular","moment"],b):"undefined"!=typeof module&&module&&module.exports?(b(angular,require("moment")),module.exports="angularMoment"):b(angular,("undefined"!=typeof global?global:window).moment)}(); | ||
"format amd";!function(){"use strict";function a(a){return angular.isUndefined(a)||null===a}function b(b,c){return b.module("angularMoment",[]).constant("angularMomentConfig",{preprocess:null,timezone:null,format:null,statefulFilters:!0}).constant("moment",c).constant("amTimeAgoConfig",{withoutSuffix:!1,serverTime:null,titleFormat:null,fullDateThreshold:null,fullDateFormat:null}).directive("amTimeAgo",["$window","moment","amMoment","amTimeAgoConfig",function(c,d,e,f){return function(g,h,i){function j(){var a;if(p)a=p;else if(f.serverTime){var b=(new Date).getTime(),c=b-v+f.serverTime;a=d(c)}else a=d();return a}function k(){q&&(c.clearTimeout(q),q=null)}function l(a){var b=j().diff(a,"day"),d=t&&b>=t;if(h.text(d?a.format(u):a.from(j(),r)),s&&!h.attr("title")&&h.attr("title",a.local().format(s)),!d){var e=Math.abs(j().diff(a,"minute")),f=3600;1>e?f=1:60>e?f=30:180>e&&(f=300),q=c.setTimeout(function(){l(a)},1e3*f)}}function m(a){x&&h.attr("datetime",a)}function n(){if(k(),o){var a=e.preprocessDate(o);l(a),m(a.toISOString())}}var o,p,q=null,r=f.withoutSuffix,s=f.titleFormat,t=f.fullDateThreshold,u=f.fullDateFormat,v=(new Date).getTime(),w=i.amTimeAgo,x="TIME"===h[0].nodeName.toUpperCase();g.$watch(w,function(b){return a(b)||""===b?(k(),void(o&&(h.text(""),m(""),o=null))):(o=b,void n())}),b.isDefined(i.amFrom)&&g.$watch(i.amFrom,function(b){p=a(b)||""===b?null:d(b),n()}),b.isDefined(i.amWithoutSuffix)&&g.$watch(i.amWithoutSuffix,function(a){"boolean"==typeof a?(r=a,n()):r=f.withoutSuffix}),i.$observe("amFullDateThreshold",function(a){t=a,n()}),i.$observe("amFullDateFormat",function(a){u=a,n()}),g.$on("$destroy",function(){k()}),g.$on("amMoment:localeChanged",function(){n()})}}]).service("amMoment",["moment","$rootScope","$log","angularMomentConfig",function(a,c,d,e){var f=null;this.changeLocale=function(d,e){var f=a.locale(d,e);return b.isDefined(d)&&c.$broadcast("amMoment:localeChanged"),f},this.changeTimezone=function(b){a.tz&&a.tz.setDefault?(a.tz.setDefault(b),c.$broadcast("amMoment:timezoneChanged")):d.warn("angular-moment: changeTimezone() works only with moment-timezone.js v0.3.0 or greater."),e.timezone=b,f=b},this.preprocessDate=function(b){return f!==e.timezone&&this.changeTimezone(e.timezone),e.preprocess?e.preprocess(b):a(!isNaN(parseFloat(b))&&isFinite(b)?parseInt(b,10):b)}}]).filter("amParse",["moment",function(a){return function(b,c){return a(b,c)}}]).filter("amFromUnix",["moment",function(a){return function(b){return a.unix(b)}}]).filter("amUtc",["moment",function(a){return function(b){return a.utc(b)}}]).filter("amUtcOffset",["amMoment",function(a){function b(b,c){return a.preprocessDate(b).utcOffset(c)}return b}]).filter("amLocal",["moment",function(a){return function(b){return a.isMoment(b)?b.local():null}}]).filter("amTimezone",["amMoment","angularMomentConfig","$log",function(a,b,c){function d(b,d){var e=a.preprocessDate(b);return d?e.tz?e.tz(d):(c.warn("angular-moment: named timezone specified but moment.tz() is undefined. Did you forget to include moment-timezone.js ?"),e):e}return d}]).filter("amCalendar",["moment","amMoment","angularMomentConfig",function(b,c,d){function e(b){if(a(b))return"";var d=c.preprocessDate(b);return d.isValid()?d.calendar():""}return e.$stateful=d.statefulFilters,e}]).filter("amDifference",["moment","amMoment","angularMomentConfig",function(b,c,d){function e(d,e,f,g){if(a(d))return"";var h=c.preprocessDate(d),i=a(e)?b():c.preprocessDate(e);return h.isValid()&&i.isValid()?h.diff(i,f,g):""}return e.$stateful=d.statefulFilters,e}]).filter("amDateFormat",["moment","amMoment","angularMomentConfig",function(b,c,d){function e(b,d){if(a(b))return"";var e=c.preprocessDate(b);return e.isValid()?e.format(d):""}return e.$stateful=d.statefulFilters,e}]).filter("amDurationFormat",["moment","angularMomentConfig",function(b,c){function d(c,d,e){return a(c)?"":b.duration(c,d).humanize(e)}return d.$stateful=c.statefulFilters,d}]).filter("amTimeAgo",["moment","amMoment","angularMomentConfig",function(b,c,d){function e(d,e,f){var g,h;return a(d)?"":(d=c.preprocessDate(d),g=b(d),g.isValid()?(h=b(f),!a(f)&&h.isValid()?g.from(h,e):g.fromNow(e)):"")}return e.$stateful=d.statefulFilters,e}]).filter("amSubtract",["moment","angularMomentConfig",function(b,c){function d(c,d,e){return a(c)?"":b(c).subtract(parseInt(d,10),e)}return d.$stateful=c.statefulFilters,d}]).filter("amAdd",["moment","angularMomentConfig",function(b,c){function d(c,d,e){return a(c)?"":b(c).add(parseInt(d,10),e)}return d.$stateful=c.statefulFilters,d}])}"function"==typeof define&&define.amd?define(["angular","moment"],b):"undefined"!=typeof module&&module&&module.exports?(b(require("angular"),require("moment")),module.exports="angularMoment"):b(angular,("undefined"!=typeof global?global:window).moment)}(); | ||
//# sourceMappingURL=angular-moment.min.js.map |
# Changelog | ||
## 1.0.0-beta.2 - 2015-09-20 | ||
- Bugfix: Infinite digest loop when combining `am-time-ago` and `amTimezone` ([#178](https://github.com/urish/angular-moment/issues/178)) | ||
- Bugfix: Cannot use angular-moment under webpack ([#108](https://github.com/urish/angular-moment/issues/108)) | ||
- Add `amLocal` filter (see [#114](https://github.com/urish/angular-moment/issues/114)) | ||
## 1.0.0-beta.1 - 2015-09-14 | ||
@@ -4,0 +10,0 @@ |
{ | ||
"name": "angular-moment", | ||
"version": "1.0.0-beta.1", | ||
"version": "1.0.0-beta.2", | ||
"main": "angular-moment.js", | ||
@@ -5,0 +5,0 @@ "repository": { |
@@ -18,3 +18,3 @@ angular-moment | ||
* Through NuGet: `Install-Package angular-moment` | ||
* From a CDN: [jsDelivr](https://cdn.jsdelivr.net/angular.moment/1.0.0-beta.1/angular-moment.min.js) or [CDNJS](https://cdnjs.cloudflare.com/ajax/libs/angular-moment/1.0.0-beta.1/angular-moment.min.js) | ||
* From a CDN: [jsDelivr](https://cdn.jsdelivr.net/angular.moment/1.0.0-beta.2/angular-moment.min.js) or [CDNJS](https://cdnjs.cloudflare.com/ajax/libs/angular-moment/1.0.0-beta.2/angular-moment.min.js) | ||
* Download from github: [angular-moment.min.js](https://raw.github.com/urish/angular-moment/master/angular-moment.min.js) | ||
@@ -107,2 +107,11 @@ | ||
### amLocal filter | ||
Changes the given moment object to be in the local timezone. Usually used in conjunction with `amUtc` / `amTimezone` | ||
for timezone conversion. For example, the following will convert the given UTC date to local time: | ||
```html | ||
<span>{{message.date | amUtc | amLocal | amDateFormat:'MM.DD.YYYY HH:mm:ss'}}</span> | ||
``` | ||
### amTimezone filter | ||
@@ -109,0 +118,0 @@ |
28
tests.js
@@ -400,2 +400,23 @@ /* License: MIT. | ||
describe('amLocal filter', function () { | ||
var amLocal; | ||
beforeEach(function () { | ||
amLocal = $filter('amLocal'); | ||
}); | ||
it('should convert the given moment object into local object', function () { | ||
var localOffset = moment().utcOffset(); | ||
var utcDate = moment.utc(); | ||
var result = amLocal(utcDate); | ||
expect(moment.isMoment(result)).toBe(true); | ||
expect(result.utcOffset()).toBe(localOffset); | ||
}); | ||
it('should return null if a non moment object was given', function () { | ||
expect(amLocal(null)).toBe(null); | ||
expect(amLocal('test')).toBe(null); | ||
expect(amLocal(new Date())).toBe(null); | ||
}); | ||
}); | ||
describe('amParse filter', function () { | ||
@@ -451,2 +472,9 @@ var amParse; | ||
}); | ||
it('should not cause infinite digest loop when combined with am-time-ago', function () { | ||
$rootScope.testDate = new Date(); | ||
var element = angular.element('<div am-time-ago="testDate|amTimezone:\'UTC\'"></div>'); | ||
element = $compile(element)($rootScope); | ||
$rootScope.$digest(); | ||
}); | ||
}); | ||
@@ -453,0 +481,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
88655
1392
223