input_date.js 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. define([
  2. "angular",
  3. "lodash",
  4. "moment",
  5. ],function (angular, _, moment) {
  6. 'use strict';
  7. angular.
  8. module("grafana.directives").
  9. directive('inputDatetime', function () {
  10. return {
  11. restrict: 'A',
  12. require: 'ngModel',
  13. link: function ($scope, $elem, attrs, ngModel) {
  14. var format = 'YYYY-MM-DD HH:mm:ss';
  15. var fromUser = function (text) {
  16. if (text.indexOf('now') !== -1) {
  17. return text;
  18. }
  19. var parsed;
  20. if ($scope.ctrl.isUtc) {
  21. parsed = moment.utc(text, format);
  22. } else {
  23. parsed = moment(text, format);
  24. }
  25. return parsed.isValid() ? parsed : undefined;
  26. };
  27. var toUser = function (currentValue) {
  28. if (moment.isMoment(currentValue)) {
  29. return currentValue.format(format);
  30. } else {
  31. return currentValue;
  32. }
  33. };
  34. ngModel.$parsers.push(fromUser);
  35. ngModel.$formatters.push(toUser);
  36. }
  37. };
  38. });
  39. });