moved the settings app's files into more logical groups

This commit is contained in:
Spencer Alger 2014-06-16 16:44:12 -07:00
parent 9b7f6fa2e8
commit 9c3765e3d4
18 changed files with 146 additions and 136 deletions

View file

@ -1,5 +0,0 @@
define(function (require) {
// sections are defined by the controllers required by the index, and are defined by
// the controller, but written here so that they can easily be shared
return [];
});

View file

@ -3,11 +3,6 @@ define(function (require, module, exports) {
require('css!./styles/main.css');
require('filters/start_from');
require('./directives/advanced');
require('./directives/objects');
require('./directives/indices/indices');
require('./directives/indices/create');
require('./directives/indices/edit');
require('routes')
.when('/settings', {
@ -15,21 +10,17 @@ define(function (require, module, exports) {
});
require('modules').get('app/settings')
.directive('kbnSettingsApp', function ($route, timefilter) {
.directive('kbnSettingsApp', function (Private, $route, timefilter) {
return {
restrict: 'E',
template: require('text!./partials/app.html'),
template: require('text!./app.html'),
transclude: true,
scope: {
sectionName: '@section'
},
link: function ($scope, $el) {
timefilter.enabled(false);
var sections = require('./_sections');
$scope.sections = _.sortBy(sections, 'order');
$scope.sections = require('./sections/index');
$scope.section = _.find($scope.sections, { name: $scope.sectionName });
$scope.sections.forEach(function (section) {

View file

@ -2,16 +2,9 @@ define(function (require) {
var _ = require('lodash');
var configDefaults = require('config/defaults');
require('../_sections').push({
order: 2,
name: 'advanced',
display: 'Advanced',
url: '#/settings/advanced'
});
require('routes')
.when('/settings/advanced', {
template: require('text!../partials/advanced.html')
template: require('text!./index.html')
});
require('modules').get('app/settings')
@ -93,4 +86,11 @@ define(function (require) {
}
};
});
return {
order: 2,
name: 'advanced',
display: 'Advanced',
url: '#/settings/advanced'
};
});

View file

@ -0,0 +1,9 @@
define(function (require) {
// each of these private modules returns an object defining that section, their properties
// are used to create the nav bar
return [
require('./indices/index'),
require('./advanced/index'),
require('./objects/index')
];
});

View file

@ -1,6 +1,6 @@
<kbn-settings-app section="indices">
<kbn-settings-indices>
<div ng-controller="kbnSettingsIndicesCreate" class="kbn-settings-indices-create">
<div ng-controller="settingsIndicesCreate" class="kbn-settings-indices-create">
<div class="page-header">
<h1>Configure an index pattern</h1>
In order to use Kibana you must configure at least one index pattern. Index patterns are

View file

@ -3,15 +3,16 @@ define(function (require) {
var moment = require('moment');
var errors = require('errors');
require('routes').when('/settings/indices/', {
template: require('text!../../partials/indices/create.html')
require('routes')
.when('/settings/indices/', {
template: require('text!./_create.html')
});
require('modules').get('app/settings')
.controller('kbnSettingsIndicesCreate', function ($scope, $location, Notifier, Private, indexPatterns, es, config) {
.controller('settingsIndicesCreate', function ($scope, $location, Private, Notifier, indexPatterns, es, config) {
var notify = new Notifier();
var refreshKibanaIndex = Private(require('./_refresh_kibana_index'));
var MissingIndices = errors.IndexPatternMissingIndices;
var refreshKibanaIndex = Private(require('./_refresh_kibana_index'));
var intervals = indexPatterns.intervals;
// this and child scopes will write pattern vars here

View file

@ -1,6 +1,6 @@
<kbn-settings-app section="indices">
<kbn-settings-indices>
<div ng-controller="kbnSettingsIndicesEdit" bindonce>
<div ng-controller="settingsIndicesEdit" bindonce>
<div class="page-header">
<h1>
<i ng-if="defaultIndex === indexPattern.id" class="fa fa-star"></i>

View file

@ -1,10 +1,9 @@
define(function (require) {
var _ = require('lodash');
var module = require('modules').get('app/settings');
require('routes')
.when('/settings/indices/:id', {
template: require('text!../../partials/indices/edit.html'),
template: require('text!./_edit.html'),
resolve: {
indexPattern: function ($route, courier) {
return courier.indexPatterns.get($route.current.params.id)
@ -13,7 +12,8 @@ define(function (require) {
}
});
module.controller('kbnSettingsIndicesEdit', function ($scope, $location, $route, config, courier, Notifier, Private) {
require('modules').get('app/settings')
.controller('settingsIndicesEdit', function ($scope, $location, $route, config, courier, Notifier, Private) {
var notify = new Notifier();
var refreshKibanaIndex = Private(require('./_refresh_kibana_index'));
@ -45,7 +45,6 @@ define(function (require) {
.then(refreshKibanaIndex)
.then(function () {
$location.url('/settings/indices');
$route.reload();
})
.catch(notify.fatal);
};

View file

@ -1,13 +1,10 @@
define(function (require) {
var _ = require('lodash');
require('../../_sections').push({
order: 1,
name: 'indices',
display: 'Indices',
url: '#/settings/indices',
});
require('./_create');
require('./_edit');
// add a dependency to all of the subsection routes
require('routes')
.addResolves(/settings\/indices/, {
indexPatternIds: function (courier) {
@ -15,12 +12,13 @@ define(function (require) {
}
});
// wrapper directive, which sets some global stuff up like the left nav
require('modules').get('app/settings')
.directive('kbnSettingsIndices', function ($route, config) {
return {
restrict: 'E',
transclude: true,
template: require('text!../../partials/indices/indices.html'),
template: require('text!./index.html'),
link: function ($scope) {
$scope.edittingId = $route.current.params.id;
$scope.defaultIndex = config.get('defaultIndex');
@ -46,5 +44,9 @@ define(function (require) {
};
});
});
return {
name: 'indices',
display: 'Indices',
url: '#/settings/indices',
};
});

View file

@ -0,0 +1,84 @@
define(function (require) {
var _ = require('lodash');
var registry = require('../../saved_object_registry');
require('routes')
.when('/settings/objects', {
template: require('text!./_objects.html')
});
require('modules').get('app/settings')
.directive('kbnSettingsObjects', function (config, Notifier, Private) {
return {
restrict: 'E',
controller: function ($scope, $injector, $q, AppState) {
var $state = $scope.state = new AppState();
var resetCheckBoxes = function () {
$scope.deleteAll = false;
_.each($scope.services, function (service) {
_.each(service.data, function (item) {
item.checked = false;
});
});
};
var getData = function (filter) {
var services = registry.all().map(function (obj) {
var service = $injector.get(obj.service);
return service.find(filter).then(function (data) {
return { service: obj.service, title: obj.title, data: data.hits, hits: data.total };
});
});
$q.all(services).then(function (data) {
$scope.services = _.sortBy(data, 'title');
if (!$state.tab) {
$scope.changeTab($scope.services[0]);
}
});
};
$scope.$watch('deleteAll', function (checked) {
var service = _.find($scope.services, { title: $state.tab });
if (!service) return;
_.each(service.data, function (item) {
item.checked = checked;
});
$scope.toggleDeleteBtn(service);
});
$scope.toggleDeleteBtn = function (service) {
$scope.deleteAllBtn = _.some(service.data, { checked: true});
};
$scope.bulkDelete = function () {
var serviceObj = _.find($scope.services, { title: $state.tab });
if (!serviceObj) return;
var service = $injector.get(serviceObj.service);
var ids = _(serviceObj.data)
.filter({ checked: true})
.pluck('id')
.value();
service.delete(ids).then(function (resp) {
serviceObj.data = _.filter(serviceObj.data, function (obj) {
return !obj.checked;
});
resetCheckBoxes();
});
};
$scope.changeTab = function (obj) {
$state.tab = obj.title;
$state.commit();
resetCheckBoxes();
};
$scope.$watch('advancedFilter', function (filter) {
getData(filter);
});
}
};
});
});

View file

@ -1,102 +1,15 @@
define(function (require) {
var _ = require('lodash');
var inflection = require('inflection');
var registry = require('../saved_object_registry');
var rison = require('utils/rison');
require('angular-ui-ace');
require('angular-elastic');
require('directives/confirm_click');
require('../_sections').push({
order: 3,
name: 'objects',
display: 'Objects',
url: '#/settings/objects'
});
var registry = require('../../saved_object_registry');
require('routes')
.when('/settings/objects', {
template: require('text!../partials/objects.html')
})
.when('/settings/objects/:service/:id', {
template: require('text!../partials/objects_view.html')
template: require('text!./_view.html')
});
require('modules').get('app/settings', ['ui.ace', 'monospaced.elastic'])
.directive('kbnSettingsObjects', function (config, Notifier, Private) {
return {
restrict: 'E',
controller: function ($scope, $injector, $q, AppState) {
var $state = $scope.state = new AppState();
var resetCheckBoxes = function () {
$scope.deleteAll = false;
_.each($scope.services, function (service) {
_.each(service.data, function (item) {
item.checked = false;
});
});
};
var getData = function (filter) {
var services = registry.all().map(function (obj) {
var service = $injector.get(obj.service);
return service.find(filter).then(function (data) {
return { service: obj.service, title: obj.title, data: data.hits, hits: data.total };
});
});
$q.all(services).then(function (data) {
$scope.services = _.sortBy(data, 'title');
if (!$state.tab) {
$scope.changeTab($scope.services[0]);
}
});
};
$scope.$watch('deleteAll', function (checked) {
var service = _.find($scope.services, { title: $state.tab });
if (!service) return;
_.each(service.data, function (item) {
item.checked = checked;
});
$scope.toggleDeleteBtn(service);
});
$scope.toggleDeleteBtn = function (service) {
$scope.deleteAllBtn = _.some(service.data, { checked: true});
};
$scope.bulkDelete = function () {
var serviceObj = _.find($scope.services, { title: $state.tab });
if (!serviceObj) return;
var service = $injector.get(serviceObj.service);
var ids = _(serviceObj.data)
.filter({ checked: true})
.pluck('id')
.value();
service.delete(ids).then(function (resp) {
serviceObj.data = _.filter(serviceObj.data, function (obj) {
return !obj.checked;
});
resetCheckBoxes();
});
};
$scope.changeTab = function (obj) {
$state.tab = obj.title;
$state.commit();
resetCheckBoxes();
};
$scope.$watch('advancedFilter', function (filter) {
getData(filter);
});
}
};
})
require('modules').get('app/settings')
.directive('kbnSettingsObjectsView', function (config, Notifier) {
return {
restrict: 'E',
@ -218,5 +131,4 @@ define(function (require) {
}
};
});
});
});

View file

@ -0,0 +1,17 @@
define(function (require) {
require('./_view');
require('./_objects');
require('angular-ui-ace');
require('angular-elastic');
require('directives/confirm_click');
// add the module deps to this module
require('modules').get('app/settings', ['ui.ace', 'monospaced.elastic']);
return {
name: 'objects',
display: 'Objects',
url: '#/settings/objects'
};
});