diff --git a/src/core_plugins/tagcloud/public/tag_cloud.js b/src/core_plugins/tagcloud/public/tag_cloud.js index e1e34691b8e0b..96a59108a8c3f 100644 --- a/src/core_plugins/tagcloud/public/tag_cloud.js +++ b/src/core_plugins/tagcloud/public/tag_cloud.js @@ -129,8 +129,23 @@ class TagCloud extends EventEmitter { const job = this._queue.pop(); this._inFlight = true; - this._onLayoutEnd(job); + if (job.words.length) { + this._onLayoutEnd(job); + } else { + this._emptyCloud(job); + } + + } + + _emptyCloud(job) { + this._svgGroup.selectAll('text').remove(); + this._cloudWidth = 0; + this._cloudHeight = 0; + this._allInViewBox = true; + this._inFlight = false; + this._currentJob = job; + this._processQueue(); } _onLayoutEnd(job) { diff --git a/src/core_plugins/tagcloud/public/tag_cloud_controller.js b/src/core_plugins/tagcloud/public/tag_cloud_controller.js index db945c44224a1..7f9181b16e72d 100644 --- a/src/core_plugins/tagcloud/public/tag_cloud_controller.js +++ b/src/core_plugins/tagcloud/public/tag_cloud_controller.js @@ -21,13 +21,23 @@ module.controller('KbnTagCloudController', function ($scope, $element, Private, clickHandler({point: {aggConfigResult: aggConfigResult}}); }); tagCloud.on('renderComplete', () => { + + const truncatedMessage = containerNode.querySelector('.tagcloud-truncated-message'); + const incompleteMessage = containerNode.querySelector('.tagcloud-incomplete-message'); + + if (!$scope.vis.aggs[0] || !$scope.vis.aggs[1]) { + incompleteMessage.style.display = 'none'; + truncatedMessage.style.display = 'none'; + return; + } + const bucketName = containerNode.querySelector('.tagcloud-custom-label'); bucketName.innerHTML = `${$scope.vis.aggs[0].makeLabel()} - ${$scope.vis.aggs[1].makeLabel()}`; - const truncatedMessage = containerNode.querySelector('.tagcloud-truncated-message'); + truncatedMessage.style.display = truncated ? 'block' : 'none'; - const incompleteMessage = containerNode.querySelector('.tagcloud-incomplete-message'); + const status = tagCloud.getStatus(); if (TagCloud.STATUS.COMPLETE === status) { @@ -41,11 +51,13 @@ module.controller('KbnTagCloudController', function ($scope, $element, Private, $scope.$watch('esResponse', async function (response) { if (!response) { + tagCloud.setData([]); return; } const tagsAggId = _.first(_.pluck($scope.vis.aggs.bySchemaName.segment, 'id')); if (!tagsAggId || !response.aggregations) { + tagCloud.setData([]); return; }