diff --git a/src/plugins/kibana/public/settings/sections/indices/directives/install_filebeat_step.html b/src/plugins/kibana/public/settings/sections/indices/directives/install_filebeat_step.html
new file mode 100644
index 0000000000000..f65d65f4b31d9
--- /dev/null
+++ b/src/plugins/kibana/public/settings/sections/indices/directives/install_filebeat_step.html
@@ -0,0 +1,10 @@
+
Install filebeat step
+
+
+Results:
+
+ - Logs: {{results.samples}}
+ - Docs: {{results.sampleDocs}}
+ - Pattern: {{results.indexPattern}}
+
+
diff --git a/src/plugins/kibana/public/settings/sections/indices/directives/install_filebeat_step.js b/src/plugins/kibana/public/settings/sections/indices/directives/install_filebeat_step.js
new file mode 100644
index 0000000000000..be0ea96b23865
--- /dev/null
+++ b/src/plugins/kibana/public/settings/sections/indices/directives/install_filebeat_step.js
@@ -0,0 +1,16 @@
+var modules = require('ui/modules');
+var template = require('plugins/kibana/settings/sections/indices/directives/install_filebeat_step.html');
+
+modules.get('apps/settings')
+ .directive('installFilebeatStep', function () {
+ return {
+ template: template,
+ scope: {
+ results: '='
+ },
+ controller: function ($scope) {
+ var results = $scope.results;
+ }
+ };
+ });
+
diff --git a/src/plugins/kibana/public/settings/sections/indices/directives/paste_samples_step.html b/src/plugins/kibana/public/settings/sections/indices/directives/paste_samples_step.html
new file mode 100644
index 0000000000000..919a609f5af8b
--- /dev/null
+++ b/src/plugins/kibana/public/settings/sections/indices/directives/paste_samples_step.html
@@ -0,0 +1,3 @@
+Paste samples step
+
+
diff --git a/src/plugins/kibana/public/settings/sections/indices/directives/paste_samples_step.js b/src/plugins/kibana/public/settings/sections/indices/directives/paste_samples_step.js
new file mode 100644
index 0000000000000..92050be87225a
--- /dev/null
+++ b/src/plugins/kibana/public/settings/sections/indices/directives/paste_samples_step.js
@@ -0,0 +1,13 @@
+var modules = require('ui/modules');
+var template = require('plugins/kibana/settings/sections/indices/directives/paste_samples_step.html');
+
+modules.get('apps/settings')
+ .directive('pasteSamplesStep', function () {
+ return {
+ template: template,
+ scope: {
+ samples: '='
+ }
+ };
+ });
+
diff --git a/src/plugins/kibana/public/settings/sections/indices/directives/pattern_review_step.html b/src/plugins/kibana/public/settings/sections/indices/directives/pattern_review_step.html
new file mode 100644
index 0000000000000..25b713bd7fd30
--- /dev/null
+++ b/src/plugins/kibana/public/settings/sections/indices/directives/pattern_review_step.html
@@ -0,0 +1,7 @@
+Pattern review step
+
+
+ Docs: {{sampleDocs}}
+
+
+
diff --git a/src/plugins/kibana/public/settings/sections/indices/directives/pattern_review_step.js b/src/plugins/kibana/public/settings/sections/indices/directives/pattern_review_step.js
new file mode 100644
index 0000000000000..f5ac34e8c9445
--- /dev/null
+++ b/src/plugins/kibana/public/settings/sections/indices/directives/pattern_review_step.js
@@ -0,0 +1,15 @@
+var modules = require('ui/modules');
+var template = require('plugins/kibana/settings/sections/indices/directives/pattern_review_step.html');
+
+modules.get('apps/settings')
+ .directive('patternReviewStep', function () {
+ return {
+ template: template,
+ scope: {
+ sampleDocs: '=',
+ indexPattern: '=',
+ pipeline: '='
+ }
+ };
+ });
+
diff --git a/src/plugins/kibana/public/settings/sections/indices/directives/pipeline_step.html b/src/plugins/kibana/public/settings/sections/indices/directives/pipeline_step.html
new file mode 100644
index 0000000000000..0c717c86256b8
--- /dev/null
+++ b/src/plugins/kibana/public/settings/sections/indices/directives/pipeline_step.html
@@ -0,0 +1,7 @@
+Build pipeline step
+
+
+ Logs: {{samples}}
+
+
+
diff --git a/src/plugins/kibana/public/settings/sections/indices/directives/pipeline_step.js b/src/plugins/kibana/public/settings/sections/indices/directives/pipeline_step.js
new file mode 100644
index 0000000000000..54d5c26cc1c79
--- /dev/null
+++ b/src/plugins/kibana/public/settings/sections/indices/directives/pipeline_step.js
@@ -0,0 +1,15 @@
+var modules = require('ui/modules');
+var template = require('plugins/kibana/settings/sections/indices/directives/pipeline_step.html');
+
+modules.get('apps/settings')
+ .directive('pipelineStep', function () {
+ return {
+ template: template,
+ scope: {
+ samples: '=',
+ sampleDocs: '=',
+ pipeline: '='
+ }
+ };
+ });
+
diff --git a/src/plugins/kibana/public/settings/sections/indices/filebeat/directives/filebeat_wizard.html b/src/plugins/kibana/public/settings/sections/indices/filebeat/directives/filebeat_wizard.html
new file mode 100644
index 0000000000000..5b8588947c1ca
--- /dev/null
+++ b/src/plugins/kibana/public/settings/sections/indices/filebeat/directives/filebeat_wizard.html
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+ 1. Paste
+
+
+ 2. Parse
+
+
+ 3. Review
+
+
+ 4. Install Filebeat
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/plugins/kibana/public/settings/sections/indices/filebeat/directives/filebeat_wizard.js b/src/plugins/kibana/public/settings/sections/indices/filebeat/directives/filebeat_wizard.js
new file mode 100644
index 0000000000000..98b95ccf5c019
--- /dev/null
+++ b/src/plugins/kibana/public/settings/sections/indices/filebeat/directives/filebeat_wizard.js
@@ -0,0 +1,75 @@
+var modules = require('ui/modules');
+var template = require('plugins/kibana/settings/sections/indices/filebeat/directives/filebeat_wizard.html');
+
+require('plugins/kibana/settings/sections/indices/directives/pattern_review_step');
+require('plugins/kibana/settings/sections/indices/directives/paste_samples_step');
+require('plugins/kibana/settings/sections/indices/directives/pipeline_step');
+require('plugins/kibana/settings/sections/indices/directives/install_filebeat_step');
+
+// wrapper directive, which sets up the breadcrumb for all filebeat steps
+modules.get('apps/settings')
+.directive('filebeatWizard', function () {
+ return {
+ restrict: 'E',
+ template: template,
+ scope: {},
+ bindToController: true,
+ controllerAs: 'wizard',
+ controller: function ($scope, AppState, safeConfirm) {
+ var $state = this.state = new AppState();
+ var totalSteps = 4;
+ this.stepResults = {};
+
+ this.setCurrentStep = (step) => {
+ if (!this.complete) {
+ $state.currentStep = step;
+ $state.save();
+ }
+ };
+ this.setCurrentStep(0);
+
+ this.nextStep = () => {
+ if ($state.currentStep + 1 < totalSteps) {
+ this.setCurrentStep($state.currentStep + 1);
+ }
+ };
+ this.prevStep = () => {
+ if ($state.currentStep > 0) {
+ this.setCurrentStep($state.currentStep - 1);
+ }
+ };
+
+ $scope.$watch('wizard.state.currentStep', (newValue, oldValue) => {
+ if (this.complete) {
+ $state.currentStep = totalSteps - 1;
+ $state.save();
+ return;
+ }
+ if (newValue + 1 === totalSteps) {
+ this.complete = true;
+ }
+ if (newValue < oldValue) {
+ return safeConfirm('Going back will reset any changes you\'ve made to this step, do you want to continue?')
+ .then(
+ () => {
+ if ($state.currentStep < 1) {
+ delete this.stepResults.pipeline;
+ }
+ if ($state.currentStep < 2) {
+ delete this.stepResults.indexPattern;
+ }
+ this.currentStep = newValue;
+ },
+ () => {
+ $state.currentStep = oldValue;
+ $state.save();
+ }
+ );
+ }
+ else {
+ this.currentStep = newValue;
+ }
+ });
+ }
+ };
+});
diff --git a/src/plugins/kibana/public/settings/sections/indices/filebeat/index.html b/src/plugins/kibana/public/settings/sections/indices/filebeat/index.html
new file mode 100644
index 0000000000000..714999f29e363
--- /dev/null
+++ b/src/plugins/kibana/public/settings/sections/indices/filebeat/index.html
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/plugins/kibana/public/settings/sections/indices/filebeat/index.js b/src/plugins/kibana/public/settings/sections/indices/filebeat/index.js
new file mode 100644
index 0000000000000..bc3859e9b1c3e
--- /dev/null
+++ b/src/plugins/kibana/public/settings/sections/indices/filebeat/index.js
@@ -0,0 +1,8 @@
+var routes = require('ui/routes');
+var template = require('plugins/kibana/settings/sections/indices/filebeat/index.html');
+
+require('plugins/kibana/settings/sections/indices/filebeat/directives/filebeat_wizard');
+
+routes.when('/settings/indices/create/filebeat', {
+ template: template
+});
diff --git a/src/plugins/kibana/public/settings/sections/indices/index.html b/src/plugins/kibana/public/settings/sections/indices/index.html
index a7a1c40b6c4d7..245753e76218a 100644
--- a/src/plugins/kibana/public/settings/sections/indices/index.html
+++ b/src/plugins/kibana/public/settings/sections/indices/index.html
@@ -13,6 +13,13 @@
Pick this option if you already have data in Elasticsearch.
+
+
+
+ Pick this option if you have log file data you'd like to send to Elasticsearch.
+
diff --git a/src/plugins/kibana/public/settings/sections/indices/index.js b/src/plugins/kibana/public/settings/sections/indices/index.js
index 45139727fa478..fc96a0d24da98 100644
--- a/src/plugins/kibana/public/settings/sections/indices/index.js
+++ b/src/plugins/kibana/public/settings/sections/indices/index.js
@@ -3,6 +3,7 @@ define(function (require) {
require('plugins/kibana/settings/sections/indices/directives/kbn_settings_indices');
require('plugins/kibana/settings/sections/indices/_create');
+ require('plugins/kibana/settings/sections/indices/filebeat/index');
require('plugins/kibana/settings/sections/indices/_edit');
require('plugins/kibana/settings/sections/indices/_field_editor');
diff --git a/src/plugins/kibana/public/settings/styles/main.less b/src/plugins/kibana/public/settings/styles/main.less
index ef10f7317faad..e9f8150856089 100644
--- a/src/plugins/kibana/public/settings/styles/main.less
+++ b/src/plugins/kibana/public/settings/styles/main.less
@@ -186,3 +186,28 @@ kbn-settings-indices {
.kbn-settings-indices-create {
.time-and-pattern > div {}
}
+
+.wizard-step-headings{
+ margin-top: 1em;
+
+ .wizard-step-heading {
+ font-size: 1.5em;
+ padding-right: 1.5em;
+
+ &.active {
+ cursor: default;
+ font-weight: bold;
+ }
+ &.aheadActive {
+ cursor: default;
+ font-weight: 300;
+ }
+ }
+
+ &.complete {
+ .wizard-step-heading:not(.active) {
+ color: #dddddd;
+ cursor: default;
+ }
+ }
+}
diff --git a/test/functional/apps/discover/_collapse_expand.js b/test/functional/apps/discover/_collapse_expand.js
index 5e271d29724bc..ec16a5b2d484f 100644
--- a/test/functional/apps/discover/_collapse_expand.js
+++ b/test/functional/apps/discover/_collapse_expand.js
@@ -32,7 +32,7 @@ define(function (require) {
})
.then(function (navigateTo) {
common.debug('navigateTo');
- return settingsPage.navigateTo();
+ return settingsPage.navigateTo().then(settingsPage.clickExistingIndicesAddDataLink);
})
.then(function () {
common.debug('createIndexPattern');
diff --git a/test/functional/apps/discover/_shared_links.js b/test/functional/apps/discover/_shared_links.js
index f590cc2dd44c6..366b35fc4e672 100644
--- a/test/functional/apps/discover/_shared_links.js
+++ b/test/functional/apps/discover/_shared_links.js
@@ -37,7 +37,7 @@ define(function (require) {
})
.then(function (navigateTo) {
common.debug('navigateTo');
- return settingsPage.navigateTo();
+ return settingsPage.navigateTo().then(settingsPage.clickExistingIndicesAddDataLink);
})
.then(function () {
common.debug('createIndexPattern');