diff --git a/public/app/features/dashboard/dashboard_ctrl.ts b/public/app/features/dashboard/dashboard_ctrl.ts index ccb5686b23a..16b21306a4e 100644 --- a/public/app/features/dashboard/dashboard_ctrl.ts +++ b/public/app/features/dashboard/dashboard_ctrl.ts @@ -65,24 +65,7 @@ export class DashboardCtrl implements PanelContainer { this.dashboard = dashboard; this.dashboard.processRepeats(); - if (this.$location.search().autofitpanels) { - let maxRows = Math.max( - ...this.dashboard.panels.map(panel => { - return panel.gridPos.h + panel.gridPos.y; - }) - ); - - //Consider navbar and submenu controls, padding and margin - let availableHeight = window.innerHeight - 80; - let availableRows = Math.floor(availableHeight / (GRID_CELL_HEIGHT + GRID_CELL_VMARGIN)); - let scaleFactor = maxRows / availableRows; - - this.dashboard.panels.forEach((panel, i) => { - panel.gridPos.y = Math.round(panel.gridPos.y / scaleFactor) || 1; - panel.gridPos.h = Math.round(panel.gridPos.h / scaleFactor) || 1; - }); - } - + this.autofitPanels(); this.unsavedChangesSrv.init(dashboard, this.$scope); // TODO refactor ViewStateSrv @@ -99,6 +82,26 @@ export class DashboardCtrl implements PanelContainer { .catch(this.onInitFailed.bind(this, 'Dashboard init failed', true)); } + autofitPanels() { + if (this.$location.search().autofitpanels) { + let maxRows = Math.max( + ...this.dashboard.panels.map(panel => { + return panel.gridPos.h + panel.gridPos.y; + }) + ); + + //Consider navbar and submenu controls, padding and margin + let availableHeight = window.innerHeight - 80; + let availableRows = Math.floor(availableHeight / (GRID_CELL_HEIGHT + GRID_CELL_VMARGIN)); + let scaleFactor = maxRows / availableRows; + + this.dashboard.panels.forEach((panel, i) => { + panel.gridPos.y = Math.round(panel.gridPos.y / scaleFactor) || 1; + panel.gridPos.h = Math.round(panel.gridPos.h / scaleFactor) || 1; + }); + } + } + onInitFailed(msg, fatal, err) { console.log(msg, err);