mirror of
https://github.com/grafana/grafana.git
synced 2025-02-14 17:43:35 -06:00
53 lines
1.3 KiB
TypeScript
53 lines
1.3 KiB
TypeScript
///<reference path="../../../headers/common.d.ts" />
|
|
|
|
import moment from 'moment';
|
|
import * as dateMath from 'app/core/utils/datemath';
|
|
|
|
export function inputDateDirective() {
|
|
return {
|
|
restrict: 'A',
|
|
require: 'ngModel',
|
|
link: function ($scope, $elem, attrs, ngModel) {
|
|
var format = 'YYYY-MM-DD HH:mm:ss';
|
|
|
|
var fromUser = function (text) {
|
|
if (text.indexOf('now') !== -1) {
|
|
if (!dateMath.isValid(text)) {
|
|
ngModel.$setValidity("error", false);
|
|
return undefined;
|
|
}
|
|
ngModel.$setValidity("error", true);
|
|
return text;
|
|
}
|
|
|
|
var parsed;
|
|
if ($scope.ctrl.isUtc) {
|
|
parsed = moment.utc(text, format);
|
|
} else {
|
|
parsed = moment(text, format);
|
|
}
|
|
|
|
if (!parsed.isValid()) {
|
|
ngModel.$setValidity("error", false);
|
|
return undefined;
|
|
}
|
|
|
|
ngModel.$setValidity("error", true);
|
|
return parsed;
|
|
};
|
|
|
|
var toUser = function (currentValue) {
|
|
if (moment.isMoment(currentValue)) {
|
|
return currentValue.format(format);
|
|
} else {
|
|
return currentValue;
|
|
}
|
|
};
|
|
|
|
ngModel.$parsers.push(fromUser);
|
|
ngModel.$formatters.push(toUser);
|
|
}
|
|
};
|
|
}
|
|
|