---------

**Commit 1:**
Modifying the histograms interval to support decimals

* Original sha: da04e108de
* Authored by = <brandon.kobel@elastic.co> on 2016-10-05T20:46:52Z

**Commit 2:**
Removing the input-whole-number, no longer used.

* Original sha: cccb3708c6
* Authored by = <brandon.kobel@elastic.co> on 2016-10-06T17:29:03Z
This commit is contained in:
Elastic Jasper 2016-10-10 15:27:28 -04:00
parent e5b11217e9
commit 21724892eb
7 changed files with 41 additions and 31 deletions

View file

@ -35,12 +35,22 @@ describe('Histogram Agg', function () {
describe('interval', function () {
// reads aggConfig.params.interval, writes to dsl.interval
it('accepts a number', function () {
it('accepts a whole number', function () {
let output = paramWriter.write({ interval: 100 });
expect(output.params).to.have.property('interval', 100);
});
it('accepts a string', function () {
it('accepts a decimal number', function () {
let output = paramWriter.write({ interval: 0.1 });
expect(output.params).to.have.property('interval', 0.1);
});
it('accepts a decimal number string', function () {
let output = paramWriter.write({ interval: '0.1' });
expect(output.params).to.have.property('interval', 0.1);
});
it('accepts a whole number string', function () {
let output = paramWriter.write({ interval: '10' });
expect(output.params).to.have.property('interval', 10);
});

View file

@ -1,5 +1,5 @@
import moment from 'moment';
import 'ui/directives/input_whole_number';
export default function IntervalOptionsService(Private) {
// shorthand

View file

@ -29,7 +29,7 @@ export default function HistogramAggDefinition(Private) {
name: 'interval',
editor: intervalTemplate,
write: function (aggConfig, output) {
output.params.interval = parseInt(aggConfig.params.interval, 10);
output.params.interval = parseFloat(aggConfig.params.interval);
}
},

View file

@ -35,6 +35,6 @@
class="form-control"
name="interval"
min="0"
input-whole-number
input-number
>
</div>

View file

@ -1,12 +1,12 @@
import angular from 'angular';
import expect from 'expect.js';
import ngMock from 'ng_mock';
import 'ui/directives/input_whole_number';
import 'ui/directives/input_number';
describe('Whole number input directive', function () {
describe('Number input directive', function () {
let $compile;
let $rootScope;
let html = '<input type="text" ng-model="value" input-whole-number />';
let html = '<input type="text" ng-model="value" input-number />';
beforeEach(ngMock.module('kibana'));
@ -22,16 +22,16 @@ describe('Whole number input directive', function () {
$rootScope.$digest();
expect(element.hasClass('ng-valid')).to.be.ok();
$rootScope.value = '1.0';
$rootScope.value = '1';
$rootScope.$digest();
expect(element.hasClass('ng-valid')).to.be.ok();
$rootScope.value = '-5.0';
$rootScope.value = '-5';
$rootScope.$digest();
expect(element.hasClass('ng-valid')).to.be.ok();
});
it('should disallow numbers with decimals', function () {
it('should allow numbers with decimals', function () {
let element = $compile(html)($rootScope);
$rootScope.value = '123.0';
@ -40,10 +40,10 @@ describe('Whole number input directive', function () {
$rootScope.value = '1.2';
$rootScope.$digest();
expect(element.hasClass('ng-invalid')).to.be.ok();
expect(element.hasClass('ng-valid')).to.be.ok();
$rootScope.value = '-5.5';
$rootScope.$digest();
expect(element.hasClass('ng-invalid')).to.be.ok();
expect(element.hasClass('ng-valid')).to.be.ok();
});
});

View file

@ -0,0 +1,18 @@
import uiModules from 'ui/modules';
let module = uiModules.get('kibana');
module.directive('inputNumber', function () {
return {
restrict: 'A',
require: 'ngModel',
link: function ($scope, $elem, attrs, ngModel) {
ngModel.$parsers.push(checkNumber);
ngModel.$formatters.push(checkNumber);
function checkNumber(value) {
ngModel.$setValidity('number', !isNaN(parseFloat(value)));
return value;
}
}
};
});

View file

@ -1,18 +0,0 @@
import uiModules from 'ui/modules';
let module = uiModules.get('kibana');
module.directive('inputWholeNumber', function () {
return {
restrict: 'A',
require: 'ngModel',
link: function ($scope, $elem, attrs, ngModel) {
ngModel.$parsers.push(checkWholeNumber);
ngModel.$formatters.push(checkWholeNumber);
function checkWholeNumber(value) {
ngModel.$setValidity('whole', value % 1 === 0);
return value;
}
}
};
});