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: + +
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.
+ +

+ Tail a File +

+
+ 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');