Browse Source

fix(dashboard): fixed issue with resizing panel, #6442

Torkel Ödegaard 9 years ago
parent
commit
f3090d8cd4
1 changed files with 15 additions and 7 deletions
  1. 15 7
      public/app/features/panel/panel_directive.ts

+ 15 - 7
public/app/features/panel/panel_directive.ts

@@ -56,7 +56,7 @@ var panelTemplate = `
   </div>
 `;
 
-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');
           });