Ver código fonte

refactor: take submenu into account PR #12796

Torkel Ödegaard 7 anos atrás
pai
commit
624f3a0173

+ 1 - 2
public/app/features/dashboard/dashboard_ctrl.ts

@@ -62,6 +62,7 @@ export class DashboardCtrl implements PanelContainer {
       .finally(() => {
         this.dashboard = dashboard;
         this.dashboard.processRepeats();
+        this.dashboard.updateSubmenuVisibility();
         this.dashboard.autoFitPanels(window.innerHeight);
 
         this.unsavedChangesSrv.init(dashboard, this.$scope);
@@ -71,8 +72,6 @@ export class DashboardCtrl implements PanelContainer {
         this.dashboardViewState = this.dashboardViewStateSrv.create(this.$scope);
 
         this.keybindingSrv.setupDashboardBindings(this.$scope, dashboard);
-
-        this.dashboard.updateSubmenuVisibility();
         this.setWindowTitleAndTheme();
 
         this.$scope.appEvent('dashboard-initialized', dashboard);

+ 10 - 4
public/app/features/dashboard/dashboard_model.ts

@@ -836,16 +836,22 @@ export class DashboardModel {
       return;
     }
 
-    let currentGridHeight = Math.max(
+    const currentGridHeight = Math.max(
       ...this.panels.map(panel => {
         return panel.gridPos.h + panel.gridPos.y;
       })
     );
 
-    //Consider navbar and submenu controls, padding and margin
+    // Consider navbar and submenu controls, padding and margin
     let visibleHeight = window.innerHeight - 55 - 20;
-    let visibleGridHeight = Math.floor(visibleHeight / (GRID_CELL_HEIGHT + GRID_CELL_VMARGIN));
-    let scaleFactor = currentGridHeight / visibleGridHeight;
+
+    // Remove submenu if visible
+    if (this.meta.submenuEnabled) {
+      visibleHeight -= 50;
+    }
+
+    const visibleGridHeight = Math.floor(visibleHeight / (GRID_CELL_HEIGHT + GRID_CELL_VMARGIN));
+    const scaleFactor = currentGridHeight / visibleGridHeight;
 
     this.panels.forEach((panel, i) => {
       panel.gridPos.y = Math.round(panel.gridPos.y / scaleFactor) || 1;