config.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. (function() {
  2. 'use strict';
  3. angular
  4. .module('config', [])
  5. .config(config);
  6. config.$inject = ['$httpProvider', 'growlProvider'];
  7. var regexIso8601 = /^(\d{4}|\+\d{6})(?:-(\d{2})(?:-(\d{2})(?:T(\d{2}):(\d{2}):(\d{2})\.(\d{1,})(Z|([\-+])(\d{2}):(\d{2}))?)?)?)?$/;
  8. function convertDateStringsToDates(input) {
  9. // Ignore things that aren't objects.
  10. if (typeof input !== "object") return input;
  11. for (var key in input) {
  12. if (!input.hasOwnProperty(key)) continue;
  13. var value = input[key];
  14. var match;
  15. // Check for string properties which look like dates.
  16. if (typeof value === "string" && (match = value.match(regexIso8601))) {
  17. var milliseconds = Date.parse(match[0])
  18. if (!isNaN(milliseconds)) {
  19. input[key] = new Date(milliseconds);
  20. }
  21. } else if (typeof value === "object") {
  22. // Recurse into object
  23. convertDateStringsToDates(value);
  24. }
  25. }
  26. }
  27. function config($httpProvider, growlProvider) {
  28. $httpProvider.defaults.transformResponse.push(function(responseData){
  29. convertDateStringsToDates(responseData);
  30. return responseData;
  31. });
  32. growlProvider.globalReversedOrder(true);
  33. growlProvider.globalTimeToLive(5000);
  34. growlProvider.globalDisableCountDown(true);
  35. };
  36. })();