mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 17:28:26 -04:00
Merge branch 'master' of github.com:elastic/kibana into fix/4561
This commit is contained in:
commit
b89da25efd
111 changed files with 639 additions and 552 deletions
2
.eslintignore
Normal file
2
.eslintignore
Normal file
|
@ -0,0 +1,2 @@
|
|||
src/fixtures
|
||||
optimize
|
77
.eslintrc
77
.eslintrc
|
@ -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
60
.jscsrc
|
@ -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
|
||||
}
|
|
@ -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",
|
||||
|
|
|
@ -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 () {
|
||||
|
|
|
@ -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 () {
|
||||
|
|
|
@ -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 = {};
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 */
|
||||
|
||||
});
|
||||
});
|
||||
|
|
|
@ -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 = {};
|
||||
|
|
|
@ -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) {
|
||||
|
||||
|
|
|
@ -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-*';
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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';
|
||||
}
|
||||
}())
|
||||
});
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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');
|
||||
|
||||
|
|
|
@ -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 () {
|
||||
|
|
|
@ -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);
|
||||
});
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -12,7 +12,8 @@ var indexPattern;
|
|||
|
||||
describe('buildHierarchicalData()', function () {
|
||||
describe('createRawData()', function () {
|
||||
var vis, results;
|
||||
var vis;
|
||||
var results;
|
||||
|
||||
beforeEach(ngMock.module('kibana'));
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
@ -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 + '"');
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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'}];
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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'));
|
||||
|
|
|
@ -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'));
|
||||
|
|
|
@ -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'));
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>' +
|
||||
|
|
|
@ -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'));
|
||||
|
|
|
@ -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'));
|
||||
|
|
|
@ -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'));
|
||||
|
|
|
@ -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'));
|
||||
|
|
|
@ -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>';
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -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])) {
|
||||
|
|
|
@ -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_) {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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'));
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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_;
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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_;
|
||||
|
|
|
@ -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_;
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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_;
|
||||
|
|
|
@ -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_;
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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'));
|
||||
|
|
|
@ -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'));
|
||||
|
|
|
@ -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'));
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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'));
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -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>';
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
define(function (require) {
|
||||
define(function (require) {
|
||||
require('ui/modules')
|
||||
.get('kibana')
|
||||
.service('timefilter', function (Private, globalState, $rootScope, config) {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
Loading…
Add table
Add a link
Reference in a new issue