From f3090d8cd410a2b384032009cf99693e3409f412 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Tue, 1 Nov 2016 15:33:20 +0100 Subject: [PATCH] fix(dashboard): fixed issue with resizing panel, #6442 --- public/app/features/panel/panel_directive.ts | 22 +++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/public/app/features/panel/panel_directive.ts b/public/app/features/panel/panel_directive.ts index 851c66820cb..6306a35a91b 100644 --- a/public/app/features/panel/panel_directive.ts +++ b/public/app/features/panel/panel_directive.ts @@ -56,7 +56,7 @@ var panelTemplate = ` `; -module.directive('grafanaPanel', function() { +module.directive('grafanaPanel', function($rootScope) { return { restrict: 'E', template: panelTemplate, @@ -72,8 +72,14 @@ module.directive('grafanaPanel', function() { var lastHasAlertRule; var lastAlertState; var hasAlertRule; + var lastHeight = 0; ctrl.events.on('render', () => { + if (lastHeight !== ctrl.containerHeight) { + panelContainer.css({minHeight: ctrl.containerHeight}); + lastHeight = ctrl.containerHeight; + } + if (transparentLastState !== ctrl.panel.transparent) { panelContainer.toggleClass('panel-transparent', ctrl.panel.transparent === true); transparentLastState = ctrl.panel.transparent; @@ -102,10 +108,13 @@ module.directive('grafanaPanel', function() { } }); - scope.$watchGroup(['ctrl.fullscreen', 'ctrl.containerHeight'], function() { - panelContainer.css({minHeight: ctrl.containerHeight}); - elem.toggleClass('panel-fullscreen', ctrl.fullscreen ? true : false); - }); + var lastFullscreen; + $rootScope.onAppEvent('panel-change-view', function(evt, payload) { + if (lastFullscreen !== ctrl.fullscreen) { + elem.toggleClass('panel-fullscreen', ctrl.fullscreen ? true : false); + lastFullscreen = ctrl.fullscreen; + } + }, scope); } }; }); @@ -171,11 +180,10 @@ module.directive('panelResizer', function($rootScope) { lastPanel.span = Math.round(lastPanel.span); } - ctrl.row.panelSpanChanged(); - // first digest to propagate panel width change // then render $rootScope.$apply(function() { + ctrl.row.panelSpanChanged(); setTimeout(function() { $rootScope.$broadcast('render'); });