mirror of
https://github.com/grafana/grafana.git
synced 2024-12-02 05:29:42 -06:00
55 lines
1.3 KiB
JavaScript
55 lines
1.3 KiB
JavaScript
define([
|
|
'angular',
|
|
'kbn'
|
|
],
|
|
function (angular, kbn) {
|
|
'use strict';
|
|
|
|
angular
|
|
.module('grafana.directives')
|
|
.directive('ngModelOnblur', function() {
|
|
return {
|
|
restrict: 'A',
|
|
priority: 1,
|
|
require: 'ngModel',
|
|
link: function(scope, elm, attr, ngModelCtrl) {
|
|
if (attr.type === 'radio' || attr.type === 'checkbox') {
|
|
return;
|
|
}
|
|
|
|
elm.off('input keydown change');
|
|
elm.bind('blur', function() {
|
|
scope.$apply(function() {
|
|
ngModelCtrl.$setViewValue(elm.val());
|
|
});
|
|
});
|
|
}
|
|
};
|
|
})
|
|
.directive('emptyToNull', function () {
|
|
return {
|
|
restrict: 'A',
|
|
require: 'ngModel',
|
|
link: function (scope, elm, attrs, ctrl) {
|
|
ctrl.$parsers.push(function (viewValue) {
|
|
if(viewValue === "") { return null; }
|
|
return viewValue;
|
|
});
|
|
}
|
|
};
|
|
})
|
|
.directive('validTimeSpan', function() {
|
|
return {
|
|
require: 'ngModel',
|
|
link: function(scope, elm, attrs, ctrl) {
|
|
ctrl.$validators.integer = function(modelValue, viewValue) {
|
|
if (ctrl.$isEmpty(modelValue)) {
|
|
return true;
|
|
}
|
|
return kbn.isValidTimeSpan(viewValue);
|
|
};
|
|
}
|
|
};
|
|
});
|
|
});
|