Add ISODateToMiddleEndian filter
Project: http://git-wip-us.apache.org/repos/asf/climate/repo Commit: http://git-wip-us.apache.org/repos/asf/climate/commit/8f13d2b9 Tree: http://git-wip-us.apache.org/repos/asf/climate/tree/8f13d2b9 Diff: http://git-wip-us.apache.org/repos/asf/climate/diff/8f13d2b9 Branch: refs/heads/master Commit: 8f13d2b9177367e6a9cc56e6f77e6d3f0f4214b3 Parents: b39b3dd Author: Michael Joyce <[email protected]> Authored: Wed Jul 16 10:22:11 2014 -0700 Committer: Michael Joyce <[email protected]> Committed: Wed Jul 16 10:22:11 2014 -0700 ---------------------------------------------------------------------- ocw-ui/frontend-new/app/index.html | 1 + .../scripts/filters/isodatetomiddleendian.js | 36 ++++++++++++++++++++ .../test/spec/filters/isodatetomiddleendian.js | 19 +++++++++++ 3 files changed, 56 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/climate/blob/8f13d2b9/ocw-ui/frontend-new/app/index.html ---------------------------------------------------------------------- diff --git a/ocw-ui/frontend-new/app/index.html b/ocw-ui/frontend-new/app/index.html index 2b07b4d..5ca9aad 100644 --- a/ocw-ui/frontend-new/app/index.html +++ b/ocw-ui/frontend-new/app/index.html @@ -104,6 +104,7 @@ <script src="scripts/directives/predictivefilebrowserinput.js"></script> <script src="scripts/directives/previewmap.js"></script> <script src="scripts/directives/timeline.js"></script> + <script src="scripts/filters/isodatetomiddleendian.js"></script> <!-- endbuild --> </body> </html> http://git-wip-us.apache.org/repos/asf/climate/blob/8f13d2b9/ocw-ui/frontend-new/app/scripts/filters/isodatetomiddleendian.js ---------------------------------------------------------------------- diff --git a/ocw-ui/frontend-new/app/scripts/filters/isodatetomiddleendian.js b/ocw-ui/frontend-new/app/scripts/filters/isodatetomiddleendian.js new file mode 100644 index 0000000..fce091c --- /dev/null +++ b/ocw-ui/frontend-new/app/scripts/filters/isodatetomiddleendian.js @@ -0,0 +1,36 @@ +'use strict'; + +/** + * @ngdoc filter + * @name ocwUiApp.filter:ISODateToMiddleEndian + * @function + * @description + * # ISODateToMiddleEndian + * Filter in the ocwUiApp. + */ +angular.module('ocwUiApp') +.filter('ISODateToMiddleEndian', function() { + return function(input) { + var original = input; + + // Strip whitespace from the start and end of the string + input = input.replace(/(^\s+|\s+$)/g, ''); + + // ISO Standard says time is separated from Date with a 'T'. Our timestamps + // slightly modify that and use a space. We'll check for both here and prefer + // to split on a 'T' if it's available. + if (input.indexOf('T') != -1 || input.indexOf(' ') != -1) { + input = (input.indexOf('T') != -1) ? input.split('T')[0] : input.split(' ')[0]; + } + + // The components of the date should be split with hyphens. If we can't find them + // then the string is poorly formed. + if (input.indexOf('-') == -1 || input.split('-').length - 1 != 2) { + return original; + } + + // At this point the date is probably valid and we should try to convert it! + var components = input.split('-'); + return (components[1] + "/" + components[2] + "/" + components[0]); + }; +}); http://git-wip-us.apache.org/repos/asf/climate/blob/8f13d2b9/ocw-ui/frontend-new/test/spec/filters/isodatetomiddleendian.js ---------------------------------------------------------------------- diff --git a/ocw-ui/frontend-new/test/spec/filters/isodatetomiddleendian.js b/ocw-ui/frontend-new/test/spec/filters/isodatetomiddleendian.js new file mode 100644 index 0000000..22d30a2 --- /dev/null +++ b/ocw-ui/frontend-new/test/spec/filters/isodatetomiddleendian.js @@ -0,0 +1,19 @@ +'use strict'; + +describe('Filter: ISODateToMiddleEndian', function () { + + // load the filter's module + beforeEach(module('ocwUiApp')); + + // initialize a new instance of the filter before each test + var ISODateToMiddleEndian; + beforeEach(inject(function ($filter) { + ISODateToMiddleEndian = $filter('ISODateToMiddleEndian'); + })); + + it('should return the input prefixed with "ISODateToMiddleEndian filter:"', function () { + var text = 'angularjs'; + expect(ISODateToMiddleEndian(text)).toBe('ISODateToMiddleEndian filter: ' + text); + }); + +});
