mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 17:28:26 -04:00
defer loading visualization saved objects so they can be loaded in a single _mget
This commit is contained in:
parent
9c28e63949
commit
5c1344e6a4
3 changed files with 12 additions and 5 deletions
|
@ -10,6 +10,7 @@ export function loadSavedObject(loaders, panel) {
|
|||
if (!loader) {
|
||||
throw new Error(`No loader for object of type ${panel.type}`);
|
||||
}
|
||||
return loader.get(panel.id)
|
||||
const isDefered = true;
|
||||
return loader.get(panel.id, isDefered)
|
||||
.then(savedObj => ({ savedObj, editUrl: loader.urlFor(panel.id) }));
|
||||
}
|
||||
|
|
|
@ -127,7 +127,7 @@ export default function SavedObjectFactory(esAdmin, kbnIndex, Promise, Private,
|
|||
* @return {Promise}
|
||||
* @resolved {SavedObject}
|
||||
*/
|
||||
this.init = _.once(() => {
|
||||
this.init = _.once((isDefered) => {
|
||||
// ensure that the type is defined
|
||||
if (!type) throw new Error('You must define a type name to use SavedObject objects.');
|
||||
|
||||
|
@ -166,7 +166,13 @@ export default function SavedObjectFactory(esAdmin, kbnIndex, Promise, Private,
|
|||
}
|
||||
|
||||
// fetch the object from ES
|
||||
return docSource.fetch().then(this.applyESResp);
|
||||
if (isDefered) {
|
||||
const defer = Promise.defer();
|
||||
docSource._createRequest(defer);
|
||||
return defer.promise.then(this.applyESResp);
|
||||
} else {
|
||||
return docSource.fetch().then(this.applyESResp);
|
||||
}
|
||||
})
|
||||
.then(() => {
|
||||
return customInit.call(this);
|
||||
|
|
|
@ -29,8 +29,8 @@ export class SavedObjectLoader {
|
|||
* @param id
|
||||
* @returns {Promise<SavedObject>}
|
||||
*/
|
||||
get(id) {
|
||||
return (new this.Class(id)).init();
|
||||
get(id, isDefered) {
|
||||
return (new this.Class(id)).init(isDefered);
|
||||
}
|
||||
|
||||
urlFor(id) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue