diff --git a/src/ui/public/visualize/visualization.js b/src/ui/public/visualize/visualization.js index 54e32e31332e..eb6ba0ffc598 100644 --- a/src/ui/public/visualize/visualization.js +++ b/src/ui/public/visualize/visualization.js @@ -100,6 +100,12 @@ uiModules const Visualization = $scope.vis.type.visualization; const visualization = new Visualization(getVisEl()[0], $scope.vis); + if (visualization.init) { + visualization.init().then(() => { $scope.vis.initialized = true; }); + } else { + $scope.vis.initialized = true; + } + const renderFunction = _.debounce(() => { $scope.vis.size = [$el.width(), $el.height()]; const status = getUpdateStatus($scope); @@ -115,7 +121,7 @@ uiModules }, 100); $scope.$on('render', () => { - if (!$scope.vis || ($scope.vis.type.requiresSearch && !$scope.visData)) { + if (!$scope.vis || !$scope.vis.initialized || ($scope.vis.type.requiresSearch && !$scope.visData)) { return; } renderFunction(); diff --git a/src/ui/public/visualize/visualization_editor.js b/src/ui/public/visualize/visualization_editor.js index 9e3237e36045..6ffbe6c26d3e 100644 --- a/src/ui/public/visualize/visualization_editor.js +++ b/src/ui/public/visualize/visualization_editor.js @@ -8,7 +8,7 @@ import { getUpdateStatus } from 'ui/vis/update_status'; uiModules .get('kibana/directive', ['ngSanitize']) -.directive('visualizationEditor', function (Private) { +.directive('visualizationEditor', function (Private, $timeout) { const editorTypes = Private(VisEditorTypesRegistryProvider); return { @@ -43,6 +43,7 @@ uiModules editor.destroy(); }); + $timeout(() => { renderFunction(); }); } }; }); diff --git a/src/ui/public/visualize/visualize.js b/src/ui/public/visualize/visualize.js index 5b64c87d10ff..817820293015 100644 --- a/src/ui/public/visualize/visualize.js +++ b/src/ui/public/visualize/visualize.js @@ -53,8 +53,8 @@ uiModules const responseHandler = getHandler(responseHandlers, $scope.vis.type.responseHandler); $scope.fetch = _.debounce(function () { - - // searchSource is only there for courier request handler + if (!$scope.vis.initialized) return; + // searchSource is only there for courier request handler requestHandler($scope.vis, $scope.appState, $scope.uiState, queryFilter, $scope.savedObj.searchSource) .then(requestHandlerResponse => { @@ -151,6 +151,8 @@ uiModules resizeChecker.destroy(); }); + $scope.$watch('vis.initialized', $scope.fetch); + $scope.fetch(); $scope.$root.$broadcast('ready:vis'); }