diff --git a/docs/access.asciidoc b/docs/access.asciidoc new file mode 100644 index 000000000000..373ed248a7a5 --- /dev/null +++ b/docs/access.asciidoc @@ -0,0 +1,2 @@ +[[access]] +== Accessing Kibana \ No newline at end of file diff --git a/docs/dashboard.asciidoc b/docs/dashboard.asciidoc new file mode 100644 index 000000000000..206115b8f452 --- /dev/null +++ b/docs/dashboard.asciidoc @@ -0,0 +1,2 @@ +[[dashboard]] +== Working with Dashboards \ No newline at end of file diff --git a/docs/discover.asciidoc b/docs/discover.asciidoc new file mode 100644 index 000000000000..28b326c456f3 --- /dev/null +++ b/docs/discover.asciidoc @@ -0,0 +1,2 @@ +[[discover]] +== Discovering your Data \ No newline at end of file diff --git a/docs/index.asciidoc b/docs/index.asciidoc new file mode 100644 index 000000000000..82636a717632 --- /dev/null +++ b/docs/index.asciidoc @@ -0,0 +1,22 @@ +[[kibana-guide]] += Kibana User Guide + + +include::introduction.asciidoc[] + +include::setup.asciidoc[] + +include::access.asciidoc[] + +include::discover.asciidoc[] + +include::visualize.asciidoc[] + +include::dashboard.asciidoc[] + +include::settings.asciidoc[] + + + + + diff --git a/docs/introduction.asciidoc b/docs/introduction.asciidoc new file mode 100644 index 000000000000..be12182f8351 --- /dev/null +++ b/docs/introduction.asciidoc @@ -0,0 +1,2 @@ +[[introduction]] +== Introduction \ No newline at end of file diff --git a/docs/settings.asciidoc b/docs/settings.asciidoc new file mode 100644 index 000000000000..01a38831b93a --- /dev/null +++ b/docs/settings.asciidoc @@ -0,0 +1,2 @@ +[[settings]] +== Configuring Kibana \ No newline at end of file diff --git a/docs/setup.asciidoc b/docs/setup.asciidoc new file mode 100644 index 000000000000..df6b008b4c62 --- /dev/null +++ b/docs/setup.asciidoc @@ -0,0 +1,2 @@ +[[setup]] +== Getting Kibana Up and Running \ No newline at end of file diff --git a/docs/visualize.asciidoc b/docs/visualize.asciidoc new file mode 100644 index 000000000000..f43dc9e31202 --- /dev/null +++ b/docs/visualize.asciidoc @@ -0,0 +1,2 @@ +[[visualize]] +== Visualizing your Data \ No newline at end of file diff --git a/package.json b/package.json index 87ff5be776fa..f8950bb88391 100644 --- a/package.json +++ b/package.json @@ -47,14 +47,15 @@ "elasticsearch": "^3.1.1", "express": "~4.10.6", "glob": "^4.3.2", - "http-proxy": "^1.8.1", "jade": "~1.8.2", "js-yaml": "^3.2.5", "less-middleware": "1.0.x", "lodash": "^2.4.1", "morgan": "~1.5.1", "semver": "^4.2.0", - "serve-favicon": "~2.2.0" + "request": "^2.40.0", + "serve-favicon": "~2.2.0", + "ssl-root-cas": "^1.1.7" }, "devDependencies": { "connect": "~2.19.5", @@ -91,7 +92,6 @@ "opn": "~1.0.0", "path-browserify": "0.0.0", "progress": "^1.1.8", - "request": "^2.40.0", "requirejs": "~2.1.14", "rjs-build-analysis": "0.0.3", "simple-git": "^0.11.0", diff --git a/src/kibana/components/agg_types/controls/interval.html b/src/kibana/components/agg_types/controls/interval.html index dcd9d5a387ef..d7f56dfb7195 100644 --- a/src/kibana/components/agg_types/controls/interval.html +++ b/src/kibana/components/agg_types/controls/interval.html @@ -17,5 +17,6 @@ class="form-control" name="interval" min="0" + input-whole-number > diff --git a/src/kibana/components/config/_delayed_updater.js b/src/kibana/components/config/_delayed_updater.js index b8568975aee5..033a9a24583b 100644 --- a/src/kibana/components/config/_delayed_updater.js +++ b/src/kibana/components/config/_delayed_updater.js @@ -19,7 +19,6 @@ define(function (require) { if (updater.fired) return; updater.fired = true; - var method; var body; var updated = []; @@ -44,6 +43,9 @@ define(function (require) { queue.forEach(function (q) { q.resolve(resp); }); }, function (err) { queue.forEach(function (q) { q.reject(err); }); + }) + .finally(function () { + $rootScope.$emit('change:config', updated.concat(deleted)); }); }; @@ -68,7 +70,7 @@ define(function (require) { var defer = Promise.defer(); queue.push(defer); notify.log('config change: ' + key + ': ' + oldVal + ' -> ' + newVal); - $rootScope.$broadcast('change:config.' + key, newVal, oldVal); + $rootScope.$emit('change:config.' + key, newVal, oldVal); // reset the fire timer clearTimeout(timer); diff --git a/src/kibana/components/timepicker/quick_ranges.js b/src/kibana/components/timepicker/quick_ranges.js index 0baf75b30325..9e1f0641996b 100644 --- a/src/kibana/components/timepicker/quick_ranges.js +++ b/src/kibana/components/timepicker/quick_ranges.js @@ -25,7 +25,15 @@ define(function (require) { { from: 'now-12h', to: 'now', display: 'Last 12 hours', section: 2 }, { from: 'now-24h', to: 'now', display: 'Last 24 hours', section: 2 }, { from: 'now-7d', to: 'now', display: 'Last 7 days', section: 2 }, - { from: 'now-30d', to: 'now', display: 'Last 30 days', section: 2 }, + + { from: 'now-30d', to: 'now', display: 'Last 30 days', section: 3 }, + { from: 'now-60d', to: 'now', display: 'Last 60 days', section: 3 }, + { from: 'now-90d', to: 'now', display: 'Last 90 days', section: 3 }, + { from: 'now-6M', to: 'now', display: 'Last 6 months', section: 3 }, + { from: 'now-1y', to: 'now', display: 'Last 1 year', section: 3 }, + { from: 'now-2y', to: 'now', display: 'Last 2 years', section: 3 }, + { from: 'now-5y', to: 'now', display: 'Last 5 years', section: 3 }, + ]); }); diff --git a/src/kibana/components/vislib/lib/layout/layout.js b/src/kibana/components/vislib/lib/layout/layout.js index 539640524c89..8a359eb21bb9 100644 --- a/src/kibana/components/vislib/lib/layout/layout.js +++ b/src/kibana/components/vislib/lib/layout/layout.js @@ -91,7 +91,7 @@ define(function (require) { } if (obj.splits) { - d3.select(this.el).select('.' + obj.class).call(obj.splits); + d3.select(this.el).select('.' + obj.class).call(obj.splits, obj.parent); } if (obj.children) { diff --git a/src/kibana/components/vislib/lib/layout/splits/pie_chart/chart_title_split.js b/src/kibana/components/vislib/lib/layout/splits/pie_chart/chart_title_split.js index fd260b530aad..a538ac2ce7de 100644 --- a/src/kibana/components/vislib/lib/layout/splits/pie_chart/chart_title_split.js +++ b/src/kibana/components/vislib/lib/layout/splits/pie_chart/chart_title_split.js @@ -9,7 +9,7 @@ define(function () { * if not data.rows or data.columns, return no chart titles */ - return function (selection) { + return function (selection, parent) { selection.each(function (data) { var div = d3.select(this); @@ -24,9 +24,9 @@ define(function () { .attr('class', 'chart-title'); if (data.rows) { - d3.select('.x-axis-chart-title').remove(); + d3.select(parent).select('.x-axis-chart-title').remove(); } else { - d3.select('.y-axis-chart-title').remove(); + d3.select(parent).select('.y-axis-chart-title').remove(); } return div; diff --git a/src/kibana/components/vislib/lib/x_axis.js b/src/kibana/components/vislib/lib/x_axis.js index fabd00c4d3e1..c5935a5d8332 100644 --- a/src/kibana/components/vislib/lib/x_axis.js +++ b/src/kibana/components/vislib/lib/x_axis.js @@ -208,10 +208,10 @@ define(function (require) { selection.each(function () { axis = d3.select(this); labels = axis.selectAll('.tick text'); - if (!ordered || ordered === undefined) { - axis.call(self.rotateAxisLabels()); - } else { + if (ordered && ordered.date) { axis.call(self.filterAxisLabels()); + } else { + axis.call(self.rotateAxisLabels()); } }); diff --git a/src/kibana/components/vislib/styles/_layout.less b/src/kibana/components/vislib/styles/_layout.less index e30bcc61327c..de885e421523 100644 --- a/src/kibana/components/vislib/styles/_layout.less +++ b/src/kibana/components/vislib/styles/_layout.less @@ -164,6 +164,7 @@ min-height: 15px; max-height: 15px; min-width: 20px; + overflow: hidden; } .x-axis-div { diff --git a/src/kibana/components/vislib/visualizations/area_chart.js b/src/kibana/components/vislib/visualizations/area_chart.js index 0d3a2b8268f2..76189b8df6fd 100644 --- a/src/kibana/components/vislib/visualizations/area_chart.js +++ b/src/kibana/components/vislib/visualizations/area_chart.js @@ -187,8 +187,10 @@ define(function (require) { // Append the bars circles = layer .selectAll('rect') - .data(function appendData(d) { - return d; + .data(function appendData(data) { + return data.filter(function isNotZero(d) { + return d.y !== 0; + }); }); // exit diff --git a/src/kibana/directives/input_whole_number.js b/src/kibana/directives/input_whole_number.js new file mode 100644 index 000000000000..ac5835d1b039 --- /dev/null +++ b/src/kibana/directives/input_whole_number.js @@ -0,0 +1,19 @@ +define(function (require) { + var module = require('modules').get('kibana'); + + module.directive('inputWholeNumber', function () { + return { + restrict: 'A', + require: 'ngModel', + link: function ($scope, $elem, attrs, ngModel) { + ngModel.$parsers.push(checkWholeNumber); + ngModel.$formatters.push(checkWholeNumber); + + function checkWholeNumber(value) { + ngModel.$setValidity('whole', value % 1 === 0); + return value; + } + } + }; + }); +}); \ No newline at end of file diff --git a/src/kibana/images/initial_load.gif b/src/kibana/images/initial_load.gif new file mode 100644 index 000000000000..2bde128cc5db Binary files /dev/null and b/src/kibana/images/initial_load.gif differ diff --git a/src/kibana/index.html b/src/kibana/index.html index 19c224b4cda1..aa89363b2988 100644 --- a/src/kibana/index.html +++ b/src/kibana/index.html @@ -7,6 +7,22 @@