@spalger/kibana
Version:
Kibana is an open source (Apache Licensed), browser based analytics and search dashboard for Elasticsearch. Kibana is a snap to setup and start using. Kibana strives to be easy to get started with, while also being flexible and powerful, just like Elastic
74 lines (60 loc) • 2.15 kB
JavaScript
define(function (require) {
var _ = require('lodash');
var getValType = require('plugins/kibana/settings/sections/advanced/lib/get_val_type');
require('plugins/kibana/settings/sections/advanced/advanced_row');
require('ui/routes')
.when('/settings/advanced', {
template: require('plugins/kibana/settings/sections/advanced/index.html')
});
require('ui/modules').get('apps/settings')
.directive('kbnSettingsAdvanced', function (config, Notifier, Private, $rootScope) {
return {
restrict: 'E',
link: function ($scope) {
var configDefaults = Private(require('ui/config/defaults'));
var keyCodes = {
ESC: 27
};
var NAMED_EDITORS = ['json', 'array', 'boolean', 'select'];
var NORMAL_EDITOR = ['number', 'string', 'null', 'undefined'];
function getEditorType(conf) {
if (_.contains(NAMED_EDITORS, conf.type)) return conf.type;
if (_.contains(NORMAL_EDITOR, conf.type)) return 'normal';
}
function isTypeComplex(conf) {
return !(conf.json || conf.array || conf.bool || conf.normal);
}
function readConfigVals() {
var configVals = config._vals();
$scope.configs = _.map(configDefaults, function (def, name) {
var val = configVals[name];
var conf = {
name: name,
defVal: def.value,
type: getValType(def, val),
description: def.description,
options: def.options,
value: val,
};
var editor = getEditorType(conf);
conf.json = editor === 'json';
conf.select = editor === 'select';
conf.bool = editor === 'boolean';
conf.array = editor === 'array';
conf.normal = editor === 'normal';
conf.tooComplex = !editor;
return conf;
});
}
readConfigVals();
$rootScope.$on('change:config', readConfigVals);
}
};
});
return {
order: 2,
name: 'advanced',
display: 'Advanced',
url: '#/settings/advanced'
};
});