mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 17:28:26 -04:00
Backport PR #8566
--------- **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:
parent
e5b11217e9
commit
21724892eb
7 changed files with 41 additions and 31 deletions
|
@ -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);
|
||||
});
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import moment from 'moment';
|
||||
import 'ui/directives/input_whole_number';
|
||||
|
||||
export default function IntervalOptionsService(Private) {
|
||||
|
||||
// shorthand
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
},
|
||||
|
||||
|
|
|
@ -35,6 +35,6 @@
|
|||
class="form-control"
|
||||
name="interval"
|
||||
min="0"
|
||||
input-whole-number
|
||||
input-number
|
||||
>
|
||||
</div>
|
||||
|
|
|
@ -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();
|
||||
});
|
||||
});
|
18
src/ui/public/directives/input_number.js
Normal file
18
src/ui/public/directives/input_number.js
Normal 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;
|
||||
}
|
||||
}
|
||||
};
|
||||
});
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
};
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue