UNPKG

kibana-with-account

Version:

kibana-with-account is develop based kibana project

95 lines (75 loc) 3.01 kB
define(function (require) { var $ = require('jquery'); var app = require('ui/modules').get('apps/discover'); var html = require('plugins/kibana/discover/components/field_chooser/discover_field.html'); var _ = require('lodash'); require('ui/directives/css_truncate'); require('ui/directives/field_name'); app.directive('discoverField', function ($compile) { return { restrict: 'E', template: html, replace: true, link: function ($scope, $elem) { var detailsElem; var detailScope = $scope.$new(); var detailsHtml = require('plugins/kibana/discover/components/field_chooser/lib/detail_views/string.html'); var init = function () { if ($scope.field.details) { $scope.toggleDetails($scope.field, true); } }; var getWarnings = function (field) { var warnings = []; if (!field.scripted) { if (!field.doc_values && field.type !== 'boolean' && !(field.analyzed && field.type === 'string')) { warnings.push('Doc values are not enabled on this field. This may lead to excess heap consumption when visualizing.'); } if (field.analyzed && field.type === 'string') { warnings.push('This is an analyzed string field.' + ' Analyzed strings are highly unique and can use a lot of memory to visualize.' + ' Values such as foo-bar will be broken into foo and bar.'); } if (!field.indexed) { warnings.push('This field is not indexed and can not be visualized.'); } } if (field.scripted) { warnings.push('Scripted fields can take a long time to execute.'); } if (warnings.length > 1) { warnings = warnings.map(function (warning, i) { return (i > 0 ? '\n' : '') + (i + 1) + ' - ' + warning; }); } return warnings; }; $scope.toggleDisplay = function (field) { // inheritted param to fieldChooser $scope.toggle(field.name); if (field.display) $scope.increaseFieldCounter(field); // we are now displaying the field, kill it's details if (field.details) { $scope.toggleDetails(field); } }; $scope.toggleDetails = function (field, recompute) { if (_.isUndefined(field.details) || recompute) { // This is inherited from fieldChooser $scope.details(field, recompute); detailScope.$destroy(); detailScope = $scope.$new(); detailScope.warnings = getWarnings(field); detailsElem = $(detailsHtml); $compile(detailsElem)(detailScope); $elem.append(detailsElem); } else { delete field.details; detailsElem.remove(); } }; init(); } }; }); });