Merge branch 'master' of github.com:elastic/kibana into fix/4561

This commit is contained in:
spalger 2015-08-03 09:20:19 -07:00
commit b89da25efd
111 changed files with 639 additions and 552 deletions

2
.eslintignore Normal file
View file

@ -0,0 +1,2 @@
src/fixtures
optimize

View file

@ -6,37 +6,22 @@ env:
mocha: true
browser: true
rules:
block-scoped-var: 2
camelcase:
- 2
- { "properties": "never" }
comma-style:
- 2
- "last"
camelcase: [ 2, { properties: never } ]
comma-dangle: 0
comma-style: [ 2, last ]
consistent-return: 0
curly:
- 2
- "multi-line"
dot-notation:
- 2
- { "allowKeywords": true }
eqeqeq:
- 2
- "allow-null"
global-strict:
- 2
- "never"
curly: [ 2, multi-line ]
dot-location: [ 2, property ]
dot-notation: [ 2, { allowKeywords: true } ]
eqeqeq: [ 2, allow-null ]
guard-for-in: 2
no-multi-spaces: 0
key-spacing:
- 0
- { align: "value" }
new-cap:
- 2
- { "capIsNewExceptions": ["Private"] }
no-underscore-dangle: 0
indent: [ 2, 2, { SwitchCase: 1 } ]
key-spacing: [ 0, { align: value } ]
max-len: [ 2, 140, 2, { ignoreComments: true, ignoreUrls: true } ]
new-cap: [ 2, { capIsNewExceptions: [ Private ] } ]
no-bitwise: 0
no-caller: 2
no-cond-assign: 0
@ -48,35 +33,35 @@ rules:
no-irregular-whitespace: 2
no-iterator: 2
no-loop-func: 2
no-multi-spaces: 0
no-multi-str: 2
no-nested-ternary: 2
no-new: 0
no-path-concat: 0
no-proto: 2
no-return-assign: 0
no-script-url: 2
no-sequences: 2
no-shadow: 0
no-trailing-spaces: 2
no-undef: 2
no-unused-vars: 0
no-underscore-dangle: 0
no-unused-expressions: 0
no-path-concat: 0
no-use-before-define:
- 2
- "nofunc"
no-unused-vars: 0
no-use-before-define: [ 2, nofunc ]
no-with: 2
quotes:
- 2
- "single"
semi:
- 2
- "always"
semi-spacing:
- 2
- { before: false, after: true }
strict:
- 2
- "never"
one-var: [ 2, never ]
quotes: [ 2, single ]
semi-spacing: [ 2, { before: false, after: true } ]
semi: [ 2, always ]
space-after-keywords: [ 2, always ]
space-before-blocks: [ 2, always ]
space-before-function-paren: [ 2, { anonymous: always, named: never } ]
space-in-parens: [ 2, never ]
space-infix-ops: [ 2, { int32Hint: false } ]
space-return-throw-case: [ 2 ]
space-unary-ops: [ 2 ]
strict: [ 2, never ]
valid-typeof: 2
wrap-iife:
- 2
- "outside"
wrap-iife: [ 2, outside ]
yoda: 0

60
.jscsrc
View file

@ -1,60 +0,0 @@
{
"esnext": true,
"maximumLineLength": {
"value": 140,
"allowComments": true
},
"requireSemicolons": true,
"requireCurlyBraces": [
"for",
"do",
"try",
"catch"
],
"requireSpaceAfterKeywords": [
"if",
"else",
"for",
"while",
"do",
"switch",
"case",
"return",
"try",
"catch",
"function",
"typeof"
],
"requireSpaceBeforeBlockStatements": true,
"requireParenthesesAroundIIFE": true,
"requireSpacesInConditionalExpression": true,
"disallowSpacesInNamedFunctionExpression": {
"beforeOpeningRoundBrace": true
},
"disallowSpacesInFunctionDeclaration": {
"beforeOpeningRoundBrace": true
},
"requireSpaceBetweenArguments": true,
"disallowMultipleVarDecl": "exceptUndefined",
"disallowEmptyBlocks": true,
"requireCommaBeforeLineBreak": true,
"disallowSpaceAfterPrefixUnaryOperators": true,
"disallowSpaceBeforePostfixUnaryOperators": true,
"disallowSpaceBeforeBinaryOperators": [
","
],
"requireSpacesInForStatement": true,
"requireSpaceBeforeBinaryOperators": true,
"requireSpaceAfterBinaryOperators": true,
"disallowKeywords": [
"with"
],
"validateIndentation": 2,
"validateQuoteMarks": { "mark": "'", "escape": true },
"disallowMixedSpacesAndTabs": true,
"disallowTrailingWhitespace": true,
"requireCapitalizedConstructors": true,
"requireDotNotation": true,
"disallowNewlineBeforeBlockStatements": true,
"disallowMultipleLineStrings": true
}

View file

@ -120,6 +120,7 @@
},
"devDependencies": {
"auto-release-sinon": "^1.0.3",
"eslint": "^1.0.0",
"expect.js": "^0.3.1",
"faker": "^1.1.0",
"grunt": "^0.4.5",
@ -127,7 +128,6 @@
"grunt-contrib-clean": "^0.6.0",
"grunt-contrib-compress": "^0.13.0",
"grunt-contrib-copy": "^0.8.0",
"grunt-contrib-eslint": "0.0.5",
"grunt-esvm": "^1.1.3",
"grunt-karma": "^0.12.0",
"grunt-replace": "^0.7.9",

View file

@ -15,8 +15,8 @@ describe('kibana cli', function () {
describe('npmInstall', function () {
var logger;
var testWorkingPath = join(__dirname, '.test.data');
var logger;
var statSyncStub;
beforeEach(function () {

View file

@ -12,10 +12,10 @@ define(function (require) {
destroy: sinon.spy(),
get: function (param) {
switch (param) {
case 'index':
return Private(require('fixtures/stubbed_logstash_index_pattern'));
default:
throw new Error('Param "' + param + '" is not implemented in the stubbed search source');
case 'index':
return Private(require('fixtures/stubbed_logstash_index_pattern'));
default:
throw new Error('Param "' + param + '" is not implemented in the stubbed search source');
}
},
crankResults: function () {

View file

@ -9,7 +9,8 @@ var SetupError = require('../setup_error');
describe('plugins/elasticsearch', function () {
describe('lib/create_kibana_index', function () {
var server, client;
var server;
var client;
beforeEach(function () {
server = {};
client = {};

View file

@ -8,7 +8,15 @@ var healthCheck = require('../health_check');
describe('plugins/elasticsearch', function () {
describe('lib/health_check', function () {
var health, plugin, server, get, client;
var health;
var plugin;
var server;
var get;
var client;
beforeEach(function () {
// setup the plugin stub
plugin = {
@ -79,9 +87,9 @@ describe('plugins/elasticsearch', function () {
sinon.assert.calledOnce(plugin.status.yellow);
expect(plugin.status.yellow.args[0][0]).to.be('Waiting for Elasticsearch');
sinon.assert.calledOnce(plugin.status.red);
/* jscs:disable maximumLineLength */
expect(plugin.status.red.args[0][0]).to.be('Unable to connect to Elasticsearch at http://localhost:9200. Retrying in 2.5 seconds.');
/* jscs:enable maximumLineLength */
expect(plugin.status.red.args[0][0]).to.be(
'Unable to connect to Elasticsearch at http://localhost:9200. Retrying in 2.5 seconds.'
);
sinon.assert.calledTwice(client.ping);
sinon.assert.calledOnce(client.nodes.info);
sinon.assert.calledOnce(client.cluster.health);
@ -104,9 +112,9 @@ describe('plugins/elasticsearch', function () {
sinon.assert.calledOnce(plugin.status.yellow);
expect(plugin.status.yellow.args[0][0]).to.be('Waiting for Elasticsearch');
sinon.assert.calledOnce(plugin.status.red);
/* jscs:disable maximumLineLength */
expect(plugin.status.red.args[0][0]).to.be('Elasticsearch is still initializing the kibana index... Trying again in 2.5 second.');
/* jscs:enable maximumLineLength */
expect(plugin.status.red.args[0][0]).to.be(
'Elasticsearch is still initializing the kibana index... Trying again in 2.5 second.'
);
sinon.assert.calledOnce(client.ping);
sinon.assert.calledOnce(client.nodes.info);
sinon.assert.calledTwice(client.cluster.health);

View file

@ -106,13 +106,11 @@ describe('plugins/elasticsearch', function () {
payload: '{docs: [{_index: ".kibana", _type: "index-pattern", _id: "[logstash-]YYYY.MM.DD"}]}'
});
/* jscs:disable maximumLineLength */
testRoute({
method: 'POST',
url: '/elasticsearch/_msearch?timeout=0&ignore_unavailable=true&preference=1429577952339',
payload: '{"index":"logstash-2015.04.21","ignore_unavailable":true}\n{"size":500,"sort":{"@timestamp":"desc"},"query":{"filtered":{"query":{"query_string":{"analyze_wildcard":true,"query":"*"}},"filter":{"bool":{"must":[{"range":{"@timestamp":{"gte":1429577068175,"lte":1429577968175}}}],"must_not":[]}}}},"highlight":{"pre_tags":["@kibana-highlighted-field@"],"post_tags":["@/kibana-highlighted-field@"],"fields":{"*":{}}},"aggs":{"2":{"date_histogram":{"field":"@timestamp","interval":"30s","pre_zone":"-07:00","pre_zone_adjust_large_interval":true,"min_doc_count":0,"extended_bounds":{"min":1429577068175,"max":1429577968175}}}},"fields":["*","_source"],"script_fields":{},"fielddata_fields":["timestamp_offset","@timestamp","utc_time"]}\n'
payload: '{"index":"logstash-2015.04.21","ignore_unavailable":true}\n{"size":500,"sort":{"@timestamp":"desc"},"query":{"filtered":{"query":{"query_string":{"analyze_wildcard":true,"query":"*"}},"filter":{"bool":{"must":[{"range":{"@timestamp":{"gte":1429577068175,"lte":1429577968175}}}],"must_not":[]}}}},"highlight":{"pre_tags":["@kibana-highlighted-field@"],"post_tags":["@/kibana-highlighted-field@"],"fields":{"*":{}}},"aggs":{"2":{"date_histogram":{"field":"@timestamp","interval":"30s","pre_zone":"-07:00","pre_zone_adjust_large_interval":true,"min_doc_count":0,"extended_bounds":{"min":1429577068175,"max":1429577968175}}}},"fields":["*","_source"],"script_fields":{},"fielddata_fields":["timestamp_offset","@timestamp","utc_time"]}\n' // eslint-disable-line max-len
});
/* jscs:enable maximumLineLength */
});
});

View file

@ -22,7 +22,9 @@ describe('fieldCalculator', function () {
});
describe('_groupValues', function () {
var groups, params, values;
var groups;
var params;
var values;
beforeEach(function () {
values = [['foo', 'bar'], 'foo', 'foo', undefined, ['foo', 'bar'], 'bar', 'baz', null, null, null, 'foo', undefined];
params = {};

View file

@ -3,7 +3,9 @@ var ngMock = require('ngMock');
var expect = require('expect.js');
require('plugins/kibana/doc/index');
var $scope, createController, timefilter;
var $scope;
var createController;
var timefilter;
var init = function (index, type, id) {

View file

@ -254,18 +254,18 @@ define(function (require) {
function getPatternDefault(interval) {
switch (interval) {
case 'hours':
return '[logstash-]YYYY.MM.DD.HH';
case 'days':
return '[logstash-]YYYY.MM.DD';
case 'weeks':
return '[logstash-]GGGG.WW';
case 'months':
return '[logstash-]YYYY.MM';
case 'years':
return '[logstash-]YYYY';
default:
return 'logstash-*';
case 'hours':
return '[logstash-]YYYY.MM.DD.HH';
case 'days':
return '[logstash-]YYYY.MM.DD';
case 'weeks':
return '[logstash-]GGGG.WW';
case 'months':
return '[logstash-]YYYY.MM';
case 'years':
return '[logstash-]YYYY';
default:
return 'logstash-*';
}
}

View file

@ -80,10 +80,10 @@ define(function (require) {
name: name,
type: (function () {
switch (castMappingType(esType)) {
case 'string': return 'text';
case 'number': return 'number';
case 'boolean': return 'boolean';
default: return 'json';
case 'string': return 'text';
case 'number': return 'number';
case 'boolean': return 'boolean';
default: return 'json';
}
}())
});

View file

@ -9,7 +9,8 @@ require('plugins/kibana/visualize/editor/agg');
describe('Vis-Editor-Agg plugin directive', function () {
var $parentScope = {};
var $scope, $elem;
var $scope;
var $elem;
function makeConfig(which) {
var schemaMap = {

View file

@ -1,6 +1,7 @@
describe('markdown vis controller', function () {
var $scope, $el;
var $scope;
var $el;
var ngMock = require('ngMock');
var expect = require('expect.js');

View file

@ -62,28 +62,28 @@ define(function (require) {
}
switch (event.type) {
case 'press':
return Promise.resolve()
.then(_.partial(fire, 'keydown', event.key))
.then(_.partial(fire, 'keypress', event.key))
.then(_.partial(doList, event.events))
.then(_.partial(fire, 'keyup', event.key));
case 'wait':
return Promise.delay(event.ms);
case 'repeat':
return (function again(remaining) {
if (!remaining) return Promise.resolve();
remaining = remaining - 1;
case 'press':
return Promise.resolve()
.then(_.partial(fire, 'keydown', event.key, true))
.then(_.partial(fire, 'keypress', event.key, true))
.then(_.partial(again, remaining));
}(event.count));
.then(_.partial(fire, 'keydown', event.key))
.then(_.partial(fire, 'keypress', event.key))
.then(_.partial(doList, event.events))
.then(_.partial(fire, 'keyup', event.key));
default:
throw new TypeError('invalid event type "' + event.type + '"');
case 'wait':
return Promise.delay(event.ms);
case 'repeat':
return (function again(remaining) {
if (!remaining) return Promise.resolve();
remaining = remaining - 1;
return Promise.resolve()
.then(_.partial(fire, 'keydown', event.key, true))
.then(_.partial(fire, 'keypress', event.key, true))
.then(_.partial(again, remaining));
}(event.count));
default:
throw new TypeError('invalid event type "' + event.type + '"');
}
})
.then(function () {

View file

@ -32,32 +32,32 @@ class UiExports {
exportConsumer(type) {
var self = this;
switch (type) {
case 'app':
return function (plugin, spec) {
spec = _.defaults({}, spec, { id: plugin.id });
plugin.app = self.apps.new(spec);
};
case 'app':
return function (plugin, spec) {
spec = _.defaults({}, spec, { id: plugin.id });
plugin.app = self.apps.new(spec);
};
case 'visTypes':
case 'fieldFormats':
case 'spyModes':
return function (plugin, spec) {
self.aliases[type] = _.union(self.aliases[type] || [], spec);
};
case 'visTypes':
case 'fieldFormats':
case 'spyModes':
return function (plugin, spec) {
self.aliases[type] = _.union(self.aliases[type] || [], spec);
};
case 'modules':
case 'loaders':
case 'noParse':
return function (plugin, spec) {
plugin.uiExportsSpecs[type] = spec;
};
case 'modules':
case 'loaders':
case 'noParse':
return function (plugin, spec) {
plugin.uiExportsSpecs[type] = spec;
};
case 'aliases':
return function (plugin, specs) {
_.forOwn(specs, function (spec, adhocType) {
self.aliases[adhocType] = _.union(self.aliases[adhocType] || [], spec);
});
};
case 'aliases':
return function (plugin, specs) {
_.forOwn(specs, function (spec, adhocType) {
self.aliases[adhocType] = _.union(self.aliases[adhocType] || [], spec);
});
};
}
}

View file

@ -52,18 +52,18 @@ module.exports = function (kbnServer, server, config) {
if (app.requireOptimizeGreen) {
let optimizeStatus = kbnServer.status.get('optimize');
switch (optimizeStatus && optimizeStatus.state) {
case 'yellow':
return this(`
<html>
<head><meta http-equiv="refresh" content="1"></head>
<body>${optimizeStatus.message}</body>
</html>
`).code(503);
case 'yellow':
return this(`
<html>
<head><meta http-equiv="refresh" content="1"></head>
<body>${optimizeStatus.message}</body>
</html>
`).code(503);
case 'red':
return this(`
<html><body>${optimizeStatus.message}</body></html>
`).code(500);
case 'red':
return this(`
<html><body>${optimizeStatus.message}</body></html>
`).code(500);
}
}

View file

@ -27,7 +27,8 @@ describe('buildHierarchicalData()', function () {
describe('metric only', function () {
var vis, results;
var vis;
var results;
beforeEach(function () {
var id = 1;
@ -97,7 +98,8 @@ describe('buildHierarchicalData()', function () {
});
describe('threeTermBuckets', function () {
var vis, results;
var vis;
var results;
beforeEach(function () {
var id = 1;
@ -138,7 +140,8 @@ describe('buildHierarchicalData()', function () {
});
describe('oneHistogramBucket', function () {
var vis, results;
var vis;
var results;
beforeEach(function () {
var id = 1;
@ -169,7 +172,8 @@ describe('buildHierarchicalData()', function () {
});
describe('oneRangeBucket', function () {
var vis, results;
var vis;
var results;
beforeEach(function () {
var id = 1;
@ -209,7 +213,8 @@ describe('buildHierarchicalData()', function () {
});
describe('oneFilterBucket', function () {
var vis, results;
var vis;
var results;
beforeEach(function () {
var id = 1;
@ -241,7 +246,8 @@ describe('buildHierarchicalData()', function () {
});
describe('oneFilterBucket that is a split', function () {
var vis, results;
var vis;
var results;
beforeEach(function () {
var id = 1;

View file

@ -12,7 +12,8 @@ var indexPattern;
describe('buildHierarchicalData()', function () {
describe('createRawData()', function () {
var vis, results;
var vis;
var results;
beforeEach(ngMock.module('kibana'));

View file

@ -77,15 +77,15 @@ describe('get columns', function () {
function checkColumns(column, i) {
expect(column).to.have.property('aggConfig');
switch (i) {
case 0:
expect(column.aggConfig.type).to.have.property('name', 'date_histogram');
break;
case 1:
expect(column.aggConfig.type).to.have.property('name', 'avg');
break;
case 2:
expect(column.aggConfig.type).to.have.property('name', 'sum');
break;
case 0:
expect(column.aggConfig.type).to.have.property('name', 'date_histogram');
break;
case 1:
expect(column.aggConfig.type).to.have.property('name', 'avg');
break;
case 2:
expect(column.aggConfig.type).to.have.property('name', 'sum');
break;
}
}

View file

@ -32,46 +32,46 @@ define(function (require) {
var agg = write.aggStack.shift();
switch (agg.schema.group) {
case 'buckets':
var buckets = new Buckets(bucket[agg.id]);
if (buckets.length) {
var splitting = write.canSplit && agg.schema.name === 'split';
if (splitting) {
write.split(agg, buckets, function forEachBucket(subBucket, key) {
collectBucket(write, subBucket, agg.getKey(subBucket), key);
});
} else {
buckets.forEach(function (subBucket, key) {
write.cell(agg, agg.getKey(subBucket, key), function () {
collectBucket(write, subBucket, agg.getKey(subBucket, key));
case 'buckets':
var buckets = new Buckets(bucket[agg.id]);
if (buckets.length) {
var splitting = write.canSplit && agg.schema.name === 'split';
if (splitting) {
write.split(agg, buckets, function forEachBucket(subBucket, key) {
collectBucket(write, subBucket, agg.getKey(subBucket), key);
});
});
}
} else if (write.partialRows && write.metricsForAllBuckets && write.minimalColumns) {
// we don't have any buckets, but we do have metrics at this
// level, then pass all the empty buckets and jump back in for
// the metrics.
write.aggStack.unshift(agg);
passEmptyBuckets(write, bucket, key);
write.aggStack.shift();
} else {
// we don't have any buckets, and we don't have isHierarchical
// data, so no metrics, just try to write the row
write.row();
}
break;
case 'metrics':
var value = agg.getValue(bucket);
write.cell(agg, value, function () {
if (!write.aggStack.length) {
// row complete
write.row();
} else {
buckets.forEach(function (subBucket, key) {
write.cell(agg, agg.getKey(subBucket, key), function () {
collectBucket(write, subBucket, agg.getKey(subBucket, key));
});
});
}
} else if (write.partialRows && write.metricsForAllBuckets && write.minimalColumns) {
// we don't have any buckets, but we do have metrics at this
// level, then pass all the empty buckets and jump back in for
// the metrics.
write.aggStack.unshift(agg);
passEmptyBuckets(write, bucket, key);
write.aggStack.shift();
} else {
// process the next agg at this same level
collectBucket(write, bucket, key);
// we don't have any buckets, and we don't have isHierarchical
// data, so no metrics, just try to write the row
write.row();
}
});
break;
break;
case 'metrics':
var value = agg.getValue(bucket);
write.cell(agg, value, function () {
if (!write.aggStack.length) {
// row complete
write.row();
} else {
// process the next agg at this same level
collectBucket(write, bucket, key);
}
});
break;
}
write.aggStack.unshift(agg);
@ -83,16 +83,16 @@ define(function (require) {
var agg = write.aggStack.shift();
switch (agg.schema.group) {
case 'metrics':
// pass control back to collectBucket()
write.aggStack.unshift(agg);
collectBucket(write, bucket, key);
return;
case 'metrics':
// pass control back to collectBucket()
write.aggStack.unshift(agg);
collectBucket(write, bucket, key);
return;
case 'buckets':
write.cell(agg, '', function () {
passEmptyBuckets(write, bucket, key);
});
case 'buckets':
write.cell(agg, '', function () {
passEmptyBuckets(write, bucket, key);
});
}
write.aggStack.unshift(agg);

View file

@ -52,7 +52,7 @@ module.exports = function (chrome, internals) {
controllerName = 'chrome.$$rootControllerConstruct';
}
internals.rootController = controllerName + ( as ? ' as ' + as : '' );
internals.rootController = controllerName + (as ? ' as ' + as : '');
return chrome;
};

View file

@ -96,10 +96,10 @@ define(function (require) {
*/
self.createSource = function (type) {
switch (type) {
case 'doc':
return new DocSource();
case 'search':
return new SearchSource();
case 'doc':
return new DocSource();
case 'search':
return new SearchSource();
}
};

View file

@ -7,7 +7,11 @@ describe('Query decorator', function () {
var _ = require('lodash');
var config;
var indexPattern, getComputedFields, fn;
var indexPattern;
var getComputedFields;
var fn;
beforeEach(ngMock.module(
'kibana',
function ($provide) {

View file

@ -145,33 +145,33 @@ define(function (require) {
if (val == null || !key || !_.isString(key)) return;
switch (key) {
case 'filter':
// user a shallow flatten to detect if val is an array, and pull the values out if it is
state.filters = _([ state.filters || [], val ])
.flatten()
// Yo Dawg! I heard you needed to filter out your filters
.reject(function (filter) {
return !filter || _.get(filter, 'meta.disabled');
})
.value();
return;
case 'index':
case 'type':
case 'id':
if (key && state[key] == null) {
state[key] = val;
}
return;
case 'source':
key = '_source';
addToBody();
break;
case 'sort':
val = normalizeSortRequest(val, this.get('index'));
addToBody();
break;
default:
addToBody();
case 'filter':
// user a shallow flatten to detect if val is an array, and pull the values out if it is
state.filters = _([ state.filters || [], val ])
.flatten()
// Yo Dawg! I heard you needed to filter out your filters
.reject(function (filter) {
return !filter || _.get(filter, 'meta.disabled');
})
.value();
return;
case 'index':
case 'type':
case 'id':
if (key && state[key] == null) {
state[key] = val;
}
return;
case 'source':
key = '_source';
addToBody();
break;
case 'sort':
val = normalizeSortRequest(val, this.get('index'));
addToBody();
break;
default:
addToBody();
}
/**

View file

@ -25,12 +25,12 @@ define(function (require) {
responses = responses || [];
return Promise.map(requests, function (req, i) {
switch (statuses[i]) {
case ABORTED:
return ABORTED;
case DUPLICATE:
return req._uniq.resp;
default:
return responses[_.findIndex(executable, req)];
case ABORTED:
return ABORTED;
case DUPLICATE:
return req._uniq.resp;
default:
return responses[_.findIndex(executable, req)];
}
})
.then(defer.resolve, defer.reject);

View file

@ -51,13 +51,13 @@ define(function (require) {
.then(function (responses) {
return responses.map(function (resp) {
switch (resp) {
case ABORTED:
return null;
case DUPLICATE:
case INCOMPLETE:
throw new Error('Failed to clear incomplete or duplicate request from responses.');
default:
return resp;
case ABORTED:
return null;
case DUPLICATE:
case INCOMPLETE:
throw new Error('Failed to clear incomplete or duplicate request from responses.');
default:
return resp;
}
});
});

View file

@ -125,11 +125,11 @@ define(function (require) {
*/
SegmentedReq.prototype.setDirection = function (dir) {
switch (dir) {
case 'asc':
case 'desc':
return (this._direction = dir);
default:
throw new TypeError('unkown sort direction "' + dir + '"');
case 'asc':
case 'desc':
return (this._direction = dir);
default:
throw new TypeError('unkown sort direction "' + dir + '"');
}
};

View file

@ -7,7 +7,10 @@ define(function (require) {
module.service('debounce', ['$timeout', function ($timeout) {
return function (func, wait, options) {
var timeout, args, self, result;
var timeout;
var args;
var self;
var result;
options = _.defaults(options || {}, {
leading: false,
trailing: true

View file

@ -5,7 +5,8 @@ var ngMock = require('ngMock');
require('ui/directives/auto_select_if_only_one');
describe('Auto-select if only one directive', function () {
var $compile, $rootScope;
var $compile;
var $rootScope;
var zeroOptions = [];
var oneOption = [{label: 'foo'}];
var multiOptions = [{label: 'foo'}, {label: 'bar'}];

View file

@ -7,7 +7,11 @@ var ngMock = require('ngMock');
require('ui/directives/confirm_click');
require('plugins/kibana/discover/index');
var $parentScope, $scope, $elem;
var $parentScope;
var $scope;
var $elem;
var init = function (text) {
// Load the application

View file

@ -4,7 +4,11 @@ var expect = require('expect.js');
var ngMock = require('ngMock');
require('plugins/kibana/discover/index');
var $parentScope, $scope, $elem;
var $parentScope;
var $scope;
var $elem;
var init = function (expandable) {
// Load the application

View file

@ -4,7 +4,8 @@ var ngMock = require('ngMock');
require('ui/directives/inequality');
describe('greater_than model validator directive', function () {
var $compile, $rootScope;
var $compile;
var $rootScope;
var html;
beforeEach(ngMock.module('kibana'));

View file

@ -5,8 +5,13 @@ var ngMock = require('ngMock');
require('ui/directives/input_focus');
describe('Input focus directive', function () {
var $compile, $rootScope, $timeout, element;
var $el, selectedEl, selectedText;
var $compile;
var $rootScope;
var $timeout;
var element;
var $el;
var selectedEl;
var selectedText;
var inputValue = 'Input Text Value';
beforeEach(ngMock.module('kibana'));

View file

@ -4,7 +4,8 @@ var ngMock = require('ngMock');
require('ui/directives/input_whole_number');
describe('Whole number input directive', function () {
var $compile, $rootScope;
var $compile;
var $rootScope;
var html = '<input type="text" ng-model="value" input-whole-number />';
beforeEach(ngMock.module('kibana'));

View file

@ -5,7 +5,11 @@ var ngMock = require('ngMock');
require('plugins/kibana/discover/index');
var $parentScope, $scope, $elem;
var $parentScope;
var $scope;
var $elem;
var init = function () {
// Load the application

View file

@ -12,7 +12,11 @@ require('plugins/kibana/dashboard/index');
// TODO: This should not be needed, timefilter is only included here, it should move
require('plugins/kibana/discover/index');
var $parentScope, $scope, $elem;
var $parentScope;
var $scope;
var $elem;
var anchor = '2014-01-01T06:06:06.666Z';
var clock;

View file

@ -5,7 +5,11 @@ var ngMock = require('ngMock');
require('plugins/kibana/discover/index');
var $parentScope, $scope, $elem;
var $parentScope;
var $scope;
var $elem;
var init = function (text) {
// Load the application

View file

@ -10,9 +10,11 @@ require('plugins/kibana/discover/index');
var typeaheadHistoryCount = 10;
var typeaheadName = 'unittest';
var $parentScope;
var $typeaheadScope, $elem;
var $typeaheadScope;
var $elem;
var $typeaheadInputScope;
var typeaheadCtrl, PersistedLog;
var typeaheadCtrl;
var PersistedLog;
var markup = '<div class="typeahead" kbn-typeahead="' + typeaheadName + '">' +
'<input type="text" placeholder="Filter..." class="form-control" ng-model="query" kbn-typeahead-input>' +

View file

@ -5,7 +5,8 @@ var ngMock = require('ngMock');
require('ui/directives/validate_cidr_mask');
describe('Validate CIDR mask directive', function () {
var $compile, $rootScope;
var $compile;
var $rootScope;
var html = '<input type="text" ng-model="value" validate-cidr-mask />';
beforeEach(ngMock.module('kibana'));

View file

@ -5,7 +5,8 @@ var ngMock = require('ngMock');
require('ui/directives/validate_date_math');
describe('Validate date math directive', function () {
var $compile, $rootScope;
var $compile;
var $rootScope;
var html = '<input type="text" ng-model="value" validate-date-math />';
beforeEach(ngMock.module('kibana'));

View file

@ -6,7 +6,8 @@ var ngMock = require('ngMock');
require('ui/directives/validate_index_name');
describe('Validate index name directive', function () {
var $compile, $rootScope;
var $compile;
var $rootScope;
var html = '<input type="text" ng-model="indexName" validate-index-name />';
beforeEach(ngMock.module('kibana'));

View file

@ -5,7 +5,8 @@ var ngMock = require('ngMock');
require('ui/directives/validate_ip');
describe('Validate IP directive', function () {
var $compile, $rootScope;
var $compile;
var $rootScope;
var html = '<input type="text" ng-model="value" validate-ip />';
beforeEach(ngMock.module('kibana'));

View file

@ -14,24 +14,24 @@ define(function (require) {
var typeIcon = function (fieldType) {
switch (fieldType) {
case 'source':
return '<i class="fa fa-file-text-o "></i>';
case 'string':
return '<i><strong>t</strong></i>';
case 'murmur3':
return '<i><strong>h</strong></i>';
case 'number':
return '<i><strong>#</strong></i>';
case 'date':
return '<i class="fa fa-clock-o"></i>';
case 'ip':
return '<i class="fa fa-laptop"></i>';
case 'geo_point':
return '<i class="fa fa-globe"></i>';
case 'conflict':
return '<i class="fa fa-warning"></i>';
default:
return '<i><strong>?</strong></i>';
case 'source':
return '<i class="fa fa-file-text-o "></i>';
case 'string':
return '<i><strong>t</strong></i>';
case 'murmur3':
return '<i><strong>h</strong></i>';
case 'number':
return '<i><strong>#</strong></i>';
case 'date':
return '<i class="fa fa-clock-o"></i>';
case 'ip':
return '<i class="fa fa-laptop"></i>';
case 'geo_point':
return '<i class="fa fa-globe"></i>';
case 'conflict':
return '<i class="fa fa-warning"></i>';
default:
return '<i><strong>?</strong></i>';
}
};

View file

@ -22,7 +22,7 @@ define(function (require) {
lookupByRange[frame.from + ' to ' + frame.to] = frame;
});
var stringify = function () {
function stringify() {
var text;
// If both parts are date math, try to look up a reasonable string
if ($scope.from && $scope.to && !moment.isMoment($scope.from) && !moment.isMoment($scope.to)) {
@ -48,7 +48,7 @@ define(function (require) {
}
};
var cantLookup = function () {
function cantLookup() {
var display = {};
_.each(['from', 'to'], function (time) {
if (moment.isMoment($scope[time])) {

View file

@ -11,7 +11,16 @@ require('ui/private');
require('ui/doc_table');
var $parentScope, $scope, $timeout, searchSource;
var $parentScope;
var $scope;
var $timeout;
var searchSource;
var init = function ($elem, props) {
ngMock.inject(function ($rootScope, $compile, _$timeout_) {

View file

@ -9,7 +9,11 @@ var getFakeRow = require('fixtures/fake_row');
describe('Doc Table', function () {
require('plugins/kibana/discover/index');
var $parentScope, $scope, config;
var $parentScope;
var $scope;
var config;
// Stub out a minimal mapping of 4 fields
var mapping;

View file

@ -9,7 +9,8 @@ define(function (require) {
*/
function getSort(sort, indexPattern) {
var sortObj = {};
var field, direction;
var field;
var direction;
function isSortable(field) {
return (indexPattern.fields.byName[field] && indexPattern.fields.byName[field].sortable);

View file

@ -24,7 +24,16 @@ require('ui/private');
require('ui/doc_viewer');
var $parentScope, $scope, indexPattern, flattened;
var $parentScope;
var $scope;
var indexPattern;
var flattened;
var init = function ($elem, props) {
ngMock.inject(function ($rootScope, $compile) {

View file

@ -10,7 +10,9 @@ describe('add filters', function () {
};
var filters;
var queryFilter;
var $rootScope, appState, globalState;
var $rootScope;
var appState;
var globalState;
beforeEach(ngMock.module(
'kibana',

View file

@ -8,7 +8,9 @@ describe('get filters', function () {
global: 'globalState'
};
var queryFilter;
var $rootScope, appState, globalState;
var $rootScope;
var appState;
var globalState;
beforeEach(ngMock.module(
'kibana',

View file

@ -10,7 +10,9 @@ describe('invert filters', function () {
};
var filters;
var queryFilter;
var $rootScope, appState, globalState;
var $rootScope;
var appState;
var globalState;
beforeEach(ngMock.module(
'kibana',

View file

@ -10,7 +10,9 @@ describe('pin filters', function () {
};
var filters;
var queryFilter;
var $rootScope, appState, globalState;
var $rootScope;
var appState;
var globalState;
beforeEach(ngMock.module(
'kibana',

View file

@ -10,7 +10,9 @@ describe('remove filters', function () {
};
var filters;
var queryFilter;
var $rootScope, appState, globalState;
var $rootScope;
var appState;
var globalState;
beforeEach(ngMock.module(
'kibana',

View file

@ -10,7 +10,9 @@ describe('toggle filters', function () {
};
var filters;
var queryFilter;
var $rootScope, appState, globalState;
var $rootScope;
var appState;
var globalState;
beforeEach(ngMock.module(
'kibana',

View file

@ -5,7 +5,9 @@ var expect = require('expect.js');
describe('Filter Bar Directive', function () {
describe('changeTimeFilter()', function () {
var changeTimeFilter, timefilter;
var changeTimeFilter;
var timefilter;
beforeEach(ngMock.module('kibana'));

View file

@ -9,8 +9,14 @@ require('ui/filter_bar');
var MockState = require('fixtures/mock_state');
describe('Filter Bar Directive', function () {
var $rootScope, $compile, $timeout, Promise;
var appState, queryFilter, mapFilter, $el;
var $rootScope;
var $compile;
var $timeout;
var Promise;
var appState;
var queryFilter;
var mapFilter;
var $el;
// require('testUtils/noDigestPromises').activateForSuite();
beforeEach(ngMock.module('kibana/global_state', function ($provide) {

View file

@ -5,7 +5,10 @@ var ngMock = require('ngMock');
describe('Filter Bar Directive', function () {
describe('generateMappingChain()', function () {
var generateMappingChain, $rootScope, Promise;
var generateMappingChain;
var $rootScope;
var Promise;
beforeEach(ngMock.module('kibana'));
beforeEach(ngMock.inject(function (Private, _$rootScope_, _Promise_) {
$rootScope = _$rootScope_;

View file

@ -4,7 +4,8 @@ describe('Filter Bar Directive', function () {
var expect = require('expect.js');
var ngMock = require('ngMock');
var sinon = require('auto-release-sinon');
var mapAndFlattenFilters, $rootScope;
var mapAndFlattenFilters;
var $rootScope;
beforeEach(ngMock.module(
'kibana',

View file

@ -3,7 +3,8 @@ describe('Filter Bar Directive', function () {
var expect = require('expect.js');
var ngMock = require('ngMock');
var mapDefault, $rootScope;
var mapDefault;
var $rootScope;
beforeEach(ngMock.module('kibana'));
beforeEach(ngMock.inject(function (Private, _$rootScope_) {
$rootScope = _$rootScope_;

View file

@ -3,7 +3,8 @@ describe('Filter Bar Directive', function () {
var expect = require('expect.js');
var ngMock = require('ngMock');
var mapExists, $rootScope;
var mapExists;
var $rootScope;
beforeEach(ngMock.module('kibana'));
beforeEach(ngMock.inject(function (Private, _$rootScope_) {
$rootScope = _$rootScope_;

View file

@ -3,7 +3,8 @@ describe('Filter Bar Directive', function () {
var sinon = require('auto-release-sinon');
var expect = require('expect.js');
var ngMock = require('ngMock');
var mapFilter, $rootScope;
var mapFilter;
var $rootScope;
beforeEach(ngMock.module(

View file

@ -5,7 +5,8 @@ describe('Filter Bar Directive', function () {
var sinon = require('auto-release-sinon');
var expect = require('expect.js');
var ngMock = require('ngMock');
var mapFlattenAndWrapFilters, $rootScope;
var mapFlattenAndWrapFilters;
var $rootScope;
beforeEach(ngMock.module(
'kibana',

View file

@ -4,7 +4,8 @@ describe('Filter Bar Directive', function () {
var sinon = require('auto-release-sinon');
var expect = require('expect.js');
var ngMock = require('ngMock');
var mapGeoBoundingBox, $rootScope;
var mapGeoBoundingBox;
var $rootScope;
beforeEach(ngMock.module(
'kibana',

View file

@ -3,7 +3,9 @@ var expect = require('expect.js');
describe('Filter Bar Directive', function () {
describe('mapMissing()', function () {
var mapMissing, $rootScope;
var mapMissing;
var $rootScope;
beforeEach(ngMock.module('kibana'));
beforeEach(ngMock.inject(function (Private, _$rootScope_) {
$rootScope = _$rootScope_;

View file

@ -2,7 +2,8 @@ describe('Filter Bar Directive', function () {
describe('mapQueryString()', function () {
var expect = require('expect.js');
var ngMock = require('ngMock');
var mapQueryString, $rootScope;
var mapQueryString;
var $rootScope;
beforeEach(ngMock.module('kibana'));
beforeEach(ngMock.inject(function (Private, _$rootScope_) {
$rootScope = _$rootScope_;

View file

@ -4,7 +4,8 @@ describe('Filter Bar Directive', function () {
var sinon = require('auto-release-sinon');
var expect = require('expect.js');
var ngMock = require('ngMock');
var mapRange, $rootScope;
var mapRange;
var $rootScope;
beforeEach(ngMock.module(
'kibana',

View file

@ -4,7 +4,8 @@ describe('Filter Bar Directive', function () {
var sinon = require('auto-release-sinon');
var expect = require('expect.js');
var ngMock = require('ngMock');
var mapScript, $rootScope;
var mapScript;
var $rootScope;
beforeEach(ngMock.module(
'kibana',

View file

@ -4,7 +4,8 @@ describe('Filter Bar Directive', function () {
var sinon = require('auto-release-sinon');
var expect = require('expect.js');
var ngMock = require('ngMock');
var mapTerms, $rootScope;
var mapTerms;
var $rootScope;
beforeEach(ngMock.module(
'kibana',

View file

@ -3,7 +3,8 @@ define(function (require) {
var angular = require('angular');
return function (filter) {
var key, value;
var key;
var value;
if (filter.query) {
key = 'query';
value = angular.toJson(filter.query);

View file

@ -1,7 +1,8 @@
define(function (require) {
return function mapExistsProvider(Promise) {
return function (filter) {
var key, value;
var key;
var value;
if (filter.exists) {
key = 'exists';
value = filter.exists.field;

View file

@ -2,7 +2,11 @@ define(function (require) {
var _ = require('lodash');
return function mapGeoBoundBoxProvider(Promise, courier) {
return function (filter) {
var key, value, topLeft, bottomRight, field;
var key;
var value;
var topLeft;
var bottomRight;
var field;
if (filter.geo_bounding_box) {
return courier
.indexPatterns

View file

@ -1,7 +1,8 @@
define(function (require) {
return function mapMissingProvider(Promise) {
return function (filter) {
var key, value;
var key;
var value;
if (filter.missing) {
key = 'missing';
value = filter.missing.field;

View file

@ -1,7 +1,8 @@
define(function (require) {
return function mapQueryStringProvider(Promise) {
return function (filter) {
var key, value;
var key;
var value;
if (filter.query && filter.query.query_string) {
key = 'query';
value = filter.query.query_string.query;

View file

@ -2,7 +2,11 @@ define(function (require) {
var _ = require('lodash');
return function mapRangeProvider(Promise, courier) {
return function (filter) {
var key, value, from, to, field;
var key;
var value;
var from;
var to;
var field;
if (filter.range) {
return courier
.indexPatterns

View file

@ -1,7 +1,9 @@
define(function () {
return function mapScriptProvider(Promise, courier) {
return function (filter) {
var key, value, field;
var key;
var value;
var field;
if (filter.script) {
return courier
.indexPatterns

View file

@ -2,7 +2,9 @@ define(function (require) {
var _ = require('lodash');
return function mapTermsProvider(Promise, courier) {
return function (filter) {
var key, value, field;
var key;
var value;
var field;
if (filter.query && filter.query.match) {
return courier
.indexPatterns

View file

@ -3,7 +3,8 @@ var fn = require('ui/filter_manager/lib/phrase');
var expect = require('expect.js');
var _ = require('lodash');
var ngMock = require('ngMock');
var indexPattern, expected;
var indexPattern;
var expected;
describe('Filter Manager', function () {
describe('Phrase filter builder', function () {
beforeEach(ngMock.module('kibana'));

View file

@ -3,7 +3,8 @@ var fn = require('ui/filter_manager/lib/query');
var expect = require('expect.js');
var _ = require('lodash');
var ngMock = require('ngMock');
var indexPattern, expected;
var indexPattern;
var expected;
describe('Filter Manager', function () {
describe('Phrase filter builder', function () {
beforeEach(ngMock.module('kibana'));

View file

@ -3,7 +3,8 @@ var fn = require('ui/filter_manager/lib/range');
var expect = require('expect.js');
var _ = require('lodash');
var ngMock = require('ngMock');
var indexPattern, expected;
var indexPattern;
var expected;
describe('Filter Manager', function () {
describe('Range filter builder', function () {
beforeEach(ngMock.module('kibana'));

View file

@ -37,35 +37,35 @@ define(function (require) {
}
switch (fieldName) {
case '_exists_':
filter = {
meta: {
negate: negate,
index: index
},
exists: {
field: value
}
};
break;
default:
if (field.scripted) {
case '_exists_':
filter = {
meta: { negate: negate, index: index, field: fieldName },
script: {
script: '(' + field.script + ') == value',
lang: field.lang,
params: {
value: value
}
meta: {
negate: negate,
index: index
},
exists: {
field: value
}
};
} else {
filter = { meta: { negate: negate, index: index }, query: { match: {} } };
filter.query.match[fieldName] = { query: value, type: 'phrase' };
}
break;
default:
if (field.scripted) {
filter = {
meta: { negate: negate, index: index, field: fieldName },
script: {
script: '(' + field.script + ') == value',
lang: field.lang,
params: {
value: value
}
}
};
} else {
filter = { meta: { negate: negate, index: index }, query: { match: {} } };
filter.query.match[fieldName] = { query: value, type: 'phrase' };
}
break;
break;
}
newFilters.push(filter);

View file

@ -5,7 +5,9 @@ var ngMock = require('ngMock');
require('plugins/kibana/discover/index');
require('ui/filters/field_type');
var filter, types;
var filter;
var types;
var init = function (expandable) {
// Load the application

View file

@ -6,7 +6,9 @@ var ngMock = require('ngMock');
require('ui/filters/moment');
var filter, config;
var filter;
var config;
var anchor = '2014-01-01T06:06:06.666';
var clock;

View file

@ -6,7 +6,9 @@ var ngMock = require('ngMock');
require('plugins/kibana/discover/index');
require('ui/filters/short_dots');
var filter, config;
var filter;
var config;
var init = function (expandable) {
// Load the application

View file

@ -5,7 +5,9 @@ describe('Highlight', function () {
var ngMock = require('ngMock');
require('ui/highlight');
var filter, tags;
var filter;
var tags;
beforeEach(ngMock.module('kibana'));
beforeEach(ngMock.inject(function (highlightFilter, highlightTags) {

View file

@ -3,7 +3,11 @@ describe('get computed fields', function () {
var expect = require('expect.js');
var ngMock = require('ngMock');
var indexPattern, getComputedFields, fn;
var indexPattern;
var getComputedFields;
var fn;
beforeEach(ngMock.module('kibana'));
beforeEach(ngMock.inject(function (Private, $injector) {
indexPattern = Private(require('fixtures/stubbed_logstash_index_pattern'));

View file

@ -8,28 +8,28 @@ define(function (require) {
for (var i = 0; i < format.length; i++) {
var ch = format.charAt(i);
switch (ch) {
case '[':
inPattern = false;
if (!inEscape) {
inEscape = true;
} else {
wildcard += ch;
}
break;
case ']':
if (inEscape) {
inEscape = false;
} else if (!inPattern) {
wildcard += ch;
}
break;
default:
if (inEscape) {
wildcard += ch;
} else if (!inPattern) {
wildcard += '*';
inPattern = true;
}
case '[':
inPattern = false;
if (!inEscape) {
inEscape = true;
} else {
wildcard += ch;
}
break;
case ']':
if (inEscape) {
inEscape = false;
} else if (!inPattern) {
wildcard += ch;
}
break;
default:
if (inEscape) {
wildcard += ch;
} else if (!inPattern) {
wildcard += '*';
inPattern = true;
}
}
}

View file

@ -14,18 +14,18 @@ define(function (require) {
}
});
var checkIfFull = function () {
if (work.length >= q.limit && fullDefers.length) {
resolve(fullDefers);
}
};
var resolve = function (defers) {
return defers.splice(0).map(function (defer) {
return defer.resolve();
});
};
var checkIfFull = function () {
if (work.length >= q.limit && fullDefers.length) {
resolve(fullDefers);
}
};
q.resolveWhenFull = function (defer) {
fullDefers.push(defer);
checkIfFull();

View file

@ -4,7 +4,8 @@ var ngMock = require('ngMock');
require('ui/state_management/app_state');
describe('State Management', function () {
var $rootScope, AppState;
var $rootScope;
var AppState;
beforeEach(ngMock.module('kibana'));
beforeEach(ngMock.inject(function (_$rootScope_, _$location_, Private) {

View file

@ -5,7 +5,9 @@ var ngMock = require('ngMock');
require('ui/state_management/global_state');
describe('State Management', function () {
var $rootScope, $location, state;
var $rootScope;
var $location;
var state;
beforeEach(ngMock.module('kibana'));
beforeEach(ngMock.inject(function (_$location_, globalState) {

View file

@ -6,7 +6,10 @@ var ngMock = require('ngMock');
require('ui/private');
describe('State Management', function () {
var $rootScope, $location, State, Events;
var $rootScope;
var $location;
var State;
var Events;
beforeEach(ngMock.module('kibana'));
beforeEach(ngMock.inject(function (_$rootScope_, _$location_, Private) {

View file

@ -57,11 +57,11 @@ define(function (require) {
_String.prototype._convert = function (val) {
switch (this.param('transform')) {
case 'lower': return String(val).toLowerCase();
case 'upper': return String(val).toUpperCase();
case 'short': return _.shortenDottedString(val);
case 'base64': return this._base64Decode(val);
default: return _.asPrettyString(val);
case 'lower': return String(val).toLowerCase();
case 'upper': return String(val).toUpperCase();
case 'short': return _.shortenDottedString(val);
case 'base64': return this._base64Decode(val);
default: return _.asPrettyString(val);
}
};

View file

@ -87,14 +87,14 @@ define(function (require) {
var label = _.escape(this._formatLabel(rawValue, url));
switch (this.param('type')) {
case 'img':
return '<img src="' + url + '" alt="' + label + '" title="' + label + '">';
default:
if (hit && hit.highlight && hit.highlight[field.name]) {
label = highlightFilter(label, hit.highlight[field.name]);
}
case 'img':
return '<img src="' + url + '" alt="' + label + '" title="' + label + '">';
default:
if (hit && hit.highlight && hit.highlight[field.name]) {
label = highlightFilter(label, hit.highlight[field.name]);
}
return '<a href="' + url + '" target="_blank">' + label + '</a>';
return '<a href="' + url + '" target="_blank">' + label + '</a>';
}
}
};

View file

@ -5,7 +5,13 @@ var ngMock = require('ngMock');
describe('Timefilter service', function () {
describe('Refresh interval diff watcher', function () {
var fn, update, fetch, timefilter;
var fn;
var update;
var fetch;
var timefilter;
beforeEach(ngMock.module('kibana'));
beforeEach(ngMock.inject(function (Private) {

View file

@ -5,7 +5,13 @@ var ngMock = require('ngMock');
describe('Timefilter service', function () {
describe('time diff watcher', function () {
var fn, update, fetch, timefilter;
var fn;
var update;
var fetch;
var timefilter;
beforeEach(ngMock.module('kibana'));
beforeEach(ngMock.inject(function (Private) {

View file

@ -1,4 +1,4 @@
define(function (require) {
define(function (require) {
require('ui/modules')
.get('kibana')
.service('timefilter', function (Private, globalState, $rootScope, config) {

View file

@ -70,41 +70,41 @@ define(function (require) {
$scope.setMode = function (thisMode) {
switch (thisMode) {
case 'quick':
break;
case 'relative':
var fromParts = $scope.from.toString().split('-');
var relativeParts = [];
case 'quick':
break;
case 'relative':
var fromParts = $scope.from.toString().split('-');
var relativeParts = [];
// Try to parse the relative time, if we can't use moment duration to guestimate
if ($scope.to.toString() === 'now' && fromParts[0] === 'now' && fromParts[1]) {
relativeParts = fromParts[1].match(/([0-9]+)([smhdwMy]).*/);
}
if (relativeParts[1] && relativeParts[2]) {
$scope.relative.count = parseInt(relativeParts[1], 10);
$scope.relative.unit = relativeParts[2];
} else {
var duration = moment.duration(moment().diff(dateMath.parse($scope.from)));
var units = _.pluck(_.clone($scope.relativeOptions).reverse(), 'value');
if ($scope.from.toString().split('/')[1]) $scope.relative.round = true;
for (var i = 0; i < units.length; i++) {
var as = duration.as(units[i]);
if (as > 1) {
$scope.relative.count = Math.round(as);
$scope.relative.unit = units[i];
break;
// Try to parse the relative time, if we can't use moment duration to guestimate
if ($scope.to.toString() === 'now' && fromParts[0] === 'now' && fromParts[1]) {
relativeParts = fromParts[1].match(/([0-9]+)([smhdwMy]).*/);
}
if (relativeParts[1] && relativeParts[2]) {
$scope.relative.count = parseInt(relativeParts[1], 10);
$scope.relative.unit = relativeParts[2];
} else {
var duration = moment.duration(moment().diff(dateMath.parse($scope.from)));
var units = _.pluck(_.clone($scope.relativeOptions).reverse(), 'value');
if ($scope.from.toString().split('/')[1]) $scope.relative.round = true;
for (var i = 0; i < units.length; i++) {
var as = duration.as(units[i]);
if (as > 1) {
$scope.relative.count = Math.round(as);
$scope.relative.unit = units[i];
break;
}
}
}
}
if ($scope.from.toString().split('/')[1]) $scope.relative.round = true;
$scope.formatRelative();
if ($scope.from.toString().split('/')[1]) $scope.relative.round = true;
$scope.formatRelative();
break;
case 'absolute':
$scope.absolute.from = dateMath.parse($scope.from || moment().subtract('minutes', 15));
$scope.absolute.to = dateMath.parse($scope.to || moment(), true);
break;
break;
case 'absolute':
$scope.absolute.from = dateMath.parse($scope.from || moment().subtract('minutes', 15));
$scope.absolute.to = dateMath.parse($scope.to || moment(), true);
break;
}
$scope.mode = thisMode;

View file

@ -39,7 +39,10 @@ describe('dateMath', function () {
});
describe('objects and strings', function () {
var mmnt, date, string, now;
var mmnt;
var date;
var string;
var now;
beforeEach(function () {
clock = sinon.useFakeTimers(unix);
@ -67,7 +70,8 @@ describe('dateMath', function () {
});
describe('subtraction', function () {
var now, anchored;
var now;
var anchored;
beforeEach(function () {
clock = sinon.useFakeTimers(unix);
@ -90,7 +94,8 @@ describe('dateMath', function () {
});
describe('addition', function () {
var now, anchored;
var now;
var anchored;
beforeEach(function () {
clock = sinon.useFakeTimers(unix);
@ -114,7 +119,8 @@ describe('dateMath', function () {
});
describe('rounding', function () {
var now, anchored;
var now;
var anchored;
beforeEach(function () {
clock = sinon.useFakeTimers(unix);

View file

@ -44,8 +44,10 @@ define(function (require) {
function parseDateMath(mathString, time, roundUp) {
var dateTime = time;
var i = 0;
var len = mathString.length;
for (var i = 0; i < mathString.length; ) {
while (i < len) {
var c = mathString.charAt(i++);
var type;
var num;

Some files were not shown because too many files have changed in this diff Show more