Merge remote-tracking branch 'upstream/master' into fix/moveAppendNavControls
This commit is contained in:
commit
e948df36aa
|
@ -157,7 +157,7 @@
|
||||||
"grunt-cli": "0.1.13",
|
"grunt-cli": "0.1.13",
|
||||||
"grunt-contrib-clean": "0.6.0",
|
"grunt-contrib-clean": "0.6.0",
|
||||||
"grunt-contrib-copy": "0.8.1",
|
"grunt-contrib-copy": "0.8.1",
|
||||||
"grunt-esvm": "3.0.4",
|
"grunt-esvm": "3.1.1",
|
||||||
"grunt-karma": "0.12.0",
|
"grunt-karma": "0.12.0",
|
||||||
"grunt-run": "0.5.0",
|
"grunt-run": "0.5.0",
|
||||||
"grunt-s3": "0.2.0-alpha.3",
|
"grunt-s3": "0.2.0-alpha.3",
|
||||||
|
|
|
@ -16,7 +16,7 @@ function stubbedLogstashFields() {
|
||||||
{ name: 'extension', type: 'string', indexed: true, analyzed: true, sortable: true, filterable: true },
|
{ name: 'extension', type: 'string', indexed: true, analyzed: true, sortable: true, filterable: true },
|
||||||
{ name: 'machine.os', type: 'string', indexed: true, analyzed: true, sortable: true, filterable: true },
|
{ name: 'machine.os', type: 'string', indexed: true, analyzed: true, sortable: true, filterable: true },
|
||||||
{ name: 'geo.src', type: 'string', indexed: true, analyzed: true, sortable: true, filterable: true },
|
{ name: 'geo.src', type: 'string', indexed: true, analyzed: true, sortable: true, filterable: true },
|
||||||
{ name: '_type', type: 'string', indexed: true, analyzed: true, sortable: true, filterable: true },
|
{ name: '_type', type: 'string', indexed: false, analyzed: true, sortable: true, filterable: true },
|
||||||
{ name: '_id', type: 'string', indexed: false, analyzed: false, sortable: false, filterable: true},
|
{ name: '_id', type: 'string', indexed: false, analyzed: false, sortable: false, filterable: true},
|
||||||
{ name: '_source', type: 'string', indexed: false, analyzed: false, sortable: false, filterable: false},
|
{ name: '_source', type: 'string', indexed: false, analyzed: false, sortable: false, filterable: false},
|
||||||
{ name: 'custom_user_field', type: 'conflict', indexed: false, analyzed: false, sortable: false, filterable: true },
|
{ name: 'custom_user_field', type: 'conflict', indexed: false, analyzed: false, sortable: false, filterable: true },
|
||||||
|
|
|
@ -5,6 +5,7 @@ import VisSchemasProvider from 'ui/vis/schemas';
|
||||||
import AggResponseGeoJsonGeoJsonProvider from 'ui/agg_response/geo_json/geo_json';
|
import AggResponseGeoJsonGeoJsonProvider from 'ui/agg_response/geo_json/geo_json';
|
||||||
import FilterBarPushFilterProvider from 'ui/filter_bar/push_filter';
|
import FilterBarPushFilterProvider from 'ui/filter_bar/push_filter';
|
||||||
import tileMapTemplate from 'plugins/kbn_vislib_vis_types/editors/tile_map.html';
|
import tileMapTemplate from 'plugins/kbn_vislib_vis_types/editors/tile_map.html';
|
||||||
|
|
||||||
export default function TileMapVisType(Private, getAppState, courier, config) {
|
export default function TileMapVisType(Private, getAppState, courier, config) {
|
||||||
const VislibVisType = Private(VislibVisTypeVislibVisTypeProvider);
|
const VislibVisType = Private(VislibVisTypeVislibVisTypeProvider);
|
||||||
const Schemas = Private(VisSchemasProvider);
|
const Schemas = Private(VisSchemasProvider);
|
||||||
|
@ -120,6 +121,8 @@ export default function TileMapVisType(Private, getAppState, courier, config) {
|
||||||
group: 'buckets',
|
group: 'buckets',
|
||||||
name: 'split',
|
name: 'split',
|
||||||
title: 'Split Chart',
|
title: 'Split Chart',
|
||||||
|
deprecate: true,
|
||||||
|
deprecateMessage: 'The Split Chart feature for Tile Maps has been deprecated.',
|
||||||
min: 0,
|
min: 0,
|
||||||
max: 1
|
max: 1
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<div dashboard-app class="app-container dashboard-container">
|
<div dashboard-app class="app-container dashboard-container">
|
||||||
<navbar name="dashboard-options" class="kibana-nav-options">
|
<navbar name="dashboard" class="kibana-nav-options">
|
||||||
<div class="kibana-nav-info">
|
<div class="kibana-nav-info">
|
||||||
<span ng-show="dash.id" class="kibana-nav-info-title">
|
<span ng-show="dash.id" class="kibana-nav-info-title">
|
||||||
<span ng-bind="::dash.title"></span>
|
<span ng-bind="::dash.title"></span>
|
||||||
|
@ -51,8 +51,9 @@
|
||||||
ng-click="configTemplate.toggle('options');">
|
ng-click="configTemplate.toggle('options');">
|
||||||
<span>Options</span>
|
<span>Options</span>
|
||||||
</button>
|
</button>
|
||||||
<kbn-global-timepicker></kbn-global-timepicker>
|
|
||||||
</div>
|
</div>
|
||||||
|
<kbn-global-timepicker></kbn-global-timepicker>
|
||||||
|
<div class="chrome-actions" kbn-chrome-append-nav-controls></div>
|
||||||
</navbar>
|
</navbar>
|
||||||
<config config-template="configTemplate" config-object="opts"></config>
|
<config config-template="configTemplate" config-object="opts"></config>
|
||||||
|
|
||||||
|
|
|
@ -481,8 +481,7 @@ app.controller('discover', function ($scope, config, courier, $route, $window, N
|
||||||
schema: 'segment',
|
schema: 'segment',
|
||||||
params: {
|
params: {
|
||||||
field: $scope.opts.timefield,
|
field: $scope.opts.timefield,
|
||||||
interval: $state.interval,
|
interval: $state.interval
|
||||||
min_doc_count: 0
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<div ng-controller="discover" class="app-container">
|
<div ng-controller="discover" class="app-container">
|
||||||
<navbar name="discover-options" class="kibana-nav-options">
|
<navbar name="discover" class="kibana-nav-options">
|
||||||
<div class="kibana-nav-info">
|
<div class="kibana-nav-info">
|
||||||
<span ng-show="opts.savedSearch.id" class="kibana-nav-info-title">
|
<span ng-show="opts.savedSearch.id" class="kibana-nav-info-title">
|
||||||
<span ng-bind="::opts.savedSearch.title"></span>
|
<span ng-bind="::opts.savedSearch.title"></span>
|
||||||
|
@ -39,8 +39,9 @@
|
||||||
ng-click="configTemplate.toggle('share');">
|
ng-click="configTemplate.toggle('share');">
|
||||||
<span>Share</span>
|
<span>Share</span>
|
||||||
</button>
|
</button>
|
||||||
<kbn-global-timepicker></kbn-global-timepicker>
|
|
||||||
</div>
|
</div>
|
||||||
|
<kbn-global-timepicker></kbn-global-timepicker>
|
||||||
|
<div class="chrome-actions" kbn-chrome-append-nav-controls></div>
|
||||||
</navbar>
|
</navbar>
|
||||||
<config
|
<config
|
||||||
config-template="configTemplate"
|
config-template="configTemplate"
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
<label>Select {{ groupName }} type</label>
|
<label>Select {{ groupName }} type</label>
|
||||||
<ul class="form-group list-group list-group-menu">
|
<ul class="form-group list-group list-group-menu">
|
||||||
<li
|
<li
|
||||||
|
ng-hide="schema.deprecate"
|
||||||
ng-repeat="schema in availableSchema"
|
ng-repeat="schema in availableSchema"
|
||||||
ng-click="add.submit(schema)"
|
ng-click="add.submit(schema)"
|
||||||
class="list-group-item list-group-menu-item">
|
class="list-group-item list-group-menu-item">
|
||||||
|
@ -18,10 +19,10 @@
|
||||||
class="vis-editor-agg-wide-btn">
|
class="vis-editor-agg-wide-btn">
|
||||||
|
|
||||||
<div ng-if="!add.form">
|
<div ng-if="!add.form">
|
||||||
<div class="btn btn-sm btn-primary" ng-if="groupName !== 'buckets' || !stats.count">
|
<div class="btn btn-sm btn-primary" ng-if="groupName !== 'buckets' || !stats.count && !stats.deprecate">
|
||||||
Add {{ groupName }}
|
Add {{ groupName }}
|
||||||
</div>
|
</div>
|
||||||
<div class="btn btn-sm btn-primary" ng-if="groupName === 'buckets' && stats.count > 0">
|
<div class="btn btn-sm btn-primary" ng-if="groupName === 'buckets' && stats.count > 0 && !stats.deprecate">
|
||||||
Add sub-{{ groupName }}
|
Add sub-{{ groupName }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -33,6 +33,7 @@ uiModules
|
||||||
$scope.schemas.forEach(function (schema) {
|
$scope.schemas.forEach(function (schema) {
|
||||||
stats.min += schema.min;
|
stats.min += schema.min;
|
||||||
stats.max += schema.max;
|
stats.max += schema.max;
|
||||||
|
stats.deprecate = schema.deprecate;
|
||||||
});
|
});
|
||||||
|
|
||||||
$scope.availableSchema = $scope.schemas.filter(function (schema) {
|
$scope.availableSchema = $scope.schemas.filter(function (schema) {
|
||||||
|
|
|
@ -10,4 +10,13 @@
|
||||||
style="display: none;">
|
style="display: none;">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- schema editors get added down here: aggSelect.html, agg_types/controls/*.html -->
|
<div ng-if="agg.schema.deprecate" class="form-group">
|
||||||
|
<p ng-show="agg.schema.deprecateMessage" class="vis-editor-agg-error">
|
||||||
|
{{ agg.schema.deprecateMessage }}
|
||||||
|
</p>
|
||||||
|
<p ng-show="!agg.schema.deprecateMessage" class="vis-editor-agg-error">
|
||||||
|
"{{ agg.schema.title }}" has been deprecated.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- schema editors get added down here: aggSelect.html, agg_types/controls/*.html -->
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<div ng-controller="VisEditor" class="app-container vis-editor vis-type-{{ vis.type.name }}">
|
<div ng-controller="VisEditor" class="app-container vis-editor vis-type-{{ vis.type.name }}">
|
||||||
<navbar name="visualize-options" class="kibana-nav-options" ng-if="chrome.getVisible()">
|
<navbar name="visualize" class="kibana-nav-options" ng-if="chrome.getVisible()">
|
||||||
<div class="vis-editor-info">
|
<div class="vis-editor-info">
|
||||||
<span ng-show="savedVis.id" class="vis-editor-info-title">
|
<span ng-show="savedVis.id" class="vis-editor-info-title">
|
||||||
<span ng-bind="::savedVis.title"></span>
|
<span ng-bind="::savedVis.title"></span>
|
||||||
|
@ -46,8 +46,9 @@
|
||||||
aria-label="Refresh">
|
aria-label="Refresh">
|
||||||
<span>Refresh</span>
|
<span>Refresh</span>
|
||||||
</button>
|
</button>
|
||||||
<kbn-global-timepicker></kbn-global-timepicker>
|
|
||||||
</div>
|
</div>
|
||||||
|
<kbn-global-timepicker></kbn-global-timepicker>
|
||||||
|
<div class="chrome-actions" kbn-chrome-append-nav-controls></div>
|
||||||
</navbar>
|
</navbar>
|
||||||
<config
|
<config
|
||||||
ng-if="chrome.getVisible()"
|
ng-if="chrome.getVisible()"
|
||||||
|
|
|
@ -150,14 +150,6 @@ export default function DateHistogramAggType(timefilter, config, Private) {
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var bounds = timefilter.getActiveBounds();
|
|
||||||
if (bounds) {
|
|
||||||
output.params.extended_bounds = {
|
|
||||||
min: moment(bounds.min).valueOf(),
|
|
||||||
max: moment(bounds.max).valueOf()
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,49 +1,34 @@
|
||||||
import d3 from 'd3';
|
import d3 from 'd3';
|
||||||
import { callEach } from 'lodash';
|
|
||||||
import { bindKey } from 'lodash';
|
|
||||||
import { rest } from 'lodash';
|
|
||||||
import $ from 'jquery';
|
import $ from 'jquery';
|
||||||
|
|
||||||
function Binder($scope) {
|
import Binder from '../../../utils/binder';
|
||||||
this.disposal = [];
|
|
||||||
if ($scope) {
|
export default class UiBinder extends Binder {
|
||||||
$scope.$on('$destroy', bindKey(this, 'destroy'));
|
constructor($scope) {
|
||||||
|
super();
|
||||||
|
|
||||||
|
// support auto-binding to $scope objects
|
||||||
|
if ($scope) {
|
||||||
|
$scope.$on('$destroy', () => this.destroy());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
jqOn(el, ...args) {
|
||||||
|
const $el = $(el);
|
||||||
|
$el.on(...args);
|
||||||
|
this.disposal.push(() => $el.off(...args));
|
||||||
|
}
|
||||||
|
|
||||||
|
fakeD3Bind(el, event, handler) {
|
||||||
|
this.jqOn(el, event, (e) => {
|
||||||
|
// mimick https://github.com/mbostock/d3/blob/3abb00113662463e5c19eb87cd33f6d0ddc23bc0/src/selection/on.js#L87-L94
|
||||||
|
const o = d3.event; // Events can be reentrant (e.g., focus).
|
||||||
|
d3.event = e;
|
||||||
|
try {
|
||||||
|
handler.apply(this, [this.__data__]);
|
||||||
|
} finally {
|
||||||
|
d3.event = o;
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Binder.prototype._bind = function (on, off, emitter, args) {
|
|
||||||
on.apply(emitter, args);
|
|
||||||
this.disposal.push(function () {
|
|
||||||
off.apply(emitter, args);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
Binder.prototype.on = function (emitter/*, ...args */) {
|
|
||||||
this._bind(emitter.on, emitter.off || emitter.removeListener, emitter, rest(arguments));
|
|
||||||
};
|
|
||||||
|
|
||||||
Binder.prototype.jqOn = function (el/*, ...args */) {
|
|
||||||
var $el = $(el);
|
|
||||||
this._bind($el.on, $el.off, $el, rest(arguments));
|
|
||||||
};
|
|
||||||
|
|
||||||
Binder.prototype.fakeD3Bind = function (el, event, handler) {
|
|
||||||
this.jqOn(el, event, function (e) {
|
|
||||||
// mimick https://github.com/mbostock/d3/blob/3abb00113662463e5c19eb87cd33f6d0ddc23bc0/src/selection/on.js#L87-L94
|
|
||||||
var o = d3.event; // Events can be reentrant (e.g., focus).
|
|
||||||
d3.event = e;
|
|
||||||
try {
|
|
||||||
handler.apply(this, [this.__data__]);
|
|
||||||
} finally {
|
|
||||||
d3.event = o;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
Binder.prototype.destroy = function () {
|
|
||||||
var destroyers = this.disposal;
|
|
||||||
this.disposal = [];
|
|
||||||
callEach(destroyers);
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports = Binder;
|
|
||||||
|
|
|
@ -20,6 +20,8 @@ export default function CourierFetchCallClient(Private, Promise, es, esShardTime
|
||||||
const executable = statuses.filter(isRequest);
|
const executable = statuses.filter(isRequest);
|
||||||
let execCount = executable.length;
|
let execCount = executable.length;
|
||||||
|
|
||||||
|
if (!execCount) return Promise.resolve([]);
|
||||||
|
|
||||||
// resolved by respond()
|
// resolved by respond()
|
||||||
let esPromise;
|
let esPromise;
|
||||||
const defer = Promise.defer();
|
const defer = Promise.defer();
|
||||||
|
|
|
@ -29,22 +29,26 @@ export default function FetchTheseProvider(Private, Promise) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function fetchWithStrategy(strategy, requests) {
|
function fetchWithStrategy(strategy, requests) {
|
||||||
|
function replaceAbortedRequests() {
|
||||||
|
requests = requests.map(r => r.aborted ? ABORTED : r);
|
||||||
|
}
|
||||||
|
|
||||||
requests = requests.map(function (req) {
|
replaceAbortedRequests();
|
||||||
return req.aborted ? ABORTED : req;
|
|
||||||
});
|
|
||||||
|
|
||||||
return startRequests(requests)
|
return startRequests(requests)
|
||||||
.then(function () {
|
.then(function () {
|
||||||
|
replaceAbortedRequests();
|
||||||
return callClient(strategy, requests);
|
return callClient(strategy, requests);
|
||||||
})
|
})
|
||||||
.then(function (responses) {
|
.then(function (responses) {
|
||||||
|
replaceAbortedRequests();
|
||||||
return callResponseHandlers(requests, responses);
|
return callResponseHandlers(requests, responses);
|
||||||
})
|
})
|
||||||
.then(function (responses) {
|
.then(function (responses) {
|
||||||
|
replaceAbortedRequests();
|
||||||
return continueIncomplete(strategy, requests, responses, fetchWithStrategy);
|
return continueIncomplete(strategy, requests, responses, fetchWithStrategy);
|
||||||
})
|
})
|
||||||
.then(function (responses) {
|
.then(function (responses) {
|
||||||
|
replaceAbortedRequests();
|
||||||
return responses.map(function (resp) {
|
return responses.map(function (resp) {
|
||||||
switch (resp) {
|
switch (resp) {
|
||||||
case ABORTED:
|
case ABORTED:
|
||||||
|
|
|
@ -32,9 +32,7 @@ describe('ui/courier/fetch/request/segmented', () => {
|
||||||
expect(returned.then).to.be.Function;
|
expect(returned.then).to.be.Function;
|
||||||
});
|
});
|
||||||
|
|
||||||
it('does not call super.start() until promise is resolved', () => {
|
it('calls super.start() synchronously', () => {
|
||||||
expect(searchReqStart.called).to.be(false);
|
|
||||||
$rootScope.$apply();
|
|
||||||
expect(searchReqStart.called).to.be(true);
|
expect(searchReqStart.called).to.be(true);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -42,6 +42,8 @@ export default function SegmentedReqProvider(es, Private, Promise, timefilter, c
|
||||||
*********/
|
*********/
|
||||||
|
|
||||||
start() {
|
start() {
|
||||||
|
super.start();
|
||||||
|
|
||||||
this._complete = [];
|
this._complete = [];
|
||||||
this._active = null;
|
this._active = null;
|
||||||
this._segments = [];
|
this._segments = [];
|
||||||
|
@ -61,12 +63,12 @@ export default function SegmentedReqProvider(es, Private, Promise, timefilter, c
|
||||||
// parameters via the handle
|
// parameters via the handle
|
||||||
if (_.isFunction(this._initFn)) this._initFn(this._handle);
|
if (_.isFunction(this._initFn)) this._initFn(this._handle);
|
||||||
return this._createQueue().then((queue) => {
|
return this._createQueue().then((queue) => {
|
||||||
|
if (this.stopped) return;
|
||||||
|
|
||||||
this._all = queue.slice(0);
|
this._all = queue.slice(0);
|
||||||
|
|
||||||
// Send the initial fetch status
|
// Send the initial fetch status
|
||||||
this._reportStatus();
|
this._reportStatus();
|
||||||
|
|
||||||
return super.start();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
import ngMock from 'ng_mock';
|
||||||
|
import expect from 'expect.js';
|
||||||
|
|
||||||
|
import MockState from 'fixtures/mock_state';
|
||||||
|
import notify from 'ui/notify';
|
||||||
|
import AggConfigResult from 'ui/vis/agg_config_result';
|
||||||
|
|
||||||
|
import VisProvider from 'ui/vis';
|
||||||
|
import StubbedLogstashIndexPatternProvider from 'fixtures/stubbed_logstash_index_pattern';
|
||||||
|
import FilterBarClickHandlerProvider from 'ui/filter_bar/filter_bar_click_handler';
|
||||||
|
|
||||||
|
describe('filterBarClickHandler', function () {
|
||||||
|
let setup = null;
|
||||||
|
|
||||||
|
beforeEach(ngMock.module('kibana'));
|
||||||
|
beforeEach(ngMock.inject(function (Private) {
|
||||||
|
setup = function () {
|
||||||
|
const Vis = Private(VisProvider);
|
||||||
|
const createClickHandler = Private(FilterBarClickHandlerProvider);
|
||||||
|
const indexPattern = Private(StubbedLogstashIndexPatternProvider);
|
||||||
|
|
||||||
|
const vis = new Vis(indexPattern, {
|
||||||
|
type: 'histogram',
|
||||||
|
aggs: [
|
||||||
|
{ type: 'count', schema: 'metric' },
|
||||||
|
{
|
||||||
|
type: 'terms',
|
||||||
|
schema: 'segment',
|
||||||
|
params: { field: '_type' }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
const aggConfigResult = new AggConfigResult(vis.aggs[1], void 0, 'apache', 'apache');
|
||||||
|
|
||||||
|
const $state = new MockState({ filters: [] });
|
||||||
|
const clickHandler = createClickHandler($state);
|
||||||
|
|
||||||
|
return { clickHandler, $state, aggConfigResult };
|
||||||
|
};
|
||||||
|
}));
|
||||||
|
|
||||||
|
afterEach(function () {
|
||||||
|
notify._notifs.splice(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
context('on non-filterable fields', function () {
|
||||||
|
it('warns about trying to filter on a non-filterable field', function () {
|
||||||
|
const { clickHandler, aggConfigResult } = setup();
|
||||||
|
expect(notify._notifs).to.have.length(0);
|
||||||
|
clickHandler({ point: { aggConfigResult }});
|
||||||
|
expect(notify._notifs).to.have.length(1);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('does not warn if the event is click is being simulated', function () {
|
||||||
|
const { clickHandler, aggConfigResult } = setup();
|
||||||
|
expect(notify._notifs).to.have.length(0);
|
||||||
|
clickHandler({ point: { aggConfigResult }}, true);
|
||||||
|
expect(notify._notifs).to.have.length(0);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
|
@ -39,7 +39,9 @@ export default function (Notifier) {
|
||||||
try {
|
try {
|
||||||
return result.createFilter();
|
return result.createFilter();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
notify.warning(e.message);
|
if (!simulate) {
|
||||||
|
notify.warning(e.message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.filter(Boolean)
|
.filter(Boolean)
|
||||||
|
|
|
@ -46,7 +46,7 @@
|
||||||
//** By default, this inherits from the `<body>`.
|
//** By default, this inherits from the `<body>`.
|
||||||
@headings-font-family: @font-family-base;
|
@headings-font-family: @font-family-base;
|
||||||
@headings-font-weight: 400;
|
@headings-font-weight: 400;
|
||||||
@headings-line-height: 1.1;
|
@headings-line-height: 1.3;
|
||||||
//** By default, this inherits from the `<body>`.
|
//** By default, this inherits from the `<body>`.
|
||||||
@headings-color: inherit;
|
@headings-color: inherit;
|
||||||
|
|
||||||
|
|
|
@ -69,6 +69,7 @@
|
||||||
ng-model="relative.count"
|
ng-model="relative.count"
|
||||||
ng-change="formatRelative()"
|
ng-change="formatRelative()"
|
||||||
greater-than="-1"
|
greater-than="-1"
|
||||||
|
min="0"
|
||||||
type="number"
|
type="number"
|
||||||
class="form-control">
|
class="form-control">
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -30,7 +30,8 @@ export default function VisTypeSchemasFactory(Private) {
|
||||||
title: schema.name,
|
title: schema.name,
|
||||||
aggFilter: '*',
|
aggFilter: '*',
|
||||||
editor: false,
|
editor: false,
|
||||||
params: []
|
params: [],
|
||||||
|
deprecate: false
|
||||||
});
|
});
|
||||||
|
|
||||||
// convert the params into a params registry
|
// convert the params into a params registry
|
||||||
|
|
19
src/utils/binder.js
Normal file
19
src/utils/binder.js
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
export default class Binder {
|
||||||
|
constructor() {
|
||||||
|
this.disposal = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
on(emitter, ...args) {
|
||||||
|
const on = emitter.on || emitter.addListener;
|
||||||
|
const off = emitter.off || emitter.removeListener;
|
||||||
|
|
||||||
|
on.apply(emitter, args);
|
||||||
|
this.disposal.push(() => off.apply(emitter, args));
|
||||||
|
}
|
||||||
|
|
||||||
|
destroy() {
|
||||||
|
const destroyers = this.disposal;
|
||||||
|
this.disposal = [];
|
||||||
|
destroyers.forEach(fn => fn());
|
||||||
|
}
|
||||||
|
}
|
|
@ -9,9 +9,6 @@ module.exports = function (grunt) {
|
||||||
branch: 'master',
|
branch: 'master',
|
||||||
fresh: !grunt.option('esvm-no-fresh'),
|
fresh: !grunt.option('esvm-no-fresh'),
|
||||||
config: {
|
config: {
|
||||||
network: {
|
|
||||||
host: '127.0.0.1'
|
|
||||||
},
|
|
||||||
http: {
|
http: {
|
||||||
port: 9200
|
port: 9200
|
||||||
}
|
}
|
||||||
|
|
|
@ -108,12 +108,11 @@ define(function (require) {
|
||||||
});
|
});
|
||||||
|
|
||||||
bdd.it('should show the correct bar chart', function () {
|
bdd.it('should show the correct bar chart', function () {
|
||||||
var expectedBarChartData = [ '0', '0', '0', '0', '0', '0', '3.237',
|
var expectedBarChartData = [ '3.237',
|
||||||
'17.674', '64.75', '125.737', '119.962', '65.712', '16.449',
|
'17.674', '64.75', '125.737', '119.962', '65.712', '16.449',
|
||||||
'2.712', '3.675', '17.674', '59.762', '119.087', '123.812',
|
'2.712', '3.675', '17.674', '59.762', '119.087', '123.812',
|
||||||
'61.862', '15.487', '2.362', '2.800', '15.312', '61.862', '123.2',
|
'61.862', '15.487', '2.362', '2.800', '15.312', '61.862', '123.2',
|
||||||
'118.562', '63.524', '17.587', '2.537', '0', '0', '0', '0', '0',
|
'118.562', '63.524', '17.587', '2.537'
|
||||||
'0', '0'
|
|
||||||
];
|
];
|
||||||
return common.sleep(4000)
|
return common.sleep(4000)
|
||||||
.then(function () {
|
.then(function () {
|
||||||
|
@ -142,8 +141,7 @@ define(function (require) {
|
||||||
|
|
||||||
bdd.it('should show correct data for chart interval Hourly', function () {
|
bdd.it('should show correct data for chart interval Hourly', function () {
|
||||||
var chartInterval = 'Hourly';
|
var chartInterval = 'Hourly';
|
||||||
var expectedBarChartData = [ '0', '0', '0', '0', '0', '0', '0', '0',
|
var expectedBarChartData = [ '1.527', '2.290',
|
||||||
'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1.527', '2.290',
|
|
||||||
'5.599', '7.890', '13.236', '30.290', '46.072', '55.490', '86.8',
|
'5.599', '7.890', '13.236', '30.290', '46.072', '55.490', '86.8',
|
||||||
'112', '122.181', '131.6', '132.872', '113.527', '102.581',
|
'112', '122.181', '131.6', '132.872', '113.527', '102.581',
|
||||||
'81.709', '65.672', '43.781', '24.181', '14', '9.672', '6.109',
|
'81.709', '65.672', '43.781', '24.181', '14', '9.672', '6.109',
|
||||||
|
@ -154,8 +152,7 @@ define(function (require) {
|
||||||
'2.036', '1.781', '4.327', '8.654', '9.418', '26.472', '38.945',
|
'2.036', '1.781', '4.327', '8.654', '9.418', '26.472', '38.945',
|
||||||
'61.345', '79.672', '102.836', '125.236', '130.327', '128.036',
|
'61.345', '79.672', '102.836', '125.236', '130.327', '128.036',
|
||||||
'120.4', '96.472', '74.581', '70.509', '39.709', '25.199', '13.490',
|
'120.4', '96.472', '74.581', '70.509', '39.709', '25.199', '13.490',
|
||||||
'12.472', '4.072', '2.290', '1.018', '0', '0', '0', '0', '0', '0',
|
'12.472', '4.072', '2.290', '1.018'
|
||||||
'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'
|
|
||||||
];
|
];
|
||||||
return discoverPage.setChartInterval(chartInterval)
|
return discoverPage.setChartInterval(chartInterval)
|
||||||
.then(function () {
|
.then(function () {
|
||||||
|
@ -170,7 +167,7 @@ define(function (require) {
|
||||||
bdd.it('should show correct data for chart interval Daily', function () {
|
bdd.it('should show correct data for chart interval Daily', function () {
|
||||||
var chartInterval = 'Daily';
|
var chartInterval = 'Daily';
|
||||||
var expectedBarChartData = [
|
var expectedBarChartData = [
|
||||||
'0', '133.196', '129.192', '129.724', '0'
|
'133.196', '129.192', '129.724'
|
||||||
];
|
];
|
||||||
return discoverPage.setChartInterval(chartInterval)
|
return discoverPage.setChartInterval(chartInterval)
|
||||||
.then(function () {
|
.then(function () {
|
||||||
|
@ -223,12 +220,11 @@ define(function (require) {
|
||||||
|
|
||||||
bdd.it('should show correct data for chart interval Auto', function () {
|
bdd.it('should show correct data for chart interval Auto', function () {
|
||||||
var chartInterval = 'Auto';
|
var chartInterval = 'Auto';
|
||||||
var expectedBarChartData = [ '0', '0', '0', '0', '0', '0', '3.237',
|
var expectedBarChartData = [ '3.237',
|
||||||
'17.674', '64.75', '125.737', '119.962', '65.712', '16.449',
|
'17.674', '64.75', '125.737', '119.962', '65.712', '16.449',
|
||||||
'2.712', '3.675', '17.674', '59.762', '119.087', '123.812',
|
'2.712', '3.675', '17.674', '59.762', '119.087', '123.812',
|
||||||
'61.862', '15.487', '2.362', '2.800', '15.312', '61.862', '123.2',
|
'61.862', '15.487', '2.362', '2.800', '15.312', '61.862', '123.2',
|
||||||
'118.562', '63.524', '17.587', '2.537', '0', '0', '0', '0', '0',
|
'118.562', '63.524', '17.587', '2.537'
|
||||||
'0', '0'
|
|
||||||
];
|
];
|
||||||
return discoverPage.setChartInterval(chartInterval)
|
return discoverPage.setChartInterval(chartInterval)
|
||||||
.then(function () {
|
.then(function () {
|
||||||
|
|
|
@ -28,7 +28,7 @@ define(function (require) {
|
||||||
|
|
||||||
getTimespanText: function getTimespanText() {
|
getTimespanText: function getTimespanText() {
|
||||||
return thisTime
|
return thisTime
|
||||||
.findByCssSelector('.kibana-nav-actions .navbar-timepicker-time-desc pretty-duration')
|
.findByCssSelector('.kibana-nav-options .navbar-timepicker-time-desc pretty-duration')
|
||||||
.getVisibleText();
|
.getVisibleText();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue