diff --git a/src/app/directives/ngModelOnBlur.js b/src/app/directives/ngModelOnBlur.js index 1aea09f9dc8..8057c071bdb 100644 --- a/src/app/directives/ngModelOnBlur.js +++ b/src/app/directives/ngModelOnBlur.js @@ -1,5 +1,8 @@ -define(['angular'], -function (angular) { +define([ + 'angular', + 'kbn' +], +function (angular, kbn) { 'use strict'; angular @@ -34,5 +37,18 @@ function (angular) { }); } }; + }) + .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); + }; + } + }; }); }); diff --git a/src/app/features/panel/partials/panelTime.html b/src/app/features/panel/partials/panelTime.html index 7b8b507a2ae..0c407cf2ff1 100644 --- a/src/app/features/panel/partials/panelTime.html +++ b/src/app/features/panel/partials/panelTime.html @@ -12,8 +12,8 @@ Last
  • -
  • @@ -31,8 +31,8 @@ Amount
  • -
  • diff --git a/src/app/panels/timepicker/editor.html b/src/app/panels/timepicker/editor.html index 33a5fbfaf00..34712ad582d 100644 --- a/src/app/panels/timepicker/editor.html +++ b/src/app/panels/timepicker/editor.html @@ -18,7 +18,10 @@
  • + ng-model="panel.nowDelay" placeholder="0m" + valid-time-span + bs-tooltip="'Enter 1m to ignore the last minute (because it can contain incomplete metrics)'" + data-placement="right">
  • diff --git a/src/css/less/grafana.less b/src/css/less/grafana.less index 7b32d09e854..55e8def8f33 100644 --- a/src/css/less/grafana.less +++ b/src/css/less/grafana.less @@ -13,6 +13,7 @@ @import "gfbox.less"; @import "dashlist.less"; @import "admin.less"; +@import "validation.less"; .row-control-inner { padding:0px; diff --git a/src/css/less/validation.less b/src/css/less/validation.less new file mode 100644 index 00000000000..a0568bfc96a --- /dev/null +++ b/src/css/less/validation.less @@ -0,0 +1,3 @@ +input[type=text].ng-invalid { + box-shadow: inset 0 0px 7px @red; +}