UNPKG

kibana-with-account

Version:

kibana-with-account is develop based kibana project

111 lines (93 loc) 3.17 kB
define(function (require) { var app = require('ui/modules').get('app/visualize'); var _ = require('lodash'); var Scanner = require('ui/utils/scanner'); require('plugins/kibana/visualize/saved_visualizations/_saved_vis'); // Register this service with the saved object registry so it can be // edited by the object editor. require('plugins/kibana/settings/saved_object_registry').register({ service: 'savedVisualizations', title: 'visualizations' }); app.service('savedVisualizations', function (Promise, es, kbnIndex, SavedVis, Private, Notifier, kbnUrl) { var visTypes = Private(require('ui/registry/vis_types')); var scanner = new Scanner(es, { index: kbnIndex, type: 'visualization' }); var notify = new Notifier({ location: 'Saved Visualization Service' }); this.type = SavedVis.type; this.Class = SavedVis; this.loaderProperties = { name: 'visualizations', noun: 'Visualization', nouns: 'visualizations' }; this.get = function (id) { return (new SavedVis(id)).init(); }; this.urlFor = function (id) { return kbnUrl.eval('#/visualize/edit/{{id}}', {id: id}); }; this.delete = function (ids) { ids = !_.isArray(ids) ? [ids] : ids; return Promise.map(ids, function (id) { return (new SavedVis(id)).delete(); }); }; this.scanAll = function (queryString, pageSize = 1000) { return scanner.scanAndMap(queryString, { pageSize, docCount: Infinity }, (hit) => this.mapHits(hit)); }; this.mapHits = function (hit) { var source = hit._source; source.id = hit._id; source.url = this.urlFor(hit._id); var typeName = source.typeName; if (source.visState) { try { typeName = JSON.parse(source.visState).type; } catch (e) { /* missing typename handled below */ } // eslint-disable-line no-empty } if (!typeName || !visTypes.byName[typeName]) { if (!typeName) notify.error('Visualization type is missing. Please add a type to this visualization.', hit); else notify.error('Visualization type of "' + typeName + '" is invalid. Please change to a valid type.', hit); return kbnUrl.redirect('/settings/objects/savedVisualizations/{{id}}', {id: source.id}); } source.type = visTypes.byName[typeName]; source.icon = source.type.icon; return source; }; this.find = function (searchString, size = 100) { var body; if (searchString) { body = { query: { simple_query_string: { query: searchString + '*', fields: ['title^3', 'description'], default_operator: 'AND' } } }; } else { body = { query: {match_all: {}}}; } return es.search({ index: kbnIndex, type: 'visualization', body: body, size: size }) .then((resp) => { return { total: resp.hits.total, hits: resp.hits.hits.map((hit) => this.mapHits(hit)) }; }); }; }); });