mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 17:59:23 -04:00
Merge pull request #5612 from spalger/backport/5460/4.2
Backport/5460/4.2
This commit is contained in:
commit
125e4d5f19
3 changed files with 54 additions and 4 deletions
33
src/ui/public/index_patterns/__tests__/index_patterns.js
Normal file
33
src/ui/public/index_patterns/__tests__/index_patterns.js
Normal file
|
@ -0,0 +1,33 @@
|
|||
import ngMock from 'ngMock';
|
||||
import expect from 'expect.js';
|
||||
import sinon from 'auto-release-sinon';
|
||||
|
||||
describe('IndexPatterns service', function () {
|
||||
let indexPatterns;
|
||||
|
||||
beforeEach(ngMock.module('kibana'));
|
||||
beforeEach(ngMock.inject(function (Private) {
|
||||
const IndexPattern = Private(require('../_index_pattern'));
|
||||
indexPatterns = Private(require('../index_patterns'));
|
||||
|
||||
// prevent IndexPattern initialization from doing anything
|
||||
Private.stub(
|
||||
require('../_index_pattern'),
|
||||
function (...args) {
|
||||
const indexPattern = new IndexPattern(...args);
|
||||
sinon.stub(indexPattern, 'init', function () {
|
||||
return new Promise();
|
||||
});
|
||||
return indexPattern;
|
||||
}
|
||||
);
|
||||
}));
|
||||
|
||||
it('does not cache gets without an id', function () {
|
||||
expect(indexPatterns.get()).to.not.be(indexPatterns.get());
|
||||
});
|
||||
|
||||
it('does cache gets for the same id', function () {
|
||||
expect(indexPatterns.get(1)).to.be(indexPatterns.get(1));
|
||||
});
|
||||
});
|
|
@ -15,6 +15,7 @@ define(function (require) {
|
|||
|
||||
var flattenHit = Private(require('ui/index_patterns/_flatten_hit'));
|
||||
var formatHit = require('ui/index_patterns/_format_hit');
|
||||
var patternCache = Private(require('ui/index_patterns/_pattern_cache'));
|
||||
|
||||
var type = 'index-pattern';
|
||||
|
||||
|
@ -218,7 +219,14 @@ define(function (require) {
|
|||
|
||||
return safeConfirm(confirmMessage).then(
|
||||
function () {
|
||||
return docSource.doIndex(body).then(setId);
|
||||
return Promise.try(function () {
|
||||
const cached = patternCache.get(self.id);
|
||||
if (cached) {
|
||||
return cached.then(pattern => pattern.destroy());
|
||||
}
|
||||
})
|
||||
.then(() => docSource.doIndex(body))
|
||||
.then(setId);
|
||||
},
|
||||
_.constant(false) // if the user doesn't overwrite, resolve with false
|
||||
);
|
||||
|
@ -257,6 +265,11 @@ define(function (require) {
|
|||
return '' + self.toJSON();
|
||||
};
|
||||
|
||||
self.destroy = function () {
|
||||
patternCache.clear(self.id);
|
||||
docSource.destroy();
|
||||
};
|
||||
|
||||
self.metaFields = config.get('metaFields');
|
||||
self.getComputedFields = getComputedFields.bind(self);
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ define(function (require) {
|
|||
var module = require('ui/modules').get('kibana/index_patterns');
|
||||
require('ui/filters/short_dots');
|
||||
|
||||
module.service('indexPatterns', function (es, Notifier, Private, Promise, kbnIndex) {
|
||||
function IndexPatternsProvider(es, Notifier, Private, Promise, kbnIndex) {
|
||||
var self = this;
|
||||
var _ = require('lodash');
|
||||
var errors = require('ui/errors');
|
||||
|
@ -25,7 +25,8 @@ define(function (require) {
|
|||
|
||||
self.delete = function (pattern) {
|
||||
self.getIds.clearCache();
|
||||
patternCache.delete(pattern.id);
|
||||
pattern.destroy();
|
||||
|
||||
return es.delete({
|
||||
index: kbnIndex,
|
||||
type: 'index-pattern',
|
||||
|
@ -44,5 +45,8 @@ define(function (require) {
|
|||
self.patternToWildcard = Private(require('ui/index_patterns/_pattern_to_wildcard'));
|
||||
self.fieldFormats = Private(require('ui/registry/field_formats'));
|
||||
self.IndexPattern = IndexPattern;
|
||||
});
|
||||
}
|
||||
|
||||
module.service('indexPatterns', Private => Private(IndexPatternsProvider));
|
||||
return IndexPatternsProvider;
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue